I taught computer science for six years (2015 - 2020) in UC Davis’s Department of Computer Science. All the courses I’ve taught are below; each link leads to the course website for that offering of the course.

For my non-academic projects, see the Projects tab.


Courses that I’ve taught as instructor of record. I believe in the open source movement, and so all of my class materials are available with Creative Commons licenses on GitHub under my jlperona-teaching organization.

Computer Science Teaching Pedagogy Seminar

Alternative title: “teaching TAs to teach.” A seminar focused on preparing potential teaching assistants to teach computer science at the undergraduate level. In later iterations of the course, I incorporated material from the Megas and Gigas Educate (MaGE) Program from Mount Holyoke College. The program is designed to promote inclusive peer mentoring and active learning in computer science.

Computer Architecture I

First undergraduate-level course on computer architecture, focusing on digital design and architectural building blocks like the memory hierarchy. My courses also included the computer architecture “rite of passage” by having students design a CPU in a circuit simulator.

Teaching Assistant

Courses that I’ve taught as a teaching assistant, including as an undergraduate.

Computer Architecture II

Second undergraduate-level course on computer architecture, focusing on higher-level computer organization and instruction set architectures (ISAs).

Advanced Computer Architecture

Graduate-level course on computer architecture, focusing on advanced concepts such as register allocation, speculation, and parallelism.