What is this page?
This page is designed to be a growing list of Python learning and reference tools. Most of these tools are going to be primarily targeted toward people with little to no programming experience, but I’m hoping to gather a solid collection of items for intermediate experience. Additionally, my background is in liberal arts with an orientation towards data, so resources directed at those populations will be featured more than others.
I feel like any conversation about online learning resources should start with Open Culture‘s giant list of free online courses. Many disciplines are represented and is often the first place I look for materials.
What are the best resources learning Python?
- Find a resource to guide you through the door. Everyone needs to start from the same fundamentals. Once you’re through the door, know why you want to learn programming and find materials that map to that goal.
- Google So long as you know the name (or can take a reasonable guess at the name) of something, search google for the issue. That didn’t work? Change your wording a little and keep digging.
- Official Python documentation The official Python documentation is also very thorough and should be your first place to look. That being said, the language can be pretty technical in certain places.
- Just try stuff. See what happens. Either it will be related to your task, or you’ve given yourself a data point in the future.
- Pick a learning tool.
- Install the version of python they recommend.
- Start doing Python stuff!
- Be curious.
Before you install anything, check with whatever book or resource you are going to use to learn Python. There are significant differences in how Python 2.x works versus Python 3. You do not want to try to use a different version than what your materials are using. Usually these resources include specific directions for how they want Python installed.
Check out the Python.org download page to see all the available versions.
Setting up Mac goodies
Most of the time you will want to follow the installation directions your chosen resource lists. However, there are plenty of goodies you will want installed down the road.
PyLadies has a good run down of the various tools you will want to have installed if you are developing on a Mac, with clear directions. Don’t be intimidated by the command line instructions. They provide some info on using terminal, and I have some items linked below as well.
Using the Terminal on a Mac
This is often an overlooked item in Python tutorials. I’m not going to get into the nitty-gritty of the details here, because I’ll also be linking to the relevant Wikipedia pages should you desire more information.
Since 2001 and the introduction of OS X, the Mac operating system has been based on Unix. Unix is an operating system traditionally communicated with via a command-line interface. Terminal is the application bundled with your installation of OS X that allows you to communicate with your Unix installation. Think of it this way: a GUI (which is likely what you’re using now) has you look at graphics, menus, icons, etc. to interact. A command line interface uses text and written commands to interact.
To open up Terminal: Applications -> Utilities -> Terminal
Type “python” into Terminal and a Python interface will appear. Start Pythoning.
Want to learn more?
- The MacRumors Terminal Guide has nice basic info.
- Dummies.com as a good basic list of commands.
- Learn Python the Hard Way has an interesting Command Line Crash Course.
The more you work with Python the more you will want to learn about Unix and Terminal commands.
Cookbooks versus phrasebooks
There are many types of reference and programming education books out there. An important part of your job as a student is learning how to identify the right resources for your needs. Many of the reference books will be very much like a language “phrasebook”. These guides will give you the code to get certain tasks done, but don’t go very deep into the inner workings of the syntax. They can be a great way to get a jump-start into your project, but just be sure to seek out deeper information as you continue on with your studies. Meanwhile, “cookbooks” are very handy reference books for exploring solutions to common problems. These books are generally present problems with potential solutions and a discussion.
Phrasebook materials are great at getting you in and going quickly, or get you through a single one-off project. However, they should not be your only exposure if you plan on continuing your Python and programming education. You will need to understand the deeper syntax and semantics.
Cookbooks are great resources to seek out. Programming cookbooks range from very general resources to project specific. I highly recommend getting a copy of the Python Cookbook for all students learning Python while working on actual projects (versus a student just working through basic materials and nothing beyond). Working on a project while starting to learn means you will likely run into obstacles your introductory materials haven’t covered yet or don’t cover at all, and the Python Cookbook will be a valuable resource.
Python Learn is the resource I started with and is often the first place I tell interested students to go to. This is designed for absolute beginners and includes a book (Python for Informatics, mentioned in the Books section), YouTube lectures, slides, and homework problems. Bonus: everything in here is free for use. The videos will likely be helpful to you no matter the book you are working through. Visual learners: you’ll want to start with the videos.
Codecademy contains interactive coding tutorials for a variety of programming languages. Unfortunately, the level of difficulty within the Python section goes back and forth between pure beginner and experienced programmer. My advice: you should do every exercise they have, but go out-of-order and move on to a different section if you are feeling stuck. I used this as a supplementary resource to my other learning resources. It took me a good 40+ hours to get through all the Python materials.
Learn Python the Hard Way is designed for very general use and is very approachable. This resource is designed to guide you through learning Python with a focus on learning through repetition. The author describes “the hard way” as actually making you type in everything they have listed. The material starts off from very simple and goes through a good amount of content. A ton of people SWEAR by LPTHW, but others aren’t so passionate. This isn’t geared toward my kind of learning, but I do like the approach and lessons. Absolutely worth trying out.
CodingBat Python is a great next step when you’re done with Codecademy or an initial book and want to try something more challenging. The puzzles can be hilariously arbitrary but excellent at stretching your brain around algorithms. You will likely get stuck on a few, but there is no need to force your way through in order. Take breaks, explore other areas, and go back to see how far your skills have progressed.
/r/learnpython is a super helpful group. Always keep in mind the rule of the internet: people are jerks, but people here are amazingly nice to newcomers. The group is greatly helped by being separate from /r/python, so experienced Python devs can opt out of sifting through newbie questions. Be sure to check documentation before posting and following formatting rules, but people are quick and helpful.
/r/python is for the more advanced or project specific questions. Again, people are generally very nice, but they reserve the right to tell you to move your question to /r/learnpython. Be sure to take a look through what is being posted in each before posting to /r/python.
Py-Curious tumblr page This is the page for the workshop I helped organize and teach. All of our lecture slides and resources are documented in this tumblr. We based the class on Dr. Chuck’s Python for Informatics, but recreated the content with our own spin. The materials do need to be cleaned up a little for a second round, but you are welcome to look through them or use them for a workshop of your own.
30 Python Language Features There are some super advanced things on here, but they are good to take a look through to get a sense of what can be done. Try some stuff out!
The Programming Historian is a great website dedicated to jump starting researchers wanting to work with text. The lessons are very phrase-book like, but should be easy enough to follow after a few basic lessons on Python. More topics than Python are covered, so absolutely take a moment to skim through the tools covered.
Python for Informatics is the book used by PythonLearn.com, but great standalone resource. This book is a great phrasebook for getting a jump-start into text processing. I love this book as an introduction to the more data and text oriented student. This is a perfect place to start if you are learning Python for digital humanities or data analysis.
Python Programming: An Introduction to Computer Science is an interesting resource for independent students. This is a textbook used for introduction to programming classes and uses Python as the programming language. The examples can sometimes be a little math heavy, but you don’t need to completely understand the math behind the examples to understand the point of the exercises. What I really like about this book is all the homework and practice questions available, and it has a very reasonable price for being a textbook. The most recent edition uses Python 3, but you can still find previous 2.x editions.
Problem Solving with Algorithms and Data Structures I haven’t used this book, but I have heard good things.
Learning Python is a wonderfully massive book, and could very well be the perfect for people who know another language reasonably well and want to take up Python. The information covered is in depth and speaks to the complexities as they apply to 2.x and 3.x. This would be a great book to start out with if you have had some previous programming exposure, and by that I mean some sort of significant self study or a formal class. The author does touch on this in the preface, and warns the true beginner that they will either need to seek out other resources first or be incredibly brave. If you do decide to be brave, you will likely be looking up a lot of items as you go or skimming over a lot of content. I would take this perspective a little further and say that you should not take this book up until you have had some other gentle exposure to the fundamental concepts of programming from another resource. That being said, this book is wonderful resource for people looking to take up their “second level” of Python education.
There will often be a MOOC or two around that may be helpful, I won’t name specifics as they change often. A word of warning: some of the programming courses have material presuming some previous exposure to programming.
Places to check:
Pythontutor.com’s code visualizer is a fascinating tool that allows you to watch the interpreter step through your code and visualize your variables and objects.
Every community is different, so you will need to go out and do some searching and you may need to travel.
Here are some places to check:
- Community college or university offerings
- Look for a Python conference happening near you. A google search for “python boot camp (your location)” should come up with some good results.
- Find your local Python community and ask if workshops are being held.
- The TriPython group organizes PyCamps occurring around the country. I attended one and highly recommend it for anyone who responds well to classroom learning. There are two of these PyCamps scheduled for summer 2014 and are absolutely worth the trip out.
Other awesome stuff you might want to learn about
Learn Regular Expressions
Sorry, this is my soap box here. I’ll let you and Wikipedia read all about the history and purpose of Regular Expressions. I find them wonderfully useful and simple to pick up, but they take time and practice to gain mastery. Thus, starting exposure early is key.
Resources to get you started:
- The first chapter of Mastering Regular Expressions is a wonderful introduction to the topic, and the book continues on to be an excellent resource.
- Regex Crossword puzzles are a great way to practice without access to a specific project.
- Always have a Regex testing tool handy. I happen to use RegExr and like it, but there are many options out there.
- Feeling cocky? Blow your mind with this crossword.
- Meanwhile, the author of Learn Python the Hard Way is working on Learn Regex the Hard Way.
History of computing and the Internet
Up for a little light reading after all that coding? Learn about the history of the world you are stepping into.