MPCS 51046 Intermediate Python Programming (Autumn 2022)

Section 1
Instructor(s) Troy, Chelsea (ctroy)
Location Online
Meeting Times Tuesday 11:30am - 1:30pm
Fulfills Core Programming



Python is a general-purpose programming language that is used in many application areas, including data science, machine learning/AI, web development, scientific computing, graphical user interfaces, systems programming, gaming, rapid prototyping, and more. This course provides a thorough overview of the Python 3 language with an emphasis on writing idiomatic code in Python and object-oriented design patterns and is suitable for students with some prior programming experience. We will develop an understanding of the core features of the languages and gain exposure to commonly used standard-library and third-party modules.

Course Format

Weekly classes will provide lectures, programming examples, in-class quizzes, and code review from previous assignments. In the first half of the quarter, four multi-part assignments will be given with one week for completion as well as a midterm examination. In the second half of the quarter, students will work on a project of their choosing and will present their work at the end of the class.

You are strongly encouraged to bring a laptop to class to follow along with examples interactively.


  • Week 1: The basics of Python
  • Week 2: Expanding on the basics
  • Week 3: Functional programming
  • Week 4: Classes and object-oriented programming
  • Week 5: The Python data model
  • Week 6: Properties and decorators (Mid-term)
  • Week 7: Modules and packages
  • Week 8: Parallelism and concurrency
  • Week 9: Asynchronous programming
  • Week 10: CPython Internals


While there are no required textbooks for this course, the following books may be useful for reference:

  • Learning Python, by Mark Lutz
  • Fluent Python, by Luciano Ramalho
  • Python in a Nutshell, by Martelli, Ravenscroft, and Holden
  • Python Essential Reference, by David Beazley

Course Prerequisites

High Pass on the programming placement exam.

MPCS students can not take this class if they have already taken a Core Programming class. Only one Core Programming class will be counted towards MPCS degree requirements. This can not be counted as an elective class.

Other Prerequisites

This course requires competency in Unix and Linux. Please plan to attend the MPCS Unix Bootcamp ( or review the UChicago CS Student Resource Guide here:

CAPP, MACSS and MSME students interested in taking this class should talk with their program's advisor.

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 52060-1 -- Parallel Programming
  • MPCS 54233-1 -- Foundations of Computer Networks

Eligible Programs

Masters Program in Computer Science Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors) Masters Program in Computer Science (new students)