Students can submit their projects by uploading a zip file, directly from the IDE or by connecting Drop Project to a git repository containing their project. Projects can be developed individually or in groups, with the AUTHORS.txt file in the project's root folder specifying the contributors.
Submissions are tested using standard JUnit tests. If you want to test stdin/stout interactions, we suggest using the stdin-stdout-junit-helper library. When tests fail, students are provided with the exact JUnit output, familiarizing them with the standard message format commonly used across the industry.
Assignments are created by teachers, in a github repository with a standard maven structure, containing all the unit tests, the reference implementation (hidden from the students) and the assignment statement (instructions.html). You can check some examples: Java sample assignment and Kotlin sample assignment. Import the assignment into Drop Project by connecting to its repository using an access key (no credentials needed)
Drop Project comes, out of the box, with 3 authentication mechanisms: login form against a CSV file of users; integration with Moodle/LTI; integration with oauth (e.g. Github). However, since it is developed in Spring and makes use of the powerful Spring Security library, is is easily extendable to other authentication mechanisms such as LDAP/Active Directory or a custom user database. More information here.
Students receive a detailed build report upon every submission, including project structure validation, possible compilation errors, code quality validations and the unit test results. Code quality validations are defined by the teacher, using standard tools such as Checkstyle for Java and Detekt for Kotlin.
Teachers can check the current status of each assignment. Several metrics about each student or
group of students are displayed: number of submissions, build indicators (e.g. how many tests pass), execution time, etc...
All these metrics can be exported in csv format.
The submission history for each student is preserved, enabling teachers to monitor individual progress, identify pain points, and more.