Software development projects are an essential component of software engineering courses. They provide the opportunity for students to apply theoretical material and to gain valuable experience in an environment typical of the workplace. These benefits, however, are difficult to realise. We discuss strategies for managing final-year software engineering projects in order to optimise the balance between pedagogy, course administration, and time constraints. In particular, we advocate an “immersion” model for software engineering projects. The immersion model emphasises the commercial realities of software development including activities such as reverse-engineering of existing systems, extensive code re-use, team work, user-interface development, interviews with customers, meetings with management, and oral presentations. Our experiences with the immersion model have been extremely encouraging with significant improvements in the quality of student projects.