CSE 432S/533S: Pattern Oriented Software Design and Development

Professor: Chris Gill
Office Hours: by appointment
Contact Info: phone: (314) 935-7538 e-mail: cdgill@cse.wustl.edu
Message board: your professor will also frequently read and respond to postings on the course message board (Click here to go directly to the CSE 432/533 message board).

Summer 2009

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

The Spring 2006 CSE 432 page is available through: http://www.cse.wustl.edu/~cdgill/courses/cse432_sp06/

Take-home Midterm Exam: released Thursday June 11, due 5:30pm Thursday June 18 (by the start of class).

Take-home Final Exam: released Thursday July 9, due 5:30pm Thursday July 16.


Contents

  1. Course Description
  2. Prerequisites
  3. Times and Locations
  4. Course message board   (Click here to go directly to the CSE 432/533 message board).
  5. Presentations and Discussions
  6. Projects
  7. Coding Standards
  8. Textbooks and Other Resources
  9. Grading
  10. Cheating


Course Description

This course will offer an intensive focus on the 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, C++ or other industrial strength languages in a team setting, with regular presentations and critiques of design and implementation decisions and outcomes throughout the course.

All students will be evaluated on the midterm and final examinations, their contributions to the team project at each milestone, and on leading an in-class presentation and discussion on one of the assigned reading topics. Students enrolled in the course as CSE 533S will be required to submit individual critiques (but not grading scores) of their team's submission at each milestone, and to lead a total of 3 in-clas presentation/discussion sessions, all of which will be evaluated in determining their grade.


Prerequisites


Times and Locations

Presentations and Discussions: Lopata 201, Monday and Thursday, 5:30 pm to 8:30 pm


Message Board

Please submit ALL questions, and concerns of public nature, to the class message board (http://classes.engineering.wustl.edu/cse533/bb/). Please answer other people's questions on the message board!

Your professor will read and respond to postings on the course message board (http://classes.engineering.wustl.edu/cse533/bb/).

Please do not e-mail technical questions to the professor directly: instead, please post on the message board for all to see, consider, and respond.

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

If you have trouble accessing the message board, 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 Discussion Leaders
Mon,
May 18
Course Structure and Syllabus,
Intro to Design Patterns and
Pattern Languages
  Prof. Gill
(slides in ppt)
Thu,
May 21
Team Formation and
Project Definition
GoF Preface, Foreword, Chapter 1 through section 1.8 (pp. xi-11) Prof. Gill
(slides in ppt)
Mon,
May 25
Memorial Day (no meeting)
Thu,
May 28
Requirements I (due Friday May 29)
(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)
Julie Betlach
GoF Chapter 2 through section 2.6 (pp.33-58) Dan Sibbernsen
Mon,
June 1
High Level Design I (due Tuesday June 2)
GoF Chapter 2 sections 2.7-2.9 (pp. 58-77) Matt Deckard
PH Chapter 2 Orphans, Adoption, and Surrogates (pp. 18-24)
GoF Singleton Pattern (pp. 127-134)
Josh Mason
Thu,
June 4
Low Level Design I (due Friday June 5)
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)
Kurt Rehwinkel
PH Chapter 2 Visiting Rights (pp. 29-38)
GoF Visitor Pattern (pp. 331-344)
Kurt Rehwinkel
Mon,
June 8
Implementation I status update and discussion (nothing due) PH Chapter 2 Single User Protection (pp. 38-45)
GoF Template Method Pattern (pp. 325-330)
GoF Strategy Pattern (pp. 315-323)
Julie Betlach
PH Chapter 2 Multiser Protection
and Wrapping Up (pp. 45-59)
GoF Mediator Pattern (pp. 273-282)
Billy Bennett
Thu,
June 11

Implementation I
(due Friday June 12)

Take Home Midterm Exam
and individual and course 360° Review Forms released
(both due Thu June 18 by 5:30pm)
GoF Creational Patterns (pp. 81-85)
GoF Abstract Factory Pattern (pp. 87-95)
GoF Builder Pattern (pp. 97-106)
Billy Bennett
GoF Structural Patterns (pp. 137-138)
GoF Adapter Pattern (pp. 139-150)
GoF Bridge Pattern (pp. 151-161)
Matt Deckard
Mon,
June 15
Evaluation I
(due Tuesday June 16)
GoF Behavioral Patterns (pp. 221-222)
GoF Iterator Pattern (pp. 257-271)
GoF Memento Pattern (pp. 283-291)
Dan Sibbernsen
Thu,
June 18
Requirements II (due Friday June 19)
PH Chapter 3 To Kill a Singleton (pp. 61-72)
GoF Factory Method Pattern (pp. 107-116)
Josh Mason
PH Chapter 3 The Trouble with Observer
and Visitor Revisited (pp. 72-85)
Matt Deckard
Mon,
June 22
High Level Design II (due Tuesday June 23)
PH Chapter 3 Generation Gap (pp. 85-101) Kurt Rehwinkel
PH Chapter 3 Type Laundering (pp. 102-110)
GoF Prototype Pattern (pp. 117-126)
Billy Bennett
Thu,
June 25
Low Level Design II (due Friday June 26)
PH Chapter 3 Thanks for the Memory Leaks
and Pushme-Pullyu (pp. 110-121)
GoF Command Pattern (pp. 233-242)
Dan Sibbernsen
PH Chapter 4 (pp. 123-144) Chris Gordon
Mon,
June 29
Implementation II status update and discussion (nothing due) PH Chapter 5 (pp. 145-152)
GoF Façade Pattern (pp. 185-193)
Josh Mason
GoF Decorator Pattern (pp. 175-184)
GoF Flyweight Pattern (pp. 195-206)
Matt Klein
Thu,
July 2
Implementation II (due Friday July 3)
GoF Interpreter Pattern (pp. 243-255) Julie Betlach
GoF Chain of Responsibility Pattern (pp. 223-232) Matt Klein
Mon,
July 6
Evaluation II
(Final Project Reports)

GoF State Pattern (pp. 305-313) Matt Klein
Thu,
July 9
Team Demos

Take Home Final Exam
and Final Individual 360° Review Form released
(both due by 5:30pm Thursday July 16)

Course Review Prof. Gill
Thu,
July 16
Take Home Final Exam and 360° Review Forms Due by 5:30pm


Projects

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

Project documents and code are to be submitted electronically to the professor via e-mail: cdgill@cse.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 your document for that milestone will be due at 11:59pm on the day after your team's in-class presentation and discussion on that milestone (for example, for the Requirements I milestone the submission deadline is 11:59pm Friday may 29).

Please make sure to submit work on time - especially during the compressed summer schedule, working steadily to complete assignments and to incorporate feedback in a timely manner, is essential to steady progress in the course. Project milestones submitted on time will be graded and returned within 24 hours after submision, and late submissions will be graded and returned within 48 hours after submission. 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 project with members of your team at any time, though students enrolled in the course as CSE 533S should complete their own project self-evaluations (using the provided grading form) for each milestone in their own words and based on their own opinions. You may also discuss your project with other students not on your team, but please make sure that relevant content of those discussions is made available to everyone during class times and/or on the course message board. Midterm and final exams must be completed individually and without assistance: 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 while developing content for a project milestone or an in-class presentation you determine it would be useful to incorporate ideas, code, documentation, or other content from another existing source, 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 course message board throughout the semester.

Project milestones (for 533S graded 75:25 by document:critique scores) 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(s) 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 we detect it. If in doubt, please ask.