Software Engineering
An introduction to fundamental concepts and essential practices in software development, including requirement gathering, design, debugging, testing, and deployment.
This course is designed to prepare students for the practical realities of the industry by focusing on the essential skills required to become effective software engineers. Beyond just writing code, we explore the holistic lifecycle of software creation. We begin by deconstructing the development process and identifying various types of requirements. The curriculum then dives deep into conceptual design, usability, and architectural modeling. Students will also gain proficiency in “developer-centric” tasks such as program comprehension, systematic debugging, and rigorous code reviews. The final phase of the course covers the critical logistics of software testing, deployment, and monitoring, while emphasizing the professional “soft skills” like communication and productivity within large organizations.
Instructors
- Prof. Sridhar Iyer, Interdisciplinary Program in Educational Technology, IIT Bombay
- Dr. Prajish Prasad, Department of Computer Science, FLAME University
Course Schedule & Topics
The course is structured over 12 weeks, moving from initial requirements through design, development, and eventual deployment.
| Week | Primary Focus | Key Topics Covered |
|---|---|---|
| 1 | Development Process | Deconstructing the software development process and lifecycles. |
| 2 | Requirements Engineering | Identifying functional and non-functional software requirements. |
| 3 | Conceptual Design | Software Conceptual Design and high-level planning. |
| 4 | User Experience | Software Usability and human-centric design principles. |
| 5 | Architecture & Modeling | Software Design: Structural modeling and architectural patterns. |
| 6 | Quality & Evaluation | Software Design: Evaluating design quality and effectiveness. |
| 7 | Program Comprehension | Techniques for reading, understanding, and navigating existing codebases. |
| 8 | Debugging | Systematic approaches to program debugging and fault localization. |
| 9 | Quality Assurance | Code Reviewing practices and the importance of technical documentation. |
| 10 | Software Testing | Unit testing, integration testing, and validation strategies. |
| 11 | Deployment & Operations | Software Deployment strategies and post-launch monitoring. |
| 12 | Professional Practice | Communication, productivity, and navigating software organizations. |
Material used
-
Software Engineering: A Precise Approachby Dr. Pankaj Jalote