Resources for learning Python

>> Monday, June 17, 2013

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.

Other Python resources I looked at  include http://www.learnpython.org/.  The pyvideo website includes talks from many of the PyCon and related conferences here which are interesting to watch.

What resources did you use to learn Python?

3 comments:

Amir Amazigh 3:26 PM  

Python was my first OOP language. I learned with Dive into Python, and a french version of Thinking like a computer scientist. I created a simulator for the problem of Iterated Prisoner Dilemma implementing several strategies and tournaments (avoiding genetical algorithms). Then I went into learning web via Django, created some rpmfind website for gentoo. Then mostly through experiencing with specific contruct of the language when they happens to hit the news through PEPs or blog post, slides or talks or just buzz and code golfing. I use extensively Python documentation and somewhat stackoverflow (subscribe to tag feature is useful). I learnt little by actually reading other people softwares code, probably a mistake. Python tutor mailling list is also interesting.

I'm currently reading http://aosabook.org/en/index.html which is not Python specific but still interesting, actually that's how I know your blog!

Amir Amazigh 3:26 PM  

Python was my first OOP language. I learned with Dive into Python, and a french version of Thinking like a computer scientist. I created a simulator for the problem of Iterated Prisoner Dilemma implementing several strategies and tournaments (avoiding genetical algorithms). Then I went into learning web via Django, created some rpmfind website for gentoo. Then mostly through experiencing with specific contruct of the language when they happens to hit the news through PEPs or blog post, slides or talks or just buzz and code golfing. I use extensively Python documentation and somewhat stackoverflow (subscribe to tag feature is useful). I learnt little by actually reading other people softwares code, probably a mistake. Python tutor mailling list is also interesting.

I'm currently reading http://aosabook.org/en/index.html which is not Python specific but still interesting, actually that's how I know your blog!

Amir Amazigh 3:31 PM  

I learnt with:

- A french version of Thinking like a computer scientist
- Dive into Python

I add to the list of Python ressources:

- Python tutor mailling list
- Subscribe to tag feature of stackoverflow
- PEPs
- And of course Python Documentation

:)

Post a Comment

  © Blogger template Simple n' Sweet by Ourblogtemplates.com 2009

Back to TOP