ABCD
1
Lecture TopicHomeworkLogistics
2
3
2024-01-19Class overview. Survey. Basics of data analysis.

Lecture notes: lecture_01.zip
4
5
2024-01-22Select data science tools important for this class. Supervised vs. unsupervised learning. Decision trees.

Lecture notes: lecture_02.zip
6
2024-01-24Decision trees.

Lecture notes: lecture_03.zip
HW 1 Out
7
2024-01-26Sample predictive data analysis pipeline.

Lecture notes: lecture_04.zip
8
9
2024-01-29Classification vs. regression. Panda dtypes. Ethics of data processing.

Lecture Notes: lecture_05.zip
10
2024-01-31Ethics of data processing (continued).
Final project discussion. SciPy.
Interpolation in SciPy.

Lecture notes: lecture_06.zip
HW 1 Due
11
2024-02-02Clustering. 𝑘–means with SciPy.

Lecture notes: lecture_07.zip
HW 2 Out
12
13
2024-02-05Optimization. Linear programming.

Lecture notes: lecture_08.zip
14
2024-02-07Linear regression and its generalizations.

Lecture notes: lecture_09.zip
15
2024-02-09Loss functions. Measuring errors for regression.

Lecture notes: lecture_10.zip
HW 2 Due, HW 3 Out
16
17
2024-02-12Overfitting and underfitting. Bias and variance

Lecture notes: lecture_11.zip
18
2024-02-14Cross-validation. Hyperparameter tuning.

Lecture notes: lecture_12.zip
19
2024-02-16Documentation generation in Python. Version control.

Lecture notes: lecture_13.zip
HW 3 Due, HW 4 Out
20
21
2024-02-19Presidents Day, No Class
22
2024-02-21Midterm Review

Midterm review notes
23
2024-02-23Midterm Exam
24
25
2024-02-26Various features of programming languages.

Lecture notes: lecture_14.zip
HW 4 Due, HW 5 Out
26
2024-02-28Basics of Rust: variables, data types, and compiling

Lecture notes: lecture_15.zip
Read book chapter 1 and sections 3.1 and 3.2
27
2024-03-01Rust: project manager cargo, functions, flow control, and arrays.

Lecture notes: lecture_16.zip
HW 5 DueRead sections 3.3, 3.4 and 3.5
28
29
2024-03-04Rust: flow control (continued), tuples, enums, and algebraic data types.

Lecture notes: lecture_17.zip
HW 6 Out
30
2024-03-06Structs. Memory management. Stack vs. heap.

Lecture notes: lecture_18.zip
31
2024-03-08Pitfalls of manual heap management. The Rust way: ownership and borrowing. Methods in Rust.

Lecture notes: lecture_19.zip
32
33
2024-03-11Spring Recess, No Class
34
2024-03-13Spring Recess, No Class
35
2024-03-15Spring Recess, No Class
36
37
2024-03-18Rust: Copying instead of moving. Multiple references. Generics and generic data types.

Lecture notes: lecture_20.zip
HW 6 Due, HW 7 Out
38
2024-03-20Rust: Useful predefined generic data types. Traits.

Lecture notes: lecture_21.zip
39
2024-03-22Rust: Collections. Vectors.

Lecture notes: lecture_22.zip
40
41
2024-03-25Memory management in vectors. Amortization. Rust: hash maps

Lecture notes: lecture_23.zip
HW 7 Due, HW 8 out
42
2024-03-27Implementing hash maps. Rust: hash maps with custom types and hash sets. Graph representations.

lecture notes: lecture_24.zip
43
2024-03-29Implementing graph representations in Rust. Simple graph algorithms. Rust: modules.

Lecture notes: lecture_25.zip
44
45
2024-04-01Rust: modules.

Lecture notes: lecture_26.zip
HW 8 Due, Hw 9 out
46
2024-04-03Rust: splitting modules into separate files and using external crates. Generating random numbers with rand.

Lecture notes: lecture_27.zip
47
2024-04-05External crate for parsing CSV in Rust. Stacks and queues. Graph exploration.

Lecture notes: lecture_28.zip
48
49
2024-04-08Graph exploration: breadth–first search and depth–first search.

Lecture notes: lecture_29.zip
HW 9 Due, HW 10 out
50
2024-04-10Code formatting (rustfmt). Priority queues. Binary heap.

Lecture notes:
lecture_30.zip
51
2024-04-12Applications of priority queues: sorting and shortest paths (Dijkstra's algorithm). Rust: slices.

Lecture notes: lecture_31.zip
Project proposal due
52
53
2024-04-15Patriots’ Day, No Class
54
2024-04-17Rust: String and &str, lifetimes.

Lecture notes: lecture_32.zip
HW 10 Due
55
2024-04-19Error handling in Rust. Dynamic programming.

Lecture notes: lecture_33.zip
56
57
2024-04-22Greedy algorithms. Divide and conquer.

Lecture notes: lecture_34.zip
58
2024-04-24Multithreading and its challenges. Crate rayon.

Lecture notes: lecture_35.zip
59
2024-04-26Calling Rust code from Python.

Lecture notes: lecture_36.zip
60
61
2024-04-29Compiling Rust to WebAssembly. Fast Fibonacci computation via exponentiation by squaring.

Lecture notes: lecture_37.zip
62
2024-05-01Final Exam ReviewFinal Project due
63
64
2024-05-07Final Exam9-11am in WED 130
65
66
Course schedule subject to change.