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)
Exercise 1: Profiling
Exercise 2: Type Stability & Code Inspection
Lab 6: Parallel Programming I: Shared-memory Systems (due Oct 24)
Exercise 1: Parallelization for Multi-Core Workstations via Multiple-Threads
Exercise 2: Parallelization for Multi-Core Workstations via Multiple Processes (static html version)
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 code using a container
Exercise 4: Run your project code as a batch job on Lynx
Lab 8: Parallel Programming III: GPUs & Other Hardware Accelerators (due Nov 7)
Exercise 1: Linear Algebra on GPU
Exercise 2: GPU Kernels & Array Programming
Lab 9: Reproducibility: Packages, Environments, Containers & the Cloud (due Nov 14)
Exercise 1: Create a Julia Package
Exercise 2: Use a Workflow management system
Exercise 3: Reflect on your Goals for the semester
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 )