An introduction to object-oriented programming with a didactic microworld: objectKarel

The objects-first strategy to teaching programming has prevailed over the imperative-first and functional-first strategies during the last decade. However, the objects-first strategy has created added difficulties to both the teaching and learning of programming. In an attempt to confront these difficulties and support the objects-first strategy we developed a novel programming environment, objectKarel, which uses the language Karel++. The design of objectKarel was based on the results of the extended research that has been carried out about novice programmers. What differentiates it from analogous environments is the fact that it combines features that have been used solely in them: incorporated e-lessons and hands-on activities; an easy to use structure editor for developing/editing programs; program animation; explanatory visualization; highly informative and friendly error messages; recordability. In this paper, we present the didactic rationale that dictated the design of objectKarel and the features of the environment, including the e-lessons. In addition, we present the results from the use of objectKarel in the classroom and the results of the students' assessment of the environment.

[1]  Elliot Soloway,et al.  Studying the Novice Programmer , 1988 .

[2]  Janine Rogalski,et al.  Acquisition of Programming Knowledge and Skills , 1990 .

[3]  Benedict du Boulay,et al.  Some Difficulties of Learning to Program , 1986 .

[4]  Rockford J. Ross,et al.  DYNALAB: a dynamic computer science laboratory infrastructure featuring program animation (abstract) , 1995, SIGCSE '95.

[5]  Martin Ruckert,et al.  Educational C , 1993, SIGCSE '93.

[6]  Dean Sanders,et al.  Jeroo: a tool for introducing object-oriented programming , 2003, SIGCSE.

[7]  Peter Brusilovsky Program visualization as a debugging tool for novices , 1993, CHI '93.

[8]  CORPORATE The Joint Task Force on Computing Curricula,et al.  Computing curricula 2001 , 2001, JERC.

[9]  Ann E. Fleury Encapsualtion and reuse as viewed by java students , 2001, SIGCSE '01.

[10]  Iain Milne,et al.  Difficulties in Learning and Teaching Programming—Views of Students and Tutors , 2002, Education and Information Technologies.

[11]  Duane Buck,et al.  JKarelRobot: a case study in supporting levels of cognitive development in the computer science curriculum , 2001, SIGCSE '01.

[12]  Ann E. Fleury Programming in Java: student-constructed rules , 2000, SIGCSE '00.

[13]  J. Carter,et al.  Object oriented students? (poster) , 1998, ITiCSE '98.

[14]  UlloaMiguel Teaching and learning computer programming , 1980 .

[15]  Annemarie Hauf,et al.  Computers in education , 1983 .

[16]  Philip Miller,et al.  Evolution of Novice Programming Environments: The Structure Editors of Carnegie Mellon University , 1994, Interact. Learn. Environ..

[17]  Mark Woodman,et al.  Avoiding object misconceptions , 1997, SIGCSE '97.

[18]  Austin Henderson,et al.  INTERACT '93 and CHI '93 Conference Companion on Human Factors in Computing Systems , 1993 .

[19]  Jakob Nielsen,et al.  Enhancing the explanatory power of usability heuristics , 1994, CHI '94.

[20]  Jean-Michel Hoc,et al.  Psychology of programming , 1990 .

[21]  Richard E. Pattis,et al.  Karel ++ A Gentle Introduction to the Art of Object-Oriented Programming , 1996 .

[22]  Michael Kölling,et al.  Guidelines for teaching object orientation with Java , 2001 .

[23]  Randy Pausch,et al.  Alice: a 3-D tool for introductory programming concepts , 2000 .

[24]  Peter Brusilovsky,et al.  Mini-languages: a way to learn programming principles , 2004, Education and Information Technologies.

[25]  Carlos Gregorio Rodríguez,et al.  Computing Curricula 2001 , 2002 .

[26]  Michael Kölling,et al.  The BlueJ System and its Pedagogy , 2003, Comput. Sci. Educ..