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

Teaching Assistants

  • Kaed Esposo
  • Akshat Singhania
  • Seena Vazefedunn

Office Hours

Regular office hours start Week 1, unless otherwise indicated.

Who Where When
Tyler JCL 207 Monday 3:00-4:00pm
Seena JCL 207 (+Zoom) Tuesday 2:00-4:00pm
Kaed JCL Common Area 3A (+Zoom) Wednesday, 12:00-2:00pm
Tyler Zoom-only Thursday, 3:00-4:00pm -- starting week 2
Akshat JCL Common Area 2D (+Zoom) Friday, 12:00-2:00pm

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 Monday 5:00-8:00pm @ 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 not be held; make-up class to be scheduled)
  • 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
  • Input Sources and Output Behavior
  • File I/O
Homework #0
Due Jan 12 @ 4:59pm

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
  • Identity and References
  • Advanced Arguments
  • Functional Programming
Homework #1
Due Weds Jan 21 @ 11:59pm

Homework #2 Out
Weds

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 Wed. Jan 28 @ 11:59pm

Homework #3 Out
Quiz #1 - Jan 26

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 Mon. Feb 2 @ 11:59pm

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 9 @ 11:59pm

Homework #5 Out
Quiz #2 - Feb 9

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
  • Special: Jupyter
  • Special: Pandas
Homework #5
Due Feb 20 @ 11:59pm

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 Data Science Ecosystem
  • Special: Pandas (continued)
  • Special: NumPy
  • Special: Matplotlib
  • Activity: Homework 6 Part 1 of 2
Homework #6
Due Mar 7 @ 11:59pm (worked through in class or independently, Weeks 8 and 9)

Python Distilled:
Ch. 9.15, 10

Python Tutorial
Parts 10-12

9
Mar 2-6
Special Topics
  • Special: Scikit-learn
  • Special: Matplotlib (continued)
  • Activity: Homework 6 Part 2 of 2

Quiz #3 - Mar 2
10
Mar 9-13
Final Exam Final Project
Final Exam Mar 9 5-8pm

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.