Resources, challenges and example code for learning to develop software in Python