Skip to Main Content
There is a tradition in introductory computer science courses of assigning homework problems on a variety of topics. The authors suggest that this is not the best way to reach the oft-stated goal of teaching students to become good problem solvers. Indeed, the experience of the average student will probably convince the student that important lessons on topics like encapsulation code reuse, and organization of a solution (through pseudo code, flowcharts, etc.), are irrelevant at best, and quite possibly wasteful. Each assignment is self-contained and, at least in the eye of the student, instantly forgettable. The authors propose that even at an introductory level, connecting assignments into semester-long project has many benefits. This approach makes it easier to introduce concepts one wants students to learn, especially, but not exclusively, with the movement towards teaching object-oriented programming in the first programming course. Students are forced by the assignments to write modular code and encouraged to reuse code (from earlier assignments as well as from standard libraries). The relatively large size and modular nature of the overall program naturally leads to thinking about the problem in a more abstract way. At the same time, this approach should increase interest on the part of the students so that they should be paying attention when presented with important concepts. For their part, instructors are more or less constrained by the format to write assignments that support their own goals. The authors present the case for a project-based approach and report their experience using this approach in the fall semester of 1998, especially as compared with their experiences with the traditional approach. They include comments from students, both those who took the course with the project-based approach and those who took the course with the traditional approach. They note potential problems and explain how they have tried to handle them.