Main Page
From CodeTurtle
Contents |
What Is It?
Motivation
For the past two years, I've been working as an Adjunct Professor at Villanova University. Most of that time has been spent on what is effectively the second semester programming course. I love the teaching an interacting with students. But it quickly became apparent that grading projects was difficult and time consuming. I'd have to make sure I ran the same tests on each project, awarded the same amount of points per test, and so on. I would much rather spend the time giving feedback to the students about their particular design and code.
In the end, I was just dealing with code, which meant one undeniable truth: there had to be a way to automate it.
Solution
CodeTurtle is a way to automate the grading of student projects. The user writes code to run a series of tests that CodeTurtle runs against each student's submissions (think in terms of a plugin model where the grader code is given to CodeTurtle for it to run). The results of the tests are captured and points are awarded as appropriate. Think in terms of a test framework, except with the ability to assign a points value (and some other data) for each assertion.
That's just the beginning. Once the automated grading is done, CodeTurtle's interface lets the user view a breakdown of what issues the student's project faced, add comments to be given to the student, review the source code, and generate and print reports for each student with a breakdown of how the grade was determined.
Quick Start
It's pretty simple to jump right in and see what CodeTurtle can do. There isn't really an installation process, you just need to download CodeTurtle and a Java environment to run it.
Before You Start
Requirements
- Java 6 JDK
CodeTurtle is written in Java, so the only requirement is that a Java 6 JDK be accessible on the machine. Not sure what that means? That's ok, here's a quick explanation on what it is and how to get it.
Technically speaking, you don't need a Java compiler accessible to run CodeTurtle. But since part of CodeTurtle's features is to compile student projects, it's pretty much better if you do have a compiler.
Downloading
CodeTurtle is open source, using SourceForge to manage the source code repository and downloads. "Official" releases (which is to say I built and ran it at least once) can be downloaded at the CodeTurtle SourceForge project:
http://sourceforge.net/projects/codeturtle/
There's a big ass Download link on that site where you can find the latest and greatest release.
Running
The download is a zip of all of the files necessary to run. After downloading, use your favorite zip program to unzip all of the files. You should see a number of directories, a file named similar to turtle-xyz.jar (where xyz is whatever version you downloaded), a README file, and some others.
The turtle-xyz.jar file is an executable jar, meaning all you really need to do is tell Java to "run" the jar. From a command line, switch to the CodeTurtle root directory and run
java -jar turtle-xyz.jar
Depending on how your system is set up, you might be able to just double-click the jar file. I've never tried it though, so you're on your own.
The first time you run CodeTurtle, it will prompt you to enter the full path of the Java compiler to use when compiling student projects. CodeTurtle will attempt to guess where the compiler is by checking to see if the JAVA_HOME environment variable is set and prepopulate that prompt for you. You really should make sure this points to a valid compiler executable since compiling is pretty key to grading student projects. Plus, it's just damn cool to have CodeTurtle automatically run around grading all of the student submissions for you.
Sample
Since I don't expect users to immediately jump in and write a project grader, there is a sample grader and student submissions included in the zip. These are located in the sample directory and will give you an idea of the kinds of things CodeTurtle can do. Even better, the first time you run CodeTurtle, it will automatically set up a gradebook to load the sample information.
The sample is set up to demonstrate everything from a perfect student submission down to one that doesn't even compile, so don't be surprised when not every project gets a perfect score. It's intentional.
Development
The Quick Start is nice for using a formal release, but cool people will want to download the code and build it themselves. It's good karma.
It's also a little more complicated. Below are the instructions on how you can build your very own CodeTurtle.
Before You Start
Requirements
- Java 6 JDK
- Apache Ant 1.7 or higher (I think 1.6 will work, but I haven't tried it)
- Subversion (to download the source)
- Coffee (just because caffeine rocks)
I'll talk more about what each of these are and where they are used as we go. Except the coffee. If you don't know how to use that, just leave now.
Obtaining the Source
Like I said before, CodeTurtle uses SourceForge to provide a subversion repository for managing the source code. If you know what that means, I'll jump to the important part, the repository location:
https://codeturtle.svn.sourceforge.net/svnroot/codeturtle
In other words, the command to check out the source would be:
svn co https://codeturtle.svn.sourceforge.net/svnroot/codeturtle codeturtle
Confused? Here's a quick overview on source code control and subversion.
Building
Once you have the source, the next step is to build it. This is where ant and the compiler come into play. CodeTurtle uses Apache's Ant build system to compile, run unit tests, build releases, and other stuff like that.
Assuming you have ant and the compiler in your path, building is as simple as opening a command prompt in the directory in which you checked out the source files (codeturtle if you used the subversion command listed above) and running:
ant dist
That's it. That ant target takes care of compiling the source, running the unit tests, and building the turtle-xyz.jar file mentioned in the Quick Start. The specific targets for each step can be viewed by running ant -projecthelp (or just by looking in build.xml if you're really daring).
That command will create a directory named build with a directory inside of that named dist. That's everything you'd have gotten if you downloaded the release from SourceForge and unzipped it.
Gratz! You built your very own CodeTurtle. You can run it according to the directions above, just make sure you execute it from the dist directory.
Dictionary
The following terms are used throughout CodeTurtle.
| Project Grader | A project grader is written by a CodeTurtle user to do the grading of student submissions. A project grader is a directory containing any compiled classes that are used in the grading process. |
| Gradebook | The coupling of a group of student submissions and a specific project grader that will be used to grade them. The gradebook holds on to the grades for that project only; there is currently no overarching way of capturing the grades for multiple projects (in other words, an entire semester's worth of grades). This may also be listed as "grade book" or "GradeBook" because, well, I kept forgetting what I decided on as a standard. |
| Grade Assertion | A specific test, or assertion, done against a student project as part of grading it. An assertion has an associated number of points that are awarded to the student if the project passes the test. |
FAQ
Other random information can be found in the official FAQ.

