Caution! You are looking at an outofdate version of this website from Spring 2017.
To access the current version, click here.
Here are the programming assignments and final project. If you're stuck, the checklists contain hints and possible progress steps. The course policies for collaboration and late work appear in the syllabus. The assignment FAQ answers many common questions related to the programming assignments.
#  DUE  LOGO  ASSIGNMENT  COLLABORATION  SUBMIT 

0  Monday Feb. 13th 
Hello, World (Checklist) Install a Java programming environment, write a few short Java programs, and submit them using our submission system. 
This is an individual assignment. 
Submit! 

1  Monday Feb. 20th 
Conditionals & Loops (Checklist) Write five short Java programs to gain practice with loops, conditionals, and arrays. 
This is an individual assignment.  Submit!  
2  Monday Feb. 27th 
NBody Simulation
(Checklist) Simulate the motion of n particles, mutually affected by gravitational forces, and animate the results. 
This is an individual assignment.  Submit!  
3  Monday Mar. 6th 
Recursive Graphics (Checklist) Create a library of geometric transforms on polygons; plot a Sierpinski triangle; and plot a recursive pattern of your own design. 
This is an individual assignment.  Submit!  
4  Monday Mar. 27th 
Hamming Codes in TOY (Checklist) Write a TOY program to encode data using Hamming codes. Then write a TOY program to correct encoded data that has been corrupted. 
This is an individual assignment.  Submit! Leaderboard (results) 

5  Monday Apr. 3rd 
LinearFeedback Shift Register (Checklist) Simulate a linearfeedback shift register to produce pseudorandom bits. Then, use those bits to implement a simple encryption scheme for digital images. 
This is an individual assignment.  Submit!  
6  Monday Apr. 10th 
Guitar Hero (Checklist) Simulate the plucking of a guitar string using the Karplus–Strong algorithm, transforming your computer into a musical instrument. 
You can work with a partner on this assignment.  Submit!  
7  Monday Apr. 17th 
Markov Model (Checklist) Use a Markov chain to create a statistical model of a piece of English text. Simulate the Markov chain to generate stylized pseudorandom text. 
You can work with a partner on this assignment.  Submit!  
8  Monday Apr. 24th 
Traveling Salesperson Problem (Checklist) Implement two greedy heuristics to find good (but not optimal) solutions to the traveling salesperson problem. 
You can work with a partner on this assignment. 
Submit! Leaderboard (results) 

9  Tuesday May 16th at 5pm 
Atomic Nature of Matter (Checklist) Reaffirm the atomic nature of matter by tracking the motion of particles undergoing Brownian motion, fitting this data to Einstein's model, and estimating Avogadro's number. 
You can work with a partner on this assignment.  Submit! 