Skip to content

Repository files navigation

Software Engineering for Scientific Computing

Course originally written by Henry Schreiner & Romain Teyssier. Some material written by Gabriel Perez-Giz for previous iterations of this course. Thanks to Troy Comi for extensive review, additions, and corrections, and several sections.

This material is rendered into a website at https://se-for-sci.github.io. A WebAssembly version of some notebooks is available with some caveats (like no shell). A binder version is available, too.

Tuesday/Thursday variation (fall 2026 dates):

┌──────────┬──────────────────────────┬─────────────┐
│   Week   │          Topic           │     Date    │
├──────────┼──────────────────────────┼─────────────┤
│ Half day │ Intro to class / cleanup │ 9/3         │
├──────────┼──────────────────────────┼─────────────┤
│ Week 1   │ Git first steps          │ 9/8         │
│          │ Advanced Git             │ 9/10        │
├──────────┼──────────────────────────┼─────────────┤
│ Week 2   │ Agentic AI setup         │ 9/15        │
│          │ Agentic AI workflows     │ 9/17        │
├──────────┼──────────────────────────┼─────────────┤
│ Week 3   │ Dynamic testing          │ 9/22        │
│          │ TDD & debugging          │ 9/24        │
├──────────┼──────────────────────────┼─────────────┤
│ Week 4   │ Packaging                │ 9/29        │
│          │ Static testing           │ 10/1        │
├──────────┼──────────────────────────┼─────────────┤
│ Week 5   │ Continuous integration   │ 10/6        │
│          │ CD & documentation       │ 10/8        │
├──────────┼──────────────────────────┼─────────────┤
│ Week 6   │ Compiled languages       │ 10/13       │
│          │ Debugging & profiling    │ 10/15       │
├──────────┼──────────────────────────┼─────────────┤
│          │ Fall recess              │ 10/17-10/25 │
├──────────┼──────────────────────────┼─────────────┤
│ Week 7   │ Parallel - threads       │ 10/27       │
│          │ Parallel - processes     │ 10/29       │
├──────────┼──────────────────────────┼─────────────┤
│ Week 8   │ GPU programming - CUDA   │ 11/3        │
│          │ GPU programming - CuPy   │ 11/5        │
├──────────┼──────────────────────────┼─────────────┤
│ Week 9   │ Shared objects & CPython │ 11/10       │
│          │ pybind11 & Rust bindings │ 11/12       │
├──────────┼──────────────────────────┼─────────────┤
│ Week 10  │ Intro to OO              │ 11/17       │
│          │ OO design                │ 11/19       │
├──────────┼──────────────────────────┼─────────────┤
│ Week 11  │ Design patterns          │ 11/24       │
│          │ Thanksgiving             │ (No class)  │
├──────────┼──────────────────────────┼─────────────┤
│ Week 12  │ Functional design        │ 12/1        │
│          │ Static typing            │ 12/3        │
├──────────┼──────────────────────────┼─────────────┤
│          │ Final report due         │ 12/15       │
└──────────┴──────────────────────────┴─────────────┘

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

About

Software Engineering for Scientific Computing

Resources

Stars

46 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages