Scholarly research

CERD seminar

CERD (Computer Education Research at Davis) is a weekly seminar started in January 2020 and co-founded by two former graduate students and myself. The topics are quite broad but they all relate to CS Education: presentation of academic papers or internal research projects or innovations in the classroom, external speakers, etc.

More information on our dedicated CERD website.

Study on gender and class participation

In this study, we are analyzing multiple quarters worth of class participation in two core CS classes (Data structures and algorithms, and Operating systems and system programming). The goal of this research is to determine whether or not there is a gender gap, explain it, and find solutions to mitigate it.

  • Publication(s)
    • Gender Differences in Class Participation in Core CS Courses, Madison Brigham and Joël Porquet-Lupine, ACM ITiCSE 2021 (26th Annual Conference on Innovation and Technology in Computer Science Education) –31% acceptance rate, PDF | Video
  • Talk(s)
    • Gender Differences in Class Participation in Core Computer Science Classes, Madison Brigham, UC Davis SoTL 2020 (5th Annual UC Davis Scholarship of Teaching and Learning Conference), Slides | Video

Pedagogical innovation

This line of education research is very broad, as we report on innovative teaching practices, curriculum development, etc.

  • Publication(s)
    • Design and Evaluation of “The Missing CS Class,” a Student-led Undergraduate Course to Reduce the Academia-industry Gap, Grant Gilson, Stephen Ott, Noah Rose Ledesma, Aakash Prabhu, Joël Porquet-Lupine, ACM SIGCSE 2022 (53rd ACM Technical Symposium on Computer Science Education) –34% acceptance rate, PDF
  • Talk(s)
    • Evaluating Group Work in Large CS Classes, Joël Porquet-Lupine, iCSTW 2022 (Illinois CS Summer Teaching Workshop), Slides

Software development for undergraduate education

LupIO devices

Real I/O devices, even ancient ones (e.g., IDE controller, typical 16550 UART), are too complicated for educational purposes. They provide many configuration registers that are irrelevant when students use simple system emulators.

LupIO is a collection of educational I/O devices, which provides a suite of easy-to-understand but typical I/O devices (e.g., terminal, interrupt controller, timer, block device) that students can use –and study– in some of their undergraduate courses (e.g., courses on computer organization and assembly language, computer architecture, operating systems).

  • Full specifications, implementation models, device drivers, etc.
  • Publication(s)
    • LupIO: a collection of education-friendly I/O devices, Joël Porquet-Lupine, WCAE 2021 (IEEE/ACM Workshop on Computer Architecture Education –held in conjuction with ISCA’2021), PDF | Video
    • Support for LupIO devices in gem5, Joël Porquet-Lupine, blog post on website


LupV is an education-friendly RISC-V based system emulator. The emulated system embeds a standard RV{32,64}GC-compatible processor (32-bit/64-bit RISC-V integer instruction set with support for multiply and divide, atomic operations, single- and double-precision floating point, and compressed instructions) and LupIO peripheral devices.

The goal of this project is to provide an easy to understand system emulator that students can use –and study– in some of their undergraduate courses (e.g., courses on computer organization and assembly language, computer architecture, operating systems). The emulator is yet powerful enough to boot Linux!

LupV’s source code and releases are available on

Software development for education


Interactive textbooks can have a real value when teaching programming languages. The problem is that existing interactive textbooks all require a server to interactively execute code at runtime, which is expensive for either the readers or the writers.

The goal of this project is to develop a new framework that runs entirely on the client’s side and can be used offline, therefore offering truly free interactive textbooks.


This project’s goal is to help instructors map the floor plan of a lecture hall, and randomly assign seats to students for exams, while minimizing the chunk size (i.e., the number of students in a block of adjacent seats).

The tool is also able to handle relevant constraints, such as different types of seats (e.g., tablet on the left or the right, broken seats, ADA seats) and students with specific characteristics (e.g., left-handed students, ADA students).

  • Source code and install instructions
  • Publication(s)
    • LupSeat: A Randomized Seating Chart Generator to Prevent Exam Cheating [Poster], Joël Porquet-Lupine, Hiroya Gojo, Philip Breault, ACM SIGCSE 2022 (53rd ACM Technical Symposium on Computer Science Education), PDF | Poster


This tool is an online encoder/decoder for RISC-V instructions. Users can input RISC-V instructions in their assembly or binary format and get the full conversion from one to the other. For now, we support the RV32I ISA but are aiming to support more ISA extensions in the future.

Creative activities

Podcast #include<cs>

With a small team of dedicated students, we created a podcast called #include<cs>. Each quarter we tell a story about Computer Science and Technology with an extra dose of fun and using non-technical language.

More information about the podcast and the different ways to listen to it are available on Currently on hold because of the pandemic, but soon to be resumed 🤞