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:
Introduction to Compilers and Language Design by Douglas Thain 2nd edition, 2020. compilerbook.org |
You can also take an online course in Data Intensive Scientific Computing hosted by me and my colleague, Prof. Paul Brenner: