Octave Correction Tool was developed as part of my final bachelor’s thesis.
For more information, check the my thesis in portuguese or english
Note: The english version was translated using an online tool, I recommend checking the original document - in portuguese - if possible.
It is a platform designed to assist professors in the subject of Numeric Calculus by automating the evaluation of student assignments, currently only supporting Octave assigments. Hosted within a monorepo structure, the repository comprises several interconnected services that streamline the submission, execution, and grading of numerical methods implemented by students in Octave.
Traditional methods of manual code evaluation are time-consuming and error-prone, especially in large classes where hundreds or thousands of executions may be required. This platform addresses these challenges by offering automated batch processing of student-submitted algorithms, providing rapid feedback and reducing the grading workload for educators.
- Automatic Execution of Algorithms: Automatically execute student submissions as they're uploaded, ensuring consistency and efficiency.
- Scalable Architecture: Capable of handling large volumes of submissions by executing exercises in parallel.
- User Management: Manage classes, exercises, and test cases with ease.
- Automated Feedback: Provide students with immediate feedback based on predefined test cases.
- Secure Execution Environment: Isolated containers ensure safe execution of untrusted student code.
- Intuitive Interface: User-friendly front-end for both professors and students to interact with the platform.
The system is built as a monorepo containing several microservices, each responsible for distinct functionalities:
- Database: Utilizes MongoDB for storing user data, assignments, test cases, and execution results.
- Message Broker: RabbitMQ handles asynchronous communication between services, ensuring reliable task processing.
- Execution Engine: Manages the execution of student-submitted Octave code within isolated Docker containers.
- Octave Octave container where the student's code will be run. A clear container with octave-cli, and a binded volume with student data.
- API A Express API which handles most of the logic in the system. Exposes endpoints for the professor and student.
- Frontend: A web-based interface developed using Vue.js, allowing users to interact with the platform seamlessly.
- NGINX: Serves as the central communication hub, handling requests from the client and coordinating between the API and the Front End.
- Frontend: Vue.js, Vuetify
- Backend: Node.js, Express
- Database: MongoDB
- Containerization: Docker, Docker Compose
- Messaging: RabbitMQ
- Execution Environment: GNU Octave
- Web Server: NGINX
- Authentication: JSON Web Tokens (JWT)
- Docker installed on your machine
- Docker Compose installed
-
Clone the Repository
git clone https://github.com/joaoaugustogrobe/CorrectionTool2.0.git cd CorrectionTool2.0
-
Configure Environment Variables
Create a
.env
file in the root directory and populate it based on the.env.example
provided.cp .env.example .env
Edit the
.env
file to set your configuration parameters, such as database credentials, API keys, and other necessary settings. -
Build and Deploy Services
Use Docker Compose to build and start all services.
docker-compose up -f docker-compose-prod.yml --build
This command will set up the frontend, backend API, database, message broker, and execution engine.
-
Access the Application
Once all services are up and running, navigate to
http://localhost:3000
in your web browser to access the platform.
- Login/Sign Up: Access the platform using your credentials.
- Manage Classes: Create and manage classes, enroll students, and assign courses.
- Create Exercises: Define new exercises by specifying the problem statement, function signatures, and associated test cases.
- Define Test Cases: Set up both public and private test cases with specific input parameters and expected outputs.
- Review Submissions: Monitor student submissions, review execution results, and provide feedback or override automatic grades as necessary.
- Login/Sign Up: Access the platform using your credentials.
- Enroll in Classes: Join available classes or be enrolled by your professor.
- Download Templates: Access exercise templates provided by your professor to ensure proper submission format.
- Submit Assignments: Upload your Octave scripts for evaluation.
- Receive Feedback: View automated test results and feedback to improve your solutions.
Contributions are welcome! Please follow these steps to contribute:
-
Fork the Repository
Click the Fork button on the repository page.
-
Create a Feature Branch
git checkout -b feature/YourFeatureName
-
Commit Your Changes
git commit -m "Add some feature"
-
Push to the Branch
git push origin feature/YourFeatureName
-
Open a Pull Request
Navigate to the original repository and click on "Compare & pull request."
Please ensure your contributions adhere to the project's code of conduct and include relevant tests and documentation where applicable.
This project is licensed under the MIT License - see the LICENSE file for details.
For any inquiries or support, please contact:
- Email: [email protected]
- LinkedIn: João Castilho