Strategies for Learning Programming from Scratch