Syllabus Application
Software Engineering
CS 308
Faculty:
Faculty of Engineering and Natural Sciences
Semester:
Fall 2025-2026
Course:
Software Engineering - CS 308
Classroom:
UC-G030
Level of course:
Undergraduate
Course Credits:
SU Credit:4.000, ECTS:7, Engineering:7
Prerequisites:
CS 204
Corequisites:
CS 308L
Course Type:
Lecture
Instructor(s) Information
Mohammad Yusaf Azimi
- Email: yusaf.azimi@sabanciuniv.edu
Course Information
Catalog Course Description
This course covers the following fundamental topics in software engineering: software and software engineering, software development processes, agile development, requirements engineering, object-oriented software modeling, object-oriented software design, software design patterns, software architecture, and software quality assurance. The application of the theoretical knowledge gained in the lectures, is achieved by carrying out large-scale software engineering projects in teams.
Course Learning Outcomes:
| 1. | Describe the basics of the software engineering process life cycle. |
|---|---|
| 2. | Identify, formulate, and solve basic software engineering problems, including the requirements gathering, specification, design, architecture, and testing of software systems. |
| 3. | Analyze software engineering artifacts, including the requirements, design, and architecture of software systems. |
| 4. | Design basic object-oriented software systems that meet requirements by applying OO software development principles and design/architectural patterns. |
| 5. | Evaluate the impact of potential solutions to basic software engineering problems. |
Course Objective
To introduce the basics of the software engineering process life cycle, including requirements gathering, specification, and testing.
To introduce the principles of object-oriented (OO) analysis and design, as well as software architecture, through OO principles and design/architectural patterns.
To introduce the basics of UML (Unified Modeling Language) ? a way of expressing requirements and design in software engineering.
To practice the application of object-oriented software development principles through a team project.
To develop teamwork and communication skills through a team project.
To introduce the principles of object-oriented (OO) analysis and design, as well as software architecture, through OO principles and design/architectural patterns.
To introduce the basics of UML (Unified Modeling Language) ? a way of expressing requirements and design in software engineering.
To practice the application of object-oriented software development principles through a team project.
To develop teamwork and communication skills through a team project.
Sustainable Development Goals (SDGs) Related to This Course:
| Decent Work and Economic Growth | |
| Industry, Innovation and Infrastructure |
Course Materials
Resources:
• Object-Oriented Software Engineering: Practical Software Development using UML and Java, Timothy C.
Lethbridge and Robert Laganiere, McGraw Hill, ISBN 0-07-710908-2
• Software Engineering, Ian Sommerville, Pearson, ISBN 0-13-394303-8
• The Mythical Man-Month, Frederick P. Brooks, ISBN 0-201-83585-9
• Design Patterns, Eric Gamma et. al., Pearson, ISBN 0-201-63361-2
• Scrum: A Breathtakingly Brief and Agile Introduction, C. Sims & H. L. Johnson, Dymaxion Press, ISBN 978-1-
937965-04-4
• Code Complete, Steve McConnell, Microsoft Press, ISBN 9780735619678
Lethbridge and Robert Laganiere, McGraw Hill, ISBN 0-07-710908-2
• Software Engineering, Ian Sommerville, Pearson, ISBN 0-13-394303-8
• The Mythical Man-Month, Frederick P. Brooks, ISBN 0-201-83585-9
• Design Patterns, Eric Gamma et. al., Pearson, ISBN 0-201-63361-2
• Scrum: A Breathtakingly Brief and Agile Introduction, C. Sims & H. L. Johnson, Dymaxion Press, ISBN 978-1-
937965-04-4
• Code Complete, Steve McConnell, Microsoft Press, ISBN 9780735619678