I’ve developed a Java library for my CS1 course
that SIGCSE members may be interested in using
for assignments. It includes:
– An implementation of Karel the Robot that is
more full-featured than most. We use it to get
students started in using objects, extending
classes, stepwise refinement, practise
with control structures, and to help understand
– A set of simplified input and output classes. One
novel feature are methods such as intIsAvailable().
Such methods allow students to write robust code with
– A number of user interfaces, each accompanied by a
Java interface. Students write a class to implement
the interface and pass an instance to the UI. The
result is a complete and satisfying program.
- A combination lock: students write a class to determine when
the lock is locked or unlocked. It only unlocks if the correct
combination is passed as parameters. Students practice instance
variables and parameters.
- An AM/FM radio: Students write a “tuner” class. It remembers the
current frequency, tunes up or down, seeks up or down, and has
presets. Students practice with instance variables, looping,
- A equation grapher: Students write a class implementing an eval
function. The provided user interface displays the corresponding
graph. Three different Java interfaces allow practice with only
parameters, parameters and instance variables (for the coefficients)
or parameters and arrays (arbitrary degree polynomials).
- An image transformation program: Students write a class to
transform an image stored as a 2D array of integers. The provided user
interface reads the image from a file and calls the appropriate
transformation methods in the student class. Transformations can
include rotating, scaling, brighten, flip, mirror, etc. I believe a
similar assignment was included in the SIGCSE 2003 Nifty Assignments
- A marks “spreadsheet”: gives students practise with both 1D and 2D
arrays. The 1D arrays store student and assignment names. The 2D array
stores the marks.
The library is available for download at
Click on the Software link to see demos and download the
library. It requires Java 1.3.1 or greater.
If you end up using it in one of your courses, I’d appreciate
hearing about it!
E-Mail from Byron Weber Becker