DJ stands for Distributed Judge. A tool that many TAs wish they would have. This would provide more flexibility over normal judges such as Quera
- Judges student codes locally
- The most flexible judge out there
- Checks out source codes against illegal usage of language constructs.
- Doesn't need a server
- Dr Mojtaba Vahidi, My Kind Supervisor
- Dr Sadegh Aliakbari, My Referee
- Amir Arsalan San'ati, Who gave me the idea
Golang
should be installed on your system- Also there is heavy usage of
Bash
- For running tests you should have
python3
andgcc
andjava
in yourPATH
Official way to use this repository is to clone the repository and run the "Distribute script"
You can also install the binary file like this (which is not recommended because it does not contain examples)
go install "github.com/rsharifnasab/DJ@latest"
And then use binary file like this:
DJ --help
To Distribute the project run
./scripts/dsitribute.sh
Then the distribution zip would be in ./bin/
directory.
To run tests, run the following command
go test ./... -cover -count 1
Exploration on various software and library choices is Documented here
No you don't. The course TA should clone this repository and create questions and then distribute questions alongside the judge and the binary for you.
No you don't. The flexible part is not programmed in Go, but instead you need a bit of bash script knowledge to tune judges and develop creative questions.
This project is used by the following courses:
- Shahid Beheshti university, Advanced programming (WIP at that time)
- Sharif University, Compiler course for CE students
Here are some related projects
- TA utils: another repository for TAs which contains small and useful scripts.
- Sharif Judge: A free and open source online judge system for programming courses
- Better Windows support
- Provide learning resources for Bash script
- Better API for source code checks
- Save student scores on a Block Chain
For support, email [email protected].