Instructor
Dr. Michael Sobolewski
Room: CP-310
Email:
sobol@cs.ttu.edu
Office hours: Wednesday 2:00 p.m. to 5:00 p.m. or by appointment
Course
Information
CS-5331-002/156:
Design Patterns Location: CP 110 Time: 1 p.m. -
1:50 p.m., MWF
Course webpage is
http://yucca.cs.ttu.edu/dp/. We
will make extensive use of the class WWW site. You should check the WWW page on
a near daily basis for updates.
Description
A design pattern is a
way of pursue a design intent in terms of classes and their methods in an
object-oriented (OO) language. Design patterns are recurring solutions to
software design problems you find again and again in real-world application
development. Design patterns are about design and interaction of objects, as
well as providing a communication platform concerning elegant, reusable
solutions to commonly encountered programming challenges.
This course
covers metasystemic approach to OO programming and fundamental
23 object-oriented programming patterns - the most useful
class-level patterns. This course uses UML and Java in its examples and
challenges because of UML's standardization as the pattern description language
and of Java's popularity and its future prospects.
By the end
of this course, you will learn metasystemic
approach to OO programming and by working through the challenges in this course,
you will deepen your understanding of the patterns, build confidence in your
ability to recognize these patterns, strengthen your ability to apply these
patterns in your own programs.
Case studies,
challenges, programming projects, and relevant papers support the course.
Learning Outcomes
Ability to:
1. understand add apply component coupling and cohesion in an OO design
2. describe and apply the most useful 23 class-level programming patterns.
3. categorize programming patterns based on design intent as interface,
responsibility, construction, operation. and extension patterns
4. define and investigate a specific design pattern(s) not covered in the
class
5. architect larger framework-based computing systems by applying metasystemic
approach to OO programming
6. analyze and evaluate architectural qualities
7. design and implement pattern-based application by selecting the appropriate
programming patterns
Methods of Assessment of Learning outcomes
a. Research papers on programming patterns not covered in the class
b. Midterm exam
c. Four homework assignments - multiple pattern-based challenges per assignment
d. Pattern-based project or optional final exam
Prerequisites: introductory (undergraduate level) courses in
object-oriented programming, and some familiarity with Java programming will also be
needed.
Textbook:
Design Patterns Java Workbook, Steven John Metsker. Addison-Wesley, 2002
References
OO Design & Patterns,
Cay S. Horstmann,
San Jose State Univ.,
2nd ed., ISBN 0-471-74487-5, Wiley & Sons, 2006
Software Architecture in
Practice, Second Edition, Len Bass, Paul Clements, Rick Kazman,
Addison-Wesley Professional; 2003.
Thinking in Patterns with Java, Bruce Eckel,
Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, ISBN 0201633612, John
Vlissides, Addison-Wesley, 1995
Tentative Topics:
Metasystemic Object Orientation
SW Architectures and OO Paradigm
Elements of Java Platform
OO Design Process
Java Object Model
Coupling and Cohesion |
|
Interface Patterns
Introduction
Adapter
Facade
Composite
Bridge
Responsibility Patterns
Introduction
Singleton
Observer
Mediator
Proxy
Chain of Responsibility
Flyweight
Construction Patterns
Introduction
Builder
Factory Method
Abstract Factory
Prototype
Memento
Operation Patterns
Introduction
Template Pattern
State
Strategy
Command
Interpreter
Extension Patterns
Introduction
Decorator
Iterator
Visitor
Grading
Research paper |
25% |
Midterm Exam |
25% |
Homework
assignments |
20% |
Project/Final Exam |
30% |
Course
Delivery Format/Policies
Student Workload: This is a
combined lecture/discussion/workshop course, falling somewhere
between a traditional lecture-oriented class and a seminar class.
Material will be presented by the instructor, and students are
expected to participate in class discussions. I anticipate there
will be one written assignment, homework assignment fro most modules, a
take-home midterm exam, and a final or project.
Homework Assignments:
For most modules challenge assignments should be submitted by email: cs5331@cs.ttu.edu before the
date on which it is due - one week after a module presentation. For
late submissions there will be a penalty of 10% for lateness. Please work individually on
your assignment.
Please study the assignment specifications, code your programs, and
test them independently. Stop by my office if you have difficulty in
understanding the assignment or the course material discussed in the
class.
Projects: Students should make two
person teams or work individually if it is preferred. Each team must
complete a project on some aspect of design patterns - refactoring
an existing project to pattern-based design is recommended. The project will be
presented with the emphasis on the architecture and design, and demonstrated during the last two classes. All students
must be present for all the presentations/demos. The students will
be graded on the project as well as the quality of the
design and presentations/demos. The presentation should not exceed more than
six viewgraphs and should reflect a clear understanding of the
subject by the student. Please use your critical thinking skills to
be concise and focused on both the project results as well as the
presentations/demos.
Final exam will be open-book/notes, but will be extremely
time-constrained. Material from handouts, textbooks and
reading/assignments will be included in the scope of the exams.
Miscellaneous The purpose of these
different instruments is to have a positive learning experience,
critical thinking about OO design issues, and some sound
grasp of fundamental design patterns. If you feel any of these instruments is not
working for any reason, please send me email and I will consider a
change in the format of delivery. Student-teacher
relationships are based on trust. Acts, which violate this trust,
undermine the educational process. Your classmates and the
instructor will not tolerate violations of academic integrity (see
Statement of
Academic Conduct for Engineering Students, College of Engineering
Texas Tech University). |