ICS 23 / CSE 23 - Lab Manual and Work Schedule
Fall 2008


Work Schedule


Evaluation of Projects

Each of your projects will be graded using a 20-point scale. As you work on your projects, it is naturally your primary goal to write a program that works correctly. However, writing a correctly-working program is not your sole objective. Each of your projects will be evaluated for several different qualities, which are defined (along with their relative values) in the table below.

Quality Value Description
Correctness and robustness 10 points When the program is given valid input, does it generate the correct output? Is the output spacing correct, if this is an issue? In short, does the program do what it's supposed to do for any input that meets the project specifications? When the program is given unusual or erroneous input, is it handled gracefully? Programs should not crash in these situations; they should print informative messages to the user and continue executing (if possible).
Quality of solution, documentation, and style 10 points Points will be deducted for particularly awkward, cumbersome, or inappropriate ways of approaching a problem. Your program should be divided into logical parts using classes where appropriate, each encapsulating a single idea or task. There should be enough comments to make the program clear to the reader (though it should be noted that good modularity and well-named identifiers make the commenting burden lighter). Identifier names should be chosen to reflect their function; the names should be meaningful to the reader.
Total 20 points

If you submit a program that does not compile, we will not be able to execute it and, thus, will not be able to evaluate its correctness. It is your responsibility to turn in code that compiles. Any program that does not compile will automatically receive zero points on the Correctness and Robustness portions of the project score, regardless of how much code there is or how close it is to working.

This course moves forward at a rapid pace, as there is a project due roughly every other week. Therefore, late submissions of projects will not be accepted. Bear in mind that you will receive partial credit for a project which is partially completed, so I encourage you to submit what you have when the project is due.


Style standards

Wondering what constitutes an acceptable coding style? Check out the course style standards, which explain how your code should look.


Submitting your projects

When you complete each project, you must submit it to us electronically. Follow this link for a detailed description of how to submit your projects. Understand that we will only accept projects submitted using the procedure described there; we do not accept printed copies of your projects, nor do we accept them via email.


Development environment

The officially-supported development environment for ICS 23 is a text editor, such as TextPad, the command-line compiler javac, and the command-line virtual machine java. Your TA's will use javac and java when compiling and testing your programs. The machines in the ICS lab, by default, use the compiler that comes with Sun Java 2 Standard Edition SDK.

While I encourage you to work on your projects in the labs as much as you can, so that help will be available for you when you need it, I also understand the reality that many of you will want to work from home at least part of the time. You're responsible for obtaining and installing this software on your machines; we realistically cannot and will not support each of your home installations. You'll need the following software, all of which can be obtained free of charge.

You might also want to obtain a full-fledged integrated development environment (IDE). IDE's generally provide an editor, a compiler, and a virtual machine, as well as other integrated tools, such as a debugger. This flexibility generally comes at the cost of complexity. Also, IDE's are generally much more expensive than the free alternatives listed above. I do all of my development using a text editor and a command-line compiler and virtual machine.

Java is a cross-platform language, so the code you write should execute correctly, regardless of your operating system or what compiler you're using. Still, subtle bugs and differences do exist. If you feel that you've been graded unfairly on account of such a bug, let us know, and we'll make sure that your grade is not adversely affected by incompatibilities between virtual machines.


How do I set up Java at home?

Here is a document that describes how to set up J2SE on your Windows-based machine.


Java Links

Wondering how a particular class in the Java library works? Sun's Java 2 documentation is exactly what you need! When I'm writing Java code, I spend a lot of time there. After all, who can remember all the parameters to all of the methods in the Java library? Besides, learning how to look things up in documentation is an invaluable skill, so it's best if you start developing it now.

Looking for a good on-line Java tutorial? Start at Sun's Java Web site (java.sun.com), and click the "Java Tutorial" link somewhere on the page. (They rearrange their pages fairly often, so I didn't provide a direct link.) The tutorial is organized into "trails" that lead you through various topics, from simple to advanced.


Academic honesty

As ICS 23 students, you are expected to know and follow the academic dishonesty policies of both the ICS School and the University as a whole. Please take a few minutes to read the policies, which can be found at this link.

All of your lab work is expected to be completed solely by you. Group work and/or sharing of code between students is not permitted. Note that "high-level discussion of course material for better understanding" is permitted and encouraged, but when it comes time to sit down and write code, that is expected to be done by you and you alone. All submissions are compared to one another using an automated plagiarism detection system. This system is extraordinarily good at finding similarities between submissions, even when there are superficial differences. (Note that we also compare your submissions to those submitted during previous quarters whenever one of these assignments was given during a previous quarter, so it is an exceedingly bad idea to turn in, or even refer to, code written by a friend of yours who took the course already.)

Since all of your work is expected to be completed solely by you, you will be held responsible even if you plagiarize only a small portion of someone else's project.

Academic dishonesty is a two-way street. Providing your code to other students for them to turn in as their own is not permitted anymore than turning in someone else's code. Resist the temptation to give code to your friends "for reference." Based on my experience, I can say that your "friends" may very well betray you and turn it in, anyway.

Violators of academic dishonesty policies are subject to the penalties described in the ICS School's policy. They are also subject to an immediate course grade of F, and you will not be allowed to drop the course to avoid the grade. Also be aware that a single documented case of academic dishonesty may preclude you from switching into the ICS major, registering for the ICS minor, joining the ICS Honors Program, and graduating from ICS with honors.