My primary teaching interests are computer systems, data structures, and societal issues in computing.

CS 261-361 (Computer Systems I-II) form a breadth-first survey of computer systems, including assembly language, high-level language translation and linking, von Neumann architecture, processes and OS principles, concurrency, and networking. After this sequence, I have also taught courses in Operating Systems implementation (undergraduate and graduate). Students can choose other advanced systems courses in (currently) Compilers, Parallel & Distributed Systems, and CPU Architecture.

I am also interested in the relationship between people and computer systems, and I teach courses that examine different aspects of this relationship. Topics in my elective courses include safety in cyber-physical systems, model checking and verification, electronic voting, intellectual property, privacy, and gender/racial discrimination in computing.

JMU Course Page Archive

The following pages link to the most recent offering of courses that I regularly teach at JMU.

CS 240: Data Structures
CS 261: Computer Systems I
CS 361: Computer Systems II

Elective and Former Course Archive

The following courses are electives or former courses that I no longer regularly teach.

Undergraduate Systems Courses

  • CS 450: Operating Systems
  • CS 480: Embedded Systems
  • CS 350: Computer Organization (retired)

Graduate Courses

  • CS 550: Operating Systems
  • CS 685: Embedded Systems
  • CS 652: Formal Methods in Information Security

Other Computing Courses

  • CS 280: Data Analysis in R
  • CS 330: Societal and Ethical Issues in Computing

Purdue University Teaching Experience

Prior to JMU, I taught at Purdue University and completed a teaching certificate program there.

CS 182: Foundations of Computer Science
  • Fall 2010
MA 152: College Algebra
  • Spring 2009

© 2011-2020 Michael S. Kirkpatrick. This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.