Programming Assignments

ICS-46: Data Structure Implementation and Analysis


Procedures

Programming assignments are typically due about two weeks after they are assigned, at 11:30pm, typically on a Tuesday night (but look for exceptions). To turn in programs, and verify the submission, use the Checkmate Homework Dropoff system: it is also available on the standard frame index on the course website: it uses UCInetID Secure Web Login.

Ensure that you submit the code you wrote, not empty files, nor the original files that you downloaded. Ensure that your code runs the googletess correctly. This is your responsibility. Be very careful and double-check what you submit to avoid any mistakes: if you are not sure that you submitted the correct code, resubmit it.

No Late Submissions

You receive NO POINTS for late submissions, unless you have discussed the matter with me and gotten my official permission (typically, granted well-prior to the due date -not at the last minute- always via email, not just orally; contact me as soon as possible).

IN ALL CASES, you must submit (on time) whatever part of the program you have written, if you are to receive any partial credit for a submission (either on time or late with permission); if you submit no files, I must assume that you have done no work on the assignment (which will result in a grade of 0 for it). If you are still programming the day that an assignment is due, you have planned poorly; if you are still programming an hour before it is due, you have planned very poorly.

Extra Points for Submitting Early

If you submit your program early, you will receive extra points (1 point if you submit it 24 hours early, 2 points if you submit it 48 hours early). Since each program is worth 50 points, you can raise your grade on a program by 4% (almost 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 2 extra points: the maximum you can get for an early turn-in.

Given Extra Points for Submitting Early and No Late Submissions, you should immediately start working on your programs when they are assigned. You should plan to finish them early, both to receive extra credit and to avoid missing a deadline. Expect that you will run into a few big "bugs" during each assignment, which will take a day to figure out and fix; plan to finish early to garner the extra credit (in the best scenario) or still finish on time (in the worst scenario).

Pair Programming

We will use pair programming on most assignments (recommended, although it is sometimes prohibited); it is only on these assignments that students can closely collaborate with their partners, turning in one copy of a jointly written program. 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 partners, if they pair program the right way: both students working together, not splitting-up the assignment.

You can keep the same partner for multiple assignments or switch. Try to find a partner in your lab who has approximately your skill level and study habits (e.g., working evening vs. weekends, work ethic to submit programs early); try to find someone who lives near you (or with whom you can easily meet outside lab) because I expect partners will need time outside labs to finish the programs. You may partner with someone in a different lab, but you both must be able to attend (and actually attend) one of your labs for 4 hours/week. I recommend finding a partner when you are attending your lab, but there is also a MessageBoard Forum for this task.

Starting/Finishing 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 (details that you might forget by the end of an assignment). Then, re-read the assignment before submitting your work. Programs are typically assigned on Tuesday and due two weeks later on the following Tuesday, when the next program is assigned; students should plan to have finished their current programs on Monday, so they can start on the new programs in lab on Tuesday; see above for how this leads to extra credit.

Identifying Submissions

Only ONE STUDENT of the pair should submit the assignment (all parts of it). If students work in pairs, BOTH NAMES and their UCInetID names must appear in a comment at the top of each submitted program. For example if Romeo Montague (whose UCInetID is romeo1) submitted a program that he worked on with his partner Juliet Capulet (whose UCInetID is jcapulet) the comment at the top of each .py file would appear as:
  // Submitter: romeo1(Montague, Romeo)
  // Partner  : jcapulet(Capulet, Juliet)
  // We certify that we worked cooperatively on this programming
  //   assignment, according to the rules for pair programming
If you do not know what the terms cooperatively and/or rules for pair programming mean, please read about Pair Programming before starting this assignment.

If the names do not appear at the top of all your submissions in exactly this form, points will be deducted. If you are submitting by yourself, you may omit all lines but the first (Submitter).

Multiple Submissions

Checkmate allows students to remove a submission and then resubmit. We will grade only your final submission submitted before the Due Time (and extra credit points are based on only that submission's time). For assignments with multiple parts, please turn in each part as you finish it, so that I can accurately assess the progress of the class as a whole during this assignment. If you discover something wrong with your code after you submit it, you can always correct the code, remove the old code, and resubmit the new code.

No Retrieval

Students cannot retrieve a submission from Checkmate: it is a shortcoming of the program (but designed to protect other students from possibly downloading your work); so, you are responsible for archiving your work so that you have a copy of what you submit. Also, ensure that you turn in the correct (most up to date) version of your code.

Instructor Solutions

I will release my solutions to all assignments the morning after they are due.

Programming Assignments Schedule: Due at 11:30pm

ProgramAssigned/ReleasedDueDescriptionPairing?
#0 9/2810/5 CLion/Clang C++, Course/GoogleTest Libraries, and Checkmate Prohibited
#1 10/510/17 Programming using the ICS-46 Template Library
Stack, Queue, Priority Queue, Set, and Map
Recommended
#2 10/1710/31 Implementing Queue/Priority Queue/Set with Linked Lists Recommended
#3 10/3111/14 Implementing Priority Queues and Maps with Binary Trees Recommended
#4 11/1411/28 Implementing Maps and Sets via Hash Tables Recommended
#5 11/2812/10 Implementing Graphs and Dijkstra's Algorithm Prohibited