ICS 23 / CSE 23 - Lab Manual
Winter 2010


Lab Announcements

Announcements or corrections concerning the lab assignments will be posted here.


Evaluation of Projects

All labs will be posted with a given time and date that they are due. If a lab is turned in later than due, it incurs a late penalty, as discussed below.

Some of the exercises have optional work included. You may earn up to an additional assignment point by doing this work, depending upon how much of the extra work you do, and how well you do it. You may also earn an additional point for doing an amazing job on a lab (see below). These points are added to your total, but not to the total possible number of points; thus, not undertaking this work will not hurt the lab portion of your course grade. (Note that lab assignment points do not “spill over” into exam points; even if optional points put you over 100% of the lab points, only 100% of the lab points will be counted when computing your course grade.) You cannot get points for optional work unless all the required work is complete and correct. We will grade your programs using the following five-point scale. Note that if you get four points, we consider that full credit for the lab: if you get four points on every assignment, you will have 100% of the possible lab points. Notice that your grade depends on issues of programming design and style as well as those of correctness (Does the program function as it should?) and completeness (Does the program contain exactly the features required?):

0 points You did not turn in any work.

1 point Work that it is meager and poorly done. It would not be considered at all acceptable in academic or professional circles.

2 points Work of reasonable quality and completeness—a program that runs and implements at least the main requirements of the assignment. Shows a basic understanding of the material, but not a complete one. Presentation may be lacking (e.g., written work shows poor composition, a spreadsheet is hard to read, a database is poorly organized, a program& is hard to follow or has a design that is cumbersome).

3 points Work of high quality that is complete and well presented—with perhaps a few minor errors and/or design or style problems. The grade for good, solid—but not extraordinary—work.

4 points Work of very high quality that demonstrates a full and complete understanding of the material the lab covers with a very polished presentation; any programming component of the assignment is complete (contains exactly the features specified) and correct (functions as it should, with no errors). Normally the highest grade awarded.

5 points Work of the highest professional or academic quality. Expect this grade to be very rarely awarded.

If it is difficult to determine whether your work is best represented by a score of x or x + 1 points (x ranging from 0 to 4), we may award a grade of x + 0.5 (that is, half points may be awarded). Expect this to be an unusual event.

Your programs will be graded mostly on their correctness and completeness, but will also depend on other qualities of your program, such as efficiency, ease of use, reliability, modifiability, clarity, how quickly and easily your code can be understood, the reasonableness of your design and how well the programs follow the class style standards. A professional-quality program must score highly in all these categories—and part of what this class is all about is to help you learn how to write professional programs. In particular, you can lose points for poor design or bad programming style, even if your program correctly and completely implements the functional requreiments.

If an assignment has specific grading criteria that add to or extend the criteria given here, the assignment will describe them.

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.


Partial and late assignments

This course moves forward at a rapid pace, as there is a project due roughly every other week. Therefore, late submissions of projects is strongly discouraged. You are generally better off turning in what you have and moving on to the next assignment.

For a lab to be on time, your assignment must be submitted to Checkmate by the due date and time. Any assignment submitted after that time will incur a penalty of one point for each day or part of a day it is late. For example, if you earn three points and the assignment is two days late, your score will be one point (out of four). We count a weekend (Saturday plus Sunday) as a single day. As an example, suppose your assignment is due at 6:59 on Thursday. If you turn it in late but before 6:59 on Friday, you lose 1 point. If you turn it in after that but before 6:59 on Sunday you lose 2 points.

In the special case of the three day weekend beginning January 16, we count that as a single day. Lab Assignment 1 is due at 6:59 on Friday January 15. If you turn it in late but before 6:59 on Monday January 18 you lose 1 point. If you turn it in after that but before 6:59 on Tuesday January 19 you lose 2 points.

We grade the latest version of an assignment submitted. For instance, if you turn in an assignment on January 14 and again on January 15, we will grade the assignment submitted on January 15. In particular, you cannot split your assignment into two parts and turn in the parts at different times. For example, suppose you submit part of an assignment on January 14 and the rest on January 15. We will only grade the January 15 submission and treat it as your entire assignment.


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.


·         Adapted from the ICS 22 Spring 2003 Lab Manual, with quite a bit of text from the previous ICS 23 Lab Manual merged in.