The Web-CAT Cookbook


The Web-CAT Cookbook shows how to use Web-CAT as an automated grading tool. It is intended to be a living, community-maintained document where people can come to learn (and teach others) how to set up and run programming assignments using Web-CAT. Common scenarios and problem solutions in using Web-CAT are documented in the form of short use case “recipes”.

A secondary aim of the Cookbook is to further the adoption of Web-CAT. To that end we want to allow the possibility of a publishable book. The Contributor Agreement statement for this book is the most important consideration for publication. It is designed to allow free access to the content of the Cookbook while protecting the investmest a publisher may make in a compilation of material from the Cookbook. If you are going to contribute to the Cookbook you must agree to the Contributor Agreement statement.

This cookbook is written in the form of a website hosted on GitHub Pages. To ask questions or make comments on any page, use the comment box at the bottom of that page. To add new pages, write your own recipes, or contribute other content, please fork the repository, add your page(s) and link them in, and create a pull request. For major concerns, such as suggesting revisions to the overall site navigation, open an issue on GitHub.

Given the current lack of practical documentation on how to write “testable” programming assignments, and lack of documentation on pedagogical strategies for using automated graders for feedback and learning, we also aim for the Cookbook to cover these areas as well.

The Cookbook is a living, collaborative, community-maintained document and contributions are actively sought from all users of Web-CAT. See the Author Guide at the bottom of this page for instructions on how you can contribute. It’s structure (and Author Guide) are based on the Schematics Cookbook, a wiki-based documentation project. This basic organization has been reused under the terms of the LGPL, which also governs community contributions to the Web-CAT Cookbook.

Look for the :movie_camera: in the recipes below if you want a quick video tour of what Web-CAT is like, starting with the Submission Walkthrough (24Mb, 5min). Pages marked with :warning: do not exist yet–so contribute!

Basic Concepts

Recipes for Students

Recipes for Graders

Recipes for Instructors

Self-paced On-line Training Materials

  • SIGCSE 2009 Workshop: Automatically Grading Programming Assignments with Web-CAT

    The workshop page contains electronic copies of the workshop materials in a form that you can try on your own, either on your own Web-CAT server, or with a guest account on the server at Virginia Tech. The workshop’s hands-on materials include:

    • Preliminaries: Setting up your environment

      Before you try the hands-on exercises, be sure you have Eclipse installed. Web-CAT does not require Eclipse, but the hands-on exercises here are written for that IDE to simplify the instructions. The preliminary setup instructions also explain how to install our submission plug-in for eclipse.

    • Exercise 1: Creating JUnit Test Cases with Eclipse

      This exercise will give you a bit of practice writing simple test cases with JUnit, if you have not already used that testing framework. It also explains how to run those tests within Eclipse and interpret the results.

    • Exercise 2: Setting up your first assignment

      The second exercise walks you through the following activities:

      • Creating your first course offering
      • Uploading your course roster as a CSV file
      • Creating your first assignment
      • Submitting a sample solution to try out your assignment

      More resources for various practice assignments are also available under Try Out Web Cat/Usage Instructions.

    • Exercise 3: Changing assignment grading options

      The third exercise is all about customizing the behavior of grading plug-ins, using the JavaTddPlugin as an example. It walks you through the following activities:

      • Configuring an assignment without test cases
      • Modifying an assignment so students are not required to write tests
      • Changing code coverage requirements
      • Providing “hints” to students when instructor tests fail
      • Hand-grading key parts of students submissions
    • Exercise 4: Configuring coding style checks

      The fourth exercise walks you through the following activities:

      • Adding instructor-provided data files to an assignment
      • Regrading student submissions when they need to be reprocessed
      • A brief overview of how static analysis works
      • How to provide custom PMD checks (including turning them off)
      • How to provide custom Checkstyle checks (including turning them off)

Bite-sized Recipes for Instructors

Configuring the Java TDD Grading Plug-in

Configuring the C++ TDD Grading Plug-in

Configuring the C++ Stdio Grading Plug-in

Configuring the Pascal Compiler Plug-in

Configuring the Text TDD Plug-in

Configuring the Generic TDD Feedback Plug-in

Configuring the Output Comparison Plug-in

Recipes for Administrators

Information for Developers

Recipes for Plug-in Writers

Web-CAT Internals

Teaching Strategies

Writing Testable Assignments

  • recipes on the way

Using Web-CAT to Improve Learning

  • recipes on the way

Author Guide

Requested Recipes

  • Add your requests for new recipes here