Public View

You are viewing the public version of the syllabus. If you have a SUNet account, you can view the richer version of the syllabus after logging in.

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

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.
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
Technology Requirements: