Over the past year we have changed our CS 1 course from a standard Pascal-based, procedural programming course into one that emphasizes C++ and object-oriented programming (OOP). While our experience to date indicates that this was a good decision for both our students and our department, the decision did not come easy. We struggled long and hard with many, if not most, of the questions and issues that have come to be associated with teaching OOP to undergraduates. This paper recounts our struggles, and presents our responses to the more serious of the pedagogical questions that we considered. In hindsight, many of the reasons we came up with for not using OOP in CS1 are seen to reflect our lack of understanding of the paradigm, our fear of the language, and our past experience teaching Pascal and the procedural paradigm. Furthermore, we believe that our reservations (which appear to be quite common) stemmed from a growing body of misleading OOP folklore that is contrary to our experience and that this paper attempts to dispel.
Statement from Michael Berman:We started using C++ in CS2 in Fall 1993. In Fall 1994 we will start using C++ in our CS 1 class.Our motivation for using C++ came from several directions. First, we use C in advanced courses, and needed a better place in the curriculum to introduce C (or, better, C++). Second, we wanted a language that could fully support implementation of abstract data types and OOP. Third, external forces (employers, MIS department, and a future Engineering School) pointed towards C++.There's no time in CS UCS2 to learn everything about C++, but I don't think you need to. Ideally, the relevant features are covered as they are needed. I am developing a CS2 textbook based on this approach. Introducing features in this way is nearly impossible in C, but is actually easier in C++ because pre-written classes can be used to hide some of the complexity of the language.Statement from Rick Decker:We've been phasing C++ into our curriculum at Hamilton for the past two years and expect to complete the transition in two more years. We assume, with what we think are very good reasons, that object-oriented programming is the appropriate paradigm for CS 1 and CS 2, and hence forms a thread that will eventually run throughout our entire curriculum. For this to take place, we have essentially inverted the order of topics in the first two courses. We' ve been preaching strategic programming for years and it's time to start practicing what we've been preaching. There's no paradigm shift if one has no paradigm to shift from. How do you fit it all in? You don't, that's how. There's time enough for algorithms later. In the first part of the CS1-2 sequence, we concentrate our attention on good design principles, and 00P is perfect for that.Why C++? We decided to use C++ as the vehicle for 00P because we felt that the shortcomings of the language were outweighed by the benefits to be gained by its adoption. C++ is like your distant cousin Bubba. He's fat, sloppy, and has a serious attitude problem. However, everybody loves him and he's the Charlie Daniels of the torque wrench if you need to get your car fixed. We underestimated the difficulties inherent in providing an accessible introduction to C++, In spite of our pedagogical 383
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
hi@scite.ai
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.