Home - AgileVentures/rag GitHub Wiki
Welcome to AutoGraders!
Introduction
AutoGraders is a project to provide a platform for automation of creating, testing, grading and providing feedback on programming assignments for students engaged in various programming courses.
AutoGraders platform consists of several modules:
AutoGraders Server
An end product to be used by educational institutions and online education platforms to carry out automatic grading and to provide customizable feedback to students.
Main features: (add specific requirements)
- easily deployed and maintained
- provides various interfaces to communicate with existing platforms and assignments submission protocols
- supports grading various types of assignments and grading techniques
- supports assignments for various programming languages and technologies
- testing
- acceptance testing
- mutation testing
- UI testing
- performance testing
- code quality testing - smells, complexity, ABC
- test coverage
- scalable, to accommodate different loads and throughput
- 100% code coverage by unit, integration and acceptance tests
- provides tools for load testing, monitoring and notifications
AutoGraders Instructor Box
An environment and a collection of tools to create and test AutoGraders specifications for the grading process.
Main features: (add specific requirements)
- easily deployed and maintained
- provides tools for creation an assignment package to be used by AutoGraders server
- provides extensive documentation for instructors with examples on creating various types of assignments
- provides tools for testing created assignment package
- provides tools for simulating student experience through simulating: - education platform submission form and feedback rendering - education platform communication interface
AutoGraders Development box
An environment and a collection of tools for extension of existing functionality of AutoGraders platform.
Main features: (specific requirements)
- deployed and maintained
- architecture
- documented source code (i.e. self-documenting and with acceptance tests)
Important comments
The current implementation only supports programming assignments for Ruby and Ruby based technologies.
For developers
We are seeking contributors for our project.
A few ideas why you should consider this project:
- project is being implemented in Ruby and ruby based technologies
- The complexity (and thus interest and challenge rate) is intermediate to advance
- You will learn about setting up virtual machines, cloud instances, application inter-communication, concurrent processing and databases
- We strictly stay within the BDD philosophy, thus you have a chance to learn the BDD and TDD techniques to full extent in a real project
- We aim for 100% test coverage
- We aim for beautiful code and architecture
- We strive to employ best software engineering practices, patterns and principles - SOFA, SOLID and others
- We are adepts of Agile development
- We enjoy Pair Programming for learning, fun and profit
- We are building reliable and scalable software for a great cause, that will be used and benefited by hundreds of thousands of people around the world.