I have taught a variety of courses at JMU, but my primary teaching areas are programming languages and systems. In programming languages, I teach CS 430 (our programming language survey and theory course) and CS 432 (compilers, but with a systems focus). In systems, I teach CS 261 (our systems introduction course that combines C programming, machine code, computer organization, and operating systems) and CS 470 (parallel and distributed systems, which I teach with a focus on high-performance computing).

I believe that open access to information is key to an educated and inclusive society, so I try to post as much as possible of my course content publicly on this website. Here are links to the websites for individual semesters: