Fortran — born from John Backus’s 1953 IBM team, first compiler shipped 1957 — is the oldest still-active language and the undisputed workhorse of high performance computing. This track teaches modern Fortran through 2023: foundations, data and modules, reliability, the full parallel stack (OpenMP, coarrays, MPI, GPUs), Python integration, and an honest comparison with Rust and Zig.
gfortran, run the lab demos, and keep the official sources from the references page open.
| # | FORTRAN | Topic | Description |
|---|---|---|---|
| PHASE 1: LANGUAGE FOUNDATIONS | |||
| 01 | Fortran Overview | Sixty-five years of history, today's dominance, why it still wins. | |
| 02 | Setup & Toolchain | Compilers, install, safety flags, and first fpm project. | |
| 03 | Fortran Syntax | Free vs fixed form, program units, statements, implicit typing trap. | |
| 04 | Type System | Intrinsic types, KIND, portable precision with selected_real_kind. | |
| 05 | Expressions | Operator precedence, logic, array expressions, intrinsics. | |
| 06 | Control Flow | IF, SELECT CASE, DO loops, CYCLE/EXIT, DO CONCURRENT. | |
| PHASE 2: PROGRAMMING | |||
| 07 | Functions & Subroutines | INTENT contracts, optional and keyword arguments, pure/elemental. | |
| 08 | Arrays | Column-major layout, slicing, constructors, WHERE, allocatable. | |
| 09 | Strings | Deferred-length characters, intrinsics, internal files, parsing. | |
| 10 | File Handling & I/O | Units, FORMAT, NAMELIST, access modes, iostat error handling. | |
| 11 | Derived Types | Type definitions, % access, arrays of records, deep copy semantics. | |
| 12 | Modules | USE/ONLY, visibility, generic interfaces, compile order, submodules. | |
| PHASE 3: RELIABILITY & DATA | |||
| 13 | Pointers | POINTER and TARGET, pointer assignment, linked structures. | |
| 14 | Error Handling | Exit codes, iostat/iomsg, IEEE traps, assertions, backtraces. | |
| 15 | Object Orientation | Type-bound procedures, inheritance, polymorphism, finalization. | |
| 16 | C Interoperability | iso_c_binding, bind(c), C_LOC/C_F_POINTER, shared libraries. | |
| PHASE 4: HPC & PARALLEL COMPUTING | |||
| 17 | Performance | Optimization flags, cache and SIMD, profiling, Amdahl's law. | |
| 18 | Parallel Computing | OpenMP fork-join, reductions, thread safety, choosing the model. | |
| 19 | Coarrays | Images, cosubscripts, sync, teams, collectives in the standard. | |
| 20 | MPI | Ranks, send/receive, collectives, domain decomposition, hybrid. | |
| 21 | GPU Programming | OpenACC, OpenMP target, CUDA Fortran, data movement. | |
| PHASE 5: ECOSYSTEM & PERSPECTIVE | |||
| 22 | Python Integration | F2PY zero-copy modules, ctypes, orchestrating simulations. | |
| 23 | Ecosystem | fpm, stdlib, BLAS/LAPACK, netCDF/HDF5, testing, CI. | |
| 24 | Fortran vs Rust vs Zig | Is Fortran a system language? The honest comparison table. | |
| PHASE 6: PRACTICE & REFERENCE | |||
| 25 | Lab Examples | Twenty-two runnable demos with a code viewer, by category. | |
| 26 | Study Projects | Statistics, OOP shapes, and heat diffusion in three parallel styles. | |
| 27 | References & Resources | Standards, compilers, playgrounds, courses, HPC APIs, community. | |
Verified free resources to keep after finishing the track — the full categorized table lives on the References & Resources page.