SE-2811 Software Component Design
Winter 2016-2017

Dr. Mark L. Hornick


Description     Syllabus     Policies     Quizzes/Homework     Grading


Revision History

 Links removed for all labs after Christmas - modifications in progress will be completed after Christmas break.

This page was last updated on 02/10/2017.

Class Schedule

Lectures are on Monday, Thursday, and Friday in L100 from 9:00am to 9:50am.

Labs are on Wednesday in L014 from 8:00am to 9:50am.

Email me when you foresee yourself to be absent. As stated in my general course policies, attendance is mandatory for all lectures and labs.  Be sure to read the entire document for all relevant policies that apply to this course.

Course Description

This course deals with the design and implementation of software subsystems. The concept of design patterns is introduced and common patterns are applied to the development of software components. Laboratory projects provide an opportunity for teams of students to implement components and to integrate them into complete systems.

Please consult the this page for detailed learning objectives you can use as a study guide.

Textbook

Head First Design Patterns, Freeman et al, O'Reilly, 2004.

Syllabus

Week Day Topic Reading Lab
1 M Course Introduction

OO review: Interfaces, Abstract classes, Concrete classes

SE2030 UML Review: (inheritance, realization, composition, usage, aggregation, roles, multiplicity)
 

pp 1-35











wikipedia article on coupling. Also follow the link to the wiki article on cohesion
Inheritance
Th Inheritance issues
State inheritance, Behavioral inheritance
F Extension vs. Encapsulation:
The Strategy Pattern

Sample Code: ComparisonStrategies.zip
2 M

Design Patterns explained
Coupling and Cohesion





Sun Tech Article:
Threads in Swing
Note: The above article has been updated in the link below; however, the original article contains a better statement of the "single thread rule" which is still valid.
Concurrency in Swing

Sample code:
multithreading.zip

Quiz 1

Implementing the Strategy Pattern in a File Encrypter

due by end of lab

Th Multithreading in-depth
F no class (Rockwell-Collins tour)
3 M Multithreading continued:
Thread Synchronization
Tech Article: Thread Synchronization

Sample Code:
ThreadSyncDemoApp.java

Prep reading: Object Locking

Thread-safe collections

due by end of lab

Th Quiz 2: Multithreading

Singleton Pattern

Read: Singleton Garbage Collection

F Singleton, continued
4-1 M Thread safety in the Singleton pattern pp 169-189

Sample Singleton Code:
EventLoggerDemoApp.zip

Singleton Event Logger

due by end of lab

Th No Class - Christmas break
F No Class - Christmas break
Christmas Break
4-2 M No Class - Christmas break



pp 37-77

Sample code:
WeatherStation.zip

UML class diagram:
WeatherStation-v0.jpg

WeatherStation-v1.jpg

No Lab - Christmas break
Th

Observer Pattern

F

Quiz 3: Singletons

Observer Pattern continued

Posting events from a worker thread to the UI thread

5 M

Observer push model

Sun Tech article:
Invoking methods on the Event Dispatch Thread

 

Bus Observer, Part 1 (team design)

designs due by end of lab

Th

Java Observer interface, Observable class

Review for Exam

F Midterm Exam
6 M Decorator Pattern

pp 79-107 (decorator)
Sample Code:
IceCream.zip

Bus Observer, Part 2
(team implementation)

demo due by end of lab

Th Decorator Pattern continued

Decorators in Java I/O
Encryption using a Decorator
Sample code
IODecorators.zip
F

Composite Pattern

Sample code:
ComputerBuilder.zip
7 M Composite Pattern continued:
Swing Containment classes

Introduction to the Team Project

Team Assignments

Sample code:
SwingCompsitesDemoApp.zip

pp 317-344 (skim)

pp 345-377

Sample Code: CommandApp.zip
pp 191-233

Decorator-based Encryption

due by end of lab

Th

Command Pattern

F

Command Pattern - Worker threads

8 M Quiz 4: Observer
Command Pattern - Undo support

Sample Code: (Factory Pattern progression): CurrencyFactory.zip
pp 109-167

Command-based WordSearch, Part 1

due by end of lab

Th Factory Patterns:
The Factory Method pattern
F

Factory Patterns continued:
The Abstract Factory pattern

Project Plan due in Bitbucket

9 M Quiz 5: Decorator

Factory Patterns continued:
Instantiation without "new"





Sample Code:
Visitors.zip
pp 628-629

WordSearch, Part 2

due by end of lab
Th Visitor Pattern
access to private data
F

Quiz 6: Command

Anti Patterns

10 M

Project Presentations
1: Interpreter (Douglas, Murphy)
2: TemplateMethod (Christie, Doro)

 


Project Presentations beginning at 8:30am
3: ChainOfResponsibility (Abbeduto, Wasilewski)
4: Flyweight (Andersen, Griggs, Walters)
5: Memento (Richardson, Searle)

Any late work is due by 11pm Friday, per course policies.

Th Project Presentations
6: Prototype (Fontaine, Roth)
7: State (Eidson, Lovell, Sheets)
 
F

Summary

Class Climate

 

Final Exam info

Course Outcomes

11

Final Exam
Tuesday, Feb 21, 2017
11:00am - 1:00pm
L100

Course policies

My general course policies apply to this course.

Quizzes and labs

Quizzes and labs will be given or assigned each week.

You are encouraged to work with your classmates on labs, so that you can more fully understand the problem and discuss approaches to solution. However, you should work out the solutions to assignments individually.

Quizzes will be given weekly. No quiz will be given the week of the Exams. No make-up quizzes will be given in case of absences from class.

Grading algorithm

Note that this algorithm indicates how a grade will be determined for students who have successfully demonstrated mastery of the course objectives. An acceptable level of success in meeting all course objectives is a prerequisite for a passing grade in the course.

Criterion Weight
Labs 30%
Quizzes 25%
Midterm Exam 15%
Team Project 10%
Final Exam 20%

Documentation Standard

All source code submitted must use JavaDoc commenting conventions and meet the minimum documentation standards outlined below.

.