Software Engineering (CS 308)

2022 Fall
Faculty of Engineering and Natural Sciences
Computer Sci.& Eng.(CS)
8.00 / 7.00 ECTS (for students admitted in the 2013-14 Academic Year or following years)
Anıl Koyuncu,
Click here to view.
Formal lecture,Laboratory
Interactive,Project based learning,Other
Click here to view.


Software engineering deals with issues that arise in building large programs, typically by a team of programmers. Topics include organizing and designing a programming project, working from specifications top-down decomposition using stepwise refinement, object-oriented design principles, model-based approaches to software engineering, testing, software quality reliability, maintenance, identifying the nature and sources of software costs, coordinating multiple programmers, the design and documentation of user interfaces This course will emphasise team projects to give give students real-life practical experience in building large software systems.


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.


Describe the basics of the software engineering process life cycle.
Identify, formulate, and solve basic software engineering problems, including the requirements gathering, specification, design, architecture, and testing of software systems.
Analyze software engineering artifacts, including the requirements, design, and architecture of software systems.
Design basic object-oriented software systems that meet requirements by applying OO software development principles and design/architectural patterns.
Evaluate the impact of potential solutions to basic software engineering problems.


  Percentage (%)
Final 20
Midterm 20
Exam 10
Group Project 50


Optional Readings

Timothy C. Lethbridge and Robert Laganiere, Object Oriented Software Engineering: Practical Software Development using UML and Java, McGraw Hill, ISBN 0-07-710908-2
Ian Sommerville, Software Engineering, Pearson, ISBN 0-13-394303-8
Frederick P. Brooks, The Mythical Man-Month, Addison Wesley, ISBN 0-201-83585-9
Eric Gamma, Design Patterns: Elements of Reusable Object-Oriented Software, Pearson
Scrum: A Breathtakingly Brief and Agile Introduction, C. Sims and H. L. Johnson, Dymaxicon, ISBN 978-1-937965-04-4
Steve McConnell, Code Complete, Microsoft Press, ISBN 9780735619678