Skip to content

MPCS 51042: Python Programming

Course Description

Python is one of the most commonly used programming languages today across a huge range of sectors. It is a language designed to be easy to learn that emphasizes readable code via powerful and extensible syntax. This course provides a thorough overview of the Python language with an emphasis on writing idiomatic code.

This course aims to:

  • Build general-purpose programming skills. From thinking about decomposing problems into parts to thoughtful choices of data structures and algorithms.
  • Emphasize Python's strengths as a multi-paradigm language by exploring procedural, functional, and object-oriented styles.
  • Introduce the powerful ecosystem of Python libraries, and encourage continued growth as a Python programmer.

This course will cover:

  • Python Basics: types, variable, operations, control flow, iteration
  • Functions: including scope rules, functional programming constructs, recursion, and generators
  • Object-Oriented Programming in Python: classes, dynamic attributes, operators
  • Data structures in Python (lists, stacks, hash tables, queues, trees)
  • Modules, packages, and the broader Python ecosystem
  • A brief introduction to scientific computing in Python

Course Staff

Instructor

James Turk
jturk@uchicago.edu
Office: JCL 398E

Teaching Assistants

  • Summer Han
  • Pablo Hernandez Pedraza
  • Stanley Yi
  • Keling Yue

Office Hours

Regular office hours start Week 2, unless otherwise indicated.

Who Where When
Summer Han JCL 207 Monday 9:00-11:00am
Pablo Hernandez Pedraza JCL 207 Tuesday 3:30-4:30pm
Keling Yue JCL 205 Wednesday, 10:00am-noon (starting Week 3)
James Turk JCL 398E Wednesday 2:00-4:00pm
Stanley Yi JCL 205 Thursday 9:00-11:00am
Pablo Hernandez Pedraza JCL Common Area 3A Thursday 3:30-4:30pm
James Turk Zoom Friday, 11am-1pm

Note

James also has openings for appointments available: https://cal.com/jamesturk/autumn-office-hours

Please note that these are limited and they are shared between multiple classes, so please be considerate in your usage and favor the drop-in office hours for help on assignments.

Schedule

Meets Tuesday & Thursday 11:00am-12:20pm @ JCL 011.

Any schedule changes will be announced in class and on Ed Discussion.

Week Topics Assignment Resources & Readings *
1
Sep. 29-Oct 3
Python Basics
  • Running Python
  • Basic Syntax & Data Types
  • Sequence Data Types
Homework #0 Out Python Distilled Ch. 1-3.3
Learning Python Ch. 1-7, 12, 13, 16
Python Tutorial Parts 1-4.5
2
Oct 6-10
Python Basics (Part 2)
  • Compound Data Types
  • User Interaction
  • File I/O
Homework #0 Due Oct 10 @ 11:59pm CT
Homework #1 Out
Python Distilled Ch. 4.1-4.5, 5.1-5.10, 9.6-9.12
Learning Python Ch. 8, 9
Python Tutorial Parts 5, 7
3
Oct 13-17
Advanced Functions
  • Advanced Arguments
  • Functional Programming
Homework #1 Due Oct 17 @ 11:59pm CT
Homework #2 Out
Quiz #1 - Oct 16
Python Distilled Ch. 5-6
Learning Python Ch. 14, 17-20, 39
Python Tutorial Part 4
4
Oct 20-24
Comprehensions, Generators, Decorators
  • Generators & Comprehensions
  • Decorators
Homework #2 Due Oct 24 @ 11:59pm CT
Homework #3 Out
Python Distilled Ch. 8, 10
Learning Python Ch. 22-24
Python Tutorial Part 6, 10-12
5
Oct 27-Oct 31
Object Oriented Programming
  • Classes
  • Inheritance
Homework #3 Due Oct 31 @ 11:59pm CT
Homework #4 Out
Python Distilled Ch. 7
Learning Python Ch. 26-28
Python Tutorial Part 9.1-9.4
6
Nov 3-7
Advanced Classes
  • Abstract Base Classes
  • Class Based Design
  • Properties
Homework #4 Due Nov 7 @ 11:59pm CT
Homework #5 Out
Quiz #2 - Nov 4
Python Distilled Ch. 7
Learning Python Ch. 29, 31, 32
Python Tutorial Part 9.5
7
Nov 10-14
Python Data Model
  • Special Methods
  • Context Managers
  • Exceptions
  • Standard Library
Homework #5 Due Nov 14 @ 11:59pm CT
Homework #6 Out
Python Distilled Ch. 3.4-3.7, 4
Learning Python Ch. 30, 32-36, 38
Python Tutorial Part 8
8
Nov 17-21
Python Packages & Ecosystem
  • Standard Library Continued
  • PyPI
  • Testing
Homework #6 Due Nov 21 @ 11:59pm CT Python Distilled Ch. 9.15, 10
Python Tutorial Part 10-12
Nov 24-28 Thanksgiving Break
9
Dec 1-Dec 5
Special Topics
  • Past topics have included: optimization, NumPy/pandas, polars, data viz

Quiz #3 - Dec 2
10
Dec 8-12
No Class Final Project
Final Exam TBD

Readings

While there are no required textbooks for this course, I provide suggested readings from the following books.

I'd highly recommend picking up one of these, there is no need to get both:

  • Python Distilled (1st Edition), by David Beazley
  • Learning Python (5th Edition), by Mark Lutz

Additionally, these books may be useful to further explain concepts discussed in this course:

  • Fluent Python (2nd Edition), by Luciano Ramalho (1st Edition OK)
  • Python in a Nutshell (3rd Edition), by Martelli, Ravenscroft, and Holden

Software Environment

We will be using uv and Python 3.13 for this course, see the linked documentation to get a working environment on your machine.

See the UChicago CS Student Resource Guide for guidance on getting your environment set up.