jGRASP: A Simple, Visual, Intuitive Programming Environment for CS1 and CS2
jGRASP IN THE LECTURE
Instructors use jGRASP when giving lectures, taking advantage of
Our relatively large class sizes have influenced our choice of
a variety of features that allow lectures to be dynamic. Consider, for
example, how one might introduce the String type in Java. One op-
tion would be to create a PowerPoint slide with examples of String
usage—although we consider that approach dull. A more hands-on
instructor might write example code in an IDE, but this requires
compiling and executing an entire program. We’ve found the in-
teractions pane to be ideal for introducing topics like the String
type: instructors can type a variable declaration, and then see how
Java evaluates various expressions involving that variable. Figure 1
shows how that might look to a student after the instructor types
in some code. The lecturer might accompany the code in Figure 1
with the following narration: “Now I’m going to declare a String
variable called fruit. Notice how jGRASP lists it as a new variable
defined in this scope. Now I’m going to ask it for the character at
position 0 and it says b. Now I’m going to ask for a substring…”
Furthermore, the jGRASP debugger provides a dynamic rep-
resentation of program execution. Figure 2 demonstrates how a
CS1 instructor can set a breakpoint with the debugger and then
step through the execution of a for loop, watching how local
variables change as the loop executes.
editor. For example, because it is difficult to provide consistent,
individualized editor support for our students, simplicity and
ease of use were of special importance to us.
AN INTRODUCTION TO jGRASP
jGRASP is a lightweight integrated development environment
created and maintained by the Department of Computer Science and Software Engineering at Auburn University [ 8]. Its
target audience is teachers and students, which means its suite
of features was picked with the novice programmer in mind.
The creators of jGRASP have written several papers describing
its features [ 2, 3, 4, 5].
The features that have proven most useful for us are:
• Easy installation across platforms. There are few configu-
• Simplicity. While jGRASP supports standard IDE
features, such as program compilation and execution,
debugging, and syntax highlighting, it is missing certain
advanced features like code autocomplete and version
control integration. We consider the lack of these
advanced features to be an asset, because they don’t
intimidate novice programmers. In addition, although
jGRASP does allow code to be organized into projects,
a source file does not need to be part of a project to be
run. This contrasts with Eclipse, which requires all code
to be part of a project—something we’ve found confuses
ration issues even with thousands of students installing the
program on a wide variety of platforms.
• Interactions pane. jGRASP’s interactive window provides
a REPL for exploring Java code snippets (note that JDK 9’s
JShell, new at the time of this writing, makes this function-
ality available outside of jGRASP).
• Simple debugging. We leverage jGRASP’s debugging tool in
the lecture to step through code, and students can use the
debugger to fix problems in their own code.
• Data structure viewers. jGRASP can display a wide range
of data structures, including arrays, ArrayLists, linked lists,
and binary trees. These visualization capabilities are inte-
grated with jGRASP’s debugger.
Many environments provide some of these features, but
jGRASP packages them into a single tool that exposes a good
level of functionality for novice programmers. The data structure viewers are particularly unique relative to other popular
We were also pleased that we could use a single IDE that
would be appropriate for both CS1 and CS2. We have attempted to minimize any uncertainty and nervousness a CS1
student might experience in considering whether to continue
to CS2, so it has been helpful for students to know that they
will continue to use the same familiar IDE if they continue in
Figure 1: The instructor can use the jGRASP interactions pane, a REPL
interface for Java, to demonstrate String methods in the lecture.