Assignment 1
This assignment will be partitioned into very small sub-assignments
with tight deadlines to help the students manage their time effectively
throughout the semester.
Assignment 1.1: Due date: Feb. 4, 2007: Install TerpOffice
Version 5.0. Use TerpPaint to create a simple picture, TerpSpreadSheet
to create a simple spreadsheet, and TerpPresent to create a simple
slide. E-mail these three files to the class TA. SUBJECT of the e-mail
should be "CMSC 433 -- Assignment 1.1". (5% of Assignment 1 grade.)
Assignment 1.2: Due date: Mar. 7, 2007: Please look at this tutorial. Use the tool to obtain the UML hierarchy for the
three TerpOffice Version 5.0 applications. Write a report discussing
at least 10 problems with the architecture of these applications and
possible remedies. Hand-deliver and discuss this report with your
instructor (during regular office hours or by appointment). Finally,
e-mail a corrected final copy of the report to the class TA. SUBJECT of
the e-mail should be "CMSC 433 -- Assignment 1.2". (15% of Assignment
1 grade.)
Assignment 1.3: Due date: May 1, 2007: Examine the code and
UML hierarchy of the TerpOffice applications. Use your knowledge of the
design patterns discussed in class to suggest changes to the TerpOffice
code. Specifically, focus on a subset of the problems that you reported
in Assignment 1.2 and explain eight ways in which design patterns might
help solve these problems; remember that a given problem may be solved
in a number of ways using different design patterns. Submit a detailed
report and (if needed) modified hand-drawn UML hierarchy. E-mail the
report to the class TA. SUBJECT of the e-mail should be "CMSC 433 --
Assignment 1.3". (80% of Assignment 1 grade.) Points will be awarded for
solutions that are different from those submitted by other students in
your class; it is in your interest to work independently this time.
Description
One of the goals of this course is to better understand the
Object-Oriented Programming (OOP) paradigm. We will use TerpOffice (an
office productivity suite), written in the Java programming language,
to gain hands-on experience with OOP concepts and technologies.