Assignments


There are 6 programming assignments in all. These are due at midnight (11:59 PM to be precise) on the dates indicated on the Calendar page.

# Title Goal Links
1 Simple Programs Implement simple programs with and without control flow (ie, branches and loops). writeup | zip | discussion
2 Global Sequence Alignment Compute the optimal sequence alignment between two DNA strings using dynamic programming. writeup | zip | discussion
3 Percolation Estimate the percolation threshold of a system, which is a measure of how porous the system needs be so that it percolates. writeup | zip | discussion
4 Collections Implement some simple collection ADTs (deque and random queue). writeup | zip | discussion
5 Autocomplete Implement autocomplete feature for a given set of strings and nonnegative weights, ie, given a prefix, find and list all strings in the set that start with the prefix, in descending order of weights. writeup | zip | discussion
6 Eight Puzzle Solve the eight-puzzle problem (and its natural generalizations) using the A⋆ search algorithm. writeup | zip | discussion

The writeup file contains descriptions of the exercises/problems in the assignment. The zip file contains the starter files for the exercises/problems, necessary data files, and notes.txt file for the assignment. The discussion document provides directions on how to solve the exercises/problems.

Submitting Your Work

You will use Gradescope to submit your Java programs (ie, .java files) and the notes.txt file. Make sure that you only submit files listed under the Files to Submit section of the assignment writeup.

You may submit your files as many times as you like up until the assignment deadline. The most recent submission is considered active by default and your score on the active submission is your official score for the assignment as well. You have the option of making any of your previous submissions active before the deadline.

Note: It is your responsibility to make sure that your active submission contains the correct versions of the programs and the notes file, ie, the ones that you worked on and intended to submit. We will not entertain any requests to switch/update an active submission.

How the Assignments will be Scored

Correctness

Your solution for each exercise/problem will be evaluated for correctness by an autograder. Each test that is used for this purpose is worth some number of points; your solution will receive all the points from a test that passes and 0 points from a test that does not.

Code Quality

Your solution for each problem will additionally be checked by the TA for code quality. The TA will apply one or more of the following rubrics (#1 carries no penalty, but the rest do) to your solution:

  1. All good: your solution passes all the autograder tests, is well formatted/organized, uses meaningful variable names following proper naming conventions, includes useful comments, meets specific efficiency requirements (if any), and only uses concepts that are allowed by the assignment/course.

  2. Fails some autograder tests: your solution does not pass all the autograder tests.

  3. Poorly formatted/organized: your solution is not properly formatted/organized, ie, is messy/unreadable.

  4. Poor/unconventional variable names: your solution does not use meaningful variable names (ie, names relevant to the problem) or does not follow proper variable naming conventions.

  5. Lacks useful comments: your solution does not include any comments or is commented just for the sake of commenting (ie, they say the obvious and are not useful to someone reading your code).

  6. Does not meet efficiency requirements, if any: your solution does not satisfy specific efficiency (ie, space and time complexity) requirements, if any.

  7. Uses concepts that are not covered/allowed: your solution uses concepts that are not allowed by the assignment/course.

  8. No working code submitted: you did not submit any solution or your solution did not pass any of the autograder tests.

Notes File

The given notes.txt file for an assignment must be uploaded with the three sections (#1 mandatory, #2 if applicable, and #3 optional) filled in as appropriate. In section #1, for each problem, you must describe your approach along with any issues you encountered and if/how you managed to solve those issues. The TA will grade your notes for each problem by applying exactly one of the following rubrics (#1 carries no penalty, but the rest do):

  1. Excellent: solid, high-level (ie, with minimal jargon) description that demonstrates a solid understanding of the problem and the implemented solution.

  2. Good: bit too technical (ie, reads more like code than prose) but otherwise demonstrates a clear grasp of the problem.

  3. Average: lacks important details suggesting gaps in the comprehension of the problem.

  4. Poor: too short or vague suggesting very little to no understanding of the problem.

  5. Very Poor: empty or simply a rehash of the directions provided in the discussion document.