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:
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:
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.