When I first learned Python nearly 25 years ago, I was immediately struck by how I could productively apply it to all sorts of messy work projects. Fast-forward a decade and I found myself teaching others the same fun. The result of that teaching is this course--A no-nonsense treatment of Python that has been actively taught to more than 400 in-person groups since 2007. Traders, systems admins, astronomers, tinkerers, and even a few rocket scientists who used Python to help land a rover on Mars--they've all taken this course. Now, I'm pleased to make it freely available under a Creative Commons license. Enjoy!
--David Beazley (https://dabeaz.com), @dabeaz
The material you see here is the heart of an instructor-led Python training course. It is typically taught in-person over the span of three or four days--requiring approximately 25-35 hours of work. This includes the completion of approximately 130 hands-on coding exercises.
The target audience is scientists, engineers, and programmers who already have experience in at least one other programming language. No prior knowledge of Python is required, but knowledge of common programming topics is assumed. Most participants find the course challenging--even if they've already been doing a bit of Python programming.
The goal of this course is to cover foundational aspects of Python programming with an emphasis on script writing, data manipulation, and program organization. The course does NOT focus on Python tooling, IDEs, or third-party packages (i.e., it's not focused on using data science libraries, Jupyter Notebooks, or on how to deploy an app to the cloud). It IS a course that aims to cover fundamental ideas about how Python programs work and how they are organized. Students WILL have to write scripts, functions and classes, work with code spread across multiple source files, deal with modules, and solve various problems related to refactoring.
To complete this course, you need nothing more than a basic installation of Python 3.6 or newer and time to work on it--especially the latter.
This is not a course for absolute beginners on how to program a computer. It is assumed that you already have programming experience in some other programming language or Python itself. You're not going to find cute stories about looping--or why you would want to do it.
This is not a course that aims to cover absolutely everything there is to know about Python. There is only so much material you can cover in 3-4 days before heads start to explode. If you're working through the course and wondering "why wasn't X covered?" there's probably a good reason--it was once included and it made everyone's head explode. Either that or there simply wasn't enough time to cover it.
This is not a course that aims to cover reference material, tricks, or recipes that you could just look up on python.org, Google, or Stack Overflow. Yes, there is enough reference material given to be functional, but the course is more focused on how to work with and think about Python coding.
This is not a course for software engineers on how to write or maintain a one-million line Python program. I don't write programs like that and neither should you. Delete something already! Python is a great language for personal productivity, prototyping ideas, and hacking cool things together. The course is about doing THAT in a way that's both practical and not so "hacky" that your co-workers give you stink-eye when they look at your code.
Ok, ok. Point your browser HERE!
Want to discuss the course? You can join the conversation on Gitter. I can't promise an individual response, but perhaps others can jump in to help.
Llorenç Muntaner was instrumental in converting the course content from Apple Keynote to the online structure that you see here.
Various instructors have presented this course at one time or another over the last 12 years. This includes (in alphabetical order): Ned Batchelder, Juan Pablo Claude, Mark Fenner, Michael Foord, Matt Harrison, Raymond Hettinger, Daniel Klein, Travis Oliphant, James Powell, Michael Selik, Hugo Shi, Ian Stokes-Rees, Yarko Tymciurak, Bryan Van de ven, Peter Wang, and Mark Wiebe.
I'd also like to thank the thousands of students who have taken this course and contributed to its success with their feedback and discussion.
No. This course is about you writing Python code, not watching someone else.
Practical Python Programming is licensed under a Creative Commons Attribution ShareAlike 4.0 International License.
Yes, as long as appropriate attribution is given.
Yes, as long as such works carry the same license terms and provide attribution.
Bug reports are appreciated and may be filed through the issue tracker. Pull requests are not accepted except by invitation. Please file an issue first.