Course Schedule

Part 1: Performance

Week 1

[Mon] Reproducibility 1 (Jan 25)
  • Course Overview
  • Hardware, OS, Interpreters
Read: Syllabus
Lab: Cloud Setup
Watch: Videos
Slides: PDF
[Wed] Reproducibility 2 (Jan 27)
  • versioning
  • git
Watch: Videos
Slides: PDF
Read: Lecture Notes
[Fri] Quantifying Perf 1 (Jan 29)
  • check_output
  • time
Released: P1 (perf measurements)
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)

Week 2

[Mon] Quantifying Perf 2 (Feb 1)
  • complexity analysis
  • Big O
Lab: Git Practice
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)
[Wed] Quantifying Perf 3 (Feb 3)
  • practice
Watch: Videos
Worksheet: PDF (answers)
PythonTutor: examples
Read: Lecture Notes (NB)
[Fri] OOP 1: Classes (Feb 5)
  • attributes
  • methods
  • constructors
Optional Reading: Think Python 15, 16, and 17.1 - 17.5
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)

Week 3

[Mon] OOP 2: Special Methods (Feb 8)
  • __str__, __repr__, _repr_html_
  • __eq__, __lt__
  • __len__, __getitem__
  • __enter__, __exit__
TEST CASES
Optional Reading: Python Data Model
QUIZ 1 DUE
Lab: Files and Complexity
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)
[Wed] OOP 3: Inheritance (Feb 10)
  • method resolution order
  • overriding methods
  • calling overridden methods
Due: P1
Released: P2 (trees)
Optional Reading: Think Python 18
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)
[Fri] OOP 4: Mult Inheritance (Feb 12)
  • MRO rules
  • recursion
Watch: Videos
Worksheet: PDF

Week 4

[Mon] Recursion (Feb 15)
  • functions that return something
  • functions that do something
QUIZ 2 DUE
Lab: Linked Lists
Watch: Videos
Read: Lecture Notes (NB)
[Wed] Graphs and Tree Intro (Feb 17)
  • types of graph
  • graphviz
Watch: Videos
Read: Lecture Notes (NB)
[Fri] Trees 1 (Feb 19)
  • trees
  • binary trees
  • binary search trees (BSTs)
Watch: Videos
Read: Lecture Notes (NB)

Week 5

[Mon] Trees 2 (Feb 22)
  • implementing dictionaries with BSTs
  • graph search
QUIZ 3 DUE
Lab: BSTs
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)
[Wed] Graph Search 1 (Feb 24)
  • depth-first search
Due: P2
Released: P3 (crawler)
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)
[Fri] Graph Search 2 (Feb 26)
  • breadth-first search
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)
Part 2: Web and Visualization

Week 6

[Mon] Web 1: Selenium (Mar 1)
  • advanced web scraping
TRICKY PAGES
QUIZ 4 DUE
Lab: DFS vs. BFS
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)
[Wed] Web 2: Recursive Crawl (Mar 3)
  • more tricky pages
  • BFS for webpages
CRAWL PRACTICE
Watch: Videos
Read: Lecture Notes (NB)
[Fri] Web 3: Flask (Mar 5)
  • review from CS 220
  • flask
  • decorators
Watch: Videos
Slides: PDF
Read: Lecture Notes (NB)

Week 7

[Mon] Web 4: Logging, Rate Limiting, and robots.txt (Mar 8)
  • wrappers based on *args and **kwargs*
  • robots.txt
  • HTTP 429
QUIZ 5 DUE
Lab: Web
Due: P3
Released: P4 (website)
Watch: Videos
PythonTutor: examples
Read: Lecture Notes (NB)
[Wed] Web 5: A/B testing (Mar 10)
  • data collection
  • significance
Read: The Morality of A/B Testing (TechCrunch article)
Watch: Videos
Slides: PDF
[Fri] Web 6: Dashboards (Mar 12)
  • dashboards
Watch: Videos
Read: Lecture Notes (NB)

Week 8

[Mon] Regex 1 (Mar 15)
  • character classes
  • repetition
  • anchoring
Read: DS100 Ch 12
QUIZ 6 DUE
Lab: Regex
Watch: Videos
Slides: PDF
[Wed] Regex 2 (Mar 17)
  • findall, sub, groups
Watch: Videos
Read: Lecture Notes (NB)
[Fri] Visualization 1 (Mar 19)
  • matplotlib coordinate systems
  • drawing custom lines/polygons
Due: P4
Released: P5 (trace analysis)
Watch: Videos
Read: Lecture Notes (NB)

Week 9

[Mon] Visualization 2 (Mar 22)
  • geographic maps
  • shapefiles
  • high resolution graphics
QUIZ 7 DUE
Lab: Geo Maps
[Wed] Visualization 3 (Mar 24)
  • shapely
  • animations
[Fri] Visualization 4 (Mar 26)
  • big example
  • animated map of incidents scraped from Madison Fire Department
Part 3: Machine Learning

Week 10

[Mon] Regression 1 (Mar 29)
  • ML overview
  • sklearn LinearRegression
  • explained variance
  • train/test split
QUIZ 8 DUE
[Wed] Regression 2 (Mar 31)
  • PolynomialFeatures
  • OneHot Encoding
  • Pipelines
Due: P5
Released: P6 (land matrices and regression)
[Fri] No Class (Apr 2)

Week 11

[Mon] Linear Algebra 1 (Apr 5)
  • element-wise mult
  • dot product
  • broadcasting
QUIZ 9 DUE
[Wed] Linear Algebra 2 (Apr 7)
  • equation solving
  • linear combinations
  • column spaces
[Fri] Linear Algebra 3 (Apr 9)
  • loss functions
  • projection matrices
  • least squares

Week 12

[Mon] Classification 1 (Apr 12)
  • nearest neighbour
  • decision boundary
  • standard scaler
QUIZ 10 DUE
[Wed] Classification 2 (Apr 14)
  • confusion matrices
  • accuracy, precision, recall
  • sklearn LogisticRegression
  • skew, multi-class
Due: P6
Released: P7 (sklearn)
[Fri] Clustering 1 (Apr 16)
  • agglomerative

Week 13

[Mon] Clustering 2 (Apr 19)
  • k-means
QUIZ 11 DUE
[Wed] Decomposition (Apr 21)
  • SVD
  • PCA
Slides: PDF
[Fri] Parallelism 1 (Apr 23)
  • multiprocessing pools
  • parallel map
Slides: PDF

Week 14

[Mon] Parallelism 2 (Apr 26)
  • pytorch
QUIZ 12 DUE
Slides: PDF
[Wed] Optimization (Apr 28)
  • gradient descent
  • least squares
Due: P7
Slides: PDF
[Fri] Advanced Topics (Apr 30)