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 (array list, linked list, 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 problems in the assignment. The zip file contains the starter files for the problems, any necessary data files, and notes.txt
file for the assignment. The discussion document provides additional explanation of the assignment problems and directions on how to solve them.
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.
Note: If your active submission is partial, your assignment score will also be partial, so in order to be eligible for full credit, make sure you have an active submission containing all the required files for the assignment.
Your solution to each assignment 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.
Your solutions will additionally be checked by a TA for code clarity and efficiency. Your solution to each problem will receive some number of points if it passes all the autograder tests for that problem and 0 otherwise. In addition, your solution will receive some number of points if it follows good programming principles (ie, is clean, well-organized, uses meaningful variable names, includes useful comments, and is efficient) and will be marked down otherwise.
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 state its goal in your own words and describe your approach to solve the problem along with any issues you encountered and if/how you managed to solve those issues. For each problem, your notes will receive some number of points if the goal and approach subsections meet our expectations and will be marked down otherwise.