CSE 432S: Pattern Oriented Software Design and Development

Professor: Chris Gill
Office Hours: Bryan 506 Mon and Wed 3-4pm, or by appointment
Contact Info: phone: (314) 935-7538 e-mail: cdgill@cse.wustl.edu
Newsgroup: Your teaching assistants and professor will also frequently read and respond to postings on the course newsgroup (news://newsreader.wustl.edu/wu.cse.class.432).

Spring 2006

This page is available through: http://classes.cec.wustl.edu/~cse432/
and through: http://www.cse.wustl.edu/~cdgill/courses/cse432/

Take-home Midterm Exam: handed out Monday February 27, due Friday March 10 by 5pm

Take-home Final Exam: handed out Monday April 17, due Monday May 8 by 5pm


Contents

  1. Course Description
  2. Prerequisites
  3. Times and Locations
  4. Assistants
  5. Newsgroup  (Click here to go directly to the newsgroup.)
  6. Presentations and Discussions
  7. Projects
  8. Coding Standards
  9. Textbooks and Other Resources
  10. Grading
  11. Cheating


Course Description

This course will offer an intensive focus on design and implementation of software using design patterns. The course material and assignments will place a particular emphasis on successive refinement based on identification of unresolved issues at each step of the development process, and on application of patterns to guide design and implementation refinement. Design implementations will be conducted in Java and C++ in a team setting, with weekly presentations and critiques of design and implementation decisions and outcomes throughout the course.


Prerequisites


Times and Locations

Presentations and Discussions: Cupples II 217, Monday and Wednesday, 4:00 pm to 5:30 pm


Assistants

The instructor and TAs will read and respond to postings on the course newsgroup (news://newsreader.wustl.edu/wu.cse.class.432).

Please see the CSE Graders page for more information.


Newsgroup

Please submit ALL questions, and concerns of public nature, to the class newsgroup (news://newsreader.wustl.edu/wu.cse.class.432). Please answer other people's questions on the newsgroup!

Please do not e-mail technical questions to the professor or teaching assistants individually: instead, please post on the newsgroup for all to see, consider, and respond.

Please note that the newsgroup is a vital part of your CSE 432 experience. Participation in the newsgroup (i.e., quantity and quality of your posts) will count significantly toward your participation grade.

If you have trouble accessing the newsgroup, please let us know right away!


Presentations and Discussions

The in-class presentations/discussions will emphasize three main activities: discussion of the assigned reading (with a different member of the class leading the discussion each time); team presentations and discussions; and feedback and planning of subsequent activities.

In addition to class meeting dates and themes, page numbers for reading assignments from the required textbooks (Design Patterns a.k.a. "GoF", and Pattern Hatching a.k.a. "PH") are shown for each meeting. Details about the textbooks are listed in the Textbooks section, below.

Date Course Project Stage Assigned Reading Presenting Teams Discussion Leader
Wed,
Jan 18
Course Structure and Syllabus,
Intro to Design Patterns and
Pattern Languages
    Prof. Gill
(slides in ppt)
Mon,
Jan 23
Team Formation and
Project Definition
GoF Preface, Foreword, Chapter 1 through section 1.5 (pp. xi-11)   Genevieve Gurney
(slides in ppt)
Wed,
Jan 25
GoF Chapter 1 sections 1.6-1.8 (pp. 11-31)   Stephen Jewett
(slides in ppt)
Mon,
Jan 30
Requirements I
(grading form and rubric in Word)
GoF Composite Pattern (pp. 163-173)
PH Chapter 1 (pp. 1-11)
PH Chapter 2 through Fundamentals (pp. 13-18)
1 & 2 Joe Barzilai
(slides in ppt)
Wed,
Feb 1
GoF Chapter 2 through section 2.6 (pp.33-58) 3 & 4 Rebecca Miller-Webster
(slides in ppt)
Mon,
Feb 6
High Level Design I
(grading form and rubric in Word)
GoF Chapter 2 sections 2.7-2.9 (pp. 58-77) 2, & 3 Jonathan McDonald
(slides in ppt)
Wed,
Feb 8
PH Chapter 2 Orphans, Adoption, and Surrogates (pp. 18-24)
GoF Singleton Pattern (pp. 127-134)
4 & 1 Emanuel Ekstrom
(slides in ppt)
Mon,
Feb 13
Low Level Design I
(grading form and rubric in Word)
PH Chapter 2 "But Where Do Surrogates Fit into This" (pp. 24-29)
GoF Proxy Pattern (pp. 207-217)
GoF Observer Pattern (pp. 293-299)
3 & 4 Rebecca Chernoff
(slides in ppt)
Wed,
Feb 15
PH Chapter 2 Visiting Rights (pp. 29-38)
GoF Visitor Pattern (pp. 331-344)
1 & 2 Jared Lerner
(slides in ppt)
Mon,
Feb 20
Implementation I
(grading form and rubric in Word)
PH Chapter 2 Single User Protection (pp. 38-45)
GoF Template Method Pattern (pp. 325-330)
GoF Strategy Pattern (pp. 315-323)
4 & 1 Nick Beary
(slides in ppt)
Wed,
Feb 22
PH Chapter 2 Multiser Protection
and Wrapping Up (pp. 45-59)
GoF Mediator Pattern (pp. 273-282)
2 & 3 Matt Brenneke
(slides in ppt)
Mon,
Feb 27

Evaluation I
(grading form and rubric in Word)
(Midterm Project Reports)

Take Home Midterm Exam
and individual and course 360° Review Forms
(Handed Out Mon Feb 27,
Due Fri Mar 10 by 5pm)
  1  
Wed,
Mar 1
GoF Creational Patterns (pp. 81-85)
GoF Abstract Factory Pattern (pp. 87-95)
GoF Builder Pattern (pp. 97-106)
2 Brent Ramerth
(slides in ppt)
Mon,
Mar 6
GoF Structural Patterns (pp. 137-138)
GoF Adapter Pattern (pp. 139-150)
GoF Bridge Pattern (pp. 151-161)
3 Nick Yianilos
(slides in ppt)
Wed,
Mar 8
GoF Behavioral Patterns (pp. 221-222)
GoF Iterator Pattern (pp. 257-271)
GoF Memento Pattern (pp. 283-291)
4 Jerry Hoff
(slides in ppt)
Mon,
Mar 13
Spring Break
Wed,
Mar 15
Mon,
Mar 20
Requirements II
(grading form and rubric in Word)
PH Chapter 3 To Kill a Singleton (pp. 61-72)
GoF Factory Method Pattern (pp. 107-116)
4 & 3 Michael Gardner
(slides in ppt)
Wed,
Mar 22
PH Chapter 3 The Trouble with Observer
and Visitor Revisited (pp. 72-85)
2 & 1 Crystal Miller
(slides in ppt)
Mon,
Mar 27
High Level Design II
(grading form and rubric in Word)
PH Chapter 3 Generation Gap (pp. 85-101) 1 & 4 Todd Anderson
(slides in ppt)
Wed,
Mar 29
PH Chapter 3 Type Laundering (pp. 102-110)
GoF Prototype Pattern (pp. 117-126)
3 & 2 Kunal Chaudhary
(slides in ppt)
Mon,
Apr 3
Low Level Design II
(grading form and rubric in Word)
PH Chapter 3 Thanks for the Memory Leaks
and Pushme-Pullyu (pp. 110-121)
GoF Command Pattern (pp. 233-242)
2 & 1 Prof. Gill
(slides in ppt)
Wed,
Apr 5
PH Chapter 4 (pp. 123-144) 4 & 3 Christopher Swope
& Yuling Liang
(slides in ppt)
Mon,
Apr 10
Implementation II
(grading form and rubric in Word)
PH Chapter 5 (pp. 145-152)
GoF Façade Pattern (pp. 185-193)
3 & 2 John Klacsman
(slides in ppt)
Wed,
Apr 12
GoF Decorator Pattern (pp. 175-184)
GoF Flyweight Pattern (pp. 195-206)
1 & 4 David Franco
(slides in ppt)
Mon,
Apr 17
Evaluation II
(grading form and rubric in Word)
(Final Project Reports)

Take Home Final Exam
and Final Individual 360° Review Form
(Handed Out Mon Apr 17,
Due Mon May 8 by 5pm)

To submit your Final Course Review, please use the Washington University Course Evaluations web page (please submit these by May 3rd)
  4  
Wed,
Apr 19
GoF Chain of Responsibility Pattern (pp. 223-232) 3 Yuyang Chen
(slides in ppt)
Mon,
Apr 24
GoF Interpreter Pattern (pp. 243-255) 2 Garrett Eardley
(slides in ppt)
Wed,
Apr 26
GoF State Pattern (pp. 305-313) 1 Aaron Jacobs
(slides in ppt)
Mon,
May 1
Team Demos and Course Review   1, 2, 3, & 4 Prof. Gill
(slides in ppt)
Mon,
May 8
Take Home Final Exam and 360° Review Forms Due by 5pm


Projects

Each member of the class will be a member of one of 4 roughly same-sized teams (at current enrollment that will mean 5 to 6 people per team).

Project documents and code are to be submitted electronically to the course e-mail account cse432@cec.wustl.edu, and will be graded and returned to you electronically as well. The milestone for each week appears in the course Presentations and Discussions section, and will be due at 11:59pm on that Thursday (after you have given your presentation and received feedback on it, on that Monday or Wednesday). Since the midterm and final evaluation and report sessions will each span two weeks, the milestones for those stages will be due on the second of the two Thursdays.

Project milestones submitted on time will be graded and returned by the following Monday. Project milestones submitted within 24 hours after the posted deadline will be accepted with a 15% penalty up front, and project milestones submitted between 24 and 48 hours after the posted deadline will be accepted with a 30% penalty up front. Project milestones submitted after that will not be graded, except in the case of documented extenuating circumstances.

You may freely discuss your projects with members of your team at any time. You may discuss your projects with other students during class times and on the newsgroup. Midterm and final exams will be completed individually and you may not discuss them with anyone else, except for your professor.

You are encouraged to post and ask for help on particular problems you may encounter during your projects, though each team must design and implement its own own solution, and prepare its own report. If during your project you determine it would be useful to incorporate code or documentation from a source outside your team, you will need to first obtain the professor's permission to use it, and you must then make sure to attribute the source appropriately.


Coding Standards

Many organizations impose coding standards on programmers, and these standards can range from general principles to very specific requirements. In this class, the main guideline is to be consistent and reasonable, including appropriate use of comments and whitespace for readability.

If you'd like to look at a more complete set of coding standards used in a major collaborative (university, government, and industry) development setting, the ACE Software Development Guidelines document, from which a number of the guidelines for this course were drawn, and which the ACE developers use in daily practice, is a good place to start.


Textbooks and Other Resources

Required texts:

We'll use the required textbooks both as references and for reading assignments. The class meeting schedule contains references to reading assignments in the required texts. Please read them before the class meeting, and use the text as a reference in designing and developing your projects.

In addition to the required texts, the following texts may be useful additions to your programming library:


Grading

As a rough guideline for the courses I have taught, 90-100 has historically been an A, 80-89 a B, and so on, though depending on the complete distribution the specific grade division points may vary.

The take-home midterm and final exams will be comprehensive: each will cover the material up to that point in the course. The best way to study for the exams is to keep up with the readings and projects during the semester, and to ask lots of questions in class and on the newsgroup throughout the semester.

Projects 60 %
   Requirements I:  4 %
   High Level Design I:  4 %
   Low Level Design I:  4 %
   Implementation I:  4 %
   Evaluation I:  4 %
   Requirements II:  8 %
   High Level Design II:  8 %
   Low Level Design II:  8 %
   Implementation II:  8 %
   Evaluation II:  8 %
Midterm exam 10 %
Final exam 15 %
Discussion Led   5 %
360° Reviews   5 %
Participation   5 %


Cheating

Cheating is the misrepresentation of someone else's work as your own, or assisting someone else in cheating, and will not be tolerated in this course.

For this course, examples of cheating include but are not limited to:

This is a very serious matter. Anyone found cheating will at a minimum lose points equal to the assigned value for the assignment in question (for example if an assignment were worth 10% of the course grade then -10% of the course grade would be assigned), or possibly receive an F for the course. Further action may be taken in extreme cases, possibly including referral to the School of Engineering and Applied Science's formal academic integrity review process.

Furthermore, our policy is that we will make the final determination on what constitutes cheating. If you suspect that you may be entering an ambiguous situation, it is your responsibility to clarify it before the professor or TAs detect it. If in doubt, please ask.