MPCS 51042 Python Programming (Autumn 2022)

Section 1
Instructor(s) Turk, James (jturk)
Location RY 251
Meeting Times Monday 5:30pm - 8:30pm
Fulfills Core Programming



Python is a general-purpose programming language that is used in many application areas, including web
development, scientific computing, graphical user interfaces, systems programming, gaming, rapid prototyping,
data mining, 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.

Course Overview

  • Python Basics: types, variable, operations, control flow, iteration
  • Functions, recursion, generators and scope
  • Classes, objects, OOP programming
  • Decorators and dynamic attributes
  • The Python Data Model
  • Modules, packages, & distribution
  • Data structures in Python (lists, stacks, hash tables, queues, trees)
  • An overview of the Python Standard library & ecosystem.
  • Scientific computing and data manipulation (pandas, numpy, etc)


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

  • Python Distilled (1st Edition) -or- Python Essential Reference (4th Edition), by David Beazley
  • Learning Python (5th Edition), by Mark Lutz
  • Fluent Python (2nd Edition), by Luciano Ramalho (1st Edition OK)
  • Python in a Nutshell (3rd Edition), by Martelli, Ravenscroft, and Holden

Course Prerequisites

Immersion programming (MPCS 50101) or passing score on Programming Placement Exam.

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 50101-1 -- Concepts of Programming
  • MPCS 51036-1 -- Java Programming
  • MPCS 51040-1 -- C Programming
  • MPCS 51240-1 -- Product Management
  • MPCS 51205-1 -- Topics in Software Engineering

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)