A series of three case studies will be presented in lecture, in order to illustrate the concepts being taught on substantial examples. Before each case study, you will implement a solution to the case study problem yourself, both to give you practice coding in Java, and to introduce you to the case study.

To use the supporting files in Eclipse, choose the folder containing the unzipped files, using File » Import » Existing Project into Workspace.

Exploration 1: A Midi piano (PDF)

exploration1 (ZIP) (This ZIP file contains 4 .java files and 2 files with no file extension.)

Exploration 2: Building a Sudoku solver with SAT (PDF)

exploration2 (ZIP) (This ZIP file contains 2 .txt files and 2 files with no file extension.)

Exploration 3: Photo organizer (PDF)

exploration3 (ZIP - 3.1MB) (This ZIP file contains 12 .jpeg files, 5 .java files and 2 files with no file extension.)

(,, and are co-written by Jongmin Baek, and are used with permission.)

Problem Sets

To consolidate your understanding of the lecture ideas, you’ll do three problem sets, one on each paradigm. Like projects, problem sets will involve both design and implementation work, but the problems will be smaller and less open-ended.


Problem set 1: The state machine paradigm (PDF)

Problem set 2: The symbolic paradigm (PDF)

Problem set 3: The relational paradigm (PDF)

Course Info

Learning Resource Types

assignment Problem Sets
notes Lecture Notes
group_work Projects
assignment_turned_in Programming Assignments with Examples