Skip to main content

The CS251 (Software Design) Toolkit

Project description

Welcome to the CS251 toolkit, designed to help TAs and graders for St. Olaf’s Software Design course.

Prerequisites:

  • Python 3.4+

  • git

To run:

  • pip install --user cs251tk

  • mkdir cs251/ && cd cs251

  • git clone https://github.com/StoDevX/cs251-specs data

  • put a newline-separated list of your students in students.txt

  • cs251tk --help

The script reads from a students.txt file, by default. You can pass the --students argument if you only want to look at some students. It usually takes a space-separated list of students, but if given a -, it will also read from stdin until it hits an EOF.

The script also takes a --record parameter. Record does several things:

  • given a folder name, it cd’s into that folder for each student

  • it cats the contents of each cpp file within the folder

  • it tries to compile each .cpp file, and records any warnings and errors

  • it runs each file, and records the output. It can also pass input to stdin during the execution

  • These are controlled by the homework specs in the specs folder

--record’s logs are spit out in the logs folder in the current directory.

update.py --help:

usage: update.py [-h] [--students USERNAME [USERNAME ...]]
                 [--section SECTION [SECTION ...]] [--all] [--quiet]
                 [--no-progress] [--workers N] [--sort {name,count}] [--clean]
                 [--no-update] [--day {sun,mon,tues,wed,thurs,fri,sat}]
                 [--date YYYY-MM-DD] [--no-check] [--record HW [HW ...]]

The core of the CS251 toolkit

optional arguments:
  -h, --help            show this help message and exit

student-selection arguments:
  --students USERNAME [USERNAME ...]
                        Only iterate over these students.
  --section SECTION [SECTION ...]
                        Only check these sections: my, all, a, b, etc
  --all                 Shorthand for '--section all'

optional arguments:
  --quiet, -q           Don't show the table
  --no-progress         Hide the progress bar
  --workers N, -w N     The number of operations to perform in parallel
  --sort {name,count}   Sort the students table

student-folder arguments:
  --clean               Remove student folders and re-clone them
  --no-update, -n       Do not update the student folders when checking

time-based arguments:
  --day {sun,mon,tues,wed,thurs,fri,sat}
                        Check out submissions as of 5pm on WEEKDAY
  --date YYYY-MM-DD     Check out submissions as of 5pm on DATE

grading arguments:
  --no-check, -c        Do not check for unmerged branches
  --record HW [HW ...]  Record information on student submissions. Requires a
                        spec file

Contributing

  • git clone <this_repo>

  • cd cs251-toolkit

  • pyvenv ./venv

  • source ./venv/bin/activate

  • python3 setup.py develop

  • go to your cs251 folder that contains the data/ and students/ folders

  • run cs251tk; it’ll be the development version.

  • run deactivate to leave the venv.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cs251tk-2.0.0.tar.gz (15.6 kB view hashes)

Uploaded Source

Built Distribution

cs251tk-2.0.0-py3.5.egg (47.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page