Teaching
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:
- CS 240 - Data Structures and Algorithms (Fall 2014)
- CS 240 - Data Structures and Algorithms (Fall 2015)
- CS 261 - Computer Systems I (Fall 2016)
- CS 261 - Computer Systems I (Fall 2017)
- CS 261 - Computer Systems I (Fall 2018)
- CS 261 - Computer Systems I (Fall 2019)
- CS 261 - Computer Systems I (Fall 2020)
- CS 261 - Computer Systems I (Fall 2021)
- CS 261 - Computer Systems I (Fall 2022)
- CS 261 - Computer Systems I (Spring 2023)
- CS 261 - Computer Systems I (Fall 2023)
- CS 261 - Computer Systems I (Spring 2024)
- CS 280 - Programming Challenges (Fall 2015)
- CS 280 - Programming Challenges (Fall 2016)
- CS 280 - Programming Challenges (Spring 2018)
- CS 280 - Programming Challenges (Spring 2019)
- CS 430 - Programming Languages (Spring 2015)
- CS 430 - Programming Languages (Spring 2018)
- CS 430 - Programming Languages (Spring 2019)
- CS 430 - Programming Languages (Spring 2020)
- CS 430 - Programming Languages (Spring 2021)
- CS 430 - Programming Languages (Spring 2022)
- CS 432 - Compilers (Fall 2016)
- CS 432 - Compilers (Fall 2017)
- CS 432 - Compilers (Fall 2018)
- CS 432 - Compilers (Fall 2019)
- CS 432 - Compilers (Fall 2020)
- CS 432 - Compilers (Fall 2021)
- CS 432 - Compilers (Fall 2022)
- CS 432 - Compilers (Spring 2023)
- CS 432 - Compilers (Fall 2023)
- CS 432 - Compilers (Fall 2024)
- CS 470 - Parallel and Distributed Systems (Spring 2016)
- CS 470 - Parallel and Distributed Systems (Spring 2017)
- CS 470 - Parallel and Distributed Systems (Spring 2018)
- CS 470 - Parallel and Distributed Systems (Spring 2019)
- CS 470 - Parallel and Distributed Systems (Spring 2020)
- CS 470 - Parallel and Distributed Systems (Spring 2021)
- CS 470 - Parallel and Distributed Systems (Spring 2022)
- CS 470 - Parallel and Distributed Systems (Spring 2023)
- CS 470 - Parallel and Distributed Systems (Spring 2024)
- CS 480 - Special Topics: Large-Scale Visualization Tools (Spring 2015)
- CS 480 - Special Topics: Compilers (Fall 2015)
- CS 630 - Compilers: Theory and Implementation (Spring 2015)
- CS 630 - Compilers: Theory and Implementation (Spring 2016)
- CS 630 - Compilers: Theory and Implementation (Spring 2017)