A full-stack desktop application designed to help CMU computer science students complete lab assignments using virtual machines, without needing to understand all the technical complexity behind the scenes.
This project started from Professor Patrick Seeling’s research on virtualized lab environments and delta files.
The 5 step Design Process (Empathize, Define, Ideate, Prototype, Test) and the 10 Usability Heuristics were used to guide the development of the application. I conducted usability studies with real students to understand their needs and pain points, and iterated on the design based on their feedback.
This project challenged me to take a very technical system and design an experience that actually makes sense to users. I’m so excited to have the application utilized in upcoming semesters!
Huge thanks to Professor Patrick Seeling for the guidance and support throughout this project. Additional thanks to the Central Michigan University Honors Program for supporting this work and funding the poster presentation.
Professor Patrick Seeling of Central Michigan University wanted to implement a virtual lab framework that allowed students to complete networking and computer science lab work on their own computers using a QEMU-based virtual machine. His research outlined a system using “delta files,” which capture changes made to a virtual machine. The professor could distribute pre-configured lab environments to students through delta files, and students could submit their completed work by sending their own delta files for feedback.
While technically sound, the framework required students to manually interact with virtual machines and delta files through a text-based environment. This complexity risked creating a barrier between students and their assignments, shifting focus away from learning objectives and toward technical setup.
The challenge was to design a Windows-based desktop application, stored within each student’s CMU network drive, that simplified this process.
With user needs defined, I began exploring how to simplify a technically complex system (QEMU + delta files) into an intuitive student experience. After mapping out flows and sketching different approaches, I reduced the experience to three simple actions:
Everything else, like delta file management and system commands, would happen behind the scenes.
I also removed technical language like “overlay files” and “QEMU” from the interface. Students don’t care how their work is stored. They care about completing assignments. My goal became making the system feel straightforward and predictable.
While sketcing, I relied heavily on Nielsen’s usability heuristics to guide key decisions:
The early sketches focused on clarity and reducing friction, especially around assignment progression.
Once the flow was outlined, I moved into building the prototype.
I used Tauri with a Rust backend and React frontend. Rust handled system-level operations like launching the virtual machine and merging files. React handled the interface and user interaction.
I built the application iteratively, implementing small pieces and testing them immediately. This helped me catch both technical bugs and usability issues early, instead of discovering them all at the end.
I also added lightweight persistence (JSON files) to track assignment progress and log user actions. This supported usability decisions like displaying assignment numbers and giving users visibility into what had happened.
To validate the design, I conducted a moderated usability study with CMU computer science and IT students.
I wanted to know if they could complete assignments without guidance, and if they understood how to progress to the next assignment. I also wanted to observe where they hesitated or became confused.
Watching students use the app was incredibly insightful. Some issues were technical, but others were purely UX:
Based on these observations, I:
Five participants were enough to surface the majority of usability issues and guide meaningful improvements.