Note: this site is still up to serve as a reference for people who took the course in Spring of '20. If you're currently enrolled, please head to the site for the current semester.
Course Schedule
Part 1: Quantifying and Improving Performance
Week 1
Week 2
[Mon] Quantifying Perf 1 (Jan 27)
- check_output
- time
LECTURE NB
AUDIO (NO VIDEO)
Read: HTML, NB
WEEKLY LAB: Git Practice
[Wed] Quantifying Perf 2 (Jan 29)
- complexity analysis
- Big O
LECTURE NB STARTER
SLIDES
VIDEO
Read: Think Python Appendix B (except B.4)
Released: P1
Week 3
[Mon] OOP 1: Classes (Feb 3)
- attributes
- methods
- constructors
NOTEBOOK
SLIDES
VIDEO
Read: Think Python 15 + 17.1 - 17.5
Optional: Think Python 16
WEEKLY LAB: Complexity
[Wed] OOP 2: Special Methods (Feb 5)
- __str__, __repr__, _repr_html_
- __eq__, __lt__
- __len__, __getitem__
- __enter__, __exit__
NOTEBOOK
SLIDES
VIDEO
TEST CASES
Read: Think Python 17.6 - 17.12
Optional: Python Data Model
[Fri] OOP 3: Inheritance (Feb 7)
- method resolution order
- overriding methods
- calling overridden methods
LECTURE NB STARTER
NOTEBOOK
SLIDES
VIDEO
Read: Think Python 18
Week 4
[Mon] Review + Practice (Feb 10)
- Inheritance
- Recursion
WORKSHEET
WEEKLY LAB: Linked Lists and Zips
VIDEO
Week 5
[Mon] Graphs 3 (Feb 17)
- implementing dictionaries with BSTs
- graph search
LECTURE NB STARTER
MORNING NB
SLIDES
Read: HTML
WEEKLY LAB: BSTs and More!
VIDEO
[Wed] Graphs 4 (Feb 19)
- DFS vs. BFS
- time vs. memory complexity
SLIDES
LECTURE NB STARTER
MORNING NB
AFTERNOON NB
Read: HTML
VIDEO
Part 2: Tracing and Evaluating Data Applications
Week 6
[Mon] Regex 1 (Feb 24)
- character classes
- repetition
- anchoring
- findall, sub, groups
LECTURE NB STARTER
SLIDES
Read: DS100 Ch 8
WEEKLY LAB: DFS vs. BFS
STUDENT EXAMPLES
VIDEO
[Fri] Web 1: Flask (Feb 28)
- review from CS 220
- RPC, POST
- decorators
Due: P2
DECORATOR EXAMPLES
SLIDES
VIDEO
Week 7
[Mon] Web 2: Tracing (Mar 2)
- wrappers based on *args and **kwargs
Read: Think Python, Ch 12.4 and 19.9
SLIDES
Interactive Exercises
WEEKLY LAB: Web and Regex
VIDEO
[Wed] Web 3: Selenium (Mar 4)
- advanced web scraping
Read: Selenium with Python, Ch 2
TRICKY PAGES
SLIDES
VIDEO
Week 8
[Mon] Web 5: Recursive Crawl (Mar 9)
- BFS for webpages
- robots.txt
- HTTP 429
Read: robots.txt examples, HTTP 429
CRAWL PRACTICE
SLIDES
LECTURE NB
WEEKLY LAB: Exam Prep
VIDEO
[Wed] Review/Exam (Mar 11)
[Fri] Web 5: A/B testing (Mar 13)
- data collection
- significance
Read: The Morality of A/B Testing (TechCrunch article)
SLIDES
Due: P3
Released: P4, example animation
VIDEO (Youtube)
Week 9
[Mon] Spring Break! (Mar 16)
No Class
[Wed] Spring Break! (Mar 18)
No Class
[Fri] Spring Break! (Mar 20)
No Class
Week 10
[Mon] Visualization 1 (Mar 23)
- wrapup web scraping
- matplotlib coordinate systems
LECTURE
WEEKLY LAB: .zips and geo maps
Part 3: Pre-Machine Learning
Week 11
[Wed] Linear Algebra 1 (Apr 1)
- machine learning overview
- numpy arrays
- image manipulation
LECTURE
SLIDES
Due: P4
Released: P5
Read: Scipy Notes 1.3.1
Week 12
[Mon] Linear Algebra 3 (Apr 6)
- linear combinations
- column spaces
- projection matrices
LECTURE
SLIDES
WEEKLY LAB: JOIN and Counting
Week 13
Week 14
[Mon] Optimization (Apr 20)
- gradient descent
- least squares
FINAL: Proposal Due
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Fri] Supervised Learning 2 (Apr 24)
- confusion matrices
- precision and recall
- multi-class logistic regression
LECTURE
FINAL: Plot to Peers
Week 15
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
LECTURE
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
LECTURE
FINAL: Project Showcase
[Mon] Quantifying Perf 1 (Jan 27)
- check_output
- time
AUDIO (NO VIDEO)
Read: HTML, NB
WEEKLY LAB: Git Practice
[Wed] Quantifying Perf 2 (Jan 29)
- complexity analysis
- Big O
SLIDES
VIDEO
Read: Think Python Appendix B (except B.4)
Released: P1
Week 3
[Mon] OOP 1: Classes (Feb 3)
- attributes
- methods
- constructors
NOTEBOOK
SLIDES
VIDEO
Read: Think Python 15 + 17.1 - 17.5
Optional: Think Python 16
WEEKLY LAB: Complexity
[Wed] OOP 2: Special Methods (Feb 5)
- __str__, __repr__, _repr_html_
- __eq__, __lt__
- __len__, __getitem__
- __enter__, __exit__
NOTEBOOK
SLIDES
VIDEO
TEST CASES
Read: Think Python 17.6 - 17.12
Optional: Python Data Model
[Fri] OOP 3: Inheritance (Feb 7)
- method resolution order
- overriding methods
- calling overridden methods
LECTURE NB STARTER
NOTEBOOK
SLIDES
VIDEO
Read: Think Python 18
Week 4
[Mon] Review + Practice (Feb 10)
- Inheritance
- Recursion
WORKSHEET
WEEKLY LAB: Linked Lists and Zips
VIDEO
Week 5
[Mon] Graphs 3 (Feb 17)
- implementing dictionaries with BSTs
- graph search
LECTURE NB STARTER
MORNING NB
SLIDES
Read: HTML
WEEKLY LAB: BSTs and More!
VIDEO
[Wed] Graphs 4 (Feb 19)
- DFS vs. BFS
- time vs. memory complexity
SLIDES
LECTURE NB STARTER
MORNING NB
AFTERNOON NB
Read: HTML
VIDEO
Part 2: Tracing and Evaluating Data Applications
Week 6
[Mon] Regex 1 (Feb 24)
- character classes
- repetition
- anchoring
- findall, sub, groups
LECTURE NB STARTER
SLIDES
Read: DS100 Ch 8
WEEKLY LAB: DFS vs. BFS
STUDENT EXAMPLES
VIDEO
[Fri] Web 1: Flask (Feb 28)
- review from CS 220
- RPC, POST
- decorators
Due: P2
DECORATOR EXAMPLES
SLIDES
VIDEO
Week 7
[Mon] Web 2: Tracing (Mar 2)
- wrappers based on *args and **kwargs
Read: Think Python, Ch 12.4 and 19.9
SLIDES
Interactive Exercises
WEEKLY LAB: Web and Regex
VIDEO
[Wed] Web 3: Selenium (Mar 4)
- advanced web scraping
Read: Selenium with Python, Ch 2
TRICKY PAGES
SLIDES
VIDEO
Week 8
[Mon] Web 5: Recursive Crawl (Mar 9)
- BFS for webpages
- robots.txt
- HTTP 429
Read: robots.txt examples, HTTP 429
CRAWL PRACTICE
SLIDES
LECTURE NB
WEEKLY LAB: Exam Prep
VIDEO
[Wed] Review/Exam (Mar 11)
[Fri] Web 5: A/B testing (Mar 13)
- data collection
- significance
Read: The Morality of A/B Testing (TechCrunch article)
SLIDES
Due: P3
Released: P4, example animation
VIDEO (Youtube)
Week 9
[Mon] Spring Break! (Mar 16)
No Class
[Wed] Spring Break! (Mar 18)
No Class
[Fri] Spring Break! (Mar 20)
No Class
Week 10
[Mon] Visualization 1 (Mar 23)
- wrapup web scraping
- matplotlib coordinate systems
LECTURE
WEEKLY LAB: .zips and geo maps
Part 3: Pre-Machine Learning
Week 11
[Wed] Linear Algebra 1 (Apr 1)
- machine learning overview
- numpy arrays
- image manipulation
LECTURE
SLIDES
Due: P4
Released: P5
Read: Scipy Notes 1.3.1
Week 12
[Mon] Linear Algebra 3 (Apr 6)
- linear combinations
- column spaces
- projection matrices
LECTURE
SLIDES
WEEKLY LAB: JOIN and Counting
Week 13
Week 14
[Mon] Optimization (Apr 20)
- gradient descent
- least squares
FINAL: Proposal Due
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Fri] Supervised Learning 2 (Apr 24)
- confusion matrices
- precision and recall
- multi-class logistic regression
LECTURE
FINAL: Plot to Peers
Week 15
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
LECTURE
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
LECTURE
FINAL: Project Showcase
[Mon] OOP 1: Classes (Feb 3)
- attributes
- methods
- constructors
SLIDES
VIDEO
Read: Think Python 15 + 17.1 - 17.5
Optional: Think Python 16
WEEKLY LAB: Complexity
[Wed] OOP 2: Special Methods (Feb 5)
- __str__, __repr__, _repr_html_
- __eq__, __lt__
- __len__, __getitem__
- __enter__, __exit__
SLIDES
VIDEO
TEST CASES
Read: Think Python 17.6 - 17.12
Optional: Python Data Model
[Fri] OOP 3: Inheritance (Feb 7)
- method resolution order
- overriding methods
- calling overridden methods
NOTEBOOK
SLIDES
VIDEO
Read: Think Python 18
[Mon] Review + Practice (Feb 10)
- Inheritance
- Recursion
WEEKLY LAB: Linked Lists and Zips
VIDEO
Week 5
[Mon] Graphs 3 (Feb 17)
- implementing dictionaries with BSTs
- graph search
LECTURE NB STARTER
MORNING NB
SLIDES
Read: HTML
WEEKLY LAB: BSTs and More!
VIDEO
[Wed] Graphs 4 (Feb 19)
- DFS vs. BFS
- time vs. memory complexity
SLIDES
LECTURE NB STARTER
MORNING NB
AFTERNOON NB
Read: HTML
VIDEO
Part 2: Tracing and Evaluating Data Applications
Week 6
[Mon] Regex 1 (Feb 24)
- character classes
- repetition
- anchoring
- findall, sub, groups
LECTURE NB STARTER
SLIDES
Read: DS100 Ch 8
WEEKLY LAB: DFS vs. BFS
STUDENT EXAMPLES
VIDEO
[Fri] Web 1: Flask (Feb 28)
- review from CS 220
- RPC, POST
- decorators
Due: P2
DECORATOR EXAMPLES
SLIDES
VIDEO
Week 7
[Mon] Web 2: Tracing (Mar 2)
- wrappers based on *args and **kwargs
Read: Think Python, Ch 12.4 and 19.9
SLIDES
Interactive Exercises
WEEKLY LAB: Web and Regex
VIDEO
[Wed] Web 3: Selenium (Mar 4)
- advanced web scraping
Read: Selenium with Python, Ch 2
TRICKY PAGES
SLIDES
VIDEO
Week 8
[Mon] Web 5: Recursive Crawl (Mar 9)
- BFS for webpages
- robots.txt
- HTTP 429
Read: robots.txt examples, HTTP 429
CRAWL PRACTICE
SLIDES
LECTURE NB
WEEKLY LAB: Exam Prep
VIDEO
[Wed] Review/Exam (Mar 11)
[Fri] Web 5: A/B testing (Mar 13)
- data collection
- significance
Read: The Morality of A/B Testing (TechCrunch article)
SLIDES
Due: P3
Released: P4, example animation
VIDEO (Youtube)
Week 9
[Mon] Spring Break! (Mar 16)
No Class
[Wed] Spring Break! (Mar 18)
No Class
[Fri] Spring Break! (Mar 20)
No Class
Week 10
[Mon] Visualization 1 (Mar 23)
- wrapup web scraping
- matplotlib coordinate systems
LECTURE
WEEKLY LAB: .zips and geo maps
Part 3: Pre-Machine Learning
Week 11
[Wed] Linear Algebra 1 (Apr 1)
- machine learning overview
- numpy arrays
- image manipulation
LECTURE
SLIDES
Due: P4
Released: P5
Read: Scipy Notes 1.3.1
Week 12
[Mon] Linear Algebra 3 (Apr 6)
- linear combinations
- column spaces
- projection matrices
LECTURE
SLIDES
WEEKLY LAB: JOIN and Counting
Week 13
Week 14
[Mon] Optimization (Apr 20)
- gradient descent
- least squares
FINAL: Proposal Due
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Fri] Supervised Learning 2 (Apr 24)
- confusion matrices
- precision and recall
- multi-class logistic regression
LECTURE
FINAL: Plot to Peers
Week 15
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
LECTURE
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
LECTURE
FINAL: Project Showcase
[Mon] Graphs 3 (Feb 17)
- implementing dictionaries with BSTs
- graph search
MORNING NB
SLIDES
Read: HTML
WEEKLY LAB: BSTs and More!
VIDEO
[Wed] Graphs 4 (Feb 19)
- DFS vs. BFS
- time vs. memory complexity
LECTURE NB STARTER
MORNING NB
AFTERNOON NB
Read: HTML
VIDEO
[Mon] Regex 1 (Feb 24)
- character classes
- repetition
- anchoring
- findall, sub, groups
SLIDES
Read: DS100 Ch 8
WEEKLY LAB: DFS vs. BFS
STUDENT EXAMPLES
VIDEO
[Fri] Web 1: Flask (Feb 28)
- review from CS 220
- RPC, POST
- decorators
DECORATOR EXAMPLES
SLIDES
VIDEO
Week 7
[Mon] Web 2: Tracing (Mar 2)
- wrappers based on *args and **kwargs
Read: Think Python, Ch 12.4 and 19.9
SLIDES
Interactive Exercises
WEEKLY LAB: Web and Regex
VIDEO
[Wed] Web 3: Selenium (Mar 4)
- advanced web scraping
Read: Selenium with Python, Ch 2
TRICKY PAGES
SLIDES
VIDEO
Week 8
[Mon] Web 5: Recursive Crawl (Mar 9)
- BFS for webpages
- robots.txt
- HTTP 429
Read: robots.txt examples, HTTP 429
CRAWL PRACTICE
SLIDES
LECTURE NB
WEEKLY LAB: Exam Prep
VIDEO
[Wed] Review/Exam (Mar 11)
[Fri] Web 5: A/B testing (Mar 13)
- data collection
- significance
Read: The Morality of A/B Testing (TechCrunch article)
SLIDES
Due: P3
Released: P4, example animation
VIDEO (Youtube)
Week 9
[Mon] Spring Break! (Mar 16)
No Class
[Wed] Spring Break! (Mar 18)
No Class
[Fri] Spring Break! (Mar 20)
No Class
Week 10
[Mon] Visualization 1 (Mar 23)
- wrapup web scraping
- matplotlib coordinate systems
LECTURE
WEEKLY LAB: .zips and geo maps
Part 3: Pre-Machine Learning
Week 11
[Wed] Linear Algebra 1 (Apr 1)
- machine learning overview
- numpy arrays
- image manipulation
LECTURE
SLIDES
Due: P4
Released: P5
Read: Scipy Notes 1.3.1
Week 12
[Mon] Linear Algebra 3 (Apr 6)
- linear combinations
- column spaces
- projection matrices
LECTURE
SLIDES
WEEKLY LAB: JOIN and Counting
Week 13
Week 14
[Mon] Optimization (Apr 20)
- gradient descent
- least squares
FINAL: Proposal Due
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Fri] Supervised Learning 2 (Apr 24)
- confusion matrices
- precision and recall
- multi-class logistic regression
LECTURE
FINAL: Plot to Peers
Week 15
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
LECTURE
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
LECTURE
FINAL: Project Showcase
[Mon] Web 2: Tracing (Mar 2)
- wrappers based on *args and **kwargs
SLIDES
Interactive Exercises
WEEKLY LAB: Web and Regex
VIDEO
[Wed] Web 3: Selenium (Mar 4)
- advanced web scraping
TRICKY PAGES
SLIDES
VIDEO
[Mon] Web 5: Recursive Crawl (Mar 9)
- BFS for webpages
- robots.txt
- HTTP 429
CRAWL PRACTICE
SLIDES
LECTURE NB
WEEKLY LAB: Exam Prep
VIDEO
[Wed] Review/Exam (Mar 11)
[Fri] Web 5: A/B testing (Mar 13)
- data collection
- significance
SLIDES
Due: P3
Released: P4, example animation
VIDEO (Youtube)
Week 9
[Mon] Spring Break! (Mar 16)
No Class
[Wed] Spring Break! (Mar 18)
No Class
[Fri] Spring Break! (Mar 20)
No Class
Week 10
[Mon] Visualization 1 (Mar 23)
- wrapup web scraping
- matplotlib coordinate systems
LECTURE
WEEKLY LAB: .zips and geo maps
Part 3: Pre-Machine Learning
Week 11
[Wed] Linear Algebra 1 (Apr 1)
- machine learning overview
- numpy arrays
- image manipulation
LECTURE
SLIDES
Due: P4
Released: P5
Read: Scipy Notes 1.3.1
Week 12
[Mon] Linear Algebra 3 (Apr 6)
- linear combinations
- column spaces
- projection matrices
LECTURE
SLIDES
WEEKLY LAB: JOIN and Counting
Week 13
Week 14
[Mon] Optimization (Apr 20)
- gradient descent
- least squares
FINAL: Proposal Due
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Fri] Supervised Learning 2 (Apr 24)
- confusion matrices
- precision and recall
- multi-class logistic regression
LECTURE
FINAL: Plot to Peers
Week 15
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
LECTURE
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
LECTURE
FINAL: Project Showcase
[Mon] Spring Break! (Mar 16)
No Class[Wed] Spring Break! (Mar 18)
No Class[Fri] Spring Break! (Mar 20)
No Class[Mon] Visualization 1 (Mar 23)
- wrapup web scraping
- matplotlib coordinate systems
WEEKLY LAB: .zips and geo maps
Part 3: Pre-Machine Learning
Week 11
[Wed] Linear Algebra 1 (Apr 1)
- machine learning overview
- numpy arrays
- image manipulation
LECTURE
SLIDES
Due: P4
Released: P5
Read: Scipy Notes 1.3.1
Week 12
[Mon] Linear Algebra 3 (Apr 6)
- linear combinations
- column spaces
- projection matrices
LECTURE
SLIDES
WEEKLY LAB: JOIN and Counting
Week 13
Week 14
[Mon] Optimization (Apr 20)
- gradient descent
- least squares
FINAL: Proposal Due
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Fri] Supervised Learning 2 (Apr 24)
- confusion matrices
- precision and recall
- multi-class logistic regression
LECTURE
FINAL: Plot to Peers
Week 15
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
LECTURE
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
LECTURE
FINAL: Project Showcase
[Wed] Linear Algebra 1 (Apr 1)
- machine learning overview
- numpy arrays
- image manipulation
SLIDES
Due: P4
Released: P5
Read: Scipy Notes 1.3.1
[Mon] Linear Algebra 3 (Apr 6)
- linear combinations
- column spaces
- projection matrices
SLIDES
WEEKLY LAB: JOIN and Counting
Week 13
Week 14
[Mon] Optimization (Apr 20)
- gradient descent
- least squares
FINAL: Proposal Due
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Fri] Supervised Learning 2 (Apr 24)
- confusion matrices
- precision and recall
- multi-class logistic regression
LECTURE
FINAL: Plot to Peers
Week 15
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
LECTURE
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
LECTURE
FINAL: Project Showcase
[Mon] Optimization (Apr 20)
- gradient descent
- least squares
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Fri] Supervised Learning 2 (Apr 24)
- confusion matrices
- precision and recall
- multi-class logistic regression
FINAL: Plot to Peers
Week 15
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
LECTURE
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
LECTURE
FINAL: Project Showcase
[Mon] Supervised Learning 3 (Apr 27)
- categorical inputs
- one-hot encoding
WEEKLY LAB: Decision Boundaries
FINAL: Peer Feedback
[Fri] Unsupervised Learning 2 (May 1)
- k-means limitations
- agglomerative clustering
- dendograms
FINAL: Project Showcase