This paper describes a two year undergraduate education program in software engineering, This program is designed around the principle of exploratory learning, whereby the students are trained to build knowledge by themselves and actively search for solutions to the problems they experience, In addition to the essential aspects of software engineering: managing complexity of large, changing systems and the ability to work in teams; the program also aims to prepare the students for working ina field of rapidly changing conditions and constraints, This paper describes how these high level goals have been implemented in an actual curriculum, At the core of the program is a set of project courses which are conducted as role playing games in order to simulate the conditions in an industrial environment. Two years worth of students have graduated from the program now, and the paper summarizes the main lessons learned as well as a follow-up survey of experiences from some of the organizations who hired the students.