Applied Java Design Patterns
Fall 2008

knownspace logo
KnownSpace alumni


There will be no midterm and no final. The first few weeks will be devoted to:

  • two to three one-week design or refactoring assignments,
  • one to two two-week design and programming assignments,
  • one to two weeks of design and planning for your project(s).

The last month (or more, depending on how it goes) will be devoted to:
  • one large design and programming project, including codebase integration, demoing, documentation, and project presentations.

Students will be paired to design, program, document, and present assignments and projects. Assignments will be evaluated by me and by the class itself via anonymous peer review. Each student will also be required to evaluate their pair partners. Overall assignment grades for each student will be a function of his or her performance with each of the partners worked with and with the overall quality of the work that student's various pairs have accomplished.

Course grade will be allocated as follows:

  • 25% for assignments,
  • 25% for presentations,
  • 50% for projects, allocated as follows:
    • 50% for proper use of patterns and for component correctness (that is, compliance with the team's previously approved specification);
    • 25% for clarity and completeness of the specification and documentation, as depicted in presentations and design documents;
    • 25% for the overall success of the course project (not just the team's component; you will not be working on some mickey mouse independent projects, all components must tie together).

The projects in this course will likely be parts of an interface builder, Fluency (other, but much lower probability, possibilities: KnownSpace Symphony, a peer-to-peer distributed programming environment, and its mailer, Helium. All 3 subprojects are part of the KnownSpace Project). It is hopeless to learn design patterns and modern programming without a lot of practice on something large. The project will require initiative, motivation, and energy. Each team will eventually be asked to work in a different technical area on its own (no special background in these areas is required; students will learn on the job). Moreover, the course project as a whole depends on the timely completion, interoperability, and correctness of each team's component project.

Students are STRONGLY ENCOURAGED to steal ideas from the web, books, each other, a magic 8-ball, or any other source to get the job done---as long as they give PROMINENT credit to the original source of any significant contribution in their team's design document (that is, not buried deep in some method or class).

Head First Design Patterns Eric Freeman, Elisabeth Freeman