Programming Assignments

Fundamental Data Structures
ICS-23: Lecture A/Labs 1-4
Winter 2013


Submitting Programs

Programming assignments are typically assigned in Lab on a Thursday 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, so please drop off partial solutions.

Pair Programming

I encourage you to use pair programming on all the assignments. In pair programming, students closely collaborate with their partners, turning in a single, joint program. Only ONE STUDENT from the pair should drop off (all parts of) the program -which one doesn't matter- but the Names and Lab Numbers of both students MUST APPEAR IN A COMMENT 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.

A typical assignment spans 3 labs and 2 weekends. Expect to spend time outside of lab working on the programming assignments together, so chose a partner you can get together with frequently and onew with compatible work habits.

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: there are lots of details and it is easy to forget to do easy things. We will typically discuss each new assignment in Lab on Thursday, and start working on it then.

Grading Programs (Generally)

For most programming assignments, there will be a JUnit test, which you will learn about in Program #0. Some programs will specify other kinds of testing (as well).

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, 3 points if you submit it 48 hours early. But, the program must substantially work to get these extra credit points (if not, you are better off continuing to work on the program). Since each program is worth 60 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 still results in just 3 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.

 

Program Released
(visible)
Assigned
(discussed)
Due Description Pairing?
#0 1/71/81/10 Eclipse, Course Libraries, JUnit, and Checkmate (not graded) Not Allowed
#1 1/71/101/17 Programming using Generic Collection Classes: List, Stack, Queue, Priority Queue, Set, and Map Encouraged
#2 1/141/171/31 Implementing Ordered Collections (and real iterators) with Linked Lists Encouraged
#3 1/281/312/14 Implementing PriorityQueues and Maps with Trees Encouraged
#4 2/112/142/28 Implementing Maps via Hash Tables; Sets via SkipLists and Adapters Encouraged
#5 2/252/283/15 Graphs implemented via Efficient Collections and Dijkstra's or Traveling Salesman Problem Algorithm Not Allowed
for Algorithm