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:

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