Lab Assignment 7
CSC 220
Posted: April 7, 2005
Due: April 11, 2005
DO NOT IMMEDIATELY ATTEMPT TO PRINT THIS OUT. YOU WILL SWAMP THE PRINTERS AND
WASTE PRECIOUS LAB TIME. YOU MAY OPEN MORE THAN ONE WINDOW! KEEP THIS PAGE OPEN
WHILE YOU WORK.
THE NO PROGRAMMING LAB!
The Task:
Build a medium sized, complete program of your own design in groups of two to
four. You will implement this project as an application or an applet.
The purpose of this lab is to :
-
give you experience putting a whole application/applet together as a group,
-
give you practice with the many Java constructs introduced so far,
-
give you practice in GUI and File I/O techniques to be introduced in the coming
month,
-
give you a sense for what it means to develop a project over the course of a
month,
-
give you a sense for the difference between design goals and implementation
realities.
Background and the basics
This is the first part of a three part lab. It is intended to guide you through
design, implementation, testing and documentation of an interactive,
stand-alone program. The complete project is due Tuesday, May
3, right
your final exam, however you will be asked to
submit components of the project in three installments:
-
Lab 7: Design (due April 11)
-
Lab 8: Initial implementation - prototype testing (due April 21)
-
Lab 9: GUI integration and testing (due May 3)
-
You may NOT
do this lab on your own. You are required to work on this lab with at most
three other people.
Lab 7: Design
By the end of the week you should choose one of the following projects. You have
some freedom in enhancing the design. At this stage you may not believe you
have the skills to complete the project, however, each project suggested should
not require programming concepts beyond what has been presented. Because of the
way the project is laid out you can get full credit for either the underlying
program or the GUI, even if the other part doesn't run properly. In other
words, there is an inherent safety net in the project. However. You must
keep up with the project on a weekly basis. You cannot possibly put this
together in a few short days at the end of the semester. The critical component
is a realistic design. Spend time there and the rest of the project should fall
into place quite easily.
Choose one of the projects listed below. By Monday, April 11,
get approval for the basic idea of your project from your instructor..
The report due Monday should be the result of the following analysis
process.
-
Describe your problem in detail. Explain what you want to happen in as much
detail as you can.
-
Using the Software Development method flesh out as much of the project as you
possibly can up to, but not including implementation. Identify data and
methods, classes, how classes will interact. You will need arrays of objects.
Identify what these are.
-
Given your experience using computers, think about the GUI interface you will
need. How will a user interact with your program? Obviously you do not yet know
how to identify appropriate objects, but sketch out what should happen.
Articulate questions that you have. What Java techniques and general
programming skills do YOU
think you need to complete the GUI, or for that matter the underlying project.
-
Each project below assumes a "session" occurs in which a user (or users)
interacts with your program. Optional : some data needs to be stored between
sessions. Identify what you think that data is, and describe how you think you
might be able to save and retrieve that data.
The Projects (choose ONE!)
-
A graphic design tool.
This program allows a user to create simple drawings using predefined figures
as well as simple line drawings. You might want to think about saving drawings
to a file and reloading them later.
-
A non-real-time game.
A real time game is a video game in which the action proceeds regardless of the
human interaction. A non-real time game is one in which state changes only
after a user's action. Chess, checkers are non-real-time games, and so are
classic computer adventure games. Active games such as baseball can be made to
be non-real time. In this project it should be possible to suspend the game
(save the game state) between sessions. You may either write a game in which
two players interact and your program provides the playing field. Or you may
write a game in which the user plays against the computer. Good games: Score
Four (an extended version of TicTacToe), Concentration (either one or two
player).
-
A simple data base. This is for the "business" oriented. Design a simple
data base manager, such as an address book, CD collection organizer, etc, or
appointment manager. Although this project does not involve complex graphics
painting, it still requires a simple GUI interface and the ability to store and
retrieve the data base.
REQUIREMENTS
On Monday, April 11, during the lab, each group is to present its project to
the professor for comment. Submit the report then. The report should have the
following structure.
-
a cover page identifying the team members
-
a problem statement, explaining clearly and in as much detail as possible what
the project will do. Outline format is better than paragraphs of prose.
-
an analysis section that fleshes out the implementation needs of the project:
what objects etc. will you need. Clearly identify open questions (e.g. what
things you are worried you will not be able to do.)
-
a design section that breaks your envisioned solution into class definitions.
Describe the interaction between classes.
Hints and Other Advice:
Be prepared to describe briefly which project you wish to work on. If its a
game or a data base, identify the domain (e.g. the game or application.)
ASK!!!!!!! questions, in class, in lab, during office hours and especially via
the class newsgroup. Please do not phone. Posting questions on the newsgroup
shares your question and my response with the rest of the class.