Course Overview
This course builds a strong foundation in software engineering principles and professional software development practices. It is designed to help students understand how quality software is planned, designed, tested, deployed, and maintained in real academic and industrial environments. Along with core theory, the course emphasizes disciplined thinking, teamwork, structured documentation, and design decisions that lead to reliable systems.
By the end of this course, students will be able to:
- Understand the software development life cycle and its major models
- Elicit, document, and analyze software requirements
- Apply software design principles and modeling techniques
- Evaluate software quality through testing and engineering best practices
- Connect software engineering methods with real-world project and product development
- Build confidence in collaborative development using documentation, reviews, and version control
Why Software Engineering
Software engineering is important because software now supports nearly every major human activity, from transportation and healthcare to banking, education, governance, communication, and research. As systems become larger and more connected, it is no longer enough to simply write code that works for a moment. We need methods that ensure software is reliable, maintainable, secure, scalable, and understandable over time.
Software engineering provides this discipline. It helps learners and professionals think beyond syntax and focus on architecture, quality, collaboration, testing, documentation, evolution, and responsible design. In this sense, software engineering is not just a technical subject; it is the foundation for building digital systems that serve people safely and effectively.
Definitions By Different Authors
- “Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.”
- Software engineering is an engineering discipline that is concerned with all aspects of software production, from early specification to long-term maintenance.
- Software engineering is a layered technology that combines process, methods, and tools to build quality software in a disciplined and measurable way.
- Software engineering is the practical application of scientific knowledge to the creative design and construction of computer programs and the associated documentation required to develop, operate, and maintain them.
- Software engineering is the application of a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software.
Prerequisites
- Basic programming knowledge
- Familiarity with problem solving and algorithms
- Willingness to work in teams and on practical software case studies
- Curiosity to understand how software is engineered beyond writing code
Textbooks
- Primary: “Software Engineering” by Ian Sommerville
- Reference: “The Mythical Man-Month” by Frederick P. Brooks Jr.
- Reference: “Software Engineering: A Practitioner’s Approach” by Roger S. Pressman and Bruce R. Maxim
- Supplementary Reading: Research articles and curated case studies on software quality, requirements, design, and testing