Jeroo. A Gentle Introduction to Object Oriented Programming. Submitted to:

Jeroo A Gentle Introduction to Object Oriented Programming Submitted to: Premier Courseware of 2004 The National Engineering Education Delivery Syst...
1 downloads 4 Views 1MB Size
Jeroo A Gentle Introduction to Object Oriented Programming

Submitted to:

Premier Courseware of 2004 The National Engineering Education Delivery System

Jeroo: A Gentle Introduction to Object-Oriented Programming Brian Dorn 225 Atanasoff Hall Department of Computer Science Iowa State University Ames, IA 50011 515-291-2032 [email protected]

Dean Sanders, Ph.D. Department of Computer Science and Information Systems Northwest Missouri State University Maryville, MO 64468 660-562-1932 [email protected]

Jeroo is a standalone software package designed to introduce students to the basics of objectoriented programming. It provides an engaging integrated development environment that consists of code editing facilities, execution mechanisms, and program animation tools. The rich execution environment illustrates the semantics of fundamental control structures, clarifies the basic notions of using objects to solve problems, and reinforces the use of methods. The tool provides two programming languages specifically designed to ease the transition to any of the following four general-purpose languages: Java, C++, C#, and VisualBasic.NET. This software has been added to the NEEDS online database. It can also be downloaded directly from the Jeroo website at: http://www.jeroo.org. The most recent version of the software (Jeroo 2.2) is provided as a 300 kilobyte zip archive. The program itself is a Java jar file and requires the Java Runtime Environment version 1.4 or greater to be already installed. Brian Dorn and Dean Sanders are the sole developers of the Jeroo software and are authorized to submit it to the 2004 NEEDS Premier competition. The Jeroo copyright has been maintained by Dorn and Sanders since 2002. Since that time Jeroo has been distributed as freeware on the developers’ websites. Both Brian Dorn and Dean Sanders authorize the National Engineering Education Delivery System to become a non-exclusive distributor of Jeroo.

Brian Dorn Jeroo Co-Developer Graduate Student, Computer Science Iowa State University

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Dean and Department Chair Contact Information by Author Brian Dorn, Iowa State University Dr. Michael Whiteford Dean, College of Liberal Arts and Sciences 229 Catt Hall Iowa State University Ames, IA 50011 515-294-4729 [email protected] Dr. Carl Chang Chair, Department of Computer Science 226 Atanasoff Hall Iowa State University Ames, IA 50011 515-294-6516 [email protected]

Dean Sanders, Northwest Missouri State University Dr. Tom Billesbach Dean, Melvin and Valorie Booth College of Business and Professional Studies Northwest Missouri State University 267 Administration Building Maryville, MO 64468 660-562-1277 [email protected] Dr. Phillip Heeler Chair, Department of Computer Science/Information Systems 2260 Colden Hall Northwest Missouri State University Maryville, MO 64468 660-562-1200 [email protected]

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Page 1 of 10

Introduction Computer programming has always been difficult to teach. The students must master abstract concepts and a myriad of details. Object-oriented techniques have made the first course even more intimidating. The teaching difficulty is exacerbated by a mismatch between the students’ expectations and the reality of many courses. The students live in a world of multimedia and graphical user interfaces, but many textbooks, examples, and ancillary materials are rooted in text-based interactions. What can we do to help students master fundamental concepts of object-oriented programming, to capture their interest, and to reduce their anxiety about computer programming? Jeroo gives us a partial answer. Jeroo is an integrated development environment and microworld that was designed to help novice programmers learn fundamental concepts of object-oriented programming. Specifically, Jeroo focuses on objects, methods, and fundamental control structures. The tool is a self-contained environment in which students write and execute programs to control the actions of Jeroos and their interactions with their environment. Simple animation and code highlighting aid comprehension. Jeroo evolved from pencil-and-paper activities in the early 1980’s to a Pascal-like tool named Jessica to the current object-oriented tool with its graphical user interface. Comments and suggestions from many students and instructors helped give Jeroo its current form. Currently, Jeroo is being used at three different levels: beginning programming courses, computer literacy courses, and high school courses. Objective data show that the use of Jeroo levels the playing field between males and females with respect to confidence and comfort levels in a beginning programming course. Other data show reduced withdrawal rates in courses that use Jeroo. Observations and anecdotes indicate that using Jeroo helps maintain student interest and helps encourage experimentation among both novice and experienced programmers. Examples of assignments and classroom activities are included in appendix E.

Target audience Jeroo was originally designed to be a supplemental teaching tool in introductory programming courses at the post-secondary level, but various institutions have adopted Jeroo for use in other contexts. As a result, Jeroo has evolved to serve a broader audience that was originally envisioned. Jeroo is being used at four different levels: • universities (e.g. Northwest Missouri State University) • colleges (e.g. Millsaps College) • high schools (e.g. Brentwood School, Los Angeles) • summer computing camps for pre-college students (e.g. University of Cincinnati) Jeroo is being used in three primary ways: • to introduce concepts in programming courses that feature another language • as the sole language in “programming readiness” courses • in computer literacy courses Jeroo was originally intended to supplement introductory programming courses that focus on Java, C++, or C#. A VisualBasic.NET-style language was added in response to requests from information systems instructors. Currently, Jeroo is being used in both computer science and information systems curricula.

Goals for Jeroo Four goals provided an overall context for developing the Jeroo software: • engage students immediately • generate confidence in students • improve comprehension of specific topics • develop crucial programming skills

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Page 2 of 10

Three aspects of Jeroo help to engage students early: the metaphor, the design of the user interface, and the animated execution of programs. The animated execution gives Jeroo a feel reminiscent of a video game. Confidence is built through the anthropomorphic nature of the Jeroo objects, the immediate feedback given by the animation and simultaneous code highlighting, and the ability to run programs stepwise or continuously at different speeds. These three features combine to give the students a strong visual confirmation when a problem has been solved, an ability to detect errors quickly, and a feeling of control over their use of Jeroo. Jeroo is not intended to replace a general-purpose programming language. Instead, its scope is narrow, focusing on five specific topics: instantiating and using objects, sending messages to objects, writing methods to extend the behavior of objects, using selection and repetition structures, and writing Boolean expressions. The narrow and sharply focused scope allows students to master these concepts without the distraction of additional language features. Finally, Jeroo was designed to help students develop crucial programming skills such as problem decomposition, solution composition, incremental development, and the design of test cases. Jeroo’s anthropomorphic nature provides a strong frame of reference for decomposing problems and composing solutions. The visual feedback from a running program together with the ease of switching between coding and executing encourages incremental development. The visual nature of Jeroo makes it easier for the students to learn the principles of software testing. Has Jeroo met these goals? Our classroom experiences, as well as those reported by others, indicate that each of these goals has, indeed, been met.

Description of the Software Written in Java, the Jeroo software has been tested under Linux, Solaris, Mac OS-X and most versions of Windows from Windows 95 onward. The complete application is distributed as a Java jar file that requires approximately 400Kb of disk space. There are four significant aspects to the Jeroo software: the metaphor, the programming languages, the user interface, and the runtime behavior. These work together to create an effective teaching/learning environment. The Metaphor A Jeroo is a rare kangaroo-like animal living on Santong Island, a remote speck of land in the South Pacific. Jeroos have an unusual way of moving about their island: they can only hop in the four main compass directions. The island is also home to the large Winsum flowers that constitute the primary food source for the Jeroos. A Jeroo can pick flowers, carry them, plant them, and give them to an adjacent Jeroo. The Jeroos must be on the lookout for nets that have been set by a trapper who is seeking new specimens for a zoo. Fortunately, the Jeroos can detect nearby nets and can disable them by tossing flowers. Frequent rainstorms and erratic tides can produce inland bodies of water and even alter the island’s coastline. Despite living on the island for untold millennia, the Jeroos are poor swimmers and must avoid the ocean and inland bodies of water. The metaphor changed dramatically as Jeroo evolved from its origins in the early 1980’s. Positive and negative comments from students helped define the current non-technical, non-violent metaphor–a metaphor that is comfortable and easy to learn. All students react well to this metaphor. The Programming Languages Students write programs to control the movements of up to four Jeroos and their interactions with their immediate surroundings. Jeroo supports two different language styles, a Java/C++/C# style and a VisualBasic.NET style. Students can specify a preferred style for new programs, and change the style for a specific program. The syntax of the Java/C++/C# style language mirrors the common syntax of those languages. The only difference is that a generic header is used for methods in the Jeroo language. Jeroo’s VisualBasic.NET style language is a faithful subset of VisualBasic.NET. This syntax allows a teacher to say, “The Jeroo language is really a subset of Java (or C++ or C# or VisualBasic.NET)”, thereby avoiding the question “Why are we studying Jeroo instead of a ‘real’ programming language?” Only one class is available within the language–the Jeroo class. Each Jeroo object has three attributes: its location, its direction, and the number of flowers in its pouch. These attributes, which define the state of a Jeroo, are

Jeroo: A Gentle Introduction to OOP Page 3 of 10

Brian Dorn and Dean Sanders

always visible in the user interface. The Jeroo class has six constructors that allow a programmer to override default values for the attributes. These constructors provide a gentle introduction to the use of arguments and the concept of overloading. There are no data types and no variables other than references to Jeroo objects. There are, however, eight predefined constants to indicate relative and absolute directions. These constants are used as arguments to predefined methods. The Jeroo class has twelve predefined methods: six sensor (or Boolean) methods and six action methods. The sensor methods allow a Jeroo to inspect its immediate surroundings: checking for the presence of flowers, nets, water, or other Jeroos; determining its current direction; and determining whether or not it has any flowers in its pouch. The action methods allow the Jeroos to move about the island, change direction, pick and plant flowers, give flowers to one another, and disable nets by tossing flowers onto them. A programmer can define additional action methods to extend the behavior of the Jeroos. The programmer-defined methods lack formal parameters, but they can invoke other methods and they can be recursive. The ability to write additional methods is an effective way to introduce modularity. The Jeroo language supports three fundamental control structures: while, if, and if-else. The conditions for these structures are constructed from one or more sensor (Boolean) methods and the logical operators &&, ||, and ! (AND, OR, and NOT in VisualBasic.NET). Figures 1 and 2 below show the same small Jeroo program in both language styles.

//User Methods method turnAround() { turn(RIGHT); turn(RIGHT); } //Main Method method main() { Jeroo kim = new Jeroo(0,5); while (! kim.isWater(AHEAD)) kim.hop(); kim.turnAround(); }

Figure 1 A Java-Style Program

‘User Methods Sub turnAround() turn(RIGHT) turn(RIGHT) End Sub ‘Main Method Sub main() Dim kim as Jeroo = new Jeroo(0,5) While (NOT kim.isWater(AHEAD)) kim.hop() End While Kim.turnAround() End Sub

Figure 2 A VisualBasic-Style Program

The User Interface The user interface consists of a single window in which all components are visible at all times, making it easier to associate a program with its execution. Menus and a toolbar provide a familiar interface that the students can use with virtually no instruction. All features of Jeroo are accessible via menus; all except those that require a subsequent mouse action are available via the keyboard; and the most commonly used ones are accessible through a toolbar. The buttons on the toolbar are organized into logical groups, and the corresponding menus are positioned so as to serve as labels for the button groups. Figure 3 shows the appearance of the user interface for a running program.

Jeroo: A Gentle Introduction to OOP Page 4 of 10

Brian Dorn and Dean Sanders

B

A

C

D Figure 3 Jeroo’s User Interface

The left-hand portion of the window (A) consists of two tabbed panes for editing the source code. One tab is used for a main method in which Jeroos are instantiated and used at a high level to solve a specific problem. The other tab, marked “Jeroo methods,” is used to create programmer-defined methods that extend the behavior of all Jeroos. The source code editor supports common editing features such as cut, copy, paste, undo, and redo. The editor also supports block commenting, block indenting, optional autoindent, and the ability to change the size and style of the editor’s font. A language style box appears immediately below the source code editing panes. This box shows the current language style, and allows the programmer to switch to a different style for the current program. The right-hand portion of the window (B) is a graphical representation of Santong Island. Using a point-andclick process, students can alter the shape of the island and can place flowers, nets, and water features on the island. This area also displays a simple animation of a running program. A cursor location panel appears immediately below the island. This panel keeps track of the location of the cursor when it’s over the island, thereby making it easier to locate specific cells on the island. The interface also includes two status panels. The message area (C) displays status messages, syntax error messages during compilation, and errors that occur at runtime. When each error message is displayed, the interface also highlights the corresponding line of code so that errors can be located easily. Keeping the novice programmers in mind, great care was taken to make the error messages as informative as possible. Typical messages are shown in table 1 for a Jeroo named Fred.

Jeroo: A Gentle Introduction to OOP Page 5 of 10

Brian Dorn and Dean Sanders

Intended Code Fred.hop(); Fred.turn(LEFT); //Fred avoids a net

Table 1 Typical Error Messages Actual Code Message Freed.hop(); SYNTAX ERROR: Unknown identifier “Freed” Check spelling and capitalization. Fred.turn(LEFR); SYNTAX ERROR: Relative direction expected Found “LEFR” instead. //Fred hops into net LOGIC ERROR: “Fred” is trapped in a net

During program execution, the Jeroo status panel (D) is continually updated to display the state of each Jeroo in the program. Beyond identifier names, this panel displays the direction of motion and number of flowers carried by each Jeroo. The third part of the Jeroo’s state, its location, can be determined by viewing the island. In the event of a runtime error, this panel shows the state of every Jeroo just prior to the error. The “Help” menu includes a context sensitive language reference that explains the grammars of each language. The current language style is used to access the appropriate help files so that students are only presented with information that is pertinent to their program. These files are displayed in a separate window, allowing students to view references and source code side-by-side. The Runtime Behavior The environment comes alive when the runtime module is invoked using one of the “Run” buttons. First, the language translation (compiler) sub-system examines the source code and reports any syntax violations with custom tailored error messages. Once all syntax errors have been eliminated from the program, the visual execution sub-system generates a simple animation with simultaneous code highlighting that allows a student to visualize the connection between source code and the program’s behavior. Students can change speeds or switch back and forth between stepwise and continuous execution while a program is running. As discussed earlier, the Jeroo status panel (region D in figure 3) shows the current state of every Jeroo. Source code highlighting, animation, and status information create a rich learning environment. The user interface and animation are not only intuitive but also visually appealing enough to give the hint of a game— engaging students and holding their attention longer than most programming environments and introductory assignments. More importantly, the interface allows students to visualize the semantics of control structures and grasp interactions between methods.

Classroom Experiences Using Jeroo exclusively at the beginning of a programming course is a common practice. At the end of the Jeroo unit, the students will understand the semantics of basic control structures; will be comfortable with the concept of instantiating objects and sending them messages; and will be able to design, implement, and use methods that define the behavior of a class of objects. These basic concepts can be revisited and extended after the transition to Java (or C++ or C# or VisualBasic.NET). A somewhat more effective technique is to interleave Jeroo topics with related Java topics. With this technique, Jeroo is used to introduce concepts that are immediately revisited and expanded upon in Java. By interleaving the use of Jeroo with coverage of the corresponding topics in Java, the students see the relevance of Jeroo and appear to have a better understanding of those topics. As one student said, “Everything goes back to Jeroo!” Concerns about switching back and forth between Jeroo and Java proved to be unfounded; the students have no trouble moving between these environments. The Jeroo user community has grown rapidly since Jeroo 1.0’s public release in February 2003. Currently there are over fifty subscribers to the Jeroo announcement list. Eleven of these are international subscribers from nine countries. In March 2004, a short survey (see Appendix D) was sent to those on the announcement list to get a sense of the Jeroo user community. Survey responses were received from seven institutions, including one high school. Over 625 students have used Jeroo at these schools since the start of the Fall 2002 academic term. Based on these survey responses, Jeroo has been used in three ways: as part of an introductory programming course, as a programming unit in computer literacy course, and as a first language for high school students.

Jeroo: A Gentle Introduction to OOP Page 6 of 10

Brian Dorn and Dean Sanders Responses from instructors indicate that Jeroo is meeting its original goals.

“I conducted an informal written survey after presenting Jeroo in the spring 2004 semester and found that the majority of students clearly grasped the concept that a class acts like a ‘blueprint’ to create specific individuals that share common features and behaviors. The Jeroo visuals depicting multiple Jeroo objects that can be initialized and directed by invoking methods on each greatly simplify the presentation of this material.” William Bares, Millsaps College When used as part of a computer literacy course, Jeroo provides an excellent way to introduce programming to non-computer science/engineering majors. Instructors who use Jeroo in these kinds of courses emphasize the tool’s simple user interface and the effectiveness of its metaphor. “With the controls that are set up like a CD player, it is easy for them to use. The ability for immediate feedback is very addicting for many. Even for those that don’t really get programming, the visualization helps them to see what is right and where their strategy goes wrong. These features along with the ability to evaluate statements one step at a time are very helpful in their mastery of the issues associated with OOP.” Wendy DeRung, University of Minnesota-Morris Jeroo has proven to be quite popular in high schools, especially since the current Computer Science AP curriculum is now based on the Java programming language. Users in this community report similar results to their counterparts in higher education. Two survey respondents, who teach at Southern Utah University and the University of Cincinnati, respectively, indicated that they plan to use Jeroo during contests and summer camps for high school students. In this way, Jeroo could even be used as a recruitment tool, sparking interest among incoming students about computer science and computer engineering as fields of study. Common responses to a survey question about student enthusiasm include: “Students are very enthusiastic! They can’t wait to get their hands on the keyboard.” Erica Eddy, University of Wisconsin-Parkside “I felt that Jeroo really engaged the students! I used some of the programming assignments provided with the package and added some additional ones of my own… Jeroo is simple enough that most students can succeed with it, it gives them confidence to tackle a regular language later on. I have been using the one-minute survey this quarter with our Learning Management system and a number of the students have referred to the use of Jeroo from the previous quarter very favorably.” Tom Wulf, University of Cincinnati The survey also solicited numerical responses to three questions about Jeroo. The participants were asked to respond to each question using a 10-point Lickert scale, where a 10 corresponds to the best possible score. Average responses to these questions are shown in Table 2. Table 2 Summary of Survey Responses Question Avg. Value Rate Jeroo’s ease of use. 9.14 Rate the overall effectiveness of the Jeroo language 8.57 Rate the software’s robustness 8.71

Std. Dev. 0.90 0.53 1.38

All respondents indicated a strong desire to continue using Jeroo. For more input from actual instructors, four letters of reference have been included as Appendix A.

Jeroo: A Gentle Introduction to OOP Page 7 of 10

Brian Dorn and Dean Sanders

Assessment of Effectiveness Indications of Jeroo’s effectiveness can be organized into two broad categories: programming concepts and practices, and student satisfaction. Indications related to programming concepts and practices come from faculty observations. Student satisfaction can be inferred from three sources: survey results, withdrawal rates, and comments. Faculty members have indicated that students appear to develop a better grasp of control structures, methods, and objects when using Jeroo. By the end of the term, most students begin to decompose problems and plan solutions before reaching for the keyboard. This can be partially attributed to Jeroo, in which planning and decomposition tasks are more natural than in text and number processing programs. A total of 97 students at Northwest Missouri State University completed a questionnaire that solicited their perceptions of Jeroo’s value. The questionnaire (provided as Appendix C) was given in five course sections covering two semesters and three instructors. It solicited demographic information and asked students to respond to a number of questions using five-point Lickert scales (1=low, 5=high). Table 3 contains mean values for indicators of student satisfaction.

Type Overall

Table 3 Summary of Questionnaire Results Increase in Increase in Worthwhile Worthwhile Confidence Comfort to You to Others 0.52 0.60 3.62 3.89

Good Intro to Java 4.04

Gender Female Male

0.95 0.40

None Some Full Course Self-Taught

0.79 0.48 0.26 0.35

1.18 0.42

4.16 3.45

Programming Experience 0.69 3.74 0.75 3.72 0.42 3.41 0.59 3.53

3.95 3.87

4.26 3.96

3.70 3.99 3.88 4.30

4.13 3.88 3.94 4.23

The data indicate that all students, regardless of gender or programming experience, felt that Jeroo served as a good introduction to Java and was a valuable tool for themselves and others. Students with more programming experience found less personal value in Jeroo, but felt that Jeroo was more valuable to others. This suggests that students who are more familiar with programming believe that Jeroo effectively teaches fundamental concepts that they already understand. The most notable observation is that female and male students have different views about Jeroo. Female students reported larger increases in confidence and comfort levels, and they felt that Jeroo was more useful than did their male counterparts. Figures 4 and 5 show the dramatic difference between females and males with respect to increases in confidence and comfort. Increase in Confidence by Gender 4.50 4.00 3.50 3.00 2.50 2.00 1.50 1.00 0.50 0.00

Increase Preconfidence

Female

Male

Figure 4 Increase in Confidence by Gender

Increase in Com fort by Gender 4.50 4.00 3.50 3.00 2.50 2.00 1.50 1.00 0.50 0.00

Increase Precomfort

Female

Male

Figure 5 Increase in Comfort by Gender

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Page 8 of 10

While females on average started with lower confidence levels than males, their average post confidence levels were nearly identical. The same trend is evident for comfort levels. The potential ramifications of this observation are very important. Studies have shown that females have less confidence in their computing abilities than males, even when statistically controlling for quantitative ability. Additionally, it has been shown that decreased confidence may lead to a decrease in the likelihood that females will choose computer science as a major. If Jeroo can level the playing field of confidence early on, as this data suggests, it may lead to increased retention of females. A paired t-test comparison of pre- and post-confidence levels for all students shows that the likelihood the increase is insignificant is less than 2.0x10-8. Similarly the p-value corresponding to an insignificant increase in comfort levels is 1.4x10-8. We infer that there was a significant increase in confidence and comfort levels after working with Jeroo. Lower withdrawal rates and higher continuation rates are a second indication of student satisfaction. Data for CSCI-130 at UW-Parkside show a withdrawal rate of 19% in the four terms preceding the introduction of Jeroo, and a withdrawal rate of 0% in the two terms since the course switched to Jeroo. Data from the same terms show that the percentage of those who continued on to CS1 increased from 28% to 32%. Student satisfaction can also be measured by student behavior and comments. Various instructors have observed that many students, both novices and experienced students, like to develop their own scenarios and corresponding programs. These range from programs that plant flowers in complex patterns to maze traversal programs. Their enthusiasm is refreshing! The following student comment is typical. “Jeroo helped me tremendously. I took CSCI-241 [the CS1 course] first without any prior programming experience and was lost from the first day. Taking the same class after experience with Jeroo is much easier to understand. I think Jeroo is a good way to ease into programming with Java. For me, it made the whole idea of instantiatable classes and main methods a much simpler concept. Also, I think Jeroo is a good example of Object-Oriented programming which seemed to be a hard concept for me to grasp.” Anonymous Student, University of Wisconsin-Parkside

Relationship to NEEDS Courseware Criteria Although many of the NEEDS criteria have been discussed above indirectly, it is important to consider closely at how Jeroo meets them. The section that follows will discuss the ways Jeroo achieves the NEEDS criteria more specifically. Instructional Design Learning Objectives After working with Jeroo, we feel that each student should be able to: • recognize that multiple objects can be instantiated from a single class • understand that objects from a common class have identical behaviors but different internal states • design and implement a computer program (using Jeroo) • instantiate and make use of objects • explain the concept of overloaded methods • write methods to extend the behavior of all Jeroos • relate the semantics of common control structures • use Boolean operators to write compound conditions • decompose problems and compose solutions • diagnose and correct program errors using compiler and runtime messages Interestingly enough, if we were to enumerate the learner outcomes for a typical introductory CS1 programming course, the list would be nearly identical to the list given above. These objectives also align themselves easily with the standards for ABET accreditation of many programs, including Computer Science, Information Systems, Electrical/Computer Engineering, and Software Engineering. Jeroo provides a starting point for the design and analysis skills that permeate undergraduate curricula in each of these areas.

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Page 9 of 10

Interactivity The interactivity of Jeroo was extensively covered earlier in the “The User Interface” subsection. It is important to note that the interface was built from the ground up to be as engaging as possible for the learner. The whole idea was to increase learning of the fundamental concepts by providing a means of interaction beyond what is typically found in introductory assignments. Cognition/Conceptual Change Because the introduction of Jeroo has usually been associated with other changes in the content or structure of a course, we are aware of no data that attributes improvements in cognition to Jeroo, per se. However, our observations and those of other instructors indicate that the students’ understanding of objects, methods, and control structures are better than they were prior to the use of Jeroo. These observations are based on receiving fewer questions about these concepts, on answers to exam and quiz questions, and on programs that the students wrote. It is apparent that students are developing fewer misconceptions about these foundational topics when using Jeroo. We believe it is Jeroo’s animated execution that helps to ensure students are correctly interpreting the underlying semantics of the programming language being used. Content Jeroo is not intended to be a general-purpose programming environment; instead, it is intended to help students master some important programming concepts. By minimizing the features of the programming languages, Jeroo provides a strong focus on a few crucial topics: decomposition of problems and solutions, objects and their instantiation, sending messages to objects, writing methods to extend the behavior of objects, using selection and repetition structures to control the flow of control in a program, and writing Boolean expressions. This content is appropriate for beginners and provides a base of reference as these topics are studied and expanded upon in generalpurpose languages such as Java and VisualBasic.NET. Multimedia Use Jeroo uses simple animation and simultaneous code highlighting to illustrate the behavior of a running program. Other forms and uses of media were considered, but each was rejected as being gratuitous, not effectively contributing the learning process, or otherwise distracting from the instructional objectives. Instructional Use/Adaptability Jeroo is being used in universities, colleges, and high schools. It is being used to introduce concepts in programming courses that feature some other language, as the sole language in “programming readiness” courses, in computer literacy courses, and in summer workshops and camps for pre-college students. It is being used in both computer science and information systems curricula, and it has some international users. Written in Java, Jeroo has been tested under Linux, Solaris, Mac OS-X, and various versions of Windows. As the user community has grown, so have the creative ways in which instructors have employed Jeroo—many of which were never considered in the tool’s initial development. Jeroo has proven to be very flexible in this respect. Software Design Engagement Students feel at ease with Jeroo’s comfortable metaphor and anthropomorphic nature. The software supports a wide range of activities from straightforward programs for beginners to challenging problems for those with some programming experience. Simple animation and code highlighting provide strong visual feedback that keeps the students interested. Good indicators of engagement are the observations by several instructors that many students, especially the stronger ones, design their own scenarios and write corresponding programs without being required to do so. Learner Interface and Navigation Well-established principles guided the development of Jeroo’s initial interface. Comments and suggestions from students and instructors have influenced the current interface. As a result, even the least experienced novices can learn to use Jeroo effectively in a 50-minute lab session.

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Page 10 of 10

Several factors contribute to the quality of the user interface. • Navigation is trivial because there are only two screens, a login dialog and the tool itself. • The Jeroo application consists of a single window in which everything is visible at all times at 800x600. • File names are displayed on the title bar. • Identifying data and page numbers appear on every printed page. • All features are accessible via menus, most are available via the keyboard, and the most commonly used ones are accessible through a toolbar. • The buttons on the toolbar are organized into logical groups, and the corresponding menus are positioned so as to serve as labels for the button groups. • When editing the island, the shape of the cursor changes to correspond to the items that are being added or deleted (flowers, nets, water), and a panel continuously monitors the cursor’s location. • Students use VCR-like control to run a program. • Each Jeroo in a running program is represented by an arrow that shows the Jeroo’s direction and position on the island. Each arrow has a unique shape and color. • Color appears in the user interface, but it is never significant. Thus, the interface is suitable for those with various forms of color blindness. • Four status panels keep track of important aspects of the environment and the status of a program. • Great care has been taken to make the wording of the error messages as informative as possible. • The wording in dialog boxes, buttons, and tool tips was chosen to be terse but informative. • The language summary appears in a separate window than can be moved, resized, minimized, and recalled as necessary. The default size allows the language summary to be displayed adjacent to, but not obscuring, the source code editor. • Jeroo saves and recalls user preferences including login information and the most recently used source and island files. Since Jeroo’s initial release some processes have been streamlined, some have been made to execute faster, and some parts of the interface have been revised. The net effect is an improved perception of the quality of the tool. Technical Reliability Jeroo has been used by hundreds of students in a variety of courses at several institutions using various platforms. Only three errors have been discovered in that time. Each only appeared in unusual circumstances, and each was corrected within 48-hours. There have been no reports of Jeroo “crashing” or causing a system failure. We feel very confident in the reliability of Jeroo, but more importantly, our users have repeatedly commented about its robustness. Engineering Content Accuracy of Content The technical content of Jeroo is embodied in the syntax and semantics of Jeroo’s programming languages. Great care was taken to ensure that the syntax and semantics of the VisualBasic.NET-style and the Java/C++/C#style languages conform, respectively, to those of VisualBasic.NET and the common subset of Java, C++, and C#. After two years of use by several instructors at several institutions, no concerns have been raised about the accuracy of Jeroo’s content. Appropriateness of Content Whether it is treated as a primary topic of study, as a supporting tool, or as part of a student’s general literacy, computer programming is an important part of engineering education. Object-oriented principles and practices have become important aspects of not only computer programming, but also system design in other engineering fields. Jeroo has proven to be an effective tool for introducing some of these fundamental object-oriented programming concepts.

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Appendix Page 1 of 10

Appendix A: Reference Letters

NEEDS Premier Courseware Selection Committee 3115 Etcheverry Hall University of California at Berkeley Berkeley, CA 94720-1750 NEEDS Premier Courseware Selection Committee Several faculty and I teach an introductory object-oriented computer programming course, 44-141 Computer Programming I, at Northwest Missouri State University in Maryville, Missouri in which a variety of computer-related majors and minors are enrolled. For many students the Computer Programming I course is their first introduction to a programming language. During the spring 2004 semester, we used the Jeroo language (Java) to introduce approximately ninety Computer Programming I students in three different sections to object-oriented programming. The Jeroo language proved an outstanding vehicle to introduce beginning students to object-oriented Java features. Jeroo allowed students the opportunity to explore objects in a simple user-friendly visual environment and yet use selection and repetition control structures to solve more complex programming problems. The Jeroo language and environment allows students to solve very simple or very complex programming problems within the same environment. Students were truly motivated to write programs in the Jeroo game-like environment and found it very non-threatening. Many students developed their own Jeroo mazes outside of class and then wrote solutions to solve their problem. By the time that students had solved many programming problems with Jeroo, they were hooked on programming. Jeroo was introduced in the first four weeks of the course and then students were introduced to the Java programming environment using BlueJ. The impact of Jeroo upon students was significant in that students were more motivated, were less intimated by the Jeroo language and environment and were able to transition into learning Java with BlueJ with relative ease. Additionally, attrition in the Computer Programming I course was significantly less than other semesters in which Jeroo was not used. Northwest faculty plan to continue the use of Jeroo in the Computer Programming I course at Northwest Missouri State University in future semesters and encourage other schools to consider adopting the Jeroo language as an introduction to object-oriented programming. Sincerely, Carol L. Spradling Assistant Professor, CS/IS Northwest Missouri State University Colden Hall 2240 Maryville, MO 64468 660-562-1588 [email protected]

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Appendix Page 2 of 10

June 1, 2004 Subject: Recommendation for Jeroo software TO: NEEDS Premier Courseware Selection Committee Dear Selection Committee members: I wish to recommend that the Jeroo educational software be considered for your courseware competition. It gives students a gentle introduction to object-oriented programming concepts, while also emphasizing basic computer science concepts such as if-statements and loops. I began using Jeroo in a 1-credit course entitled "Introduction to Programming" in the Fall 2003 semester. For countless previous years, this class had been taught using QBASIC. I have been teaching a section of our CS1 course (Computer Science I) for several years. We have used Java in this course since the Fall 2000 semester. I had noticed that students really struggled with the concept of object-orientation. The course requires previous programming experience as a prerequisite, but students who had done strictly procedural programming stumbled when presented with the objectoriented part of this course. After seeing a demonstration of Jeroo at the SIGCSE conference in 2003, I chose to change to Jeroo to give students an object-oriented view of programming, with the goal of hopefully better preparing students for CS1. A total of 38 students have taken the course in the two semesters since I've used Jeroo. The most interesting statistic I have found is that not a single student has dropped or withdrawn from the course. Feedback has been very positive. Many students install it on their home computers with ease. The single-stepping feature with constant visual feedback really helps students understand how programs run. The following quote is from a female student who took the course in the fall, and earned a B+ in CS1 in the spring. Her thoughts are echoed by others as well:

“Jeroo helped me tremendously. I took CSCI-241 [the CS1 course] first without any prior programming experience and was lost from the first day. Taking the same class after experience with Jeroo is much easier to understand. I think Jeroo is a good way to ease into programming with Java. For me, it made the whole idea of instantiable classes and main methods a much simpler concept. Also, I think Jeroo is a good example of Object-Oriented programming which seemed to be a hard concept for me to grasp.” I hope this letter will give you some idea of the value of this software to my students. I will continue to use it in future semesters as well. Students really have fun with it! Please feel free to contact me if you have further questions. Sincerely, Erica A. Eddy, M.S. [email protected] Lecturer, Computer Science Department University of Wisconsin – Parkside 900 Wood Road, P.O. Box 2000 Kenosha, WI 53141-2000

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Appendix Page 3 of 10

May 27, 2004 TO : Whom It May Concern RE: Letter of Recommendation for Jeroo I am a high school Computer Science teacher and I have been using Jeroo in my introductory Computer Literacy course for two years. Brentwood School is a K-12 private, independent school in Los Angeles, CA with an enrollment of 950 students. I use Jeroo as one of two programs to introduce students to the process and practice of computer programming. It is an engaging tool that students can easily relate to and program in, once they learn the story and a few of the commands. It takes away the technical difficulties of setting up an editor, a compiler, and a debugger and leaves a simple interface to work in. Students write their first short program the very first day Jeroo is introduced. It gives immediate feedback while running and also when there is a problem. Once students master the basics, it allows me to teach several intermediate topics that are vital to learning programming, selection/branching and looping/repetition. With these two capabilities, I can give students increasingly difficult problems to solve, which use the same interface and framework that they have become comfortable with. Students are challenged by the problems I give them and learn programming without the huge learning curve needed to master a typical complex IDE. I have been using Jeroo for two years. I use Jeroo in my semester-long Computer Literacy course and each year, I have anywhere from 4 to 6 sections of 15 students (60-90 students total), depending upon yearly enrollment. This course is a requirement for graduation at my school. Out of a 16-week semester, the programming unit lasts 5-6 weeks. I spend 2-3 weeks covering a simpler Java-based program called Jawaa and then spend 3 weeks covering Jeroo. I wish I could spend more time on Jeroo but I am limited due to all the other topics that I need to cover outside of programming. My students and I enjoy using Jeroo and I believe that it is an ideal tool for teaching novice students the basics of programming. I like it because it is : 1/ simple to use, 2/ small in size, 3/ easy to install, 4/ engaging, 5/ easy to learn, 6/ able to handle both simple and complex problems, 7/ closely related to Java, and 8/ fun. For these reasons and many others, I highly recommend this program for teaching students the basics of computer programming.

Joon Kim Brentwood School Computer Science Dept.

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Appendix Page 4 of 10

Greetings, I am writing this letter in support of the fine work of Brian Dorn and Dean Saunders in providing the Jeroo system for teaching Object Oriented Programming. I have used the system to good effect in our Programming Logic and Methods course (a CS0 type course that precedes the first language course) here at the University of Cincinnati’s College of Applied Science in our Information Technology program. I found that the graphical, game-like quality of Jeroo was very engaging for my students. I used Jeroo for a two week period within the course and in addition to the programming exercises provided by Brian and Dean, I added several additional ones including a general maze search assignment. I realized that the assignment sequence that I used in Jeroo actually replicated the agent-based immersive paradigm that is prevalent now for AI instruction. Effectively, the Jeroo environment provided my students with a virtual programming experience very similar to what they might have done with a physical robotics kit like the LEGO Mindstorms, but of course without the costs and overhead of implementation of the robotics. Students enjoyed using Jeroo and many actually went on to write experimental programs on their own that I had not assigned. I got very positive feedback from the students on this application. They were very engaged and got a feel for Object Oriented Programming concepts. I believe that the engaging aspect of Jeroo interface makes it a powerful tool for captivating students. I will certainly continue to use Jeroo for the introductory preprogramming classes that I teach and I am hoping to also use it this summer as part of our Summer Academy for Information Technology which is a two-week high school recruitment effort that we offer for local students. Please feel free to contact me if any additional information is required. I really appreciate that Dean and Brian have provided this exceptional pedagogical tool at no cost to educators throughout the world and feel that their work should be supported. Regards, Tom Wulf Ast. Prof. of Information Engineering Technology College of Applied Science, University of Cincinnati 2220 Victory Parkway ML 0103 Cincinnati, OH 45206-2839 [email protected]

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Appendix Page 5 of 10

Appendix B: List of Publications and Presentations

Dorn, B. and Sanders, D., “Using Jeroo to Introduce Object-Oriented Programming”, Proceedings of the 2003 IEEE/ASEE Frontiers in Education Conference, Vol.1, November 2003, pp. T4C 22 – T4C 27. [http://www.cs.iastate.edu/~dorn/needs/FIE04.pdf] Sanders, D. and Dorn, B., “Classroom Experience With Jeroo”, Journal of Computing Sciences in Colleges, Vol. 18, No 4., April 2003, pp. 308-316. [http://www.cs.iastate.edu/~dorn/needs/CCSC03.pdf] Sanders, D. and Dorn, B., “Jeroo: A Tool for Teaching Object-Oriented Programming”, Proceedings of the Thirty-Fourth SIGCSE Technical Symposium, Vol. 35, No. 1., February 2003, pp. 201-204. [http://www.cs.iastate.edu/~dorn/needs/SIGCSE03/pdf]

Jeroo: A Gentle Introduction to OOP Appendix Page 6 of 10

Brian Dorn and Dean Sanders

Appendix C: Student Questionnaire Used at NWMSU

Jeroo Student Questionnaire One of our goals is to make Jeroo into an outstanding educational tool. As part of that process, we want you to take a few minutes to provide thoughtful answers to the following questions. We are very interested in you opinions and suggestions. 1. What is your year in school? a) Freshman b) Sophomore c) Junior d) Senior e) Other 2. What is your current grade point average? ____________ 3. Gender:

F

M

4. How much programming experience did you have before starting this course? a) b) c) d)

none A little exposure in some other class. What class? What language? A complete course. What course? What language? Some self-taught experience. Please describe.

5. Rate your confidence in your ability to learn computer programming before you started the course? |----------+----------+----------+----------| Low Medium High 6. Rate your confidence in your ability to learn computer programming after you finished the Jeroo portion of the course? |----------+----------+----------+----------| Low Medium High 7. Rate your level of comfort about this course before the semester began. |----------+----------+----------+----------| Low Medium High 8. Rate your level of comfort about this course after working with Jeroo. |----------+----------+----------+----------| Low Medium High

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

9. Do you think that working with Jeroo was worthwhile to you? |----------+----------+----------+----------| Not at all Somewhat Very much 10. Do you think that working with Jeroo was worthwhile to your classmates? |----------+----------+----------+----------| Not at all Somewhat Very much 11. Do you think that working with Jeroo was a good way to lead into Java? |----------+----------+----------+----------| Not at all Somewhat Very much 12. Please describe the best features of Jeroo.

13. How can we improve the user interface for Jeroo?

14. How can we improve the Jeroo language?

15. What other comments do you have regarding Jeroo?

Appendix Page 7 of 10

Jeroo: A Gentle Introduction to OOP Brian Dorn and Dean Sanders

Appendix Page 8 of 10

Appendix D: Jeroo Survey Sent to Instructors

Jeroo User Survey 1.

Name and title:

2.

Institution (name and location):

3.

Number of academic terms Jeroo has been used at your institution:

4.

Approximate number of students exposed to Jeroo during this time:

5.

How have you incorporated Jeroo into your curriculum? (What types of courses have you used Jeroo in? How is it used in these courses?)

6.

How has using Jeroo affected student comprehension and mastery of basic object-oriented programming?

7.

How has using Jeroo affected student enthusiasm for learning programming?

8.

Do you plan on continuing the use of Jeroo? If so, in what ways?

9.

Would you recommend Jeroo to others? Why or why not?

10. Rate the ease of use of the Jeroo interface (1-low, 10-high): 11.

Rate the overall effectiveness of the Jeroo language and system at demonstrating necessary introductory skills (1-low, 10-high):

12. Rate the robustness/reliability of the Jeroo program (1-low, 10-high): 13.

Would you be willing to provide a recommendation letter regarding your experiences with Jeroo?

14. Additional Comments:

Jeroo: A Gentle Introduction to OOP Appendix Page 9 of 10

Brian Dorn and Dean Sanders

Appendix E: Jeroo Code Examples

The following two examples are intended to give the reader an idea of the types of exercises that are possible in Jeroo. The problem statements and sample environments are on the left, with a sample solution program on the right. Hurdle Race: Java Style Solution

A Jeroo named Moses is training for the Olympics. His specialty is running hurdles. Your task is to write a program that helps Moses with his racing abilities. In order to win the Jeroo Olympics, he needs to be able to jump hurdles of varying heights and widths spaced at arbitrary distances from each other. The finish line is located at the bottom of the last hurdle and is marked by a flower--the trophy for completing the course. Remember: 1) The starting line is always at the lower left corner of the island. 2) There can be any number of hurdles in the course. 3) Hurdles have no predetermined height or width. 4) Consecutive hurdles are one or more spaces apart.

//*** User Methods *** method ascend() { turn(LEFT); while( isNet(RIGHT) ) hop(); } //===== end method ascend() method soar() { turn(RIGHT); hop(); while( isNet(RIGHT) ) hop(); } //===== end method soar() method descend() { turn(RIGHT); while( ! isWater(AHEAD) ) hop(); turn(LEFT); } //===== end method descend() method jumpHurdle() { ascend(); soar(); descend(); } //===== end method jumpHurdle() // *** Main Program *** method main() { Jeroo Moses = new Jeroo(23,0); //--- run the race --while( ! Moses.isFlower(HERE) ) { if( Moses.isNet(AHEAD) ) { Moses.jumpHurdle(); } else { Moses.hop(); } } Moses.pick(); //--- pick the flower } //===== end method main()

Jeroo: A Gentle Introduction to OOP Appendix Page 10 of 10

Brian Dorn and Dean Sanders

Gentle Morning: VB Style Solution

A Jeroo named Jessica wakes up somewhere in her house each morning. Since she always sleeps facing the same direction, she always wakes up looking at the east wall of her house. The first thing Jessica does every morning is to go check for the newspaper outside her front door. If she finds the paper, she returns back inside her house, sits down in her favorite chair in the corner of her house and reads. If the paper is not there yet, she likes to walk to the shore and watch the sun come up. Your job is to write a program that simulates Jessica's behavior each morning. Keep the following in mind: 1) You may represent a newspaper using a flower. 2) The house can be of any size, at any location on the island. 3) Jessica's starting point in the house is arbitrary

'*** User Methods *** Sub findWall() While( NOT isNet(AHEAD) ) hop() End While End Sub '=== end method findWall() Sub findDoor() findWall() turn(RIGHT) findWall() turn(RIGHT) While( isNet(LEFT) ) hop() End While End Sub '=== end findDoor() Sub sitAndRead() turn(LEFT) turn(LEFT) hop() hop() turn(RIGHT) findWall() End Sub Sub watchSunrise() While( NOT isWater(AHEAD) ) hop() End While End Sub '=== end watchSunrise() '*** Main Program *** Sub main() Dim Jessica as Jeroo = new Jeroo(8,8) Jessica.findDoor() Jessica.turn(LEFT) Jessica.hop() Jessica.hop() If( Jessica.isFlower(HERE) ) Then Jessica.pick() Jessica.sitAndRead() Else Jessica.turn(LEFT) Jessica.watchSunrise() End If End Sub '=== end main

Suggest Documents