Publication Date

Spring 2023

Degree Type

Master's Project

Degree Name

Master of Science (MS)


Computer Science

First Advisor

Ben Reed

Second Advisor

Genya Ishigaki

Third Advisor

Navrati Saxena


distributed evaluation of code


A distributed system can exist in numerous states, including many erroneous permutations that could have been addressed in the code. As distributed systems such as cloud computing and microservices gain popularity, involving distributed com- puting assignments is becoming increasingly crucial in Computer Science and related fields. However, designing such systems poses various challenges, such as considering parallel executions, error-inducing edge cases, and interactions with external systems. Typically, distributed assignments require students to implement a system and run multiple instances of the same code to behave as distributed. However, such assign- ments do not encourage students to consider the potential edge cases that external systems may induce when interacting with their code. Assignments that execute a combination of student submissions as a single system promote high-quality design discussions before and during code writing and encourage students to consider how to handle faults generated by other systems. Testing such assignments is labor-intensive and involves repetitive tasks of setting up and destroying a virtual environment in which to test the system. In some cases, inducing a specific type of fault may require modifying the submitted source code, which is strongly discouraged. This research project explores the necessity, design, and implementation of Distributed CodEval, a tool that enables course instructors to define test cases for automating the evaluation of distributed system assignments.