Note: this site is still up to serve as a reference for people who took the course in Fall of 2020. If you're currently enrolled, please head to the site for the current semester.
Course Schedule
Part 1: Performance
Week 1
[Mon] No Class (Aug 31)
[Wed] Reproducibility 1 (Sep 2)
- Course Overview
- Hardware, OS, Interpreters
Read: Syllabus
WEEKLY LAB: Cloud Setup
SLIDES
Week 2
[Mon] No Class (Sep 7)
- Labor Day
[Wed] Quantifying Perf 1 (Sep 9)
- check_output
- time
Read: HTML, NB
QUIZ 1 DUE
WEEKLY LAB: Git Practice
Released: P1 (perf measurements)
[Fri] Quantifying Perf 2 (Sep 11)
- complexity analysis
- Big O
Read: Think Python Appendix B (except B.4)
SLIDES
Week 3
[Mon] Quantifying Perf 3 (Sep 14)
- practice
WORKSHEET
ANSWERS
EXAMPLES
QUIZ 2 DUE
WEEKLY LAB: Complexity
[Wed] OOP 1: Classes (Sep 16)
- attributes
- methods
- constructors
Read: Think Python 15 + 17.1 - 17.5
Optional: Think Python 16
SLIDES
[Fri] OOP 2: Special Methods (Sep 18)
- __str__, __repr__, _repr_html_
- __eq__, __lt__
- __len__, __getitem__
- __enter__, __exit__
TEST CASES
Read: Think Python 17.6 - 17.12
Optional: Python Data Model
SLIDES
Week 4
[Mon] OOP 3: Inheritance (Sep 21)
- method resolution order
- overriding methods
- calling overridden methods
Read: Think Python 18
SLIDES
QUIZ 3 DUE
WEEKLY LAB: Zips
[Fri] Recursion (Sep 25)
- functions that return something
- functions that do something
Week 5
[Mon] Graphs and Tree Intro (Sep 28)
- types of graph
- graphviz
Read: HTML
QUIZ 4 DUE
WEEKLY LAB: Linked Lists
Part 2: Web and Visualization
Week 6
[Fri] Web 1: Selenium (Oct 9)
- advanced web scraping
SLIDES
Read: Selenium with Python, Ch 2
TRICKY PAGES
Week 7
[Mon] Web 2: Recursive Crawl (Oct 12)
- BFS for webpages
CRAWL PRACTICE
QUIZ 6 DUE
WEEKLY LAB: DFS vs. BFS
[Fri] Web 4: Logging, Rate Limiting, and robots.txt (Oct 16)
- wrappers based on *args and **kwargs*
- robots.txt
- HTTP 429
Read: robots.txt examples, HTTP 429
Interactive Exercises
Week 8
[Mon] Web 5: A/B testing (Oct 19)
- data collection
- significance
SLIDES
Read: The Morality of A/B Testing (TechCrunch article)
Due: P3
Released: P4 (website)
QUIZ 7 DUE
WEEKLY LAB: Web
[Fri] Regex 2 (Oct 23)
- findall, sub, groups
Week 9
[Wed] Visualization 2 (Oct 28)
- matplotlib coordinate systems
- drawing custom lines/polygons
[Fri] Visualization 3 (Oct 30)
- geographic maps
- shapefiles
- high resolution graphics
Due: P4
Released: P5 (trace analysis)
Week 10
[Wed] Visualization 5 (Nov 4)
- big example
- animated map of incidents scraped from Madison Fire Department
[Fri] Linear Algebra 1 (Nov 6)
- machine learning overview
- numpy arrays
- image manipulation
SLIDES
Read: Scipy Notes
Part 3: Machine Learning
Week 11
[Mon] Linear Algebra 2 (Nov 9)
- matrix multiplication basics
- equation solving
QUIZ 10 DUE
WEEKLY LAB: Dot Product
[Wed] Linear Algebra 3 (Nov 11)
- linear combinations
- column spaces
Due: P5
Released: P6 (land matrices and regression)
[Fri] Linear Algebra 4 (Nov 13)
- projection matrices
- fit lines
- loss functions
Week 12
[Mon] Linear Algebra 5 (Nov 16)
- fitting non-linear data
- correlation matrices
QUIZ 11 DUE
WEEKLY LAB: JOIN and Counting
[Wed] Linear Algebra 6 (Nov 18)
- principal component analysis
[Fri] Supervised Learning 1 (Nov 20)
- classification
- train+test split
Week 13
[Mon] Supervised Learning 2 (Nov 23)
- sklearn Pipeline
- custom classifiers+transformers
QUIZ 12 DUE
WEEKLY LAB: Decision Boundaries
[Wed] Supervised Learning 3 (Nov 25)
- confusion matrices
- precision and recall
- multi-class logistic regression
Due: P6
Released: P7 (sklearn)
SLIDES
[Fri] No Class (Nov 27)
- Happy Thanksgiving!
Week 14
[Mon] Supervised Learning 4 (Nov 30)
- categorical inputs
- one-hot encoding
QUIZ 13 DUE
WEEKLY LAB: P7 hints
[Wed] Unsupervised Learning (Dec 2)
- k-means
Week 15
[Fri] No Class (Dec 11)
- Study Day
[Mon] No Class (Aug 31)
[Wed] Reproducibility 1 (Sep 2)
- Course Overview
- Hardware, OS, Interpreters
WEEKLY LAB: Cloud Setup
SLIDES
[Mon] No Class (Sep 7)
- Labor Day
[Wed] Quantifying Perf 1 (Sep 9)
- check_output
- time
QUIZ 1 DUE
WEEKLY LAB: Git Practice
Released: P1 (perf measurements)
[Fri] Quantifying Perf 2 (Sep 11)
- complexity analysis
- Big O
SLIDES
Week 3
[Mon] Quantifying Perf 3 (Sep 14)
- practice
WORKSHEET
ANSWERS
EXAMPLES
QUIZ 2 DUE
WEEKLY LAB: Complexity
[Wed] OOP 1: Classes (Sep 16)
- attributes
- methods
- constructors
Read: Think Python 15 + 17.1 - 17.5
Optional: Think Python 16
SLIDES
[Fri] OOP 2: Special Methods (Sep 18)
- __str__, __repr__, _repr_html_
- __eq__, __lt__
- __len__, __getitem__
- __enter__, __exit__
TEST CASES
Read: Think Python 17.6 - 17.12
Optional: Python Data Model
SLIDES
Week 4
[Mon] OOP 3: Inheritance (Sep 21)
- method resolution order
- overriding methods
- calling overridden methods
Read: Think Python 18
SLIDES
QUIZ 3 DUE
WEEKLY LAB: Zips
[Fri] Recursion (Sep 25)
- functions that return something
- functions that do something
Week 5
[Mon] Graphs and Tree Intro (Sep 28)
- types of graph
- graphviz
Read: HTML
QUIZ 4 DUE
WEEKLY LAB: Linked Lists
Part 2: Web and Visualization
Week 6
[Fri] Web 1: Selenium (Oct 9)
- advanced web scraping
SLIDES
Read: Selenium with Python, Ch 2
TRICKY PAGES
Week 7
[Mon] Web 2: Recursive Crawl (Oct 12)
- BFS for webpages
CRAWL PRACTICE
QUIZ 6 DUE
WEEKLY LAB: DFS vs. BFS
[Fri] Web 4: Logging, Rate Limiting, and robots.txt (Oct 16)
- wrappers based on *args and **kwargs*
- robots.txt
- HTTP 429
Read: robots.txt examples, HTTP 429
Interactive Exercises
Week 8
[Mon] Web 5: A/B testing (Oct 19)
- data collection
- significance
SLIDES
Read: The Morality of A/B Testing (TechCrunch article)
Due: P3
Released: P4 (website)
QUIZ 7 DUE
WEEKLY LAB: Web
[Fri] Regex 2 (Oct 23)
- findall, sub, groups
Week 9
[Wed] Visualization 2 (Oct 28)
- matplotlib coordinate systems
- drawing custom lines/polygons
[Fri] Visualization 3 (Oct 30)
- geographic maps
- shapefiles
- high resolution graphics
Due: P4
Released: P5 (trace analysis)
Week 10
[Wed] Visualization 5 (Nov 4)
- big example
- animated map of incidents scraped from Madison Fire Department
[Fri] Linear Algebra 1 (Nov 6)
- machine learning overview
- numpy arrays
- image manipulation
SLIDES
Read: Scipy Notes
Part 3: Machine Learning
Week 11
[Mon] Linear Algebra 2 (Nov 9)
- matrix multiplication basics
- equation solving
QUIZ 10 DUE
WEEKLY LAB: Dot Product
[Wed] Linear Algebra 3 (Nov 11)
- linear combinations
- column spaces
Due: P5
Released: P6 (land matrices and regression)
[Fri] Linear Algebra 4 (Nov 13)
- projection matrices
- fit lines
- loss functions
Week 12
[Mon] Linear Algebra 5 (Nov 16)
- fitting non-linear data
- correlation matrices
QUIZ 11 DUE
WEEKLY LAB: JOIN and Counting
[Wed] Linear Algebra 6 (Nov 18)
- principal component analysis
[Fri] Supervised Learning 1 (Nov 20)
- classification
- train+test split
Week 13
[Mon] Supervised Learning 2 (Nov 23)
- sklearn Pipeline
- custom classifiers+transformers
QUIZ 12 DUE
WEEKLY LAB: Decision Boundaries
[Wed] Supervised Learning 3 (Nov 25)
- confusion matrices
- precision and recall
- multi-class logistic regression
Due: P6
Released: P7 (sklearn)
SLIDES
[Fri] No Class (Nov 27)
- Happy Thanksgiving!
Week 14
[Mon] Supervised Learning 4 (Nov 30)
- categorical inputs
- one-hot encoding
QUIZ 13 DUE
WEEKLY LAB: P7 hints
[Wed] Unsupervised Learning (Dec 2)
- k-means
Week 15
[Fri] No Class (Dec 11)
- Study Day
[Mon] Quantifying Perf 3 (Sep 14)
- practice
ANSWERS
EXAMPLES
QUIZ 2 DUE
WEEKLY LAB: Complexity
[Wed] OOP 1: Classes (Sep 16)
- attributes
- methods
- constructors
Optional: Think Python 16
SLIDES
[Fri] OOP 2: Special Methods (Sep 18)
- __str__, __repr__, _repr_html_
- __eq__, __lt__
- __len__, __getitem__
- __enter__, __exit__
Read: Think Python 17.6 - 17.12
Optional: Python Data Model
SLIDES
[Mon] OOP 3: Inheritance (Sep 21)
- method resolution order
- overriding methods
- calling overridden methods
SLIDES
QUIZ 3 DUE
WEEKLY LAB: Zips
[Fri] Recursion (Sep 25)
- functions that return something
- functions that do something
Week 5
[Mon] Graphs and Tree Intro (Sep 28)
- types of graph
- graphviz
Read: HTML
QUIZ 4 DUE
WEEKLY LAB: Linked Lists
Part 2: Web and Visualization
Week 6
[Fri] Web 1: Selenium (Oct 9)
- advanced web scraping
SLIDES
Read: Selenium with Python, Ch 2
TRICKY PAGES
Week 7
[Mon] Web 2: Recursive Crawl (Oct 12)
- BFS for webpages
CRAWL PRACTICE
QUIZ 6 DUE
WEEKLY LAB: DFS vs. BFS
[Fri] Web 4: Logging, Rate Limiting, and robots.txt (Oct 16)
- wrappers based on *args and **kwargs*
- robots.txt
- HTTP 429
Read: robots.txt examples, HTTP 429
Interactive Exercises
Week 8
[Mon] Web 5: A/B testing (Oct 19)
- data collection
- significance
SLIDES
Read: The Morality of A/B Testing (TechCrunch article)
Due: P3
Released: P4 (website)
QUIZ 7 DUE
WEEKLY LAB: Web
[Fri] Regex 2 (Oct 23)
- findall, sub, groups
Week 9
[Wed] Visualization 2 (Oct 28)
- matplotlib coordinate systems
- drawing custom lines/polygons
[Fri] Visualization 3 (Oct 30)
- geographic maps
- shapefiles
- high resolution graphics
Due: P4
Released: P5 (trace analysis)
Week 10
[Wed] Visualization 5 (Nov 4)
- big example
- animated map of incidents scraped from Madison Fire Department
[Fri] Linear Algebra 1 (Nov 6)
- machine learning overview
- numpy arrays
- image manipulation
SLIDES
Read: Scipy Notes
Part 3: Machine Learning
Week 11
[Mon] Linear Algebra 2 (Nov 9)
- matrix multiplication basics
- equation solving
QUIZ 10 DUE
WEEKLY LAB: Dot Product
[Wed] Linear Algebra 3 (Nov 11)
- linear combinations
- column spaces
Due: P5
Released: P6 (land matrices and regression)
[Fri] Linear Algebra 4 (Nov 13)
- projection matrices
- fit lines
- loss functions
Week 12
[Mon] Linear Algebra 5 (Nov 16)
- fitting non-linear data
- correlation matrices
QUIZ 11 DUE
WEEKLY LAB: JOIN and Counting
[Wed] Linear Algebra 6 (Nov 18)
- principal component analysis
[Fri] Supervised Learning 1 (Nov 20)
- classification
- train+test split
Week 13
[Mon] Supervised Learning 2 (Nov 23)
- sklearn Pipeline
- custom classifiers+transformers
QUIZ 12 DUE
WEEKLY LAB: Decision Boundaries
[Wed] Supervised Learning 3 (Nov 25)
- confusion matrices
- precision and recall
- multi-class logistic regression
Due: P6
Released: P7 (sklearn)
SLIDES
[Fri] No Class (Nov 27)
- Happy Thanksgiving!
Week 14
[Mon] Supervised Learning 4 (Nov 30)
- categorical inputs
- one-hot encoding
QUIZ 13 DUE
WEEKLY LAB: P7 hints
[Wed] Unsupervised Learning (Dec 2)
- k-means
Week 15
[Fri] No Class (Dec 11)
- Study Day
[Mon] Graphs and Tree Intro (Sep 28)
- types of graph
- graphviz
QUIZ 4 DUE
WEEKLY LAB: Linked Lists
[Fri] Web 1: Selenium (Oct 9)
- advanced web scraping
Read: Selenium with Python, Ch 2
TRICKY PAGES
Week 7
[Mon] Web 2: Recursive Crawl (Oct 12)
- BFS for webpages
CRAWL PRACTICE
QUIZ 6 DUE
WEEKLY LAB: DFS vs. BFS
[Fri] Web 4: Logging, Rate Limiting, and robots.txt (Oct 16)
- wrappers based on *args and **kwargs*
- robots.txt
- HTTP 429
Read: robots.txt examples, HTTP 429
Interactive Exercises
Week 8
[Mon] Web 5: A/B testing (Oct 19)
- data collection
- significance
SLIDES
Read: The Morality of A/B Testing (TechCrunch article)
Due: P3
Released: P4 (website)
QUIZ 7 DUE
WEEKLY LAB: Web
[Fri] Regex 2 (Oct 23)
- findall, sub, groups
Week 9
[Wed] Visualization 2 (Oct 28)
- matplotlib coordinate systems
- drawing custom lines/polygons
[Fri] Visualization 3 (Oct 30)
- geographic maps
- shapefiles
- high resolution graphics
Due: P4
Released: P5 (trace analysis)
Week 10
[Wed] Visualization 5 (Nov 4)
- big example
- animated map of incidents scraped from Madison Fire Department
[Fri] Linear Algebra 1 (Nov 6)
- machine learning overview
- numpy arrays
- image manipulation
SLIDES
Read: Scipy Notes
Part 3: Machine Learning
Week 11
[Mon] Linear Algebra 2 (Nov 9)
- matrix multiplication basics
- equation solving
QUIZ 10 DUE
WEEKLY LAB: Dot Product
[Wed] Linear Algebra 3 (Nov 11)
- linear combinations
- column spaces
Due: P5
Released: P6 (land matrices and regression)
[Fri] Linear Algebra 4 (Nov 13)
- projection matrices
- fit lines
- loss functions
Week 12
[Mon] Linear Algebra 5 (Nov 16)
- fitting non-linear data
- correlation matrices
QUIZ 11 DUE
WEEKLY LAB: JOIN and Counting
[Wed] Linear Algebra 6 (Nov 18)
- principal component analysis
[Fri] Supervised Learning 1 (Nov 20)
- classification
- train+test split
Week 13
[Mon] Supervised Learning 2 (Nov 23)
- sklearn Pipeline
- custom classifiers+transformers
QUIZ 12 DUE
WEEKLY LAB: Decision Boundaries
[Wed] Supervised Learning 3 (Nov 25)
- confusion matrices
- precision and recall
- multi-class logistic regression
Due: P6
Released: P7 (sklearn)
SLIDES
[Fri] No Class (Nov 27)
- Happy Thanksgiving!
Week 14
[Mon] Supervised Learning 4 (Nov 30)
- categorical inputs
- one-hot encoding
QUIZ 13 DUE
WEEKLY LAB: P7 hints
[Wed] Unsupervised Learning (Dec 2)
- k-means
Week 15
[Fri] No Class (Dec 11)
- Study Day
[Mon] Web 2: Recursive Crawl (Oct 12)
- BFS for webpages
QUIZ 6 DUE
WEEKLY LAB: DFS vs. BFS
[Fri] Web 4: Logging, Rate Limiting, and robots.txt (Oct 16)
- wrappers based on *args and **kwargs*
- robots.txt
- HTTP 429
Interactive Exercises
[Mon] Web 5: A/B testing (Oct 19)
- data collection
- significance
Read: The Morality of A/B Testing (TechCrunch article)
Due: P3
Released: P4 (website)
QUIZ 7 DUE
WEEKLY LAB: Web
[Fri] Regex 2 (Oct 23)
- findall, sub, groups
Week 9
[Wed] Visualization 2 (Oct 28)
- matplotlib coordinate systems
- drawing custom lines/polygons
[Fri] Visualization 3 (Oct 30)
- geographic maps
- shapefiles
- high resolution graphics
Due: P4
Released: P5 (trace analysis)
Week 10
[Wed] Visualization 5 (Nov 4)
- big example
- animated map of incidents scraped from Madison Fire Department
[Fri] Linear Algebra 1 (Nov 6)
- machine learning overview
- numpy arrays
- image manipulation
SLIDES
Read: Scipy Notes
Part 3: Machine Learning
Week 11
[Mon] Linear Algebra 2 (Nov 9)
- matrix multiplication basics
- equation solving
QUIZ 10 DUE
WEEKLY LAB: Dot Product
[Wed] Linear Algebra 3 (Nov 11)
- linear combinations
- column spaces
Due: P5
Released: P6 (land matrices and regression)
[Fri] Linear Algebra 4 (Nov 13)
- projection matrices
- fit lines
- loss functions
Week 12
[Mon] Linear Algebra 5 (Nov 16)
- fitting non-linear data
- correlation matrices
QUIZ 11 DUE
WEEKLY LAB: JOIN and Counting
[Wed] Linear Algebra 6 (Nov 18)
- principal component analysis
[Fri] Supervised Learning 1 (Nov 20)
- classification
- train+test split
Week 13
[Mon] Supervised Learning 2 (Nov 23)
- sklearn Pipeline
- custom classifiers+transformers
QUIZ 12 DUE
WEEKLY LAB: Decision Boundaries
[Wed] Supervised Learning 3 (Nov 25)
- confusion matrices
- precision and recall
- multi-class logistic regression
Due: P6
Released: P7 (sklearn)
SLIDES
[Fri] No Class (Nov 27)
- Happy Thanksgiving!
Week 14
[Mon] Supervised Learning 4 (Nov 30)
- categorical inputs
- one-hot encoding
QUIZ 13 DUE
WEEKLY LAB: P7 hints
[Wed] Unsupervised Learning (Dec 2)
- k-means
Week 15
[Fri] No Class (Dec 11)
- Study Day
[Wed] Visualization 2 (Oct 28)
- matplotlib coordinate systems
- drawing custom lines/polygons
[Fri] Visualization 3 (Oct 30)
- geographic maps
- shapefiles
- high resolution graphics
Released: P5 (trace analysis)
[Wed] Visualization 5 (Nov 4)
- big example
- animated map of incidents scraped from Madison Fire Department
[Fri] Linear Algebra 1 (Nov 6)
- machine learning overview
- numpy arrays
- image manipulation
Read: Scipy Notes
Part 3: Machine Learning
Week 11
[Mon] Linear Algebra 2 (Nov 9)
- matrix multiplication basics
- equation solving
QUIZ 10 DUE
WEEKLY LAB: Dot Product
[Wed] Linear Algebra 3 (Nov 11)
- linear combinations
- column spaces
Due: P5
Released: P6 (land matrices and regression)
[Fri] Linear Algebra 4 (Nov 13)
- projection matrices
- fit lines
- loss functions
Week 12
[Mon] Linear Algebra 5 (Nov 16)
- fitting non-linear data
- correlation matrices
QUIZ 11 DUE
WEEKLY LAB: JOIN and Counting
[Wed] Linear Algebra 6 (Nov 18)
- principal component analysis
[Fri] Supervised Learning 1 (Nov 20)
- classification
- train+test split
Week 13
[Mon] Supervised Learning 2 (Nov 23)
- sklearn Pipeline
- custom classifiers+transformers
QUIZ 12 DUE
WEEKLY LAB: Decision Boundaries
[Wed] Supervised Learning 3 (Nov 25)
- confusion matrices
- precision and recall
- multi-class logistic regression
Due: P6
Released: P7 (sklearn)
SLIDES
[Fri] No Class (Nov 27)
- Happy Thanksgiving!
Week 14
[Mon] Supervised Learning 4 (Nov 30)
- categorical inputs
- one-hot encoding
QUIZ 13 DUE
WEEKLY LAB: P7 hints
[Wed] Unsupervised Learning (Dec 2)
- k-means
Week 15
[Fri] No Class (Dec 11)
- Study Day
[Mon] Linear Algebra 2 (Nov 9)
- matrix multiplication basics
- equation solving
WEEKLY LAB: Dot Product
[Wed] Linear Algebra 3 (Nov 11)
- linear combinations
- column spaces
Released: P6 (land matrices and regression)
[Fri] Linear Algebra 4 (Nov 13)
- projection matrices
- fit lines
- loss functions
[Mon] Linear Algebra 5 (Nov 16)
- fitting non-linear data
- correlation matrices
WEEKLY LAB: JOIN and Counting
[Wed] Linear Algebra 6 (Nov 18)
- principal component analysis
[Fri] Supervised Learning 1 (Nov 20)
- classification
- train+test split
Week 13
[Mon] Supervised Learning 2 (Nov 23)
- sklearn Pipeline
- custom classifiers+transformers
QUIZ 12 DUE
WEEKLY LAB: Decision Boundaries
[Wed] Supervised Learning 3 (Nov 25)
- confusion matrices
- precision and recall
- multi-class logistic regression
Due: P6
Released: P7 (sklearn)
SLIDES
[Fri] No Class (Nov 27)
- Happy Thanksgiving!
Week 14
[Mon] Supervised Learning 4 (Nov 30)
- categorical inputs
- one-hot encoding
QUIZ 13 DUE
WEEKLY LAB: P7 hints
[Wed] Unsupervised Learning (Dec 2)
- k-means
Week 15
[Fri] No Class (Dec 11)
- Study Day
[Mon] Supervised Learning 2 (Nov 23)
- sklearn Pipeline
- custom classifiers+transformers
WEEKLY LAB: Decision Boundaries
[Wed] Supervised Learning 3 (Nov 25)
- confusion matrices
- precision and recall
- multi-class logistic regression
Released: P7 (sklearn)
SLIDES
[Fri] No Class (Nov 27)
- Happy Thanksgiving!
[Mon] Supervised Learning 4 (Nov 30)
- categorical inputs
- one-hot encoding
WEEKLY LAB: P7 hints
[Wed] Unsupervised Learning (Dec 2)
- k-means
Week 15
[Fri] No Class (Dec 11)
- Study Day
[Fri] No Class (Dec 11)
- Study Day