Teaching
Prof. Douglas Thain at Notre Dame
My courses focus on the design of computer systems, encompassing low-level operating system details, programming languages and compilers, and distributed systems consisting of thousands of machines. I teach students how to build real working systems from end-to-end, taking into account not just performance, but also reliability, completeness, usability, maintainability, and beauty.
Recent courses taught at the University of Notre Dame include:
- CSE 40243 - Compilers and Language Design (Fall 2025)
- CSE 30341 - Operating Systems Principles (Spring 2025)
- CSE 40771 - Distributed Systems (Fall 2024)
- CSE 30341 - Operating Systems Principles (Spring 2024)
- CSE 40243/60243 - Compilers and Language Design (Fall 2023)
- CSE 40771 - Distributed Systems (Spring 2023)
- CSE 40243/60243 - Compilers and Language Design (Fall 2022)
- CSE 30341 - Operating Systems Principles (Spring 2021)
- CSE 40771/60771 - Distributed Systems (Fall 2021)
I also create a variety of free online materials for teaching computer systems. Take a look at my free online compilers textbook:
You can also take an online course in Data Intensive Scientific Computing hosted by me and my colleague, Prof. Paul Brenner:
Prior Courses
- CSE 40822/60822 - Cloud Computing
- CSE 40677 - Open Source Software Development
- CSE 66771 - Foundations of Distributed Systems
- CSE 20211 - Fundamentals of Computing
- CSE 60641 - Graduate Operating Systems