Rodrigo,
com duas functions dá pra fazer assim, mas usa uma função que não foi ensinada no curso, clearInterval.
Mas veja a solução do professor. Muito mais simples que implementar duas funções, um contador que identifica o sentido. Às vezes as melhores soluções podem vir de idéias mais simples.
<meta charset="UTF-8">
<canvas width="600" height="40" ></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext ('2d');
pincel.fillStyle = 'lightgray';
pincel.fillRect (0,0,600,40);
var volta;
var ida;
function desenhaCirculo(x , y, raio) {
pincel.fillStyle = 'blue';
pincel.beginPath();
pincel.arc(x, y, raio, 0, 2 * Math.PI);
pincel.fill();
}
function limpaTela() {
pincel.fillStyle = 'lightgray';
pincel.fillRect(0,0,600,40);
}
function vaiCirculo() {
limpaTela();
desenhaCirculo(x,20,10);
x--;
if(x <= 10){
clearInterval(volta);
ida = setInterval(voltaCirculo, 8);
}
}
function voltaCirculo() {
limpaTela();
desenhaCirculo(x,20,10);
x++;
if(x >= 590){
clearInterval(ida);
volta = setInterval (vaiCirculo, 8);
}
}
var x = 11;
vaiCirculo();
</script>