# Practical Python Programming When I first learned Python nearly 25 years ago, I was immediately struck by the ease at which I could apply it to all sorts of messy work projects. Fast-forward a decade and I found myself teaching others the same joy. The result of that teaching is this course--material that has been actively taught to more than 400 in-person groups since 2007. Traders, systems admins, astronomers, NASA rocket scientists, and even a few software engineers--they've all taken this course. Now, the course is available for free. Enjoy! --David Beazley (http://www.dabeaz.com) ## Prerequisites and Target Audience The material you see here is the core of an instructor-led Python training course. It is typically taught in-person over the span of three or four days--requiring approximately 25-30 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. The goal of the 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 in Jupyter Notebooks or on deploying web apps). To complete this course, you simply need a basic installation of Python 3.6 or newer and time--especially the latter. ## Table of Contents * [1. Introduction to Python](01_Introduction/00_Overview) * [2. Working with Data](02_Working_with_data/00_Overview) * [3. Program Organization](03_Program_organization/00_Overview) * [4. Classes and Objects](04_Classes_objects/00_Overview) * [5. The Inner Workings of Python Objects](05_Object_model/00_Overview) * [6. Generators](06_Generators/00_Overview) * [7. A Few Advanced Topics](07_Advanced_Topics/00_Overview) * [8. Testing, Logging, and Debugging](08_Testing_debugging/00_Overview) * [9. Packages](09_Packages/00_Overview) ## Acknowledgements 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 decade. 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 took this course and contributed to its success with their feedback and discussion.