# Advanced Python Mastery

A course by David Beazley (https://www.dabeaz.com)  
Copyright (C) 2007-2023  

## Synopsis

An exercise-driven course on Advanced Python Programming that was
battle-tested several hundred times on the corporate-training circuit
for more than a decade.  Written by David Beazley, author of the
Python Cookbook, 3rd Edition (O'Reilly) and Python Distilled
(Addison-Wesley).  Released under a Creative Commons license.  Free of
ads, tracking, pop-ups, newsletters, and AI.

## Target Audience 

This course is for Python programmers who want to move beyond 
short scripts to writing more sophisticated programs.  Topics
focus on programming techniques that get used in popular libraries and
frameworks. The primary goal is to better understand the Python language
itself so that you can understand other people's code and so that you
can apply your newfound knowledge to your own projects.

## Prerequisites

You already know some Python.  This is not a course for beginners.
For more introductory material, you might consider the
[Practical Python Programming](https://dabeaz-course.github.io/practical-python) course.

## How to Take the Course

To take the course, you should first fork/clone the GitHub repo to your own
machine.

It is assumed that you are working locally in a proper Python
development environment.  That means a proper installation of Python,
an editor/IDE, and whatever other tools that you would normally
install to work on Python.  Due to the use of multiple files and
module imports, the use of Notebooks is not recommended.

The [`PythonMastery.pdf`](PythonMastery.pdf) file contains detailed
presentation slides. Course exercises and suggested timings are
clearly indicated. You'll want to keep this by your side (I recommend
downloading and viewing it with a local PDF viewer). Start here! 

The [Exercises/](Exercises/index.md) directory has all of the
course exercises. 

The [Solutions/](Solutions/) directory has fully worked out solution code.

The [Data/](Data/) directory has some datafiles used during the course.

The course was originally taught over 4-5 days in an in-person
classroom setting with a mix of lecture and hands-on exercises.
Successful completion of the course will likely require 30-50 hours of
work.  Exercises tend to build upon each other.  Solutions are always
provided in case you get stuck.

## Supplemental Material

The Advanced Python Mastery course often suggested more in-depth tutorials
on selected topics.  These were presented at the PyCon conference and
might be of interest:

* [Generator Tricks for Systems Programmers](https://www.dabeaz.com/generators/)
* [A Curious Course on Coroutines and Concurrency](http://dabeaz.com/coroutines/index.html)
* [Python3 Metaprogramming](https://dabeaz.com/py3meta/index.html)
* [Generators: The Final Frontier](https://dabeaz.com/finalgenerator/index.html)
* [Modules and Packages: Live and Let Die](https://dabeaz.com/modulepackage/index.html)

## Questions and Answers

**Q: Are any videos available?**

**A:** No. You will be able to more quickly read the presentation slides which contain
technical information.  However, the [Python Programming Language: LiveLessons](https://www.safaribooksonline.com/library/view/python-programming-language/9780134217314/) video
available on O'Reilly's Safari site is closely related to the material in this course.

**Q: Can I use these materials in my own course?**

**A:** Yes. I just kindly ask that you give proper attribution.

**Q: Do you accept bug reports or pull requests?**

**A:** If you've found a bug, please report it!  However, I'm not
looking to expand or reorganize the course content with new topics or
exercises.

**Q: Are the presentation slides available in any format other than PDF?**

**A:** No.

**Q: Is there any forum/chat where the course can be discussed?**

**A:** You can use [GitHub discussions](https://github.com/dabeaz-course/python-mastery/discussions) to discuss the course.

**Q: Why wasn't topic/tool/library X covered?**

**A:** The course was designed to be completed in an intense 4-day
in-person format. It simply isn't possible to cover absolutely
everything.  As such, the course is focused primarily on the core
Python language, not third party libraries or tooling.

**Q: Why aren't features like typing, async, or pattern matching covered?**

**A:** Mainly, it's an issue of calendar timing and scope.  Course
material was primarily developed pre-pandemic and represents Python as
it was at that time. Some topics (e.g., typing or async) are
sufficiently complex that they would be better covered on their own
in a separate course.

**Q: Why did you release the course?**

**A:** This course was extensively taught pre-pandemic. Post-pandemic,
my teaching has shifted towards projects and CS fundamentals.
However, why let a good course just languish on my computer? 

**Q: How can I help?**

**A:** If you like the course, the best way to support it is to tell
other people about it.

----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)






