Preparing for Class
Week 1
Prior to Monday's class
Think Julia Ch 1: The Way of the Program
Github tutorial (at least through “Fork a Repo”,)
Prior to Wednesday's class
The Rationale for Julia: Getting Started with Julia Programming (6pgs avaliable via "First Pages" as Preview/"Look Inside!")
Writing Scientific Software Ch 2 (22pgs): Scientific Computation and numerical analysis
If it will help you with the lab: Think Julia Ch 2: Variables, Expressions & Statements
Week 2
Prior to Monday's class
Writing Scientific Software Ch 3: Priorities (6pg)
Writing Scientific Software Ch 4: Famous Disasters (4pg)
Best Practices for Scientific Computing: Sec. 1-4 (6pg)
Prior to Wednesday's class
Best Practices for Scientific Computing: Sec. 5-9 (5pg)
Week 3
No class Monday (Labor Day Holiday)
Prior to Wednesday's class
Writing Scientific Software Ch 7: Software Design (26pg, ok to skip 7.11-12)
Big-O Cheat Sheet (a useful reference, not to read end-to-end)
Week 4
Prior to Monday's class
Writing Scientific Software Ch 6: Computer Organization (12pg)
Either
Introduction to High Performance Computing for Scientists and Engineers Ch 1: Modern Processors (32pg) -or-
Introduction to High-Performance Computing Ch 1-1.3.4.1: Single-processor Computing (13pg)
Prior to Wednesday's class
Writing Scientific Software Ch 17.3: Profiling (2pg)
Week 5
Prior to Monday's class
Introduction to High Performance Computing for Scientists and Engineers Ch 2: Serial Optimization (26pg) and/or
Performance Tips (just the bold section headings is enough for now; come back to read more about any specific tip when it applies to your project)
Week 6
Prior to Monday's class
Writing Scientific Software Ch 14: Memory Allocation & Garbage Collection (excluding 4.5; 11pg)
Writing Scientific Software Ch 12.1: Caches & memory hierarchies, 12.4 Threashing, 12.5 Designing for memory hierarchies, 12.6 Dynamic data structures and memory hierarchies (pg)
Optionally one of
Introduction to High Performance Computing for Scientists and Engineers Ch 3 Data Access Optimization (excluding 3.1.2, 3.3, 3.3; 20pg)
Introduction to High-Performance Computing Ch 1.7: Programming strategies for high performance (16pg)
Prior to Wednesday's class
Week 7
Prepare for Code Review
No new readings, but be helpful to review:
Code Reiew Best Practices from Palantir Blog
Week 8
Prior to Monday's class
Introduction to Parallel Computing Sec B-E -or-
Introduction to High-Performance Computing Ch 2.1-2.4: Parallel Computing (19pg) -or-
Introduction to High Performance Computing for Scientists and Engineers:
Ch 4 Parallel Computers (20pg) -and-
Ch 5 Basics of Parallelization (22pg)
Week 9
Prior to Monday's class
Distributed Processing with Julia (stop after Parralel Map and Loops)
Week 10
Prior to Monday's class
Week 11
Prior to Monday's class
Best Practices for Scientific Computing: (Sec 2; yes, let's all read it again!)
Best Practices for Scientific Computing: (Reference list on last page, just in case you didn't notice it before!)
Week 12
Prior to Monday's class
Writing Scientific Software Ch 17.1: Make (4pg; if using C/C++ or Fortran for project) -or-
Julia Package Development: Sec. 1-3 (stop after Updating Packages; if using Julia for project)
Week 13-15
None