Useful Learning Resources

In addition to the material we cover in class, there are numerous online resources to help a newcomer get to know Python. The following list represents the best-known and best-regarded of the breed. If you are itching for a bit more work on your Python chops, you should try these out.

Python Language Resources

As a Python programmer, you’ll want to keep a bookmark pointed at the official Python documentation, especially the documentation for the standard library. However, there are a number of additional resources you can (and should) use to help build your Python chops.

For the beginner

The Python Tutorial:
This is the official tutorial from the Python website. No more authoritative source is available.
Code Academy: Python Track:
Often cited as a great resource, this site offers an entertaining and engaging approach and in-browser work.
Treehouse: Python Library:
This is a solid resource with great video instruction by an excellent instructor. Highly recommended, but not free.
Learn Python the Hard Way:
Solid and gradual. This course offers a great foundation for folks who have never programmed in any language before.
Dive Into Python 3:
The updated version of a classic. This book offers an introduction to Python aimed at the student who has experience programming in another language.
Python for You and Me:
Simple and clear. This is a great book for absolute newcomers, or to keep as a quick reference as you get used to the language.
Think Python:
Methodical and complete. This book offers a very “computer science”-style introduction to Python. It is really an intro to Python in the service of Computer Science, though, so not so while helpful for the absolute newcomer, it isn’t quite as “pythonic” as it might be.
Core Python Programming:
Only available as a dead trees version, but if you like to have book to hold in your hands anyway, this is the best textbook style introduction out there. It starts from the beginning, but gets into the full language. Published in 2009, but still in print, with updated appendixes available for new language features.

Evaluating Your Options

The blurbs above are short descriptions of the material in each resource. I’ve drawn them both from my own usage of the various tools, and from a wonderful set of online reviews done by Marta Maria Casetti on her blog, “Planning a Dinner”. The poster she presented at PyCon 2014 as a result of that research offers some great hints about the aspects of Python programming best covered by each resource. I urge any new student of Python to take the time to look over this poster to help determine the best path forward for themselves.

Next Steps

New Coder:
Advertised as “Five lifejackets to throw to the new coder”, this site offers five very interesting tutorials written in an engaging style. Not an introduction. More a second step.
OpenHatch:
The Open Hatch project offers a number of workshops with well-paced intermediate tutorials for Python programming. A great place to go once you have the basics down and are ready for more challenging work.

Code Katas

A great approach to learning Python is to solve one or two small problems each day. The problems themselves need not be difficult, but applying your Python skills to small, quick-to-solve coding challenges can be very helpful as a way to stay sharp. These are some of my favorite sites with this type of work:

LeetCodeOJ:
Offers nearly a large number of code challenges ranging from the simple to the devilishly difficult. You can submit your answers using their online editor and get automatic feedback both on the success of your solution and it’s relative efficiency compared to other solutions. It’s quite a nice interface.
CodeEval:
Again, level-graded challenges you can submit and evaluate through an online editor. There is no direct comparison here with other solutions, but you do get a “ranking” in their pool of members.
CodeKata:
A series of challenges you can come back to repeatedly to practice your skills. As you improve, your solutions to the problems should also improve. This site has no automatic evaluation, but the challenges are quite interesting. It is the source of the trigrams assignment for this course.

Full Stack Python

Matt Makai, a developer evangelist for Twilio, maintains a site called Full Stack Python with a vast number of links to learning resources in Python. One of the most useful is his list of learning resources, which expands well beyond what I’ve listed here.

iPython Interpreter Resources

iPython is an enhanced interpreter that makes interactive experimentation at the command line much more pleasant and powerful.

The iPython tutorial:
Learn the most immediately useful tools for working in iPython.
Using IPython for interactive work:
Go deeper into the abilities iPython provides for interactive sessions.
The iPython Documentation:
Use this to learn everything there is to know about iPython’s amazing capabilities.