Skip to content

tjcsl/tin

Repository files navigation


An autograder for Computer Science Classes

wakatime


History

Previously, teachers in TJHSST CS classes had to manually run student code. As you can imagine, this was both time consuming, and dangerous. In order to solve this problem, Tin was invented to safely run student code submissions.

Architecture

Tin is a Django application backed by PostgreSQL and SQLite. We use Celery (with a RabbitMQ broker) to process tasks.

Features

  • Teacher management view for courses
  • Uploads for teacher's grader scripts
  • Customized containers for grader scripts

Developing

To work on Tin, you'll need the following:

  • pipenv
  • git
  • A Github account

First, fork Tin. Then you can clone Tin onto your local computer with

git clone https://github.com/your_github_username/tin

After that, install dependencies:

pipenv install --dev

And finally, apply the database migrations and create some users.

Note: if you're on Windows, replace python3 with python in the commands below

python3 manage.py migrate
python3 create_debug_users.py

Now you can run the Tin development server!

python3 manage.py runserver

Head over to http://127.0.0.1:8000, and login with the username admin and the password you just entered.

Data Backup

python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e admin -e auth.Permission > export_YYYY_MM_DD.json
# copy to local machine
iconv -f ISO-8859-1 -t UTF-8 export_YYYY_MM_DD.json > export_YYYY_MM_DD_utf8.json
python manage.py loaddata export_YYYY_MM_DD_utf8.json