Mobile Apps and Frameworks

Sofia

Sofia, the Simplified Open Framework for Innovative Android Applications, is a set of Android libraries and components that provide better abstractions and patterns for creating Android apps. Sofia makes developing these apps much more approachable for novice programmers at the CS1 and CS2 level, but advanced developers can take advantage of the framework to more rapidly develop their own apps without sacrificing power or flexibility.

Sofia is not a single framework, but rather a collection of libraries in the spirit of Apache Commons. It currently includes a core library that provides the base functionality; a graphics library for 2D graphics, interaction, and collision detection; a maps library to support Google Maps and GPS; and MicroSofia, a micro-worlds framework that allows students to write Greenfoot- and Jeroo-style apps on the Android platform.

Sofia is open-source and available on our Github site.

Web Applications

Web-CAT

Web-CAT is an advanced automated grading system that can grade students on how well they test their own code. 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.

Web-CAT is an open-source project written using Java and Apple WebObjects. The project home page can be found at web-cat.org, and you can view the source repository on our Sourceforge site.

Pythy

Pythy 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.

Pythy is an open-source project written using Ruby on Rails. The project's web site is located at pythy.cs.vt.edu, or you can go directly to our Github site.

IDE Plug-ins and Support

Consignment

Consignment is a plug-in for Eclipse that eases for students the task of importing projects for their assignments and then packaging and submitting them to an automated grading system or drop box.

Instructors can post partial Eclipse projects for students to download that represent starting points for labs and programming projects, or complete projects that act as examples or demonstrations for students to use as reference.

In addition to importing assignments, Consignment can automatically archive a project and submit it to an electronic or automated grader, such as Web-CAT or any other system that supports uploading via HTTP, FTP, or e-mail. If the system generates a response, such as a feedback page indicating a score, then that will be displayed automatically as well.

Consignment is open-source and is available on our Github site.

Electronic Submitter for NetBeans

The Electronic Submitter for NetBeans is an add-on module that allows students using the NetBeans IDE in their programming classes to automatically package and submit their projects to an electronic drop box or automated grader like Web-CAT.

The Electronic Submitter for NetBeans is open-source and is available on our Github site.

CxxTest for Eclipse

These plug-ins extend the Eclipse C Development Tools (CDT) so that students can create C++ projects that include the CxxTest unit testing library. These plug-ins automatically generate the test runner file and display the results of the test run in a view inspired by the JUnit view already in Eclipse. The Dereferee diagnostic pointer library is also included.

CxxTest for Eclipse is open-source and is available on our Github site.

Other Projects

Dereferee

Dereferee is a diagnostic pointer library for C++. Rather than most smart pointer libraries that take over the responsibility of managing dynamic memory, Dereferee merely tracks usage of pointers and heap memory and outputs diagnostic messages when those pointers or blocks are misused (for example, by dereferencing a null or dangling pointers). Dereferee is also integrated with CxxTest, a C++ unit testing framework, to provide intelligent signal handling and other crash protection in the test runner.

Dereferee is open-source and is available on our Github site.

LIFT and RoboLIFT

LIFT was written to make GUI unit testing quick and easy. It was written with introductory programming students in mind, but can be used by anyone using Java and Swing to create graphical user interfaces. LIFT does three main things for the programmer: provides a simple, type safe way to retrieve GUI object references, provides a simple means of simulating mouse and keyboard interactions, and transparently deals with thread synchronization issues inherent to GUI programming.

RoboLIFT is a "port" that provides a LIFT-like API on top of the built-in GUI testing and instrumentation features on the Android platform.

LIFT and RoboLIFT are open-source and are available on our Github site.