Lab Assignments: Guidelines, Grading and Due Dates


Preparation

To be ready for each lab assignment, be sure to read it thoroughly before you commence work, and to review any material the lab assumes you know.

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 strongy encourage you to seek assistance and advice from your programming partner and other students, the instructor, and other sources, consistent with following course honesty rules (discussed in the Course Reference).

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 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 any instructional ICS lab (ICS 183, 189 192, 364) any time it is open and not reserved for a particular class or function. See the Lecture and Lab section of the Course Reference for more details.


Allowed programming environments

We use Java as the language of practice in this course, as implemented in Sun’s Java Standard Edition SDK 7.0 (also called version 1.7). We also provide, and take as the course standard, the Eclipse Classic programming environment. For labs where we provide existing code, it will be as partially complete source files or as Java 7 class files that are part of an Eclipse project. Note these provided files are not compatible with versions of Java earlier than Java 7.

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 7 in the Eclipse environment 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 Eclipse, using Java 7, 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:

Smiley Faces 20% October 18, 2012
Animated Smileys 20% October 28, 2012
Animated Smileys, Graphics and Applet 15% November 15, 2012
Smileys at the Races 20% November 27, 2012
A Donation to the Music Archive 25% December 10, 2012

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 assignments have optional work included. You may earn up to one additional assignment point by doing optional work, depending upon how much of the extra work you do and how well you do it, or for doing an amazing job on a lab (see below). This point is 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. (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. Note 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 assignmentand shows at least a basic understanding of the material. 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, 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.


Reviewing graded assignments

If you want to review your graded assignment, you can do so during office hours.


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 three points and the assignment is two days late, your score will be one point (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 an assignment in parts. 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 waive 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 the penalty should be waived, email the instructor and ask for a penalty waiver; include with it an explanation of the unavoidable circumstance that prevented you from turning in the assignment on time.


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 and, often, theirs—doing so would be a violation of academic honesty policies and potentially a violation of copyright laws.

  2. You can adapt any code course staff gives to you, provided you note in your program from whom 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, such as code you received in some other class or some tutorial session, 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 assignment, 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. If the assignment is one that you are completing on your own, 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 the assignment for you, or from whom you took work, and then presenting it as if it were your own work, is a particularly serious infraction of academic honesty policies.

  5. If the assignment is to be done with pair programming, your assignment is to be joint work with your programming partner and only your programming partner. Turing in work of any other person or source is subject to the policies described above.

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
Minor revisions for clarity, by Norman Jacobson, December 2008 and March 2009
Minor updates to reflect use of the Help Center and to update due dates for Spring 2010, by Norman Jacobson, March 2010
Made minor copy edits, and updated due dates for Spring 2011, by Norman Jacobson, March 2011
Made minor copy edits, and updated due dates for Spring 2012, by Norman Jacobson, March 2012
Updatred to reflect ICS45J, in particular that there are both pair programming assignments, by Norman Jacobson, August 2012

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 its style guide (found in Appendix L). And if that does not address the issue, ask the instructor what style to employ.

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
Revised to make explicit that methods should usually be short and that
  names and functioning of provided code must not be changed, by
  Norman Jacobson, Ianaury 2009
Cleaned up a bit by Norman Jacobson, March 2010 & March 2011
Minor update to reference textbook's style appendix, and some minor
  clarifications, by Norman Jacobson, August 2012