Assignment Schedule


Lab/Homework Exercises

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

  • Exercise 1: Get started using core development tools

  • Exercise 2: Floating Point Arithmetic, Functions, Tests

  • Exercise 3: Personal Goals (save at least 15 minutes for this one)

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

  • Exercise 1: Computational Cost of Numerical Linear Algebra

  • Exercise 2: Assertions, Unit Tests & Continuous Integration Testing

  • Exercise 3: Numerical Stability of N-body

  • Exercise 4: Benchmarking Common Numerical Functions

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

  • Exercise 1: Dense Matrix-Vector Multiply: Optimizing serial code, Memory access paterns, Benchmarking

  • Exercise 2: Benchmarking File I/O (& Calling Python Packages)

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

  • Exercise 1: Auto-differentiation & Optimization (as in minimization/maximization of a function)

  • Exercise 2: Probabilistic Programming Language

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

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

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

  • Exercise 1: Submitting Batch Jobs to Lynx Cluster

  • Exercise 2: Parallelization for Distributed-memory Systems (e.g., Clusters, Cloud)

  • Exercise 3: Run your project code as a batch job on Lynx

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

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


Class Project Schedule

  • Project proposal (due Sept 12)

  • Serial version of code (due Oct 8)

  • Peer code review (due Oct 15)

  • Parallel version of code (multi-core) (due Nov 5)

  • Second parallel version of code (distributed-memory/GPU/cloud) (due Nov 21)

  • Completed code, documentation, tests & reflection (due Dec 3)

  • Class presentations (Dec 3 - Dec 12, detailed schedule )