| Date |
Lecture Topics |
Readings |
Assigned Work |
| Week 0 |
| 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
|
|
|
| F 9/26 |
|
|
|
| Week 1 |
| Lectures |
- 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
- Context managers and the
with statement
- Examples of existing context managers in Python
- Writing one's own context managers
|
|
|
| M 9/29 |
|
|
- Lab sections begin meeting today
|
| F 10/3 |
|
|
|
| Week 2 |
| Lectures |
- Asymptotic analysis
- O-notation
- The limitations of O-notation
- "Closest-fit" O-notation
- Measuring time and memory
- Searching
- The mechanics of Python lists
- Sequential search
- Binary search
- Best-, worst-, and average-case analysis
|
|
|
| F 10/10 |
|
|
|
| Week 3 |
| Lectures |
- Databases and persistence
- Relational databases
- Tables, rows, and columns
- Primary keys
- Relationships and foreign keys
- 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
|
|
|
| W 10/15 |
|
|
|
| F 10/17 |
|
|
|
| Week 4 |
| Lectures |
- List comprehensions
- Set comprehensions
- Interlude: What does it mean to be hashable?
- Dictionary comprehensions
- The mechanics of iteration
- The iterable protocol
- Implementing one's own iterator class
- Generators
- Using generators to decouple parts of a design
|
|
|
| F 10/24 |
|
|
|
| Week 5 |
| Lectures |
- Generator comprehensions
- Lazy evaluation
- Infinite generators
- Combining generators
- Generators in the Python standard library
- The Python data model
- Sized objects
- Booleanness of objects
- Indexing and slicing
|
|
|
| Week 6 |
| Lectures |
- Hashing
- Overloading comparison operators
- Overloading arithmetic operators
- Revisiting the resolution of attribute access
- Single inheritance
- How derived classes reuse and enrich base class functionality
- Multiple inheritance
- Method resolution order (MRO)
|
|
|
| M 11/3 |
|
|
|
| W 11/5 |
|
|
|
| Week 7 |
| Lectures |
|
|
|
| Tu 11/11 |
- University Holiday: Veterans Day — NO LECTURE TODAY
|
|
|
| F 11/14 |
|
|
|
| Week 8 |
| Lectures |
|
|
|
| Week 9 |
| Lectures |
|
|
|
| Th 11/27 |
- University Holiday: Thanksgiving — NO LECTURE TODAY
|
|
|
| F 11/28 |
- University Holiday: Thanksgiving — NO LABS TODAY
|
|
|
| Week 10 |
| Lectures |
|
|
|
| Finals Week |
| Th 12/11 |
- FINAL EXAM: 4:00pm-6:00pm, BS3 1200
|
|
|