from __future__

Introduction

These are the course notes for Advanced Python Programming.

This course explores a wide variety of programming concepts using Python and its vast ecosystem as a foundation. The goal is to explore advanced programming & software design concepts using newer features of the Python language as well as third-party libraries. The course will make heavy use of open source libraries & Python’s own code to understand how Python is written and what constitutes good “Pythonic” design.

We’ll cover:

Python as an evolving language. What’s new in Python? How and why does the language evolve & what has been added recently? What tools are Python developers using today?

Metaprogramming & “power-user” features. What are the parts of Python’s syntax & libraries that aren’t used every day that can lead to more expressive code? We’ll look at generators/coroutines, context managers, decorators, descriptors & other features typically not covered in earlier courses. How do they work internally? When do you use them?

Python & the web. Why is Python such a popular language for web development? We’ll use this as a jumping off point to discuss trade-offs in library design and work with libraries like Django, Flask, Starlette, FastAPI, etc.

Asynchronous programming in Python. What is the GIL? Why are there so many ways to do asynchronous work in Python & which are worth using? We’ll also explore some async web frameworks to see real-world usage.

Making Python faster. How write the most performant Python you can, and what to do when that still isn’t fast enough. We’ll touch on Python’s C API, PyPy and other alternate interpreters, and enhancing Python with Rust.

The course will take a look at how Python has changed in the last decade since becoming one of the top programming languages in the world– and use that as a tool to understand how programming itself has been evolving in the same period.

Course Syllabus: https://notes.jpt.sh/51052