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
|
Homework #0 Out |
Python Distilled: Learning Python: Python Tutorial |
|
| 2
Jan 12-16 |
Python Basics (Part 2)
|
Homework #0
Due Jan 16 @ 11:59pm CT Homework #1 Out |
Python Distilled: Learning Python: Python Tutorial |
|
| 3
Jan 19-23 |
Advanced Functions
|
Homework #1
Due Jan 23 @ 11:59pm CT Homework #2 Out Quiz #1 - Jan 22 |
Python Distilled: Learning Python: Python Tutorial |
|
| 4
Jan 26-30 |
Comprehensions, Generators, Decorators
|
Homework #2
Due Jan 30 @ 11:59pm CT Homework #3 Out |
Python Distilled: Learning Python: Python Tutorial |
|
| 5
Feb 2-6 |
Object Oriented Programming
|
Homework #3
Due Feb 6 @ 11:59pm CT Homework #4 Out |
Python Distilled: Learning Python: Python Tutorial |
|
| 6
Feb 9-13 |
Advanced Classes
|
Homework #4
Due Feb 13 @ 11:59pm CT Homework #5 Out Quiz #2 - Feb 11 |
Python Distilled: Learning Python: Python Tutorial |
|
| 7
Feb 16-20 |
Python Data Model
|
Homework #5
Due Feb 20 @ 11:59pm CT Homework #6 Out |
Python Distilled: Learning Python: Python Tutorial |
|
| 8
Feb 23-27 |
Python Packages & Ecosystem
|
Homework #6
Due Feb 27 @ 11:59pm CT |
Python Distilled: Python Tutorial |
|
| 9
Mar 2-6 |
Special Topics
|
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.