MPCS 51052 Advanced Python Programming (Spring 2026)

Section 1
Instructor(s) Turk, James (jturk)
Location Crerar 011
Meeting Times Tuesday 11am - 12:20pm
Thursday 11am - 12:20pm
Website: https://notes.jpt.sh/51052/
Fulfills Elective

Syllabus

Description

This course explores a wide variety of programming concepts using Python and its vast ecosystem as a foundation. The course introduces newer features of the language as well as third-party libraries related to testing and performance, web programming, and extending Python with C or Rust. These libraries and language features are used to explore API design and other considerations of using Python in a production setting. The course will have regular programming assignments as a well as a final project.

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

Goals

  • Gain a deeper understanding of Python’s newer & more advanced features, with an eye towards language mastery.
  • See how common real-world tasks like parallel & web programming are done in the Python ecosystem.
  • Explore API design and real-world performance and design considerations.
  • Gain experience building a full application in Python through the course project.

Topics

  • Python as an evolving language. What's new in Python? How does the language evolve & what has been added recently? What tools are Python developers using today?
  • "power-user" features. We'll take a deep look into generators/coroutines, context managers, decorators, descriptors & other "advanced" features not covered in earlier courses. How do they work internally? When do you use them?
  • Asynchronous programming in Python. What is the GIL? Why are there so many ways to do this & which are worth using? `asyncio` 
  • Python & the web. Why is Python such a good 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.
  • Making Python faster. How to write the most performant Python you can, and what to do when that isn't enough. Will touch on Python's C API, PyPy and other alternate interpreters, and enhancing Python with Rust.
  • 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.

Assignments

The course will consist of several programming assignments to practice material covered in class as well as an open-ended project.

Course Prerequisites

B or better in MPCS 51042 Python Programming, MACS 30122, CMSC 14200, CAPP 30235 or a CAPP 30235 waiver.

Students who did not take MPCS 54102 Python Programming should have a B or better in MPCS 51036, 51040, 51046, 51100, or have a Core Waiver for programming and have a previous background in Python at the level of MPCS 51042. Please reach out to the instructor for permission to take the class.

Other Prerequisites

This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Course request information for non-MPCS students: https://masters.cs.uchicago.edu/student-resources/non-mpcs-student-course-requests/

Overlapping Classes

This class is scheduled at a time that does not conflict with any other classes this quarter.

Eligible Programs

MS in Computational Analysis in Public Policy (Year 1) MS in Computational Analysis in Public Policy (Year 2) MS in Molecular Engineering Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors) Masters Program in Computer Science Masters Program in Computer Science (new) Placement: Pass I