The ok.py server collects submissions and displays analysis of student progress based on logging sent from client scripts.
Contact us to use our hosted service (http://okpy.org) for your course.
The ok.py software was developed for CS 61A at UC Berkeley.
View Documentation at OK Documentation
To install:
- Clone this repo
- Install
virtualenv
. You can dobrew install virtualenv
on a mac orpip install virtualenv
orapt-get install python-virtualenv
- If brew cannot find
virtualenv
, usebrew install pyenv-virtualenv
.
- If brew cannot find
- Create a virtualenv with
virtualenv -p python3 env
- Activate the virtualenv with
source env/bin/activate
To run the server locally:
$ source env/bin/activate
$ pip install -r requirements.txt # to install libraries
$ ./manage.py createdb
$ ./manage.py seed
$ ./manage.py server
The server will listen on http://localhost:5000.
- To view available commands run
./manage.py
once the virtualenv is activated.
server/generate.py
intializes the local server with sample content (Users, Assignments, a Course etc). You can customize it by changing the file and running ./manage.py resetdb
.
The server is developed in Python 3.4+ using Flask.
Backup Maintenance
- Best-effort maintenance of student backups that occur when ok is run.
Composition Grading
- Allow staff to comment on student composition of projects and assign grades.
Autograding
- Automatic grading of student submissions
- CS61A uses ok.py for all assignments.
- 3 other UC Berkeley CS courses use ok.py
See documentation/CONTRIBUTING.md
Docker + Kubernetes on Google Container Engine. See kubernetes/kubernetes.md
for more info.
The ok-server also supports deployments to Heroku or servers on any major hosting service.
Refer to The Elements of Python Style
Some useful things for developers to know:
- Testing with ok-client
- To test with ok-client, please follow the instructions for the ok-client repo here.
- Once you are inside the virtual environment for ok-client, you can make a new binary by using the command
ok-publish
. - Start the local ok server.
- When running the ok binary, add the flags
--insecure --server localhost:<port>
to point it to the running ok-server - To find demo assignments that you can use the binary with, look in ok-client/demo