Software Engineering (CS 308)

2021 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,
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



Timothy C. Lethbridge and Robert Laganiere, Object Oriented Software Engineering: Practical Software Development Using UML and Java (2nd Edition), McGraw-Hill.

Note that the textbook is just for a reference; the course material significantly deviates from the textbook!

Optional Readings

Frederick P. Brooks, The Mythical Man-Month, Addison Wesley
Eric Gamma, Design Patterns: Elements of Reusable Object-Oriented Software, Pearson
Steve McConnell, Code Complete (2nd Edition), Microsoft Press
Ian Sommerville, Software Engineering (9th Edition), Pearson