Lab Assignment Guidelines, Grading and Due Dates


Preparation

To be ready for each lab assignment, be sure to read it thoroughly before you come to lab and to review any material the lab assumes you know. Coming to lab prepared lets you spend your time there working on the assignment instead of getting ready to work on it.

For each lab, you will need the lab assignment. You will also need a way to back up your work. If additional items are needed for a particular lab, we will list them in that lab assignment.


Working on and turning in labs

You have more time to complete some assignments than others; the due dates appear below. Take the length of time allotted for an assignment as an indication of how long it will take you to do the work: Don’t waste the first week of a two-week assignment. As you work on your assignments, we encourage you to seek assistance and advice from the TAs, the tutors and the instructor about the best way to do them.

If you prepare to work on your lab assignments before you come to lab, and work diligently once there, you should have no difficulty finishing the assignments by the due date. Different people work at different speeds, but past experience shows that nearly everybody can complete the assignments if they spend about ten hours a week in lab—provided that they come prepared.

You turn in your assignments via Checkmate, a Web application. To use Checkmate, simply go to checkmate.ics.uci.edu, log in using your UCInetID, and follow the instructions there. If you get a message about security certificates, just click "Continue." (You must have a UCInetID to use Checkmate. If you have not yet activated your UCInetID, do so right away; instructions for doing so are on the UCInetID Activation & Password Changes Web page). While Checkmate has proved to be reliable, if you think it is not working correctly, read the instructions carefully and try your action again. If you are then still having problems, send email to the instructor describing the problem as precisely as possible. We can only fix problems we know about!


Backups

We require that you keep your own backup, a computer copy of each assignment, just in case something happens to the copy you turn in. For example, if the Checkmate database gets hopelessly corrupted (which has yet to happen) we may need you to provide us with another copy of your work. If you do not have work we can grade, you will receive no grade for it!


Lab room availability

You may work in ICS 183, ICS 189 and ICS 192 labs at any time they are open except when a non-ICS23 class is in session. Additional information about when you can use a lab room is given in the Course Reference).

The scheduled and open hours for all lab rooms are on ICS Lab hours web page and often on the labs’ doors.


Allowed programming environments

We use Java as the language of practice in this course, as implemented in Sun’s Java Standard Edition SDK version 1.6 (also called Java 6.0). You may complete your lab work anywhere, using any Java environment to which you have legitimate access; in particular, you can work at home and you don’t have to use Sun’s version of Java. However, to be fair, and to be sure we can check your running program, to obtain full credit for an assignment your work must compile and run correctly under Sun’s Java Standard Edition SDK version 6.0 on the ICS Lab network. In particular, it is irrelevant whether your program runs perfectly on some other system: if it does not run on the ICS Lab network in Java 6.0, you will not receive full (and may not receive any) credit for it.


Grading and due dates

Every lab assignment in this manual describes the assignment itself and what needs to be turned in. Here are the labs, the percentage they count towards your total lab grade, and their due dates:

Unearthing the Past 20% January 23, 2008
Black and White 25% February 6, 2008
Rock and Roll Stops the Traffic 25% February 25, 2008
Searching for a Better Way 30% March 14, 2008

All labs are due by 11 pm sharp on the dates given. 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 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; it would earn highest praise from a professional or professor. 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 learning and use, reliability, modifiability, clarity, 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.


Reviewing graded assignments

If you want to review your graded assignment, you can do so in lab; just ask the TA.


Partial and late assignments

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 four points and the assignment is two days late, your score will be two points (out of four).

We grade the latest version of an assignment submitted. For instance, if you turn in an assignment on May 5 and again on May 6, we will grade the assignment submitted on May 6. In particular, you cannot submit a partially complete assignment for a partial grade. For instance, suppose you submit part of an assignment on May 2 and the rest on May 3. We will only grade the May 3 submission and treat it as your entire assignment.

We will not penalize you for a late assignment if it is late because of significant circumstances beyond your control, such as an incapacitating illness or injury or a major emergency. Conflicts with due dates for your other classes or your job are not sufficient cause to lift the penalty. Should you be unable to turn in an assignment when due, it is best to notify the instructor ahead of time and make arrangements for an alternative due date. If you cannot provide advance notice, turn in the assignment as soon after the due date as possible, and, if you think penalty should be waived, email the instructor and ask for a penalty waiver; include with an explanation of the unavoidable circumstance that prevented you from turning in the assignment when it was due.


Lab assignments and academic honesty

We take “cheating”—academic dishonesty—very seriously. Your work in this class, including your lab assignments, is subject to UCI’s and ICS’ academic honesty policies, as well as the policies for this course. See the Course Reference for links to the ICS and UCI policies, and for the general policies for this course.

There are also some course academic honesty policies specific to lab assignments:

  1. Some of you have written code, for some other class or an employer, similar to what you would write to complete our lab exercises. It’s quite all right to adapt your own previous class work for use in this class, if you wish. You also may reuse work you did for your employer, provided you have that employer’s permission and our permission to do so. It is not all right to adapt someone else’s work without our explicit permission—doing so would be a violation of academic honesty policies.

  2. You can adapt any code course staff gives to you, provided you note in your program whence you received the information. (Not giving others credit for work they did makes it appear as if that work was your own, and that, too, is a violation of academic honesty policies.) You may not use code others give you, including code you received in some other class or during LARC or CODE tutorial sessions, unless you have our explicit permission to do so.

  3. You may adapt code from a text or other source only if we have given you explicit permission to do so, such as by a statement to that effect in a lab exercise, an announcement in lecture or lab, or an agreement you reach with the instructor. In any event, you must document that your work is based upon another’s, what work it is, and who gave you permission to use it; anything less is a major violation of academic integrity.

  4. Your work may not contain work done, in whole or in part, by another person, except as described above.

  5. Your assignment cannot be the result of joint work with another person. In particular, a person cannot work on an assignment with another person and then turn all or a part of it in as if it was her or his individual work. Turning in the work of another student who completed an assignment during a previous quarter of ICS 23 as if it were your own work is a particularly serious infraction of academic honesty policies.

We compare your work, both by hand and electronically, with assignments submitted by students in this and other classes and sometimes to other sources, such as code from a book or the Internet. If we find similarities that appear to indicate that your assignment contains work that is not your own (except as allowed above) we will investigate to see if academic honesty polices were violated. If they were, you could receive a zero for the assignment, a lower couse grade than you otherwise would have received—including an F—and, in egregious or repeated cases of academic dishonesty, expulsion from the ICS major or even from UCI.

Revision history for text to this point:

Prepared by Norman Jacobson, September 1996, from similar ICS 23 materials
Revised for the Spring 1997 offering of ICS 23, March 1997
Revised for the Spring 1998 offering of ICS 23, March 1998
Revised for the Fall 1998 offering of ICS 23, September 1998
Revised for the Winter 1999 offering of ICS 23, December 1998
Minor revisions for the Fall 2001 offering of ICS 23, September 2001
Minor revisions for the Winter 2002 offering of ICS 23, December 2001
Revised for the Spring 2002 offering of ICS 23, March, 2002
Revised to be more explicit about academic dishonesty, to state the penalty for
  mislabeling folders and to describe LARS more fully, by Norman Jacobson, March 2002
Minor revisions for the Winter 2003 offering of ICS 23, December 2002
Minor revisions for the Winter 2004 offering of ICS 23 to clarify some text and to reflect the use of Checkmate, January 2004
Minor revisions for the Fall 2005 offering of ICS 23, June 2005, the Spring 2006 offering of ICS23, March 2006 & the Fall 2006 offering, August 2006
Revision to reflect late policy for last lab is the same as other labs and other, minor, revisions for clarity, December 2006

Writing Professional Programs

Using a good coding style is important, for many reasons. Professional programmers need not only to be able to read and understand their own code, months or even years after originally writing it, but also to read and understand code written by others, often in the absence of the original programmer. There is nothing more frustrating to a programmer than inheriting responsibility for someone else's code, only to find that the code is designed poorly, written cryptically, and documented shabbily (or not at all). In professional circles, it is critical that programmers write code in a clear style with adequate documentation; in this course, a consistent style makes assignments easier to understand, and thus for us to grade accurately.

The Java code that you write for this course should follow the style and documentation conventions discussed below. For any areas of style not addressed, use the style of code given to you for the particular assignment. If there is no provided code for the assignment, or that code does not address the style issue, follow the style used in the course textbook. And if that does not address the issue, ask your TA what style to employ.

If the TA has specific style requirements that differ from those here, s/he will let you know. Do follow them!

Remember that a significant violation of style standards could result in a lower score on your lab.

Written by David G. Kay (1990), including much material adapted with permission from Appendix E of
  Programming for People/Pascal by David G. Kay (Mayfield, 1985)
Revisions made to reflect THINK Pascal by Joe Hummel and Norman Jacobson, January, 1992
Revised by Norman Jacobson, Fall, 1992; Grading Form by David G. Kay, Winter, 1991
Revised by Norman Jacobson, Fall 1993 and Fall 1994
Revisions made to reflect CodeWarrior C++ by Norman Jacobson, April 1996
Revised by Norman Jacobson for ICS 23E, September 1996
Major revisions for the ICS23 Spring 1997 by Norman Jacobson, March 1997;
  ICS 23 Spring 1998, March 1998; ICS23 Fall 1998, September 1998;
  ICS23 Winter 1999, December 1998
Revised to reflect the use of Java by Norman Jacobson, September 2001
Minor revisions for the Winter 2002 offering of ICS 23 by Norman Jacobson, December 2001
Revised to clarify some aspects of style standards by Norman Jacobson, March 2002
Revised by Norman Jacobson in December 2002 to include more details about proper
  style taken from the Winter 2002 version of similar document by Alex Thornton;
  Thornton’s document was adapted from Ray Klefstad’s coding standards.
Minor revisions for ICS 23 Winter 2004 by Norman Jacobson, January 2004;
  for ICS 23 Spring 2004, January 2004; ICS 23 Fall 2004, September 2004;
  ICS23 Spring 2006, March 2006 and May 2006; ICS23 Fall 2007,
  December 2006; ICS23 Winter 2008, December 2007