How to learn & teach computer programming