Using simulation in an objects-early approach to CS1 and CS2

Our philosophy is that CS1/CS2 students learn best as apprentices, by studying the work of more experienced program designers and writers and by extending and modifying programs provided by these experienced programmers. Object-oriented programming supports this philosophy well and permits our students to explore a realm of programs not possible using a more traditional \structured" approach. Our approach emphasizes using objects before creating them, reading and modifying programs before designing them. Although our philosophy transcends a particular object-oriented language, we have chosen C++ for our courses; our approach facilitates its use by novices. In this paper we discuss our approach, and suggest simulation as a rich area for case studies, labs, and assignments when employing this objects early approach. We provide details of two simulations we have used in our courses: a simulation of the card game war and a queueing simulation.