We extended the Course Managements System WeBWorK to automatically grade code fragments and programs written in the Java programming language. We also provided a set of assignments for teaching basic computer science courses. The system is designed to assist in introducing programming to beginning students; instructors are able to ask for anything from a single line to a whole Java program. The evaluator checks for syntactic and semantic correctness and the students receive immediate feedback on the correctness of their submission. Students do not need to install any new software or learn a new development environment. The problems consist of three pieces: a description, a template file written in Java and a set of unit tests to determine the level of correctness of the submitted code. When code is submitted, it is inserted into the template, compiled and tested using unit tests. The results are displayed, explaining which tests failed and why. Since submitting code to a server has many security issues, the system also utilizes several built in protections to keep arbitrary code from being executed. The Java .policy framework is used to limit what the submitted code is allowed to do, as well as limit i/o access. CPU and memory limits and standard Perl security are also implemented.
Jacqueline Baldwin, ’07 New Brighton, MN
Major: Computer Science
David Baur, ’09 Boulder, CO
Majors: Computer Science, Mathematics
Sponsor: Andrew Wildenberg