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
[Fri] Reproducibility 2 (Sep 4)
  • versioning
  • git
Read: Git Tutorial
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
[Wed] Multiple Inheritance (Sep 23)
  • MRO rules
  • recursion
Due: P1
Released: P2 (trees) WORKSHEET
[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
[Wed] Trees 1 (Sep 30)
  • trees
  • binary trees
  • binary search trees (BSTs)
Read: HTML
[Fri] Trees 2 (Oct 2)
  • implementing dictionaries with BSTs
  • graph search
Read: HTML
SLIDES
Part 2: Web and Visualization

Week 6

[Mon] Graph Search 1 (Oct 5)
  • depth-first search
SLIDES
Read: HTML
QUIZ 5 DUE
WEEKLY LAB: BSTs
[Wed] Graph Search 2 (Oct 7)
  • breadth-first search
SLIDES
Due: P2
Released: P3 (crawler)
[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
[Wed] Web 3: Flask (Oct 14)
  • review from CS 220
  • RPC, POST
  • decorators
SLIDES
[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
[Wed] Regex 1 (Oct 21)
  • character classes
  • repetition
  • anchoring
SLIDES
Read: DS100 Ch 8
[Fri] Regex 2 (Oct 23)
  • findall, sub, groups

Week 9

[Mon] Visualization 1 (Oct 26)
  • dashboards
QUIZ 8 DUE
WEEKLY LAB: regex
WEEKLY LAB: Regex
[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

[Mon] Visualization 4 (Nov 2)
  • shapely
  • animations
QUIZ 9 DUE
WEEKLY LAB: Geo Maps
[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
[Fri] Parallelism 1 (Dec 4)
  • multiprocessing pools
  • parallel map
SLIDES

Week 15

[Mon] Parallelism 2 (Dec 7)
  • pytorch
QUIZ 14 DUE
NO LAB
SLIDES
[Wed] Optimization (Dec 9)
  • gradient descent
  • least squares
Due: P7
SLIDES
[Fri] No Class (Dec 11)
  • Study Day