Schedule


Preparing for Class

Week 1

Week 2

Week 3

Week 4

Week 5

Week 6

Week 7

Week 8

Week 9

Week 10

Week 11

Week 12

Week 13


Slides & Notebooks


Lab/Homework Exercises

Lab 1: Tools & Fundamentals: Floating Point Arithmetic, Functions, Tests (Due Sept 2)

Lab 2: Best Practices: Assertions, Unit Testing, Continuous Integrations, Benchmarking (due Sept 9)

Lab 3: Memory Access, Disk I/O, DataFrames (due Sept 16)

Lab 4: Higher-level Languages & Probabilistic Programming (due Sept 23)

Lab 5: Serial Optimizations: Profiling, Type Stability, Code Inspection & Optimization Patterns (due Sept 30)

Lab 6: Parallel Programming I: Shared-memory Systems (due Oct 21)

Lab 7: Parallel Programming II: Batch Jobs & Distributed Memory Systems (due Oct 28)

Lab 8: Parallel Programming III: GPUs & Other Hardware Accelerators (due Nov 11)

Lab 9: Reproducibility: Packages, Environments, Containers & the Cloud (due Nov 18)


Class Project Schedule