Methodology first and language second: a way to teach object-oriented programming

C++ is a very successful object-oriented language. It is a required language for more and more students. It takes great effort and practice for these students to learn how to program in C++ and how to make object-oriented programs. One potential failure is that they have learned programming in C++ but do not know how to program in an object-oriented (OO) style. To avoid such failures, this paper proposes that first an object-oriented methodology is taught, and then the language itself. A six-step approach to teach the OO methodology is presented, followed by some innovative ways to teach different mechanisms in C++. In this way, students can master both object-oriented programming and C++ programming. The proposed teaching method is applicable to teaching other languages like Java and C#.

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

[2]  John Lewis,et al.  Myths about object-orientation and its pedagogy , 2000, SIGCSE '00.

[3]  Bjarne Stroustrup Why C++ is not just an object-oriented programming language , 1995, OOPSLA '95.

[4]  Steven Craig Bilow,et al.  Addendum to the proceedings of the 10th annual conference on Object-oriented programming systems, languages, and applications (Addendum) , 1995, OOPSLA 1995.

[5]  Paul A. Luker,et al.  Never mind the language, what about the paradigm? , 1989, SIGCSE '89.

[6]  Antero Taivalsaari,et al.  On the notion of inheritance , 1996, CSUR.

[7]  Cay S. Horstmann Practical Object-Oriented Development in C++ and Java , 1997 .

[8]  Richard E. Pattis Teaching OOP in C++ using an artificial life framework , 1997, SIGCSE '97.

[9]  Paul A. Luker,et al.  There's more to OOP than syntax! , 1994, SIGCSE '94.

[10]  N. Clement Shammas Moving from Turbo Pascal to Turbo C Plus , 1993 .

[11]  Yun-Tung Lau The Art Of Objects: Object-Oriented Design And Architecture , 2000 .

[12]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[13]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[14]  Fausto Giunchiglia,et al.  A knowledge level software engineering methodology for agent oriented programming , 2001, AGENTS '01.

[15]  W. Mitchell,et al.  A paradigm shift to OOP has occurred…implementation to follow , 2001 .

[16]  James C. McKim Using a multi-term project to teach object oriented programming and design , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[17]  Valery Skylarov The Revolutionary Guide to Turbo C++ with Disk , 1993 .

[18]  Essam M. Arif A methodology for teaching object-oriented programming concepts in an advanced programming course , 2000, SGCS.

[19]  D. J. Bagert,et al.  Teaching programming concepts using an icon-based software design tool , 1999 .

[20]  Amruth N. Kumar Learning the interaction between pointers and scope in C++ , 2001, ITiCSE.

[21]  Derek Rayside,et al.  Aristotle and object-oriented programming: why modern students need traditional logic , 2000, SIGCSE '00.

[22]  J. Mark Pullen,et al.  Teaching C++ in a multi-user virtual environment , 2000, SGCS.

[23]  MengChu Zhou,et al.  Object-oriented design of FMS control software based on object modeling technique diagrams and Petri nets , 1998 .

[24]  Amruth N. Kumar Learning the interaction between pointers and scope in C , 2001 .