DrJava PapersThe JavaPLT group has published several papers on DrJava, which are listed below. DrJava: A lightweight pedagogic environment for JavaEric Allen, Robert Cartwright, and Brian Stoler
Abstract: DrJava is a pedagogic programming environment for Java that enables students to focus on designing programs, rather than learning how to use the environment. The environment provides a simple interface based on a "read-eval-print loop" that enables a programmer to develop, test, and debug Java programs in an interactive, incremental fashion. This paper gives an overview of DrJava including its pedagogic rationale, functionality, and implementation. View full paper as: (.html) (.ps) (.pdf) A Framework for Building Pedagogic Java Programming EnvironmentsBrian Stoler
Abstract:
Java has become the dominant language for teaching introductory computer
science at both the high school and college levels. Yet Java's
development tools and syntax often distract beginning students from the
programming concepts being taught. To combat this problem, we have
implemented DrJava, a pedagogic programming environment, and devised a
sequence of language levels for Java, which partition the
language into pieces that can be more easily taught at one time. View full paper as: (.pdf) Production Programming in the ClassroomEric Allen, Robert Cartwright, and Charles Reis
Abstract:
Students in programming courses generally write "toy"
programs, even when the size of the assigned projects is large.
Programming assignments are written, superficially tested, graded, and
then discarded. This approach to programming pedagogy leaves students
unprepared for production programming in the workplace because the gap
between writing toy programs and developing reliable software projects
is enormous. View full paper as: (.pdf) A Pedagogic Programming Environment for Java that Scales to Production ProgrammingCharles Reis
Abstract: This thesis describes extensions to the DrJava development environment that make it suitable for production programming. DrJava is an effective tool for teaching introductory programming skills in Java, and its simplicity is a desirable characteristic for projects of any size. To better support the development of large projects in DrJava, a carefully selected suite of features has been added to the environment. To facilitate interoperation with professional development environments, a plug-in supporting the DrJava interface has been written for the Eclipse environment. As a result of this work, DrJava has become an appropriate tool for teaching production programming skills in an academic environment, without sacrificing its original goals. View full paper as: (.pdf) Taming a Professional IDE for the ClassroomCharles Reis and Robert Cartwright
Abstract:
An important question that must be addressed in a coherent
computing curriculum is which programming environments
to use across the curriculum. For Java, currently
the most widely used language in computing education, a
wide variety of professional integrated development environments
(IDEs) are available--including the increasingly popular,
open-source Eclipse environment. Professional IDEs
for Java work well in advanced courses, but they are poorly
matched to introductory courses because they deluge beginning
students with a complex array of features. In addition,
professional IDEs fail to shield students from distracting
complications like the Java command line interface and
Java console I/O. For this reason, many educators favor using
a "pedagogic" IDE such as BlueJ or DrJava to provide a
gentle introduction to the mechanics of Java programming. View full paper as: (.pdf) Design Patterns For Marine Biology SimulationDung "Zung" Nguyen, Mathias Ricken, and Stephen Wong
Abstract:
We specify and implement a GUI application that simulates marine biological systems by
making extensive use of object-oriented design patterns. View full paper as: (.pdf) Taming Java for the ClassroomJames I. Hsia, Elspeth Simpson, Daniel Smith, and Robert Cartwright
Abstract: Java is the canonical language for teaching introductory programming, but its complex syntax and abundance of constructs are difficult for beginners to learn. This paper shows how object-oriented programming in Java can be made more accessible to beginners through the use of "language levels", a hierarchy of progressively richer subsets of Java. This hierarchy is implemented as an extension of the DrJava pedagogic programming environment. View full paper as: (.pdf) Design Patterns for ParsingDung "Zung" Nguyen, Mathias Ricken, and Stephen Wong
Abstract: We provide a systematic transformation of an LL(1) grammar to an object model that consists of
We present a variant form of the visitor pattern and apply it to the above union of token classes to model a predictive recursive descent parser on the given grammar. Parsing a non-terminal is represented by a visitor to the tokens. For non-terminals that have more than one production rule, the corresponding visitors are chained together according to the chain of responsibility pattern in order to be processed correctly by a valid token. The abstract factory pattern, where each concrete factory corresponds to a nonterminal symbol, is used to manufacture appropriate parsing visitors. Our object-oriented formulation for predictive recursive descent parsing eliminates the traditional construction of the predictive parsing table and yields a parser that is declarative and has minimal conditionals. It not only serves to teach standard techniques in parsing but also as a non-trivial exercise of object modeling for objects-first introductory courses. View full paper as: (.pdf) A Framework for Testing Concurrent ProgramsMathias Ricken
Abstract:
Incremental, test-driven development is sweeping the software industry, elevating testing from an ancillary activity to an integral part of the programming process. Unfortunately, in our recent experience developing production programs in Java, unit testing has only proven effective in assuring the reliability of code with a single thread of control; it is much less effective in concurrent programs.
View full thesis as: (.pdf) ConcJUnit: Unit Testing for Concurrent ProgramsMathias Ricken and Robert Cartwright
Abstract: In test-driven development, tests are written for each program unit before the code is written, ensuring that the code has a comprehensive unit testing harness. Unfortunately, unit testing is much less effective for concurrent programs than for conventional sequential programs, partly because extant unit testing frameworks provide little help in addressing the challenges of testing concurrent code. In this paper, we present ConcJUnit, an extension of the popular unit testing framework JUnit that simplifies the task of writing tests for concurrent programs by handling uncaught exceptions and failed assertions in all threads, and by detecting child threads that were not forced to terminate before the main thread ends. View full paper as: (.pdf) Test-First Java Concurrency for the ClassroomMathias Ricken and Robert Cartwright
Abstract: Concurrent programming is becoming more important due to the availability of multi-core processors and the prevalence of graphical user interfaces (GUIs). To adequately prepare students for the concurrent future, instructors have begun to address concurrency even in introductory courses. Unfortunately, practices like test-driven development that give students a safe footing in single-threaded environments do not extend well into the concurrent domain. This paper describes how ConcJUnit can simplify writing unit tests for multi-threaded programs, and provides examples that can be used to introduce students to concurrent programming. View full paper as: (.pdf) DrJava has been partially funded by the National Science Foundation, the Texas Advanced Technology Program, and Sun Microsystems, Inc. |