The design of an object-oriented environment and language for teaching

While object-orientation has been widely accepted as an important programming paradigm, teaching object-orientation remains difficult. Experience reports suggest that some problems can be avoided by teaching object-orientation as the first language in an introductory course. However, other problems remain, in particular languages and environments are regularly criticised as unsuitable and overly complex. This thesis discusses aspects of object-oriented languages and environments that affect their suitability for first year teaching. General requirements for languages and environments are identified and used as a means to judge the suitability of the most popular systems in use today. The discussion shows that none of the currently available systems is suitable for object-oriented first year teaching. A new integrated software development environment and language called Blue is presented. Blue overcomes the problems identified and opens new possibilities for teaching and learning object-oriented programming. The Blue language and environment are highly integrated and specifically designed for teaching. This focus allows the provision of tools and techniques not available in other systems. The Blue language is small and clean and the environment supports visualisation and sophisticated interaction facilities. In this thesis, both the language and the environment are described in detail. Design decisions and alternatives are discussed and compared to other systems on the market. iii Acknowledgments

[1]  Vangalur S. Alagar,et al.  Object-Oriented Technology for Database and Software Systems, Proceedings of the Colloquium on Object Orientation in Databases and Software Engineering, COODBSE 1994, 16-17 May 1994, Universite du Quebec a Montreal, Canada , 1995, COODBSE.

[2]  Andrew Koenig Effective C++ Learning and Teaching. , 1995 .

[3]  Ian Joyner,et al.  C++?? A Critique of C++ and Programming and Language Trends of the 1990s , 1996 .

[4]  Russell W. Quong,et al.  ANTLR: A predicated‐LL(k) parser generator , 1995, Softw. Pract. Exp..

[5]  Dorothy Mazaitis The object-oriented paradigm in the undergraduate curriculum: a survey of implementations and issues , 1993, SGCS.

[6]  Terry Winograd,et al.  From programming environments to environments for designing , 1995, CACM.

[7]  J. Meigs,et al.  WHO Technical Report , 1954, The Yale Journal of Biology and Medicine.

[8]  Kurt Nørmark,et al.  An Evaluation of Eiffel as the first Object-oriented Programming Language in the CS Curriculum , 1995 .

[9]  DeckerRick,et al.  The top 10 reasons why object-oriented programming can't be taught in CS 1 , 1994 .

[10]  Cherri M. Pancake,et al.  The promise and the cost of object technology: a five-year forecast , 1995, CACM.

[11]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[12]  Henry Lieberman,et al.  Debugging and the experience of immediacy , 1997, CACM.

[13]  Michael Kölling,et al.  Testing object-oriented programs: making it simple , 1997, SIGCSE '97.

[14]  Bertrand Meyer What is an object-oriented environment? principles and their application , 1993 .

[15]  Andreas Buja,et al.  Painting multiple views of complex objects , 1990, OOPSLA/ECOOP '90.

[16]  Ira Pohl,et al.  A To Z: C Language Shortcomings , 1988, Comput. Lang..

[17]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[18]  Marian Petre,et al.  Why looking isn't always seeing: readership skills and graphical programming , 1995, CACM.

[19]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[20]  Rick Decker,et al.  Top-down teaching: object-oriented programming in CS 1 , 1993, SIGCSE '93.

[21]  Mary Beth Rosson,et al.  Portia: an instance-centered environment for Smalltalk , 1991, OOPSLA '91.

[22]  Michael Kölling,et al.  The Blue Programming Environment - Reference Manual , 1998 .

[23]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[24]  Michael Kölling,et al.  Blue—a language for teaching object-oriented programming , 1996, SIGCSE '96.

[25]  Desmond D'Souza Effective C++ Learning and Teaching , 1995, J. Object Oriented Program..

[26]  Randall B. Smith,et al.  From Kansas to Oz: collaborative debugging when a shared world breaks , 1997, CACM.

[27]  Richard C. Holt,et al.  The Turing programming language , 1988, CACM.

[28]  Stefan Leboch,et al.  Eiffel in Lehre und Forschung –  Erfahrungen und Perspektiven , 1997, Informatik-Spektrum.

[29]  Mark Evered,et al.  A Flexible Object Invocation Language based on Object- Oriented Language Definition , 1995, Comput. J..

[30]  Michael Goedicke Java in der Programmierausbildung: Konzept und erste Erfahrungen , 1997, Informatik-Spektrum.

[31]  Michael Kölling,et al.  An object-oriented program development environment for the first programming course , 1996, SIGCSE '96.

[32]  Peter Wegner,et al.  The first-course conundrum , 1995, CACM.

[33]  Rick Decker,et al.  The top 10 reasons why object-oriented programming can't be taught in CS 1 , 1994, SIGCSE '94.

[34]  Wilf R. LaLonde,et al.  Smalltalk as the first programming language: the Carleton experience , 1990 .

[35]  Eric S. Roberts,et al.  Loop exits and structured programming: reopening the debate , 1995, SIGCSE.

[36]  Robert Biddle,et al.  Teaching C++: experience at Victoria University of Wellington , 1994, Proceedings Software Education Conference (SRIG-ET'94).

[37]  Richard C. Holt Introducing undergraduates to object orientation using the Turing language , 1994, SIGCSE '94.

[38]  Bjarne Stroustrup,et al.  The C++ Programming Language, Second Edition , 1991 .

[39]  Bruce J. MacLennan Values and objects in programming languages , 1982, SIGP.

[40]  M. A R I A N P E T R E Why Looking Isn’t Always Seeing: Readership Skills and Graphical Programming , 1997 .

[41]  Volker Haarslev,et al.  A framework for visualizing object-oriented systems , 1990, OOPSLA/ECOOP '90.

[42]  Rick Decker,et al.  Using C++ in CS1/CS2 , 1994, SIGCSE '94.

[43]  J. Lindskov Knudsen Object-oriented environments : the Mjølner approach , 1993 .

[44]  Michael Kölling,et al.  Requirements for a first year object-oriented teaching language , 1995, SIGCSE.

[45]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[46]  Benjamin G. Zorn,et al.  A comparison of object‐oriented programming in four modern languages , 1994, Softw. Pract. Exp..

[47]  Mark Evered,et al.  How Well Do Inheritance Mechanisms Support Inheritance Concepts? , 1997, JMLC.

[48]  Markku Sakkinen The Darker Side of C++ Revisited , 1992, Struct. Program..

[49]  Aaron Marcus,et al.  Software visualization for debugging , 1997, CACM.

[50]  Bernd Owsnicki-Klewe,et al.  Objektorientierung in der Informatikausbildung auf der Basis von Smalltalk , 1997, Informatik-Spektrum.

[51]  Michael Kölling,et al.  I/O considered harmful (at least for the first few weeks) , 1997, ACSE '97.

[52]  Lori A. Clarke,et al.  TEAM: a support environment for testing, evaluation, and analysis , 1988, SDE 3.

[53]  Mark Temte,et al.  Let's begin introducing the object-oriented paradigm , 1991, SIGCSE '91.

[54]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[55]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[56]  Adele Goldberg,et al.  Smalltalk-80 - the interactive programming environment , 1984 .

[57]  Christopher Fry Programming on an already full brain , 1997, CACM.

[58]  Michael Kölling,et al.  On creation, equality and the object model , 1999, Proceedings Technology of Object-Oriented Languages and Systems. TOOLS 32.

[59]  Mary Beth Rosson,et al.  Portia: an instance-centered environment for Smalltalk , 1991, OOPSLA 1991.

[60]  Mark Cashman The benefits of enumerated types in Modula-2 , 1991, SIGP.

[61]  Kevin Bluff,et al.  Jumping into Java: object-oriented software development for the masses , 1998, ACSE '98.

[62]  Glenn Krasner,et al.  Smalltalk-80: bits of history, words of advice , 1983 .

[63]  David Notkin The relationship between software development environments and the software process , 1988, SDE 3.

[64]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

[65]  David Clark,et al.  Java as a teaching language—opportunities, pitfalls and solutions , 1998, ACSE '98.

[66]  Joseph S. Dumas,et al.  Discovering the way programmers think about new programming environments , 1995, CACM.

[67]  Robert L. Scot Drysdale What should we teach? , 1996, CSUR.

[68]  Bjarne Stroustrup,et al.  The Design and Evolution of C , 1994 .

[69]  Jørgen Lindskov Knudsen,et al.  Teaching Object-Oriented Programming Is More than Teaching Object-Oriented Programming Languages , 1988, ECOOP.

[70]  Peter Grogono,et al.  Issues in the Design of an Object Oriented Programming Language , 1991, Struct. Program..

[71]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[72]  Adele Goldberg Why Smalltalk? , 1995, CACM.

[73]  Pierre America,et al.  A parallel object-oriented language with inheritance and subtyping , 1990, OOPSLA/ECOOP '90.

[74]  Rajiv Tewari,et al.  On object-oriented libraries in the undergraduate curriculum: importance and effectiveness , 1994, SIGCSE '94.

[75]  Paul White,et al.  Teaching Smalltalk as a first programming language , 1991, SIGCSE '91.