Dynamic memory management and the use of pointers are critical topics in teaching the C++ language. They are also some of the most difficult for students to grasp properly. The responsibility of ensuring that students understand these concepts does not end with the instructor’s lectures—a library enhanced with diagnostics beyond those provided by the language’s run-time system itself is a useful tool for giving students more detailed information when their code fails.

Read more


The Library for Interface Testing (LIFT) supports writing unit tests for Java applications with graphical user interfaces (GUIs). Current frameworks for GUI testing provide the necessary tools, but are complicated and difficult to use for beginners, often requiring a significant amount of time to learn. LIFT takes the approach that unit testing GUIs should be no different than testing any other type of code. By providing a set of frequently used filters for identifying GUI components and a set of operations for acting on those components, LIFT lets programmers quickly and easily test their GUI applications.

Read more


Pythy: The Cloud-Based IDE for Novice Python Programmers is a web-based programming environment for Python that eliminates software-related barriers to entry for novice programmers, such as installing the language runtime and IDE and properly configuring other dependencies. Within seconds, students can begin writing code, watch it execute, debug it, and access support materials and tutorials, all from within the familiar context of their web browser.

Read more


Mobile application development in general, and the Android platform in particular, are hot topics among educators because of their power to motivate and engage students. Unfortunately, Android’s software API is not designed for beginners and presents a number of stumbling blocks to classroom use. Sofia, the Simple Open Framework for Inventive Android Applications, is a new abstraction layer over the Android API that provides a cleaner, simpler, easier to use API for beginners and professionals alike. It includes a novel event dispatch design that eliminates the glue code required by more conventional frameworks, provides a powerful 2D shape package with declarative animation support and physics simulation, streamlines the process of writing multi-activity apps for Android, and addresses a number of other issues that make Android hard to use in introductory courses.

Read more


Web-CAT is an advanced automated grading system that can grade students on how well they test their own code. It is free, open-source software. It is highly customizable and extensible, and supports virtually any model of program grading, assessment, and feedback generation. Web-CAT is implemented as a web application with a plug-in-style architecture so that it also can serve as a platform for providing additional student support services to help students learn programming or software testing. Some of its key features:

  • Customizable and extensible
  • Plug-in-style architecture
  • Supports student-written tests, measurement of test coverage, and grading on test thoroughness
  • Supports static analysis tools to assess documentation and coding style
  • Supports manual grading with direct on-line markup of assignments

This is the on-line home for users and developers of Web-CAT. Ask questions, get support, contribute to development, and get involved!

You can find out more through the following pages:

Read more


Our publications list will go here, once we figure out how to make it more useful across the entire site.

Read more

Additional Resources

This page will contain links to a variety of additional information sources and resources that do not fit under “Projects”.

Read more