In order to better prepare students for professional practice, we have created a software engineering curriculum that provides an end-to-end perspective that begins with the business context of software, and goes all the way to the ongoing management of software services after deployment. This paper examines how the theoretical aspects of this broad-based curriculum may be effectively delivered through a single course within a traditional computer science program. This curriculum is under a diverse set of constraints and requirements, such as the need for pedagogical consistency, faculty development, consideration of the learning style of computer science students, and a need for an effective continuous improvement process. Our approach uses "engineeringoriented" analysis frameworks such as Porter's Five Forces model for the business aspects, and attributedriven design for software architectures, an "inverted" classroom mode of teaching where lectures are delivered on line with interactions and exercises that promote active learning reserved for the classroom, case studies developed from real projects to serve as concrete examples, open discussion boards and weekly short quizzes for concept refinement and retention, and a paper-based project where students apply the concepts learned. Faculty development and replication outside the current site are also discussed.