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 │
└──────────┴──────────────────────────┴─────────────┘
This
work is licensed under a
Creative
Commons Attribution 4.0 International License.
