Assignment Schedule
Lab/Homework Exercises
Lab 1: Tools & Fundamentals: Floating Point Arithmetic, Functions, Tests (Due Aug 30)
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 6)
Exercise 1: Benchmarking, Big-O Analysis, Compute vs Memory Limits
Exercise 2: Assertions, Unit Tests & Continuous Integration Testing
Exercise 3: Numerical Stability of N-body
Lab 3: Memory Access, Disk I/O, DataFrames (due Sept 13)
Exercise 1: Dense Matrix-Vector Multiply: Optimizing serial code, Memory access paterns, Benchmarking
Exercise 2: Benchmarking File I/O (no Python dependencies)
Exercise 2: Benchmarking File I/O (& Calling Python Packages)
Lab 4: Higher-level Languages & Probabilistic Programming (due Sept 20)
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 Sept 27)
Exercise 1: Profiling
Exercise 2: Type Stability & Code Inspection
Lab 6: Parallel Programming I: Shared-memory Systems (due Oct 18)
Exercise 1: Parallelization for Multi-Core Workstations via Multiple-Threads
Exercise 2: Parallelization for Multi-Core Workstations via Multiple Processes
Lab 7: Parallel Programming II: Batch Jobs & Distributed Memory Systems (due Oct 25)
Exercise 1: Submitting Batch Jobs to ICS-ACI Cluster
Exercise 2: Parallelization for Distributed-memory Systems (e.g., Clusters, Cloud)
Exercise 3: Run your project code as a batch job on ICS-ACI
Lab 8: Parallel Programming III: GPUs & Other Hardware Accelerators (due Nov 8)
Exercise 1: Getting Setup for GPU Computing & Linear Algebra
Exercise 2: GPU Kernels & Array Programming
Lab 9: Reproducibility: Packages, Environments, Containers & the Cloud (due Nov 15)
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 6)
Serial version of code (due Oct 2)
Peer code review (due Oct 9)
Parallel version of code (multi-core) (due Oct 30)
Second parallel version of code (distributed-memory/GPU/cloud) (due Nov 13)
Completed code, documentation, tests, packaging (optional) & reflection (due Nov 29)
Class presentations (Nov 27 - Dec 6, detailed schedule )