Inspiration

The inspiration behind this project was the lack of free programs university professors could use to automatically check their students’ code submissions against test cases. Many existing websites that operate in a similar manner tend to be easily available for students but not for universities (for free, that is). This project attempts to resolve the issue of universities spending a fortune on programs that examine code by providing a free, open-source alternative.

What it does

Have you ever wanted to give your students an area where they can test their code from a prompt and submit it to you? Do you like existing solutions, but don’t want to pay a large amount of money? Do you want an application to automatically check your students submissions so you don’t have to check them yourself? Well we have the product for you, introducing “Open Submissions”.

This program will provide you with set prompts for students where they can put in their own code. They will choose either Java or Python and code with that language. The program will check and see if their code was done correctly.

How we built it

This frontend was built using Angular with Typescript, JavaScript, Java, Python3, HTML5, and CSS3. The backend was build with Elixir, Phoenix, Docker, and MySQL.

Challenges we ran into

We encountered difficulties when using Angular to create the frontend of the program. The components would lose functionality at times. There was also difficulty in routing these components to their backend counterparts.

The backend was a very complex piece of work. Asynchronously executing arbitrary user-submitted code in a sandboxed environment, allowing the users to utilize stdout for debugging, and preventing users from bogging down the server with slow code is a very tough challenge.

Accomplishments that we're proud of

We created a stable view of the frontend using Angular, with full functionality. We also connected the frontend to the backend successfully. The components on the frontend correspond with their backend counterparts with minimal errors.

While it isn’t as far along as we’d like, we succeeded in executing user code in a safe sandboxed environment via Docker, checking their results in a language-agnostic way, and handling malicious code uploads.

What we learned

Many of us learned our first front-end framework, Angular. Others of us learned new programming languages such as JavaScript. We also learned a ton about Docker, the Erlang VM, Elixir, and functional programming.

What's next for Open Submissions

We will implement more languages as the project continues. Currently, there is no authentication. Allowing users to only submit the code snippet relevant to their submission instead of making them handle writing their results to the appropriate file.

Share this project:

Updates