04-800-AE   Software Engineering Foundations

Location: Africa

Units: 12

Semester Offered: Spring

Course description

This course is an introduction to the software engineering approaches that have shaped the software industry and formed the prevailing standard. It is taught as a combination of lectures and a semester-long group project. The three broad objectives of engineering, teamwork, and solving realistic problems, are introduced to students from different perspectives: system, project, and users. Students develop an understanding of these topics via practical work on their projects and are also tested in quizzes, reports, and presentations. Students should be proficient in at least one modern programming language and be familiar with basic software development and programming concepts. This is NOT a programming course.

Learning objectives

Students will learn to:

  • Iteratively define requirements to solve a problem
  • Architect a solution
  • Design the solution
  • Implement the solution
  • Integrate the solution into an existing(?) framework
  • Test the solution
  • Deploy the solution

Students will work on self-organizing teams and manage the work collaboratively.

Students will also learn to solve a real problem subject to multiple constraints throughout the lifecycle while keeping the stakeholders involved and balancing the underlying engineering tradeoffs.


Upon completing this course, students will be able to:

  • Define and describe the phases of the software engineering lifecycle (requirements, design, implementation, testing, deployment, and maintenance).
  • Explain processes and technology in software development.
  • Apply standard tools used in simple software engineering tasks.
  • Design and implement a (commercial-level?) software engineering project, as a team member.

Content details

  • Software development methods such as agile development
  • Introductory requirements engineering including user stories, requirements gathering, and effort estimation
  • Introductory software architecture
  • Introductory use case modeling
  • System analysis and domain modeling
  • Test-driven implementation




Ahmed Biyabani