Percebi que o professor inseriu nas duas duas funções as variáveis da tela e do pincel. Eu testei deixando elas de fora das funções e o programa rodou normal. Tem algum benefício colocar dentro da função ou não faz diferença?
Vejam no código que o professor postou ele declarando as variáveis 2 vezes, uma em cada função:
<!-- fracao.html -->
<meta charset="UTF-8">
<canvas width="700" height="500"></canvas>
<script>
    function desenhaQuadrado(x, y, tamanho, cor) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');
        pincel.fillStyle=cor;
        pincel.fillRect(x,y, tamanho, tamanho);
        pincel.strokeStyle='black';
        pincel.strokeRect(x,y, tamanho, tamanho);
    }
    function desenhaTexto(texto, x , y) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');
        pincel.font='20px Georgia';
        pincel.fillStyle='black';
        pincel.fillText(texto, x, y);    
    }
    desenhaTexto("Qual é a fração?", 50, 30);
    var y = 50;
    desenhaQuadrado(50, y, 100, 'green');
    desenhaQuadrado(150, y, 100, 'green');
    desenhaQuadrado(250, y, 100, 'green');
    desenhaQuadrado(350, y, 100, 'white');
</script> 
             
            