This course introduces established practices for engineering large-scale software systems. Emphasis is placed on both the technical and managerial aspects of software engineering, and the software development process. This includes techniques for requirements elicitation, analysis, design, testing, and project management. The course emphasizes object-oriented development with the Unified Modeling Language (UML). Hands-on experience is provided through individual homework problems and a group project