Weathering MindStorms with drizzle and DIODE in CS0

We introduce Drizzle, our new simple object-oriented scripting language for programming LEGO MindStorms robots, and DIODE, the Drizzle Integrated Object-Oriented Development Environment. Drizzle and DIODE have evolved from a student project into useful resources for our CS0 course. In this work we describe Drizzle and DIODE and discuss our experiences with them in our CS0 course.We are dismayed by the low retention rates of undergraduate majors in CS1 and CS2. To attempt to alleviate this problem, we introduced a new required CS0 course in Fall 2004. Its goals are to give students a breadth-first overview of CS and to expose them to algorithmic problem solving before immersing them in Java. We decided to use the MindStorms robots to accommodate student diversity, to introduce a fun element to the course, and to force the students to focus on problem analysis instead of detailed syntax. Our approach complements [2].Drizzle is a simple object-oriented scripting language. It supports repetition, selection, simple assignment statements, logical operators, numeric variables, and predefined objects representing components of a robot, i.e., sensors, motors, and the LCD display. Drizzle is purposely minimal to be suitable for students without prior programming experience. To encourage documentation, Drizzle supports comments.DIODE is the IDE that allows a MindStorms robot to be programmed in Drizzle. To achieve this, we used the leJOS API [3] to implement method call abstractions supporting the predefined objects. The IDE includes an intuitive GUI. It allows for automatic compilation of Drizzle code, including a translator from Drizzle to Java utilizing the predefined MindStorms objects. DIODE also directly interfaces to the robot's IR device. We provided these features because our typical user was familiar with text editing but was not familiar with command-line tools.Our CS0 course is currently taught in one 120-student section and meets 3 hours per week for 14 weeks. At least 3 hours are spent on each of algorithmic thinking and concepts of programming languages before Drizzle and DIODE are formally presented. The students see an actual problem with pseudocode and the corresponding Drizzle solution. A problem is then posed as a "Drizzle Team Challenge". Students must complete individual solution plans. The instructor then forms the student groups. Next, the teams produce solution plans. Finally, they are allowed to program with the actual robot. The lab has 3 computers with DIODE installed and 6 robots with 6 tracks. During the Fall 2004 offering, the 14 teams consisted of between 5 and 8 students. The large class size and small number of robots made smaller groups infeasible. No team solved the problem totally correctly during the first lab session. Not surprisingly, the smaller groups were more effective. All teams submitted at least a partial solution to the problem; 12 completed the solution. Students were excited about working with the robots.We are using Drizzle (and DIODE) again during Spring 2005. We expect to have smaller groups. We hope to evaluate the effectiveness of Drizzle; some possible approaches are additional questions in the course evaluation, surveys at the beginning and end of CS1, and analyses of CS1/CS2 retention rates. We may also compare the usage of Drizzle with the standard MindStorms approach and Alice [1].