Helpful Tools

I have found the following tools very helpful. Some I have created, but all are free for UVA instructors. Most are free to everyone.

Course Management

  • Collab, UVA’s course management system
    • handles annoucement emails, posting and submission of assignments, and gradebook maintenance
    • has the ability to provide discussion boards, quizzes, and more
  • Github repositories for shared websites
    • to handle shared editing and posting of the course website, including lecture notes, schedule, and contact information
    • can be integrated into Collab via an iFrame
  • Dropbox
    • for sharing lecture content
  • Github repository
    • sharing course content privately with other instructors
    • works well for code-based and text-based assignments, avoids conflicts from Dropbox


  • Piazza
    • a discussion board system for students and course staff to interact, usually for quick homework and course questions
    • has the ability to provide more course management (except grades)
  • Slack
    • communication among course staff
    • has the ability to facilitate student discussion
  • Discord
    • communication among students, course staff,
    • has the ability to facilitate student discussion
    • more fine-grained controls than Slack
    • the ability to share screen and join voice chats


  • Online coding exam tool
    • A tool I created to handle syntax-highlighted online exams
    • compatible with UVA’s Collab interface
    • provides support for TAs to grade questions individually at random
  • TPEGS, a UVA paper-exam grading software
    • to grade paper in-class exams and content
  • A PDF grading software I developed to handle dividing the grading between TAs more easily than using Collab’s native interface
    • A plagiarism detection tool capable of testing .tex, .java, and .py submissions

Video Production

  • Panopto, UVA’s vendor for online videos
    • houses lecture videos, which we have recorded live every class session
  • OBS - Open Broadcaster Studio
  • Pitivi - Open-source video editing


Taking CS4102 Algorithms Online

We have taught Algorithms pretty consistently over the past few years, adjusting the model to scale. The course relies heavily on and encourages student collaboration on homework assignments to better understand concepts and derive algorithms for new problems. The current version of the course focuses more heavily on describing algorithms and proving their runtime and correctness rather than their implementation or algorithms by example. To that end, the course has 10 homeworks, 7 type-written using LaTeX and 3 coding assignments. The written assignments require describing multiple algorithms (in English or pseudocode) and proving their runtime and correctness. The coding assignments require students to define, implement, and test their algorithms in either Java or Python, but we do not provide an autograding system or integrated testing environment. Our goal has been to entice students to design before implementation and to avoid a trial-and-error approach.