This is an intense hands-on course that focuses on problem solving, design, abstraction, and advanced programming practice in the Python language. The main focus is on programming fundamentals including data abstraction, functional vs. imperative programming, object-orientation, concurrency, event-driven systems, and linguistic abstraction. Along the way, you'll learn a lot more about how Python works and how to better manage software complexity in your own projects.
This course is aimed at Python programmers who want to move beyond the writing of scripts that glue together existing libraries into the land of creating custom libraries, frameworks, and larger applications. You should already be comfortable using Python's builtin types, writing functions, and defining simple classes. It is not necessary to have prior knowledge of "advanced" Python features.
Each course day consists of a mix of prepared presentation, hands-on programming exercises, and group discussion. Plan to spend at least 4-5 hours each day working on the exercises. Parts of the course may also involve group code review.
The course aims to cover the following core topics:
It's important to note that the main focus of this course is on programming. A wide range of advanced Python language features will be covered, but the course is not organized around learning language features. Also, this is not a course on software engineering--it does not cover tooling, testing, teamwork, packaging, deployment, agile, and other related topics. It's about creating well organized software that ultimately makes all of those things much easier.
For many years, I've taught two Python courses, Practical Python Programming and Advanced Python Mastery. Those courses are strongly focused on the Python language itself. This is a new course with a completely different emphasis on programming practice and design. There is no overlap in course materials or exercises.
The course is taught by David Beazley, author of the Python Essential Reference, 4th Edition (Addison Wesley) and Python Cookbook, 3rd Edition (O'Reilly Media). David has been actively involved with the Python community since 1996 and was one of the early pioneers of using Python with scientific software. From 1998-2005, he was an assistant professor in the Department of Computer Science at the University of Chicago. You might also know Dave from this somewhat infamous bit of live coding. More recently, he gave a tutorial on lambda calculus at PyCon 2019.