MPCS 51042 Python Programming (Winter 2023)

Section 1
Instructor(s) Rehman, Suhail (suhail)
Location JCL 011
Meeting Times Tuesday 5:30pm - 8: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, and code review from previous assignments. Eight multi-part assignments will be given with one week for completion. A midterm and final examination will also be given.

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: Testing, documentation, and style
  • Week 9: Parallelism and concurrency
  • Week 10: Miscellaneous/special topics


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

MPCS 50101 or passing score on the programming placement exam.

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:

Not approved for CAPP or MACS students.

Overlapping Classes

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

  • MPCS 51230-1 -- User Interface and User Experience Design
  • MPCS 56511-2 -- Introduction to Computer Security
  • MPCS 51300-1 -- Compilers

Eligible Programs

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