What are we doing when we teach programming? | Synapse