This course aims to teach students with the core principles of software design patterns. Students will gain the skills to identify, implement, and utilize common design patterns to enhance software architecture, improve code reusability, and ensure maintainability. Covering creational, structural, and behavioral design patterns, the course offers hands-on experience in developing scalable and efficient software solutions. Through practical exercises and case studies, students will refine their ability to critically assess software design decisions and apply best practices in object-oriented programming.
Course Content
This course contains; Introduction to Software Design Patterns ,Object-Oriented Design Principles ,Classification of Design Patterns,Singleton and Factory Patterns,Abstract Factory and Builder Patterns,Prototype Pattern,Adapter and Bridge Patterns,Composite and Decorator Patterns ,Facade and Proxy Patterns,Strategy and Observer Patterns ,Command and State Patterns,Template Method and Iterator Patterns,Chain of Responsibility and Mediator Patterns,Memento and Visitor Patterns.
Course Learning Outcomes
Teaching Methods
Assessment Methods
Understand Software Design Patterns
12, 2, 9
A, E, F
Identify Appropriate Design Patterns
12, 2, 9
A, E, F
Implement Design Patterns
12, 2, 9
A, E, F
Enhance Software Maintainability and Reusability
12, 2, 9
A, E, F
Evaluate Software Design Decisions
12, 2, 9
A, E, F
Develop Practical Problem-Solving Skills
12, 2, 9
A, E, F
Teaching Methods:
12: Problem Solving Method, 2: Project Based Learning Model, 9: Lecture Method
Assessment Methods:
A: Traditional Written Exam, E: Homework, F: Project Task
Course Outline
Order
Subjects
Preliminary Work
1
Introduction to Software Design Patterns
2
Object-Oriented Design Principles
3
Classification of Design Patterns
4
Singleton and Factory Patterns
5
Abstract Factory and Builder Patterns
6
Prototype Pattern
7
Adapter and Bridge Patterns
8
Composite and Decorator Patterns
9
Facade and Proxy Patterns
10
Strategy and Observer Patterns
11
Command and State Patterns
12
Template Method and Iterator Patterns
13
Chain of Responsibility and Mediator Patterns
14
Memento and Visitor Patterns
Resources
Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 1995; Head First Design Patterns, 2nd Edition, Eric Freeman, Elisabeth Robson, Kathy Sierra, and Bert Bates, 2021
Course Contribution to Program Qualifications
Course Contribution to Program Qualifications
No
Program Qualification
Contribution Level
1
2
3
4
5
1
1. An ability to apply knowledge of mathematics, science, and engineering
2
2. An ability to identify, formulate, and solve engineering problems
3
3. An ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4
4. An ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
5
5. An ability to design and conduct experiments, as well as to analyze and interpret data
6
6. An ability to function on multidisciplinary teams
7
7. An ability to communicate effectively
8
8. A recognition of the need for, and an ability to engage in life-long learning
9
9. An understanding of professional and ethical responsibility
10
10. A knowledge of contemporary issues
11
11. The broad education necessary to understand the impact of engineering solutions in a global, economic, environmental, and societal context
Assessment Methods
Contribution Level
Absolute Evaluation
Rate of Midterm Exam to Success
30
Rate of Final Exam to Success
70
Total
100
ECTS / Workload Table
Activities
Number of
Duration(Hour)
Total Workload(Hour)
Course Hours
0
0
0
Guided Problem Solving
0
0
0
Resolution of Homework Problems and Submission as a Report
0
0
0
Term Project
0
0
0
Presentation of Project / Seminar
0
0
0
Quiz
0
0
0
Midterm Exam
0
0
0
General Exam
0
0
0
Performance Task, Maintenance Plan
0
0
0
Total Workload(Hour)
0
Dersin AKTS Kredisi = Toplam İş Yükü (Saat)/30*=(0/30)
0
ECTS of the course: 30 hours of work is counted as 1 ECTS credit.
Detail Informations of the Course
Course Description
Course
Code
Semester
T+P (Hour)
Credit
ECTS
INTRODUCTION to DESIGN PATTERNS
COE4215966
Spring Semester
3+0
3
6
Course Program
Prerequisites Courses
Recommended Elective Courses
Language of Course
English
Course Level
First Cycle (Bachelor's Degree)
Course Type
Elective
Course Coordinator
Assist.Prof. İbrahim KARLIAĞA
Name of Lecturer(s)
Assist.Prof. İbrahim KARLIAĞA
Assistant(s)
Aim
This course aims to teach students with the core principles of software design patterns. Students will gain the skills to identify, implement, and utilize common design patterns to enhance software architecture, improve code reusability, and ensure maintainability. Covering creational, structural, and behavioral design patterns, the course offers hands-on experience in developing scalable and efficient software solutions. Through practical exercises and case studies, students will refine their ability to critically assess software design decisions and apply best practices in object-oriented programming.
Course Content
This course contains; Introduction to Software Design Patterns ,Object-Oriented Design Principles ,Classification of Design Patterns,Singleton and Factory Patterns,Abstract Factory and Builder Patterns,Prototype Pattern,Adapter and Bridge Patterns,Composite and Decorator Patterns ,Facade and Proxy Patterns,Strategy and Observer Patterns ,Command and State Patterns,Template Method and Iterator Patterns,Chain of Responsibility and Mediator Patterns,Memento and Visitor Patterns.
Course Learning Outcomes
Teaching Methods
Assessment Methods
Understand Software Design Patterns
12, 2, 9
A, E, F
Identify Appropriate Design Patterns
12, 2, 9
A, E, F
Implement Design Patterns
12, 2, 9
A, E, F
Enhance Software Maintainability and Reusability
12, 2, 9
A, E, F
Evaluate Software Design Decisions
12, 2, 9
A, E, F
Develop Practical Problem-Solving Skills
12, 2, 9
A, E, F
Teaching Methods:
12: Problem Solving Method, 2: Project Based Learning Model, 9: Lecture Method
Assessment Methods:
A: Traditional Written Exam, E: Homework, F: Project Task
Course Outline
Order
Subjects
Preliminary Work
1
Introduction to Software Design Patterns
2
Object-Oriented Design Principles
3
Classification of Design Patterns
4
Singleton and Factory Patterns
5
Abstract Factory and Builder Patterns
6
Prototype Pattern
7
Adapter and Bridge Patterns
8
Composite and Decorator Patterns
9
Facade and Proxy Patterns
10
Strategy and Observer Patterns
11
Command and State Patterns
12
Template Method and Iterator Patterns
13
Chain of Responsibility and Mediator Patterns
14
Memento and Visitor Patterns
Resources
Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 1995; Head First Design Patterns, 2nd Edition, Eric Freeman, Elisabeth Robson, Kathy Sierra, and Bert Bates, 2021
Course Contribution to Program Qualifications
Course Contribution to Program Qualifications
No
Program Qualification
Contribution Level
1
2
3
4
5
1
1. An ability to apply knowledge of mathematics, science, and engineering
2
2. An ability to identify, formulate, and solve engineering problems
3
3. An ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4
4. An ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
5
5. An ability to design and conduct experiments, as well as to analyze and interpret data
6
6. An ability to function on multidisciplinary teams
7
7. An ability to communicate effectively
8
8. A recognition of the need for, and an ability to engage in life-long learning
9
9. An understanding of professional and ethical responsibility
10
10. A knowledge of contemporary issues
11
11. The broad education necessary to understand the impact of engineering solutions in a global, economic, environmental, and societal context