Did you find a typo or bug in a lab, homework, or project? Was there something that was confusing or
unclear? Let us know how we can improve our assignments by submitting suggestions. We also welcome
positive feedback. Let us know if you particularly liked something.

Quick Navigation

Labs

Number | Title | Concepts | Due |
---|---|---|---|

1 | javac, java, Git | Compilation, version control systems, Git, submission process | Fri 1/27, 5:00 PM |

Setting Up Your Computer | Installing Java, setting PATH variable | N/A | |

2 | IDEs | IntelliJ, debuggers, pass-by-value, IntLists, destructive vs. non-destructive | Fri 1/27, 5:00 PM |

IntelliJ Home Setup | IntelliJ, setting up projects | N/A | |

3 | Testing, Debugging | JUnit, unit testing, debugging, style checker | Fri 2/3, 5:00 PM |

4 | Peer Code Review | Project 1A peer code review | Fri 2/10, 5:00 PM |

5 | Getting Started: Proj 2 | Giving you tips and ideas for tackling proj2 | Fri 2/19, 5:00 PM |

6 | Project 2 Design Review | Design review for proj2 | Fri 2/26, 5:00 PM |

7 | Project 2 Work Day | N/A | N/A |

8 | Tree Maps | BST's, Maps | Fri 3/10, 5:00 PM |

9 | Hash Maps | Hashing, Hash Maps | Fri 3/17, 5:00 PM |

10 | Heap Min PQ | Heaps, Priority Queues | Fri 3/24, 5:00 PM |

11 | Midterm 2 Reviews | N/A | N/A |

12 | Merge and Quick Sort | Merge sort, Quicksort | Fri 4/14, 5:00 PM |

13 | Radix Sort | Radix sort | Fri 4/21, 5:00 PM |

14 | Fractal Sound | Make music with bitwise operations | Fri 4/28, 5:00 PM |

15 | Hug Life | Ecosystem simulation | Fri 5/5, 5:00 PM |

Homework

Number | Title | Concepts | Due Date |
---|---|---|---|

0 | A Java Crash Course (Optional) | Java practice | N/A |

1 | Java Syntax and Sound Synthesis | Java practice | Wed 2/22, 11:59 PM |

2 | Percolation | Disjoint sets | Wed 3/15, 11:59 PM |

3 | 8 Puzzle | A* Search | Thur 3/23, 11:59 PM |

4 | Hashing | Priority queues | Mon 4/6, 11:59 PM |

5 | Seam Carving | Dynamic Programming | Wed 4/26 11:59 PM |

6 | Boggle | Tries, Search | Sat 5/6, 11:59 PM |

7 | Compression | Tries, Compression | Sat 5/6, 11:59 PM |

Projects

Number | Title | Creators | Category | Weight | Due Date |
---|---|---|---|---|---|

0 | NBody | Josh Hug | Final | 25 Points | Fri 1/27, 11:59 PM |

1 | Data Structures | Josh Hug | Part 1A: Data Structures | 40 Points | Fri 2/3, 11:59 PM |

Part 1B: Testing | Fri 2/10, 11:59 PM | ||||

2 | Database | Matt Mussomele | Final | 100 Points | Mon 3/6, 11:59 PM |

3 | BearMaps | Alan Yao | Final | 75 Points | Wed 4/19, 11:59 PM |

Discussion Handouts

Number | Title | Concepts | Solutions |
---|---|---|---|

1 | Intro, Code Translation | Intro to Java | Solution |

2 | Scope, Pass-by-Value, Static | Pass by value, Static methods and fields, Linked lists, Destructive/Non-Destructive operations | Solution |

3 | Linked Lists and Arrays | Linked Lists, Arrays | Solution |

4 | Inheritance | Inheritance, Static vs. Dynamic Type, Overriding Methods, Dynamic Method Lookup | Solution |

Exam Prep 4 | Linked Lists, Inheritance, Static vs. Dynamic Type, Casting | Solution | |

5 | Midterm 1 Review | N/A | N/A |

6 | Selecting ADTs | Using and Implementing Abstract Data Types | Solution |

Exam Prep 6 | TBA | Solution | |

7 | Asymptotic Analysis I | Intro to big theta, O, and omega, Analyzing runtime in loops, Interview questions | Solution |

Exam Prep 7 | TBA | Solution | |

8 | Asymptotic Analysis II | Analyzing recursive code | Solution |

Exam Prep 8 | TBA | Solution | |

9 | Hashing | Asymptotic analysis (II), Analyzing Runtime | Solution |

Exam Prep 9 | TBA | Solution | |

10 | Heaps and Graphs | Basic heap operations, Graph representation, Bipartite graphs | Solution |

Exam Prep 10 | TBA | Solution | |

11 | Graphs | DFS, BFS, Topological sort, Regex | Solution |

Exam Prep 11 | TBA | Solution | |

12 | Graphs, Sorting | Disjkstra's algorithm, A*, MST, Insertion sort, Selection sort, Merge sort, Heapsort | Solution |

Exam Prep 12 | TBA | Solution | |

13 | More Sorting | Quicksort, Comparing different sorts | Solution |

Exam Prep 13 | TBA | Solution |

Guerrilla Sections

Title | Concepts | Solutions | |
---|---|---|---|

Section 1 | Java Syntax, Pass-By-Value, Linked Lists, Arrays | Solution | |

Section 2 | ALists, OOP, Abstract Classes, Interfaces, HOF | Solution | |

Section 3 | ADTs, Iterators, Exceptions, Delegation vs. Extension, Generics | Solution | |

Section 4 | Asymptotic Analysis, Disjoint Sets, Trees | Solution | |

Section 5 | Hashing, Heaps, More Trees | Solution | |

Section 6 | Sorting and Graphs | Solution | |

Section 7 | Final Review | Solution |

Group Tutoring Sections

Title | Concepts | Solutions |
---|---|---|

Week 3 (Alternate) | Arrays, Recursion, Pointers | Solution (Alternate) |

Week 4 | Reference, Polymorphism | Solution |

Week 5 | Abstract Classes, Interfaces | Solution |

Week 6 | Problem Solving with ADTs | Solution |

Week 7 | Exceptions, Iterators | Solution |

Week 8 | Asymptotic Analysis | Solution |

Week 9 | Binary Trees | Solution |

Week 10 | Hashing, Heaps | Solution |

Week 11 | Graphs, Searches | Solution |

Week 12 | MSTs, Graph Algorithsm | Solution |

Week 13 | Sorting Algorithms | Solution |

Week 14 | Counting Sorts, Tries | Solution |

Exams

Exam | Concepts | Solutions |
---|---|---|

Midterm 1 | Java syntax, Array, Linked list, OOP, Inheritance, Dynamic method lookup, Interface | Solution |

Midterm 2 | Hash Maps, Heaps, Disjoint Sets, Asymptotics, Trees, Data Structure and Algorithm Selection and Design, Regex | Solution |

Past Exams

Exam | Instructor | Concepts | Solutions |
---|---|---|---|

Fall 2016 Midterm 1 | Paul Hilfinger | IntLists, Arrays, Testing, Interface, Inheritance | Solution |

Spring 2016 Midterm 1 | Josh Hug | IntLists, Static Keyword, Pointers, Inheritance, SLists, Bits, Higher Order Functions, Arrays | Solution |

Fall 2015 Midterm 1 | Paul Hilfinger | IntLists, Arrays, Bits, Regex, Interface, Inheritance | Solution |

Spring 2015 Midterm 1 | Josh Hug | IntLists, Debugging, SSList, Bits, Higher Oder Functions, Interface, Inheritance, Static | Solution |

Fall 2016 Midterm 2 | Paul Hilfinger | Asymptotic Analysis, Minimax, Alpha-Beta Pruning, BST, Hash table, Regex, Bitwise Operations, Interface | Solution |

Spring 2016 Midterm 2 | Josh Hug | BST, Hash Table, Union-Find, Exceptions, Asymptotic Analysis, Balanced Trees | Solution |

Fall 2015 Midterm 2 | Paul Hilfinger | TBA | Solution |

Spring 2015 Midterm 2 | Josh Hug | BST, Heap, Hashing, Asymptotic Analysis, Exceptions, Red Black Trees | Solution |

Spring 2016 Final | Josh Hug | Graph, Sorting, Asymptotic Analysis, Trees, Dijkstra's Algorithm, Heap, JUnit Testing, Dynamic Programming, Tries | Solution |

Spring 2015 Final | Josh Hug | Kruskal's Algorithm, Asymptotic Analysis, Compare Data Structures, Sorting, A*, Hashing, Radix and bits | Solution |