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
|
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)
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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.