Beruflich Dokumente
Kultur Dokumente
Course Basics
Credit Hours 3
Lecture(s) Nbr of 2 Duration 75 minutes
Lec(s) Per
Week
Recitation/Lab Nbr of None Duration None
(per week) Lec(s) Per
Week
Tutorial (per Nbr of None Duration None
week) Lec(s) Per
Week
Course Distribution
Core No
Elective Yes
Open for MS Computer Science
Student
Category
Close for BS Computer Science (Seniors)
Student
Category
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.
COURSE PREREQUISITE(S)
COURSE 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
Learning Outcomes
Grading Breakup and Policy
Lahore University of Management Sciences
Assignment(s): 10%
Home Work:
Quiz(s): 10%
Class Participation:
Attendance:
Midterm Examination: 25%
Project: 30%
Final Examination: 25%
Examination Detail
Yes/No: Yes
Combine Separate: N/A
Midterm
Duration: 75 minutes
Exam
Preferred Date: N/A
Exam Specifications: Closed book, closed notes
Yes/No: Yes
Final Combine Separate: N/A
Exam Duration: 75 minutes
Exam Specifications: Closed books, closed notes
COURSE OVERVIEW
Recommended Objectives/
Lecture Topics
Readings Application
Introduction to Design
1.
Patterns
2. Strategy Pattern
3. Observer Pattern
4. Decorator Pattern
Factory Method Pattern
5. Abstract Factory
Pattern
6. Singleton Pattern
7. Command Pattern
Adapter Pattern
8.
Faade Pattern
9. Template Method Pattern
Iterator Pattern
10.
Composite Pattern
11. State Pattern
12. Proxy Pattern
Lahore University of Management Sciences
13. Compound Patterns
14. Other Patterns
Patterns in the Real
15.
World
Introduction to
16.
Refactoring
17. Bad smells in code
18. Composing Methods
19. Composing Methods
Moving Features between
20.
Objects
21. Organizing Data
22. Organizing Data
Simplifying Conditional
23.
Expressions
Making Method Calls
24.
Simpler
Making Method Calls
25.
Simpler
Dealing With
26.
Generalization
Dealing With
27.
Generalization
28. Big Refactoring
Textbook(s)/Supplementary Readings
29. Head First
Design Patterns by Freeman et al.
30. Design Patterns:
Elements of Reusable OO Software by GoF
31. Refactoring:
Improving the Design of Existing Code by Martin Fowler
32. Refactoring to
Patterns by Joshua Kerievsky