Assignments

This page contains the programming assignments for this course. Each assignment specification describes the technical requirements. The assignment FAQ contains important information common to all assignments.

Grading. Programming assignments are worth 35% of your total course grade: 7% for completion credit (submitting code that compiles by the deadline) and 28% for code review credit (demonstrating your understanding in a code review with a TA). The autograder is for feedback only—it does not determine your grade. See the assignment FAQ and the course policies for more details.

Submission. Submit your solutions via TigerFile using your Princeton NetID. Assignments are "due" at 11:59pm ET on Monday evenings (for the completion grade).
# "DUE" LOGO ASSIGNMENT COLLABORATION LINKS
1 Monday
2/2
Percolation
Estimate the percolation threshold
using union–find.
individual Project
Submit!
The assignments below have not yet been updated for Spring 2026.
2 Monday
2/9
Queues
Implement two collections
using arrays and linked lists.
individual Project
Submit!
3 Monday
2/23
Autocomplete
Find all terms beginning with a given prefix,
sorted by weight.
individual Project
Submit!
CR1 Week of
3/16 to 3/21
Code Review 1: Percolation, Queues, and Autocomplete
4 Monday
3/23
K-d Trees
Implement k-d trees with
nearest neighbor search.
partner Project
Submit!
Leaderboard
5 Monday
3/30
WordNet
Measure the relatedness of two nouns
using the WordNet digraph.
partner Project
Submit!
Leaderboard
CR2 Week of
4/8 to 4/14
Code Review 2: K-d Trees and WordNet
6 Monday
4/13
Seam Carving
Implement a content-aware
image resizing algorithm.
partner Project
Submit!
Leaderboard
7 Monday
4/27
Fraud Detection
Predict credit card fraud using
algorithms for machine learning.
partner Project
Submit!
CR3 Week of
4/27 to 5/1
Code Review 3: Seam Carving and Fraud Detection