Abstract :
An often-cited problem in undergraduate software engineering courses states that some of the topics are difficult to expose in a university setting and, although laboratory work is a useful supplement to the lectures, it is very difficult to make projects realistic and relevant. In recognition of that problem, and based on the shortcomings of our approach in the past, we started preparing a new course by examining the pedagogies and aspects of real world software projects that are relevant for our educational objectives. The course project described in this paper concentrates on a few aspects that can be effectively dealt with within the environment, i.e., the software lifecycle, teamwork, system interdependences, and realistic yet manageable project dynamics and uncertainties. In addition, the workload per students must be fair, such that they can manage with absence of the prerequisites from their knowledge and skills, and their unpreparedness to deal with complex issues. The approach has been tested on six large projects. We believe that the results not only reflect the strong interest and commitment by the students, but also demonstrate their ability to stay focused and work at a level that is well above the obvious.