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.
- Advanced Topics in Automata, Languages and Compilers. The course contains additional topics on automata, languages and compilers: programming in OCaml and introduction to various kinds of static program analysis. 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.
- Logic in Computer Science. This course provides an overview of methods for formal modelling of computer systems and the construction of corresponding reasoning. This is taught every spring.
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.