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
- Arkadeep Bandyopadhyay
- Collin Olander
- Echo Nattinger
- Hieu Nguyen
- Kathy Yao
- Qixin Lin
Office Hours
Who | Where | When |
---|---|---|
Echo Nattinger | JCL 207 | Monday 12:30-2:30pm |
Arkadeep Bandyopadhyay | Zoom (see Ed) | Tuesday 11am-noon |
Kathy Yao | JCL 207 | Tuesday 2:30-4:30pm |
Qixin Lin | JCL Common Area 3A | Wednesday 9:00am-11:00am |
Hieu Nguyen | JCL Common Area 3A | Wednesday 11:00am-1:00pm |
James Turk | JCL 398E | Wednesday 4:30-6:00pm |
Collin Olander | Zoom (see Ed) | Thursday 10:00am-11:00am |
James Turk | JCL 398E | Thursday 11am-12:30pm |
Arkadeep Bandyopadhyay | JCL 205 | Thursday 2:00pm-3:00pm |
Collin Olander | Zoom (see Ed) | Friday 10:00am-11:00am |
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
Schedule subject to change, changes will be announced in class and on Ed Discussion.
Week | Topics | Assignment | Resources & Readings * | ||
---|---|---|---|---|---|
1 Sep. 30-Oct 4 |
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 7-11 |
Python Basics (Part 2)
|
Homework #0 Due Oct 11 @ 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 14-18 |
Advanced Functions
|
Homework #1 Due Oct 18 @ 11:59pm CT
Homework #2 Out Quiz #1 |
Python Distilled Ch. 5-6 Learning Python Ch. 14, 17-20, 39 Python Tutorial Part 4 |
||
4
Oct 21-25 |
Comprehensions, Generators, Decorators
|
Homework #2 Due Oct 25 @ 11:59pm CT
Homework #3 Out |
Python Distilled Ch. 8, 10 Learning Python Ch. 22-24 Python Tutorial Part 6, 10-12 |
||
5
Oct 28-Nov 1 |
Object Oriented Programming
|
Homework #3 Due Nov 1 @ 11:59pm CT
Homework #4 Out |
Python Distilled Ch. 7 Learning Python Ch. 26-28 Python Tutorial Part 9.1-9.4 |
||
6
Nov 4-8 |
Advanced Classes
|
Homework #4 Due Nov 8 @ 11:59pm CT
Homework #5 Out Quiz #2 |
Python Distilled Ch. 7 Learning Python Ch. 29, 31, 32 Python Tutorial Part 9.5 |
||
7
Nov 11-15 |
Python Data Model
|
Homework #5 Due Nov 15 @ 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 18-22 |
Python Packages & Ecosystem
|
Homework #6 Due Nov 22 @ 11:59pm CT |
Python Distilled Ch. 9.15, 10 Python Tutorial Part 10-12 |
||
Nov 25-29 | Thanksgiving Break | ||||
9
Dec 1-Dec 6 |
Scientific Python
|
Quiz #3 |
|||
10
Dec 9-13 |
No Class |
Final Project Due
Final Exam 51042-1: Monday, Dec 9, 5:30pm. Final Exam 51042-2: Tuesday, Dec 10, 3-5pm. |
Monday Section
(MPCS 51042-1)
Meets Mondays 5:30pm-8:30pm @ RY 276.
Tuesday/Thursday Section
(MPCS 51042-2)
Meets Monday & Wednesday 3:00pm-4:20pm @ JCL 011.
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
Required Software
- python 3.10 or later
- uv 0.4.9 or later
- git
- Editor of your choice (VSCode supported)
See the UChicago CS Student Resource Guide for guidance on getting your environment set up.
Server Environment
We have custom VMs for this course with the required version of required tools.
Please use these in lieu of the linux.cs.uchicago.edu servers to ensure assignments work as expected.
Pick your server based on the first letter of your CNetID:
First Letter | Server |
---|---|
A, B, C, D, E | mpcs51042-0.cs.uchicago.edu |
F, G, H, I | mpcs51042-1.cs.uchicago.edu |
J, K | mpcs51042-2.cs.uchicago.edu |
L, M, N, O | mpcs51042-3.cs.uchicago.edu |
P, Q, R, S | mpcs51042-4.cs.uchicago.edu |
T, U, V, W, X, Y, Z | mpcs51042-5.cs.uchicago.edu |