Sie sind auf Seite 1von 2

GC UNIVERSITY LAHORE

Department of Computer Science

Program'' MSCS'
Course'Title'' Design'Patterns'&'Refactoring'
Course'Duration'' One'Semester'(16'weeks'of'study)'
Credit'Hours' 03'
Prerequisite' 1. Familiarity with an object-oriented
programming language such as Java, C#
or C++
2. Familiarity with object-oriented design
in general
Course'Proposed'By' Awais'Qasim'

Course Description:
A primary goal of object oriented programming is to create software that is easy to modify and
extend. In this course we will look at two complementary paradigms targeted to achieve this goal. In
the first part of the course, we explore advanced principles of object-oriented design by studying key
software design patterns. Design patterns are standard solutions to common software design
problems. Instead of focusing on how individual components work, design patterns are a systematic
approach that focus and describe abstract systems of interaction between classes, objects, and
communication flow. In the second part of this course, we will take an in-depth look at software
refactoring and how it is used to improve the design of software and minimize the amount of code
produced. A range of refactoring techniques to root out and identify poorly structured code will be
covered. We will also discuss the code smells that indicate that code rot is occurring. Once we've
detected the code rot, we apply object oriented principles to refactor the code and eliminate the
problem.

Course Goals and Objectives:


Goal 1. Commonly used Design Patterns
Objective1. Introduction to Design Patterns.
Objective2. Strategy Pattern.
Objective3. Observer Pattern.
Objective4. Decorator Pattern.
Objective5. Factory Method Pattern.
Objective6. Abstract Factory Pattern.
Objective7. Singleton Pattern.

Goal 2. Advanced Design Patterns


Objective1. Abstract Factory Pattern.
Objective2. Singleton Pattern.
Objective3. Command Pattern.
Objective4. Adapter Pattern Faade Pattern.
Objective5. Template Method Pattern.
Objective6. Iterator Pattern Composite Pattern.
Objective7. State Pattern.
Objective8. Proxy Pattern.

Goal 3. Critical discussion about design pattern

1|Page
GC UNIVERSITY LAHORE
Department of Computer Science

Objective1. Compound Patterns.


Objective2. Other Patterns.
Objective3. Patterns in the Real World.

Goal 4. Basic refactoring techniques


Objective1. Introduction to Refactoring.
Objective2. Bad smells in code.
Objective3. Composing Methods.
Objective4. Moving Features between Objects.

Goal 5. Advanced refactoring techniques


Objective1. Organizing Data.
Objective2. Simplifying Conditional Expressions.
Objective3. Making Method Calls Simpler.
Objective4. Dealing With Generalization.
Objective5. Big Refactoring.

General Objectives:
By the end of this course, students will:
Have a deeper knowledge of the principles of object-oriented design
Understand the design patterns that are common in software applications
Understand how these patterns are related to object-oriented design
Use refactoring to facilitate adding new functionality to system
Use refactoring to improve design
Refactor existing applications to make them more maintainable
Recognize when and when not to refactor
Identify and choose the appropriate type of refactoring technique to solve specific problems

Textbook(s):
1. Refactoring: Improving the Design of Existing Code by Martin Fowler. Published by
Addison-Wesley Professional in 1999.
2. Head First Design Patterns by Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates.
Published by O'Reilly in 2004.

Reference Book(s):
1. Refactoring to Patterns by Joshua Kerievsky. Published by Addison Wesley in 2004.
2. Design Patterns: Elements of Reusable OO Software by GoF. Erich Gamma, Richard
Helm, Ralph Johnson, John Vlissides. Published by Pearson Education in 1994.
'

2|Page

Das könnte Ihnen auch gefallen