You will be exposed to fundamental disciplines of software engineering as well as engineering practices that crosscut system, project, and user perspectives. You will learn to iteratively define requirements, and architect, design, implement, integrate, test, and deploy a solution. You will work on self-organizing teams and manage the work collaboratively. You will also learn to solve a real problem subject to multiple constraints while keeping the stakeholders involved throughout the lifecycle and balancing the underlying engineering tradeoffs. The topics are applied in the context of a semester-long group project.
Corequisites: 18-658
Prerequisites: Basic software development experiencewith proficiency in at least one modern programming language and modernprogramming concepts. Prior to admission, students must successful complete aprogramming assignment to demonstrate familiarity with required softwaretechnologies.