Learning to program = learning to construct mechanisms and explanations
Communications of the ACM
Combining Smart Web-based Learning Environments with Teaching and Learning Analytics to Support Reflection on Project-based Programming Education
Is it really an algorithm