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

[Mon] (Jan 20)
Martin Luther King Day!
No Class
WEEKLY LAB: Cloud Setup
[Wed] Reproducibility 1 (Jan 22)
  • Course Overview
  • Hardware, OS, Interpreters
SLIDES
Read: Syllabus
[Fri] Reproducibility 2 (Jan 24)
  • versioning
  • git
SLIDES
VIDEO
Read: Git Tutorial

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
[Fri] Quantifying Perf 3 (Jan 31)
  • practice
WORKSHEET
ANSWERS
NOTEBOOK
EXAMPLES
VIDEO

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
[Wed] Graphs 1 (Feb 12)
  • review recursion
  • types of graph
  • graphviz
NO VIDEO :(
Read: HTML
Due: P1
Released: P2
[Fri] Graphs 2 (Feb 14)
  • trees
  • binary trees
  • binary search trees (BSTs)
Read: HTML
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
[Fri] Graphs 5 (Feb 21)
  • dense graphs
  • Markov chains
  • log likelihood
SLIDES
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
[Wed] Catchup (Feb 26)
  • regex
Released: P3
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
[Fri] Web 4: Catchup (Mar 6)
MORNING NB
AFTERNOON NB
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
[Wed] Visualization 2 (Mar 25)
  • drawing custom lines/polygons
  • geographic maps
LECTURE
[Fri] Visualization 3 (Mar 27)
  • shapefiles
  • shapely
  • high resolution graphics
LECTURE
Part 3: Pre-Machine Learning

Week 11

[Mon] Visualization 4 (Mar 30)
  • animations
LECTURE
WEEKLY LAB: Social Distancing
[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
[Fri] Linear Algebra 2 (Apr 3)
  • matrix multiplication basics
  • equation solving
LECTURE

Week 12

[Mon] Linear Algebra 3 (Apr 6)
  • linear combinations
  • column spaces
  • projection matrices
LECTURE
SLIDES
WEEKLY LAB: JOIN and Counting
[Wed] Linear Algebra 4 (Apr 8)
  • fit lines
  • loss functions
LECTURE
[Fri] Linear Algebra 5 (Apr 10)
  • fitting non-linear data
  • correlation matrices
LECTURE

Week 13

[Mon] Linear Algebra 6 (Apr 13)
  • principal component analysis
LECTURE
WEEKLY LAB: Dot Product
[Wed] Parallelism 1 (Apr 15)
  • multiprocessing pools
  • parallel map
LECTURE
SLIDES
Due: P5
Released: P6
[Fri] Parallelism 2 (Apr 17)
  • pytorch
SLIDES
LECTURE

Week 14

[Mon] Optimization (Apr 20)
  • gradient descent
  • least squares
FINAL: Proposal Due
SLIDES
LECTURE
WEEKLY LAB: P6 Hints
[Wed] Supervised Learning 1 (Apr 22)
  • classification
  • train+test split
  • sklearn Pipeline
LECTURE
[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
[Wed] Unsupervised Learning 1 (Apr 29)
  • k-means
LECTURE
Due: P6
SLIDES
[Fri] Unsupervised Learning 2 (May 1)
  • k-means limitations
  • agglomerative clustering
  • dendograms
LECTURE
FINAL: Project Showcase