When I started working at Mozilla, I didn’t know Python very well. All of the code that drives our continuous integration is written in it so I’ve had a spent a lot of time becoming more proficient. I’ve taken a number of free self-study classes/tutorials that others might find useful getting up to speed with Python.
Google Python class – Two day class that describes how to manipulate strings, dictionaries, lists. File I/O, regular expressions and sorting algorithms. Class lectures that were recorded at a Google training event are available on youtube, and the exercises are pretty straightforward with a solution key to check your work. All the exercises are done using the Python installation on your local machine.
Code academy has a Python class. I did the exercises for the topics that weren’t covered in the Google class, including list comprehensions, lambda expressions and OO in Python. The exercises are completed and validated on the website.
The best course I’ve taken so far has been the nine week Interactive Programming in Python class offered by Coursera. Coursera is a company that offers university courses for free. You receive a grade and certification of completion, but not an actual credit at the institution. The Python course I took is in conjunction with Rice University. For this course, you have to register for the course when it’s run and complete the work each week. There are an hour or so of video lectures, a quiz or two and an assignment to complete for around 8-10 hours of work each week. After you submit your assignment, you’re asked to review the work of five other students. This is how to scale marking assignments for the thousands of students enrolled in the class :-). The code for your assignments is written in the browser, on the CodeSkulptor website.
|Syllabus for coursera course|
Each week the assignment is to implement a different game which was a lot of fun. We also learned how to implement the calculations for velocity, reflection and collisions to make the objects in our games appear as a realistic game. The final project is to implement a version of the Asteroids game complete with missiles and exploding rocks. I’ve also never done much with a the UI aspects of programming in the past, so it was interesting to learn how to incorporate these elements.
|Screenshot of final asteroids game|
This iteration of the course is almost over and the next one starts in October. Essentially the course provides lots of time to practice writing code, which is the only path to getting better. I found the course to be really well organized, and the video lectures were succinct in getting to the point of the lecture. No profs going off on tangents about random subjects 🙂
Mr. Releng also took this course at the same time I did as he is also using Python at work. I said to him one day that I certainly wouldn’t wanted to have attended all my university courses online as I always liked to ask questions in class. With the pre-recorded lectures, the only way to ask questions is on the associated forums. He agreed, but said while this was probably not the future of university, it was certainly great for continuing education.
What resources did you use to learn Python?