The best answer to the question, "What is the most effective method of teaching?" is that it depends on the goal, the student, the content, and the teacher. But the next best answer is, "students teaching other students". - Wilbert J. McKeachie
For a description of the general idea, read this blog post.
Demograder uses an all-Python stack:
- Python 3.5+ (for subprocess.run)
- Django as the web framework
- RQ as the job queue
- Honcho as the process manager
- pytz for timezone data
-
Go to the root of this repository
cd demograder
-
Set up a virtual environment with the necessary packages
python3 -m venv /PATH/TO/VENV/demograder source /PATH/TO/VENV/demograder/bin/activation pip install -r requirements.txt
-
Change directory paths in
Procfile
,gunicorn.conf
, andnginx.conf
-
Copy/link the nginx configuration
nginx.conf
to/etc/nginx/sites-enabled/
-
Allow the executing user can
sudo nobody
without a password. This can be done by modifying/etc/sudoers
:demograder ALL=(nobody) NOPASSWD: ALL
-
Create
demograder/secrets.json
-
Set up django by running:
./manage.py migrate ./manage.py createsuperuser ./manage.py makemigrations demograder ./manage.py migrate ./manage.py collectstatic
-
Load fixtures in
demograder/fixtures
:./manage.py loaddata demograder/fixtures/$FIXTURE
-
(Re-)Start nginx:
sudo service nginx restart
-
Start the services with
honcho start
, or to specific the number of workers,honcho start -c rqworker=4
- Project dependencies cannot be concurrent - no new submissions are expected from the dependent project
- A number of settings (datetime format, timezones, etc.) are not yet configurable in settings.py