This page contains a list of some of my course support tools. I find that creating tools is a rewarding and efficient way to help teaching progress, but I also recognize that not all faculty have the time and energy to create them.

Many of my tools are written in PHP, not because I particularly like PHP but because my school's servers allow me to easily access the official school login (netbadge) through it. If you do not have a system that can readily set $_SERVER['PHP_AUTH_USER'] for you, you'll need to edit the login parts of each of these tools. Searching for "`PHP_AUTH_USER`" should suffice to find all such login locations in te code.

If you are at UVA, you need a server set up with shibolleth and an .htaccess file that looks like

AuthType shibboleth 
ShibRequestSetting requireSession 1 
require valid-user
Code submission system
archimedes is a submission-queuing and grading system, designed for large courses programming Python. As of August 2018, it has a few missing UI features, so you'll need to edit a few files (e.g., meta/assignments.json) manually.
quizzes is an online at-home quiz delivery tool with a fairly advanced markup-based quiz specification language, the ability to leave comments with answers and have them reviewed by staff, and a many-json-file-based pseudo-DB.
kytos is an Docker-based sandboxing system for running student code in mostly-safe time-limited environments. It has no UI; it is intended to be a daemon that supports a separate submission system.
PyPractice is a half-compelted tool for flip-card like practice of introductory python programs. Partially funded by an internal grant from UVA's school of engineering and applied science, it was thus half completed. Usable as is, but probably buggy – I'd not use it for grade-critical parts of a course.
Office Hours
ohq is a vibe.d websocket-based system for handling large queues of TA-help-requests simultaneously. Has a PHP skin. Missing some customization files (some settings are hard-coded), but usable as is.
Linux at UVA
This writeup is a step-by-step guide for using Linux at UVA. I add to it as I notice processes that UVA systems support, but that their documentation fails to properly describe. I welcome questions and recommended additions.
Last updated 2018-08-22