Instructor: Krzysztof Onak (konak@bu.edu)
Office Hours: Wednesday 4:30–6:30pm, MCS 138N (or an adjacent common area)
Teaching Fellow: Vedaant Tiwari (vedaant@bu.edu)
Office Hours: Monday 3:45–5:45pm, MCS B51
Lecture: Monday/Wednesday/Thursday 12:20–1:10pm, MCS B37
Discussion sections: Wednesday 2:30–3:20pm & 3:35–4:25pm, CGS 111B
Piazza (announcements and discussions): https://piazza.com/bu/spring2022/ds210/home
Gradescope code for submitting homework: 3Y85PZ
1/21 | ||
---|---|---|
Class overview. Survey. Basics of data analysis. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | ||
1/24 | 1/26 | 1/28 |
Select data science tools important for this class. Supervised vs. unsupervised learning. Decision trees. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Decision trees. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Assignments: HW 1 out | Sample predictive data analysis pipeline. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
1/31 | 2/02 | 2/04 |
Classification vs. regression. Panda dtypes. Ethics of data processing. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Ethics of data processing (continued). Final project discussion. SciPy. Interpolation in SciPy. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Assignments: HW 1 due, HW 2 out | Clustering. $k$–means with SciPy. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
2/07 | 2/09 | 2/11 |
LECTURE CANCELLED | Optimization. Linear programming. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Assignments: HW 2 due, HW 3 out | Linear regression and its generalizations. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
2/14 | 2/16 | 2/18 |
Loss functions. Measuring errors for regression. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Overfitting and underfitting. Bias and variance (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Assignments: HW 3 due, HW 4 out | Cross-validation. Hyperparameter tuning. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
Tuesday 2/22 (Monday schedule) | 2/23 | 2/25 |
Documentation generation in Python. Version control. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Various features of programming languages. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Assignments: HW 4 due, HW 5 out | Basics of Rust: variables, data types, and compiling (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
2/28 | 3/02 | 3/04 |
MIDTERM | Rust: project manager cargo, functions, flow control, and arrays. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Assignments: HW 5 due, HW 6 out | Rust: flow control (continued), tuples, enums, and algebraic data types. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
3/07–3/11 | ||
SPRING BREAK | ||
3/14 | 3/16 | 3/18 |
Structs. Memory management. Stack vs. heap. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Pitfalls of manual heap management. The Rust way: ownership and borrowing. Methods in Rust. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Assignments: HW 6 due, HW 7 out | Rust: Copying instead of moving. Multiple references. Generics and generic data types. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
3/21 | 3/23 | 3/25 |
Rust: Useful predefined generic data types. Traits. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [6.1] [10.1] [10.2] | Rust: Collections. Vectors. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [8.1] Assignments: HW 7 due, HW 8 out | Memory management in vectors. Amortization. Rust: hash maps (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [8.1] [8.3] Assignments: final project proposal due |
3/28 | 3/30 | 4/01 |
Implementing hash maps. Rust: hash maps with custom types and hash sets. Graph representations. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Implementing graph representations in Rust. Simple graph algorithms. Rust: modules. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [7] Assignments: HW 8 due, HW 9 out | Rust: modules. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [7] |
4/04 | 4/06 | 4/08 |
Rust: splitting modules into separate files and using external crates. Generating random numbers with rand .(Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [7.5] [RBE: File hierarchy] [RBE: Dependencies] | External crate for parsing CSV in Rust. Stacks and queues. Graph exploration. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Graph exploration: breadth–first search and depth–first search. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
4/11 | 4/13 | 4/15 |
Code formatting (rustfmt ). Priority queues. Binary heap.(Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Applications of priority queues: sorting and shortest paths (Dijkstra's algorithm). Rust: slices. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [4.3] Assignments: HW 9 due, HW 10 out | Rust: String and &str , lifetimes.(Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [8.2] [10.3] [RBE: Strings] |
Wednesday 4/20 (Monday schedule) | 4/22 | |
Rust: closures (anonymous functions) and iterators. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Related reading materials: [13] | Binary search trees. Rust: BTreeSet and BTreeMap (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] Assignments: HW 10 due | |
4/25 | 4/27 | 4/29 |
Error handling in Rust. Dynamic programming. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Greedy algorithms. Divide and conquer. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Multithreading and its challenges. Crate rayon .(Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] |
5/02 | 5/04 | |
Calling Rust code from Python. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | Compiling Rust to WebAssembly. Fast Fibonacci computation via exponentiation by squaring. (Simplified) slides: [pdf] Source/all materials: [tar.xz] [zip] | |
5/13 | ||
FINAL (12–2PM) |
Internal:
External: