This course is an introduction to the discipline of software engineering. Each part of the software lifecycle is examined. The principles of software engineering are introduced, and their impact on language design and the software development process is examined. Tools suitable for supporting the various life cycle phases are introduced. Emphasis is placed on developing high-quality software as opposed to developing software quickly. Topics include requirements analysis, project planning, preliminary and detailed designs, reviews, integration strategies, testing strategies, metrics and documentation. The course includes participation in a group project. Each project team assigns roles to team members in order to apply software engineering processes to develop and deliver a software product. Technical writing guidelines and techniques will be introduced. Course requirements include written assignments and oral presentations. Prerequisite: COSC 201 or permission of the instructor.