ICS 33 Winter 2026
Schedule


In lieu of a course textbook, assigned readings are mainly the Notes and Examples from lecture. It is a good idea to skim the assigned reading before the lecture for the main ideas, attend lecture, and then to go through the assigned reading again to fill in the details that you missed, both in your initial skim of the reading and in the lecture.

Date Lecture Topics Readings Assigned Work
Week 1
Lectures
  • Course introduction
  • The importance of natural curiosity
  • Experimentation in a running Python shell
  • Dictionaries as a recurring theme in Python
  • Scopes and namespaces
  • Shadowing and the LEGB rule
  • Module importation
  • How different ways to import behave differently
  • Importation in non-global scopes
  • Importation vs. loading
  • Classes and objects
  • Attributes in objects
  • Attributes in classes
  • Static and class methods
  • Positional and keyword arguments
  • Packing and unpacking
  • Default arguments
  • Tuple-packing parameters
  • Keyword-only and positional-only parameters
  • Dictionary-packing parameters
W 1/7
F 1/9
  • Lab sections begin meeting today
Week 2
Lectures
  • Context managers and the with statement
  • Examples of existing context managers in Python
  • Writing one's own context managers
  • Asymptotic analysis
  • O-notation
  • The limitations of O-notation
  • "Closest-fit" O-notation
  • Measuring time and memory
W 1/14
F 1/16
Week 3
Lectures
  • Searching
  • The mechanics of Python lists
  • Sequential search
  • Binary search
  • Best-, worst-, and average-case analysis
  • Databases and persistence
  • Relational databases
  • Tables, rows, and columns
  • Primary keys
  • Relationships and foreign keys
M 1/19
  • University Holiday: Martin Luther King Jr. Day — NO LABS TODAY
F 1/23
Week 4
Lectures
  • SQL and SQLite
  • Creating tables in SQL
  • Querying data using SQL's SELECT
  • Modifying data using SQL's INSERT and UPDATE
  • Removing data using SQL's DELETE
  • The meaning of NULL in SQL
  • Constraints and data integrity
  • Relationships and joins
  • List comprehensions
  • Set comprehensions
  • Interlude: What does it mean to be hashable?
  • Dictionary comprehensions
W 1/28
Week 5
Lectures
  • The mechanics of iteration
  • The iterable protocol
  • Implementing one's own iterator class
  • Generators
  • Using generators to decouple parts of a design
  • Generator comprehensions
  • Lazy evaluation
  • Infinite generators
  • Combining generators
  • Generators in the Python standard library
M 2/2
Week 6
Lectures
  • The Python data model
  • Sized objects
  • Booleanness of objects
  • Indexing and slicing
  • Hashing
  • Overloading comparison operators
  • Overloading arithmetic operators
  • Revisiting the resolution of attribute access
M 2/9
W 2/11
Week 7
Lectures
M 2/16
  • University Holiday: Memorial Day — NO LABS TODAY
Week 8
Lectures
Week 9
Lectures
Week 10
Lectures
Finals Week
Th 3/19
  • FINAL EXAM (Lecture A): 4:00pm-6:00pm, ELH 100
  • FINAL EXAM (Lecture B): 7:00pm-9:00pm, ELH 100