Assignment 1

Based on the TerpOffice Software

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.


    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.