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 Friday June 12, due 5:30pm Monday June 22 (by the start of class).

Take-home Final Exam: released Thursday July 9, due 11:59pm Sunday July 19.


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
(slides in ppt)
GoF Chapter 2 through section 2.6 (pp.33-58) Dan Sibbernsen
(slides in ppt)
Mon,
June 1
High Level Design I (due Tuesday June 2)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Wednesday June 3)
GoF Chapter 2 sections 2.7-2.9 (pp. 58-77) Matt Deckard
(slides in ppt)
PH Chapter 2 Orphans, Adoption, and Surrogates (pp. 18-24)
GoF Singleton Pattern (pp. 127-134)
Josh Mason
(slides in ppt)
Thu,
June 4
Low Level Design I (due Friday June 5)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Saturday June 6)
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
(slides in ppt)
PH Chapter 2 Visiting Rights (pp. 29-38)
GoF Visitor Pattern (pp. 331-344)
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
(slides in ppt)
PH Chapter 2 Multiser Protection
and Wrapping Up (pp. 45-59)
GoF Mediator Pattern (pp. 273-282)
Billy Bennett
(slides in ppt)
Thu,
June 11

Implementation I (due Sunday June 14)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Monday June 15)

Take Home Midterm Exam
and individual and course 360° Review Forms
(exam and individual review forms due Mon June 22 by 5:30pm)
GoF Creational Patterns (pp. 81-85)
GoF Abstract Factory Pattern (pp. 87-95)
GoF Builder Pattern (pp. 97-106)
Billy Bennett
(slides in ppt)
GoF Structural Patterns (pp. 137-138)
GoF Adapter Pattern (pp. 139-150)
GoF Bridge Pattern (pp. 151-161)
Matt Deckard
(slides in ppt)
Mon,
June 15
Evaluation I (Midterm Project Reports due Wednesday June 17)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Thursday June 18)

GoF Behavioral Patterns (pp. 221-222)
GoF Iterator Pattern (pp. 257-271)
GoF Memento Pattern (pp. 283-291)
Dan Sibbernsen
(slides in ppt)
Thu,
June 18
Requirements II (due Friday June 19)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Saturday June 20)

PH Chapter 3 To Kill a Singleton (pp. 61-72)
GoF Factory Method Pattern (pp. 107-116)
Josh Mason
(slides in ppt)
PH Chapter 3 The Trouble with Observer
and Visitor Revisited (pp. 72-85)
Matt Deckard
(slides in ppt)
Mon,
June 22
High Level Design II (due Tuesday June 23)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Wednesday June 24)

PH Chapter 3 Generation Gap (pp. 85-101) Kurt Rehwinkel
(slides in ppt)
PH Chapter 3 Type Laundering (pp. 102-110)
GoF Prototype Pattern (pp. 117-126)
Billy Bennett
(slides in ppt)
Thu,
June 25
Low Level Design II (due Friday June 26)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Saturday June 27)

PH Chapter 3 Thanks for the Memory Leaks
and Pushme-Pullyu (pp. 110-121)
GoF Command Pattern (pp. 233-242)
Dan Sibbernsen
(slides in ppt)
PH Chapter 4 (pp. 123-144) Chris Gordon
(slides in ppt)
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
(slides in ppt)
GoF Decorator Pattern (pp. 175-184)
GoF Flyweight Pattern (pp. 195-206)
Matt Klein
(slides in ppt)
Thu,
July 2
Implementation II (due Sunday July 5)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Monday July 6)

GoF Interpreter Pattern (pp. 243-255) Julie Betlach
(slides in ppt)
GoF Chain of Responsibility Pattern (pp. 223-232) Matt Klein
(slides in ppt)
Mon,
July 6
Evaluation II (Final Project Reports due Wednesday July 8)
(grading form and rubric in Word)
(self-evaluation in Word: due by noon Thursday July 9)

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

Take Home Final Exam
and Final Individual 360° Review Form
(both due by 11:59pm Sunday July 19)

To submit your Final Course Evaluation, please use the Washington University Course Evaluations web page.
Course Review Prof. Gill
(slides in ppt)
Sun,
July 19
Take Home Final Exam and 360° Review Forms Due by 11:59pm


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.