TITLE: Looking for Engaging Examples AUTHOR: Eugene Wallingford DATE: March 13, 2005 11:35 AM DESC: I'm getting ready for ChiliPLoP 2005. Do you have a simple program that can engage students and teach them about the world of computing while they are learning to program? ----- BODY: Some of my favorite colleagues and I will be getting together in a week or so for ChiliPLoP 2005, where we will continue to work on our longstanding project, to produce a different sort of textbook for the CS 1 course. We'd like to create a set of instructional units built around engaging and instructive applications. In a first course, these applications will have to be rather small, but we believe students can learn more and better about how to program when their code has a context. In many ways, Mike Clancy's and Marcia Linn's classic Designing Pascal Solutions serves as my goal. Clancy and Linn did for structured programming and Pascal what I'd like for our work to do for object-oriented programming and Java (or whatever succeeds it). Their case studies focus on simple yet complete programs such as a calendar generator, a Roman numeral calculator, and a text processor, using them as the context in which students learn the basics of computation and Pascal syntax. Along the way, they also learn to something about how to write programs which is, in many ways, the central point of the course. This book, and its data structures follow-up, implement a wonderful teaching idea well. I think we can do this for OOP, and can use what we've learned about patterns in the intervening 15 years to do it in an especially effective way. Such an approach requires that we identify and work out in some detail several such examples. The old examples worked great in a text-oriented world in which students' experience with computers was rather limited, but we can surely do better. Our students come to the university with broad experience interacting with computer systems. Cell phones, iPods, and TiVo are a part of the fabric of their lives. Besides, objects and languages like Java bring graphical apps, client-server apps, web apps, and other more sophisticated programs within reach. A canonical first example for a graphical OOP introduction to programming is the ball world, a framework for simple programs in which balls and other graphical elements move about some simulated world, interacting in increasingly sophisticated ways. The folks at Brown and Duke have been developing this line of examples for a decade or more, and Tim Budd wrote a successful book aimed at students in a second or third course in which this is the first "real" Java program students see. But ball world is tired, and besides it doesn't make much of a connection to the real world of computing these days. It might work fine to introduce students to the basics of Java graphics, but it needs serious work as an example that can both be used as early in CS 1 and engage many different students. This is drifting dangerously toward a longer and different essay that I've been meaning to write for a while now, but I don't have the time this morning. That essay will have to wait until tomorrow. In the meantime, I'll leave you with a catchphrase that Owen Astrachan was touting at OOPSLA last fall: Problems are the thing. Owen's right. Returning to the more immediate issue of ChiliPLoP 2005 and our Hot Topic, if you have an idea for a motivating example that might engage beginning programmers long enough for us to help them learn a bit about programming and objects, please pass it on. Maybe we can make it one of our working examples! -----