Inspiration

I am in CSE 115, and do a lot of work through AutoLab. I am often frustrated by how slow it is to grade my work, and I dislike the fact that is only uses the newest submission grade for your score. Part of the reason AutoLab runs slowly is because for each test case it runs 2 method calls; one method call to the source code, and one method call on your submission. I wanted to see if I could do something better.

What it does

I thought it would be an interesting idea to run all tests on the source code, store these results, and later compare student results for test cases to the stored results. The program has a helper utility to help you make a bunch of random test cases of different types, while also letting you manually input any specific test cases you would like to have. Once you upload your code, all test cases are run on your code, storing your results and changes in your heap. When a student submits their code through the student panel, test cases are run on their code in a sandboxed environment, comparing the results to the stored results from source code.

How we built it

I used extensively used Copilot for HTML, testing, and debugging. I also used Copilot for ideas on how to implement some of my features.

Challenges we ran into

The sandboxing library I wanted to use, nsjail, only works on Linux. I use a windows machine. I had to install and set up WSL on my computer, and then send files between my Windows environment to the Linux environment. Sending files between the environments felt a bit tricky at first, since I have almost no experience in working with files through code, but I was able to figure it out, and set it up.

Accomplishments that we're proud of

I am proud of myself for participating in my first coding competition. I am also proud of actually being able to create a working product. Though not very pretty, or secure, I am happy with what I have.

What we learned

I got a lot of experience with working through my file system. I also learned how to make modules in python, as well as a few of their special methods.

What's next for Autograder

I need to add some security. A login screen, permissions, cookies. I also need to add some teacher tools, like adding due dates, looking at students grades, ways to modify previous labs. The application also needs some API, it needs some way to export grades, and submissions.

Built With

Share this project:

Updates