About Lab Assignments

Completing Lab Assignments

The best strategy to do well on the lab exams by far is for your pair to complete the corresponding assignments, and to do as much of the work as you can in the Help Center. Assignments are specifically designed to prepare you for the lab exams; the Help Center provides all the software and hardware you need to work on assignments, and has course staff on hand to help you and your partner, right at your work station, should you have questions or get stuck. Lab exams are taken individually, so it is a good idea for both members of the pair to participate fully in completion of the assignment; that way, each member is prepared for the exam.

Each lab assignment has your pair design and implement a Java program, putting to practice concepts discussed in lecture and the readings. It will be very close to the program used in the corresponding lab exam; once you complete the exam, its program should look a lot like the one you wrote for the assignment. Each assignment not only gives you the specifications for the program (and its various components) but also spells out the portions of the program that are candidates to be missing in the lab exam you take.

We will have several versions of the lab exam. You will not know which version of the test you will be taking until the start of the exam; this is also true for retakes. So, again, you should complete the entire assignment, and understand it thoroughly— before the lab exam.

You are free—and encouraged—to get as much help as you need to complete the assignments from any source you like. But beware: some students get so much help that they end up doing little of the work themselves, and that usually results in a lack of knowledge and not passing the lab exam. And remember that simply copying someone else’s work is considered an infringement of academic honesty rules.

If you and your partner prepare to work on your lab assignments before you come to the Center, and work diligently once there, you should have no difficulty finishing an assignment before the day of its lab exam. But it does typically takes several hours to complete an assignment, so do plan accordingly!

You may of course use the Help Center any time it is open; remember it is not available on days when lab exams are given. You can also use the ICS 364 lab any time it is open, and any other ICS lab when it is open and no class is in session. (See the Course Reference for more details.) The lab attendant on duty at those times is there to watch over the equipment and the room; s/he cannot help you with your assignments.


Writing Programs that Follow Professional and Course Standards

You should always follow good design strategies in your code. We help you do that with this assignment by showing you the classes and methods you should have (and where they should be defined and used). Note especially how heavily we rely on comments, and using many classes and methods instead of doing detailed work in main(). As the assignments progress, you will be expected to complete more and more of the design yourself.

For each assignment (and lab exam) we will provide you with some skeleton Java source programs. Do not change any public method signatures or constants you find. It’s also best if you do not change any of the private information, either; that way, you won’t have to rethink your work when you take the lab exam. You can add private fields, constants and methods to “help” the methods we provided. You should not need to import any libaries, but you may do so if they are needed to complete your work.

When writing any program, you should follow a good, consistent coding and documentation style. Clearly name any classes, methods, fields or variables you add; consistently indent your code: base your coding style on the code we provide and the code you see in Horstmann's text. The instructor or the staff member grading your exams may want to modify the style somewhat; if so, do it their way! If you deviate significantly from our class’ style, the course staff could have a harder time understanding your code on the lab exam, as well as when assisting you with the assignment.


This section split from the Lab Exam Procedures and Grading section, and revised
  to reflect pair programming, by Norman Jacobson, September 2006
Minor edits and updates by Norman Jacobson, December 2006, December 2007 & September 2008.
Edited to reflect use of the Help Center instead of priority lab sections and to add the
   section on writing good code (consolidated from the assignment write-ups),
   for ICS21 Fall 2009, by Norman Jacobson, September 2009.
Minor revisions for clarity, by Norman Jacobson, August 2010.