Teaching Software Science

Programming is often taught with a highly narcissistic focus on building something fun and seeing it come to life as soon as possible. But as one grows up, there comes a time when one should start caring about others! We want you to become the best programmer you can possibly be! If you sincerely care about not harming other people, we would encourage you to join our courses on software foundations, a broad introduction to the mathematical underpinnings of reliable software.

Undergraduate course

  • Automata, Languages, and Compilers. This is the fabulous name for our compiler construction course. We lay the intuitive foundations here for the inductive reasoning needed to write reliable software. This is taught every spring.
  • Functional Programming is an introduction to functional programming course in Idris. It covers both classic topics as well as an introduction to using a powerful type system to reason about the correctness of programs. This is taught every fall.

Graduate courses

  • Software Foundations. This covers the first and second books of the Software Foundation series. It is largely meant for independent study, with biweekly meetings to discuss issues. This is taught in Fall 2023.
  • Verified Functional Algorithms. This is a self-contained course, starting with learning Coq, but then mainly focuses on book 3. This will be next taught in Fall 2024.
  • Programming Language Research Seminar. This is a weekly seminars mainly for students in our research group, but this is open to all bachelor and master students who are interested in programming language research.