| 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
|
|
|
| F 4/3 |
|
|
- Lab sections begin meeting today
- Begin working through Project 0 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 4/8 |
|
|
|
| F 4/10 |
|
|
|
| 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
|
|
|
| F 4/17 |
|
|
|
| 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 4/22 |
|
|
|
| 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 4/27 |
|
|
|
| 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 5/4 |
|
|
|
| W 5/6 |
|
|
|
| Week 7 |
| Lectures |
- Single inheritance
- How derived classes reuse and enrich base class functionality
- Multiple inheritance
- Method resolution order (MRO)
- Revisiting recursion in depth
- Single, direct recursion
- Indirect (mutual) recursion
- Asymptotic analysis of recursion
- Tail recursion
- Multiple recursion
|
|
|
| F 5/15 |
|
|
|
| Week 8 |
| Lectures |
|
|
|
| M 5/18 |
|
|
|
| Week 9 |
| Lectures |
|
|
|
| M 5/25 |
- University Holiday: Memorial Day — NO LABS TODAY
|
|
|
| Week 10 |
| Lectures |
|
|
|
| Finals Week |
| Th 6/11 |
- FINAL EXAM (Lecture A): 4:00pm-6:00pm, BS3 1200
- FINAL EXAM (Lecture B): 7:00pm-9:00pm, BS3 1200
|
|
|