Alan Kaminsky Department of Computer Science Rochester Institute of Technology 4486 + 2220 = 6706
Home Page
Advanced Programming 4003-707-02 Fall Quarter 2008
Course Page

4003-707-02 Advanced Programming
Programming Project Increment 1

Prof. Alan Kaminsky -- Fall Quarter 2008
Rochester Institute of Technology -- Department of Computer Science

Overview
Electronic Go Board
Software Requirements
Software Design Criteria
Submission Requirements
Grading Criteria
Late Projects
Plagiarism


Overview

Write a Java program to learn about Java objects and classes, Java 2D graphics, Java Swing GUIs, Java networking, and object oriented design. The program will be developed in four increments:

  1. Core classes
  2. Graphical output
  3. GUI input
  4. Networking


Electronic Go Board

For this project you will develop an electronic Go board. Go is a board game that originated in ancient China. The Go board has a grid of 19x19 lines. Black or white stones are placed on the intersections of the lines.

Many games besides Go itself can be played on a Go board. For further information, see these Wikipedia articles:

The computer program in this project lets two human beings, each running the program on their own computers and communicating over the network, play a game of Go (or any game that uses Go equipment) with each other. The computer is not a player in the game, and the computer does not enforce the rules of the game. The computer is just a fancy game board. The stones that either player places on or removes from the board appear on both players' displays.

The first project increment includes the core classes for the electronic Go board. However, there is no GUI and no networking. Rather, there is a main program that is a unit test driver for the core classes. The main program prints the Go board on the console as follows:

For example:
  1 2 3 4 5 6 7 8 910111213141516171819
a . . . . . . . . . . . . . . . . . . .
b . . . . . . . . . . . . . . . . . . .
c . . . . . . . . . . . . . . . . . . .
d . . . . . . . . . . . . . . . . . . .
e . . . . . . . . . . . . . . . . . . .
f . . . . . . . . . . . . . . . . . . .
g . . . . . . . . . . . . . . . . . . .
h . . . . . . . . . . . . . . . . . . .
i . . . W W . . W W . . . . . . . . . .
j . . . . . . . . . . . . . . . . . . .
k . . . . . . . B . . . . . . . . . . .
l . . . . . . . . B . . . . . . . . . .
m . . . . . . . . . B . . . . . . . . .
n . . . . . . . . . . B . . . . . . . .
o . . . . . . . . . . . . . . . . . . .
p . . . . . . . . . . . . . . . . . . .
q . . . . . . . . . . . . . . . . . . .
r . . . . . . . . . . . . . . . . . . .
s . . . . . . . . . . . . . . . . . . .
The main program prints the initial board (all intersections initially empty) on the console. The main program reads a command from the console, one of the following: After updating the Go board, the program prints the Go board in its entirety. The program repeatedly reads a command, updates the Go board, and prints the Go board until a quit command is entered, whereupon the program terminates without printing the Go board. If an invalid command is entered, the program does not update the Go board, but the program does print the Go board and goes on to the next command.


Software Requirements

  1. The program must be run by typing this command line:
    java GoBoard
    
    Note: This means that the main program's class must be named GoBoard, and this class must not be in a package.

  2. The program must print the Go board on the console in the format specified above.

  3. The initial Go board must have all intersections empty.

  4. When it starts, the program must print the initial Go board.

  5. The program must repeatedly read commands from the console.

  6. If the command is:
    clear <row> <col>
    
    the program must update the Go board as specified above, must print the Go board, and must read the next command.

  7. If the command is:
    black <row> <col>
    
    the program must update the Go board as specified above, must print the Go board, and must read the next command.

  8. If the command is:
    white <row> <col>
    
    the program must update the Go board as specified above, must print the Go board, and must read the next command.

  9. If the command is:
    quit
    
    the program must not print the Go board and must terminate.

  10. If the command is anything else, the program must not update the Go board, must print the Go board, and must read the next command.

  11. The program must not print any blank lines and must not print any output not specified in the above requirements.


Software Design Criteria

  1. The classes that manage the state of the application must be completely separate from the classes that manage the user interface.

  2. The classes that manage the state of the application must be reusable without change in later increments of the project.

  3. The program must follow the programming patterns studied in class, be designed using object oriented design principles as appropriate, and make use of reusable software components as appropriate.

  4. Each class or interface must include a Javadoc comment describing the overall class or interface.

  5. Each method within each class or interface must include a Javadoc comment describing the overall method, the arguments if any, the return value if any, and the exceptions thrown if any.

    Note: See my Java source files which we studied in class for the style of Javadoc comments I'm looking for.

  6. The program must follow a consistent and readable coding style.


Submission Requirements

Your project submission will consist of a Java archive (JAR) file containing the Java source file for every class and interface in your project. Put all the source files into a JAR file named "<username>.jar", replacing <username> with the user name from your Computer Science Department account. The command is:

jar cvf <username>.jar *.java

If your program uses classes or interfaces from the Computer Science Course Library without changes, then you do not need to include these classes' or interfaces' source files in your JAR file. If your program uses classes or interfaces from the Computer Science Course Library with changes, then you do need to include these classes' or interfaces' source files in your JAR file.

Send your JAR file to me by email at ark­@­cs.rit.edu. Include your full name and your computer account name in the email message, and include the JAR file as an attachment.

When I get your email message, I will extract the contents of your JAR file into a directory. However, I will not replace any of the source files in the Computer Science Course Library with your source files; your project must compile and run with your files in their own separate directory. (You can do this project without needing to replace any source files in the Computer Science Course Library.) I will set my Java class path to include the directory where I extracted your files and the directory where the Computer Science Course Library is installed. I will compile all the Java source files in your program using the JDK 1.5.0 compiler. I will then send you a reply message acknowledging I received your project and stating whether I was able to compile all the source files. If you have not received a reply within one business day (i.e., not counting weekends), please contact me. Your project is not successfully submitted until I have sent you an acknowledgment stating I was able to compile all the source files.

The submission deadline is Wednesday, September 24, 2008 at 11:59pm. The date/time at which your email message arrives in my inbox (not the time when I actually read the message, which will be some time later than when it arrives in my inbox) will determine whether your project meets the deadline.

If you submit your project before the deadline, but I do not accept it (e.g. I can't compile all the source files), and you cannot or do not submit your project again before the deadline, the project will be late (see below). I strongly advise you to submit the project several days before the deadline, so there will be time to deal with any problems that may arise in the submission process.


Grading Criteria

I will grade your project by:

When I run your program, the Java class path will point first to the directory with your compiled class files, followed by the directory where the Computer Science Course Library is installed. I will use JDK 1.5.0 to run your program.

I will grade the requirements portion based solely on whether your program produces the correct output as specified in the above Software Requirements. Any deviation from what is specified will result in a grade of 0 for the requirement. This includes errors in the formatting (such as extra or missing spaces), incorrect punctuation, misspelled words, missing output, and extraneous output not called for in the requirements. The requirements state exactly what the output is supposed to be, and there is no excuse for outputting anything different. If any requirement is unclear, please ask for clarification.

If there is a defect in your program and that same defect causes multiple requirements to fail, I will deduct points for every failing requirement. The number of points deducted does not depend on the size of the defect; I will deduct the same number of points whether the defect is 1 line, 10 lines, 100 lines, or whatever.

After grading your project I will put your grade and any comments I have in your encrypted grade file. For further information, see the Course Grading and Policies and the Encrypted Grades.


Late Projects

See the Course Policies for my policy on extensions.

I will not accept a late project increment unless you arrange with me for an extension. Late projects will receive a grade of zero.


Plagiarism

See the Course Policies for my policy on plagiarism.

The project increment must be entirely your own work. I will not tolerate plagiarism. If in my judgment the project increment is not entirely your own work, you will receive a grade of zero for the project increment. There are only two exceptions:

  1. You may reuse without modification a source file from the course web site or the Computer Science Course Library.
     
  2. You may take a source file from the course web site or the Computer Science Course Library and add your own modifications, provided you state that you have done so and give credit to the original author.

[an error occurred while processing this directive]
Alan Kaminsky Department of Computer Science Rochester Institute of Technology 4486 + 2220 = 6706
Home Page
Copyright © 2008 Alan Kaminsky. All rights reserved. Last updated 05-Sep-2008. Please send comments to ark­@­cs.rit.edu.