CS4444:  Programming & Problem Solving, Fall 2004
Teaching Assistant: Abhinav Kamra

Contact Information
Abhinav Kamra
E-mail:  kamra-at-cs.columbia.edu
Web:  http://www.cs.columbia.edu/~kamra
Course webpage:  http://www.cs.columbia.edu/~kar/4444f04/
Discussion WebBoard:  https://www.columbia.edu/sec/bboard/043/coms4444-001/

Introduction
Welcome to Programming and Problem Solving 2004. To ensure that the course runs smoothly, please adhere to the following guidelines.

Projects & Links

Java
The software that will be provided will be written in Java.  All language features will be utilized, including dynamic instantiation, inner classes, and commonly utilized packages such as Swing.   An important facet of the course involves expressing your ideas in a programming language.  It is therefore crucial that you become familiar with Java if you are not so already.  In particular I suggest you learn everything there is to know about the following classes:

The Java SDK provides you with these classes and many others that will greatly reduce the code-development burden for standard data structures, algorithms, and manipulations.  You will therefore be able to spend your time focused on the problem itself rather than with the programming.

We will be using the Java 1.4.0 SDK for the course, which is standard on CS accounts.  If you are using a laptop or a private computer for your development, please ensure that you download and install the 1.4.0 SDK to avoid any incompatibilities.  On CS machines,  the Java SDK and VM binaries directory is:

/usr/local/java/java1.4/bin

You should make sure that your $PATH shell variable is oriented to this location.  If you are not certain which version of Java you are using, execute the command:

java -version

Software
For each of the four projects, a design and download page will be provided.  You can access this page at:

http://www.cs.columbia.edu/~kamra/CS4444/ProjectX/

where X represents the project identifier (for example, http://www.cs.columbia.edu/~kamra/CS4444/Project1).  In the page, an overview of the software will be presented, including the interface(s) that you are required to implement, a design guide, and any known issues.  Using the CS accounts, you can directly access the directory itself via:

~kamra/html/CS4444/ProjectX/

Finally, the design page will also contain links to the class notes pertinent for each project.  You may directly access the software itself on CS machines at:

~kamra/html/CS4444/ProjectX/Software
 

The basic design of the software involves two independent packages:

The user interface is responsible for all game-independent features, such as saving a game, display logging, and so forth.  The same user interface package will be utilized for all of the projects.  Generally, you will not need to modify or understand the user interface code.  The game model components, on the other hand, are specific to the problem;  the source code should therefore be understood at a basic level.  For each game model, there will be a specific interface, IFCPlayer, that you will be required to implement. The game model software can be obtained as described above.

A Software Guide written by Srikant can be accessed here.

Code Submission
Throughout the course, you will be asked to submit deliverables pertaining to incremental stages of your software development. Prof. Ross will specify the precise deliverables and dates, and a record will be maintained of your submissions. Furthermore, you will be working in teams for each of the projects. Each project master directory will contain within it three subdirectories, /Working, /Submissions and /Final. As implied by the names, the /Working and /Submissions subdirectories are designated for submissions upto but not including the final (tournament) submission, and the /Final submission corresponds to the tournament entry.   The /Working directory is for old intermediate code which is publicly available so that all the groups can enhance their players. The /Submission directory, on the other hand, is the repository for current player submissions.

You should submit your source code only; please do not submit binaries. The purpose of submitting the source code is to permit other groups to collaboratively view your ideas and extend or analyze them. During class, this directory will be used by Prof. Ross to provide demonstrations, so ensure that your software is defect-free as much as possible and adheres to the deliverable specifications. For the purposes of deliverable and tournament submissions please remember the following guideline:

"If it can't be built, it wasn't submitted."

Therefore, ensure that your submissions can, at the minimum, be built. Importantly - please ensure that you submit all the required source files.  For example, if your submission uses auxiliary classes, you must ensure that you submit the source files corresponding to them.

The locations of the directories for Working, Submissions and Final code submissions are:

~kamra/html/CS4444/ProjectX/Working
~kamra/html/CS4444/ProjectX/Submissions
~kamra/html/CS4444/ProjectX/Final

Often, multiple submissions will be permitted by each group.  It therefore becomes necessary to standardize the naming conventions for the source files so that large tournaments can be conducted in an orderly and consistent manner.  The following naming convention will be used for all submissions:

GroupXPlayerY.java

Where "X" represents the numeric group identifier, and "Y" corresponds to the group-specific player identifier.  The player identifier is determined by the groups themselves;  if a group only submits one player than the identifier will always be "1".  To illustrate, the following source-file/class name should be used for the third player created by group five:

Group5Player3.java

However, as part of the standard player interface for each of the projects, you will have the opportunity to "name" your player in any manner you wish.  This name will be used for display purposes, and the method dispatch will be conducted by the user interface or game model modules.



kamra-at-cs.columbia.edu