Programming Assignments

Introduction to Computer Science III
ICS-23: Lecture A/Labs 1-4
Spring 2008


Submitting Programs

Programming assignments are typically assigned in Lab on a Friday and are due ~1-2 weeks after they are assigned, at 11:30pm, on a Thursday night. To turn in programs use the Homework Dropoff system (Checkmate), which is also available on the standard frame index on the course website: it uses UCInetID Secure Web Login. You receive no points for late programs, unless you have discussed the matter with me and gotten my official permission (typically, granted prior to the due date via email).

IN ALL CASES, you must drop off (on time) whatever part of the program you have written, if you are to receive any partial credit for a late submission; if you drop off no files, I must assume that you have done no work on the assignment.

Pair Programming

I encourage you to use pair programming on the first two assignments; but it is disallowed for the remaining three. For the first two assignments, students can closely collaborate with their partners, turning in a single, joint program. Only one student from the pair should drop off the program -which one doesn't matter- but the names of both students must appear inside the code file(s). See Pair Programming for details about pair programming, and the right and wrong ways to do it. There is a tremendous amount to be gained by both group members, if they pair program in the right way.

Starting Programs

Please read each assignment completely and carefully before starting it. I suggest that you print and then read it, marking relevant material with a highlighter. We will typically discuss each new assignment in Lab on Friday, and start working on it then

Grading Programs (Generally)

For most programming assignments, there will be a JUnit test, a size test, and a speed test. If the program passes all JUnit tests (and I expect most programs to pass all these tests), then the student will score a base-line of 72 (of 80) points (for a score of 90%). I will compute the number of lexemes (minus comments) for all the programs in each assignment: if you are at the average, you will gain/lose no points; but, if you are below the average size, you will gain up to 4 points, and if you are above the average, you will lose up to 4 points. The exact gain/loss will depend on the distribution of sizes. Likewise for the speed test, with the fastest programs gaining up to 4 points and the slowest losing up to 4 points. Again, the exact amount will depend on the distribution of times. So programming grading is based 90% on correctness, with +/-10% of the grade based on simplicity (approximated by size) and efficiency (approximated by speed).

Extra Points for Submitting Early

If you drop off your program early, you will receive extra points (2 points if you submit it 24 hours early, 4 points if you submit it 48 hours early). Since each program is worth 80 points, you can raise your grade on a program by 5% (half a letter grade) by turning it in two days early. Note that turning in a program more than two days early results in just 4 extra points; therefore, I encourage students to finish their programs as early as possible, but continue to think about them (and ask questions about them) until two days before the due date, and submit them early at that time.

ProgramAssignedDueDescription Pairing?
#1 4/34/10 Implementing Simple Generic Collections (and real iterators) with Linked Lists Encouraged
#2 4/114/24 Programming using Generic Collection Classes: List, Stack, Queue, Priority Queue, List, Set, and Map Encouraged
#3 4/255/8 Trees: Average Heights, Priority Queues via Max-Heap, Prohibited
#4 5/95/22 Maps via BST and Hash Tables Prohibited
#5 5/236/6 Graphs implemented via Collections and Graph Algorithms Prohibited