After years of being a master-of-none with programming languages, I have finally settled on one to delve deeper into: Python. I’ve been learning Python for about a month now, and it has been quite pleasurable. Although the language has been around since 1991, it has been gaining in popularity in the recent years and is used in many underlying projects at Google, Youtube, NASA, Honeywell, and the University of Maryland to name a few. It is an excellent language for a programmer of any level to pick up, and I chose it because of its versatility, clear syntax, and ease of use for transforming my ideas into a a functional and high level language.
Along the way during the past month, I have sifted through hundreds of websites and quite a few beginner books. So here, I would like to share the links that I found most helpful in my quest for Python knowledge. As far as my past experience, I’ve dabbled in many other languages such as MATLAB, HTML, Fortran, C++, Java, Perl, and so on but never really grew to master a single one or use it in my daily life.
So, without further delay, on to the list:
Before You Start With Python
- Python.org – I couldn’t make this list without including the main Python site. There is just a great amount of information there. Plus everything I link to can probably be found there, but my list is only those resources that really helped me along in my learning experience.
- Teach Yourself Programming in Ten Years – Article by the director of research at Google – A great overview of programming and learning to program, all the while avoiding the ides presented by the “Learn to program in X days” books.
Excellent Python Tutorials
- Dive Into Python – This is one of the first tutorials that I read about Python, and it gave me an excellent overview of the language. It really broke down the code line-by-line, but it still reads like a mix between a reference guide, a cookbook, and a tutorial. It’s a freely available book and should definitely be within quick reach as you learn Python.
- How to Think Like a Computer Scientist – This is by far my favorite tutorial in the entire list. I like this (freely available) book because of its plentiful and challenging exercises! I am usually picky when choosing textbooks on a new subject, and I will almost always get the book that has the most examples in it. I spent most of my time creating my own programs at the end of each chapter, and really got a feel for the language (and a nice sense of accomplishment!) at the end of each chapter. Highly recommended.
- Python Videos at ShowMeDo – There are over 100 videos at the time of this posting over a wide range of topics. Anything from how to open a Python session to namespaces and more. It was nice when starting out to just sit and watch someone who knew what they were doing do routine tasks, and it helped to ground basic concepts before jumping in on my own. Don’t forget to thank the creators of the videos with a comment!
- Learning to Program – This is one that I am going through last, because it gets into a bit more in depth discussion about basic and moderate topics. Very thorough.
Beginner Exercises and Projects
- How to Think Like a Computer Scientist – I just HAD to list this again, because it goes at just the right pace and the exercises are well thought out. I am convinced that I really learned about 80% of my Python basics here when I put them to practice. Learn by doing!
- Projects for the Beginner – Python – This is a thread on a forum with over 100 ideas for programs. Use this when you are low on inspiration but high on ambition!
- Python Challenge – Neat implementation of puzzles that can be solved with Python scripts. They get harder as you progress levels. You might want to hit up the Python Challenge after getting a good hold on the basics and after you have many of these other links open in other tabs. 🙂
- Useless Python Challenges – This site should be visited after you have finished all of the trivial Python exercises and projects. When you are self-sustaining on the language and eagerly looking for some projects to do, but are hitting a writer’s block for programs, go here.
Beginner Forums and Lists
- Python Forum – Beginners – Not a very high traffic forum, but they have a beginners subforum with 15-30 posts per day, just enough to keep you busy. I find it helpful to attack the problems that other beginners are facing. And if you come up with a good solution, post it and help others while you learn. Everyone wins!
- Learning Python Blog – One of the few “learning only” Python blogs. It is always good to see information shared from others while they learn. Sort of like this list. 🙂
- Python Tutor Mailing List – I only recently signed up for this, but I must say that there are some very knowledgeable and helpful people on here and it keeps the Python information coming at you via email. Seems to be quite a few students on here and you will most certainly learn something with each email thread.
Interesting Python Projects and Libraries
- Django Project
- Google GData Python API – This is an amazing API from Google that allows you to interact with Google Calendar, Docs, Maps, Youtube, Notebook, and so on. It is very easy to install and use and I look forward to developing with this in the near future.
- wxPython – GUI toolkit for interface development. I haven’t gotten to GUIs yet, but everywhere I turn I see references to wxPython.
- matplotlib – 2D plotting library that produces very nice looking graphs. Supports many, many types of graphs and is very customizable.
- SciPy – A collection of Python tools and modules for use in science, engineering, and mathematics. This is the light at the end of the tunnel for me and I hope to get more involved with this library as I progress with my Python learning.
Editing Tools and Shells
- iPython – An enhanced Python shell that seems geared towards science, engineering, and high performance computing.
- TextMate (Mac OS X) – This is such an amazing editor that I must list it here. I didn’t use it at all before I started with Python, and now I simply cannot go without it. I had previously heard it described by programmers as a magical tool, but I had no idea. It does autocompletion based on previous words, syntax highlighting for a ton of languages, has a quick and easy-to-read method to execute Python scripts. It is perhaps the only non-free item in my list, but very much worth it!
- TextWrangler (Mac OS X) – This is what I used for a couple of years… until I discovered the greatness of TextMate a few weeks ago. TextWrangler is free though if you wish to use it.
Other Resources (References, Packages, Hosting)
- Python Library Reference – Huge list of explanations about Python’s Standard Library. Made to help you discover the power of Python in your everyday programming.
- Python Webhosting – List of webhosts that offer Python solutions on their webhost. Python can be run on most hosts via CGI, but these wiki pages explain exactly how they implement Python usability. Plus I found out about the cool idea of HCoop cooperative web hosting through this list; this is the host on which you are reading this blog. 🙂
- Python Package Index – Directory of Python packages that you can learn about, download, and use in your own programming. Don’t reinvent the wheel!
- Python Cookbook Code Samples – This is a directory in the same vein as the previous listing, but the solutions to problems are presented as code with user comments. As of now there are over 2000 recipes.
- The Daily Python URL – Just as it sounds. News about Python in compact form.
Again, while there are many, many other resources for learning Python, this is a list of my personal favorites. These are the specific sites that have been very helpful and impacting on my venture to learn Python. So while I may not have listed a particular item – I probably saw it, but didn’t get much from it at this time.
Finally, you must forgive me if I got some detail wrong. I am learning, after all! Hopefully this list will help new and moderate Python users to utilize some of the best (and free!) Python resources that others have put up for all to learn from. Thanks to those people who shared their knowledge. And have fun with Python!