Inspiration
As our entire team has worked as teaching assistants for the University of Mississippi Computer Science department, we've continuously run into difficulties when trying to grade large batches of student assignments. Our application is a proof-of-concept for an online code submission platform specifically designed for education. "Mandalo" is Spanish for "submitted." We hope to see all the teaching assistants and graduate students using Mandalo before long.
What it does
Our application allows a student to upload and remotely run a program for a given homework assignment. The student can view the output of their program and the expected output. An administrator is able to create new assignments or add languages, although we currently only support Python.
In the backend all the files are hosted in a dedicated git repository, which allows the TA's to execute a remote push which will give them access to all the code. No more ZIP files nightmares!
How we built it
We used a combination of Django and SQLite to serve the web interface, and we used a Docker image to securely run student submissions. The "production version" is hosted on a personal Ubuntu server.
Challenges we ran into
We had the most difficulty with the Django model corrupting itself frequently and with running arbitrary programs in a Docker container.
Accomplishments that we're proud of
We are most proud of successfully capturing output from a program run within a Docker container, as well as our success implementing the application's fundamental workflows.
What we learned
Together we learned how to use Django, SQLite, Bootstrap, and Docker.
What's next for Mandalo
The priority for future work is to add user logins and permissions. We skipped these due to the time we had to spend getting Django and Docker to cooperate and due to that being a thoroughly solved problem. We would also add a more capable system for test cases, so students would not have access to all the answers and could experiment with their own inputs. We also want to support more languages such as Java and C as well as the option to submit multiple languages for the same assignment.

Log in or sign up for Devpost to join the conversation.