Syllabus: A Three-Semester Sequence in Scientific Computing with Fortran
This maps the book onto a full three-course sequence, the way a computational-science program might teach it. Each semester is ~14 weeks. The running heat-solver project is the spine; each semester ends with a project milestone.
Semester 1 — Foundations and Modern Fortran (Parts I–II, Chapters 1–13)
Goal: a student who can write correct, well-structured modern Fortran programs.
| Weeks | Chapters | Topic |
|---|---|---|
| 1 | 1–2 | Why Fortran; toolchain, compile–link–run, implicit none |
| 2–3 | 3–4 | Types, kinds, arithmetic; control flow |
| 4–5 | 5 | Arrays (spend real time here — it is the pivotal chapter) |
| 6 | 6–7 | Procedures and intent; I/O and namelist |
| 7 | — | Midterm; review |
| 8–9 | 8–9 | Modules; derived types |
| 10–11 | 10–11 | Object orientation; pointers vs. allocatable |
| 12 | 12–13 | Strings; error handling and debugging |
| 13–14 | — | Project milestone 1: a modular serial program (solver scaffold through Chapter 13); final exam |
Assessment: weekly problem sets (even, un-daggered exercises), midterm, final, project milestone 1.
Semester 2 — Interoperability, Legacy, and Numerical Methods (Parts III–VI, Chapters 14–26)
Goal: a student who can connect Fortran to the ecosystem, modernize old code, and implement real numerical methods.
| Weeks | Chapters | Topic |
|---|---|---|
| 1–2 | 14–15 | C interop (iso_c_binding); Python interop (f2py) — measure the speedup |
| 3 | 16 | The ecosystem: LAPACK/BLAS, fpm, stdlib, tools |
| 4–5 | 17–19 | Reading, modernizing, and translating FORTRAN 77 |
| 6 | 20 | Floating point (the ideas the rest of the semester rests on) |
| 7 | — | Midterm |
| 8–9 | 21–22 | Linear algebra with LAPACK; integration and differentiation |
| 10–11 | 23–24 | ODEs; PDEs and finite differences (the solver's numerical core) |
| 12–13 | 25–26 | Scientific data formats; visualization output (VTK/ParaView) |
| 14 | — | Project milestone 2: a correct, validated, visualized serial solver; final exam |
Assessment: problem sets, a modernization assignment (Part IV), midterm, final, project milestone 2 (validate against the analytical steady state; produce a ParaView figure).
Semester 3 — Performance and Parallelism (Parts VII–X, Chapters 27–40)
Goal: a student who can make code fast and run it in parallel across a cluster.
| Weeks | Chapters | Topic |
|---|---|---|
| 1–2 | 27–28 | Why Fortran is fast; profiling and benchmarking |
| 3–4 | 29–30 | Optimization techniques; compiler flags |
| 5 | 31 | Why parallel; Amdahl's Law |
| 6–7 | 32–33 | Coarrays; OpenMP |
| 8 | — | Midterm |
| 9–10 | 34–35 | MPI; GPU computing |
| 11 | 36–37 | Anatomy of real scientific code; testing and software engineering |
| 12–13 | 38 | Capstone: the complete parallel simulation, presented as a paper |
| 14 | 39–40 | Fortran 2023 and beyond; careers; wrap-up |
Assessment: profiling/optimization lab, a parallelization assignment, midterm, and the capstone project
(Chapter 38) as the final deliverable — graded with rubrics/project-rubric.md.
Notes
- If a program has cluster access, schedule the MPI (Chapter 34) lab there; otherwise run MPI as multiple local processes.
- Part X (Chapters 39–40) is deliberately light — a good place to invite a guest speaker from a national lab, weather service, or aerospace firm.