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

Tyler J. Skluzacek
skluzacek@uchicago.edu
Office: JCL 398E

Teaching Assistants

  • Person A
  • Person B
  • Person C
  • Person D

Office Hours

Regular office hours start Week 2, unless otherwise indicated.

Who Where When
Person A JCL 207 Monday 9:00-11:00am
Person B JCL 207 Tuesday 3:30-4:30pm
Person C JCL 205 Wednesday, 10:00am-noon (starting Week 3)
Tyler J. Skluzacek JCL 398E Wednesday 2:00-4:00pm
Person D JCL 205 Thursday 9:00-11:00am
Person E JCL Common Area 3A Thursday 3:30-4:30pm
Tyler J. Skluzacek Zoom Friday, 11am-1pm

Note

Tyler also has openings for appointments available by email request.

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 the class Slack channel.

Winter 2026 Academic Calendar

  • Monday, January 5: Winter Quarter Begins
  • Monday, January 19: Martin Luther King, Jr. Day (class will still be held)
  • Saturday, March 7 – Monday, March 9: College Reading Period
  • Tuesday, March 10 – Friday, March 13: College Final Exams
  • Saturday, March 14: Winter Quarter Ends
Week Topics Assignment Resources & Readings *
1
Jan 5-9
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
Jan 12-16
Python Basics (Part 2)
  • Compound Data Types
  • User Interaction
  • File I/O
Homework #0
Due Jan 16 @ 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
Jan 19-23
Advanced Functions
  • Advanced Arguments
  • Functional Programming
Homework #1
Due Jan 23 @ 11:59pm CT

Homework #2 Out
Quiz #1 - Jan 22

Python Distilled:
Ch. 5-6

Learning Python:
Ch. 14, 17-20, 39

Python Tutorial
Part 4

4
Jan 26-30
Comprehensions, Generators, Decorators
  • Generators & Comprehensions
  • Decorators
Homework #2
Due Jan 30 @ 11:59pm CT

Homework #3 Out

Python Distilled:
Ch. 8, 10

Learning Python:
Ch. 22-24

Python Tutorial
Parts 6, 10-12

5
Feb 2-6
Object Oriented Programming
  • Classes
  • Inheritance
Homework #3
Due Feb 6 @ 11:59pm CT

Homework #4 Out

Python Distilled:
Ch. 7

Learning Python:
Ch. 26-28

Python Tutorial
Parts 9.1-9.4

6
Feb 9-13
Advanced Classes
  • Abstract Base Classes
  • Class Based Design
  • Properties
Homework #4
Due Feb 13 @ 11:59pm CT

Homework #5 Out
Quiz #2 - Feb 11

Python Distilled:
Ch. 7

Learning Python:
Ch. 29, 31, 32

Python Tutorial
Part 9.5

7
Feb 16-20
Python Data Model
  • Special Methods
  • Context Managers
  • Exceptions
  • Standard Library
Homework #5
Due Feb 20 @ 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
Feb 23-27
Python Packages & Ecosystem
  • Standard Library Continued
  • PyPI
  • Testing
Homework #6
Due Feb 27 @ 11:59pm CT

Python Distilled:
Ch. 9.15, 10

Python Tutorial
Parts 10-12

9
Mar 2-6
Special Topics
  • Past topics have included: optimization, NumPy/pandas, polars, data viz

Quiz #3 - Mar 3
10
Mar 9-13
Reading Period & Final Exams 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.

Acknowledgment

Course materials adapted from the original course developed by James Turk.