This is a tentative syllabus for the course. Links will be added regularly with topics and assignments. Notes will be provided for each class, linked from the date. Unless otherwise indicated, references are to the textbook Data Structures & Algorithms in Java by Goodrich and Tamassia.

Note that Programming Drills are not included as they depend on the sections you're in.

Feedback is appreciated — typos, suggestions for more detailed explanations, additional examples, etc.

Day # Date Problems Techniques References Out Due
Day1 Sep 15 intro class goal, syllabus, Java basics 1 SA-0
Sep 16 (x-hour) debug Debugging tutorial
Day2 Sep 17 encapsulation classes, instance variables, contructors, overloading 2 SA-1 SA-0
Day3 Sep 19 inheritance base classes, subclasses, overriding SA-2 SA-1
Day4 Sep 22 graphics buffered images, video SA-3 SA-2
Day5 Sep 24 abstraction abstract data types 7.1 PS-1 SA-3
Day6 Sep 26 lists linked list implementation 3.2 SA-4
Day7 Sep 29 lists 2 growing array implementation 7.2, 3.1.1, 4-4.3, 7.4 SA-4
Day7x Sep 30 (x-hour) algorithm efficiency asymptotic notation 7.1
Day8 Oct 1 hierarchies trees and recursion 8 PS-2 PS-1
Oct 3 midterm review ask questions about midterm 1
Day9 Oct 6 hierarchies 2 binary search trees 11.1
Oct 7 midterm 1 6:00pm - 8:00pm Room Cummings 100
Day10 Oct 8 hierarchies 3 balance, 2-3-4 trees, red/black trees Ch 11.2, 11.5, 11.6 SA-5
Day11 Oct 10 info retrieval maps, sets 10.1 SA-6 SA-5 & PS-2
Day12 Oct 13 hashing hash functions, tables 10.2 SA-7 SA-6
Day13 Oct 15 keeping order stacks, queues 6 SA-8 SA-7
Day14 Oct 17 prioritizing priority queues, heaps 9.1 - 9.4 PS-3 SA-8
Day15 Oct 20 relationships graphs 14.1, 14.2 SA-9
Day16 Oct 22 graph traversal breadth- and depth-first search 14.3 PS-4 SA-9
Oct 24 midterm review ask questions about midterm 2 PS-3
Day17 Oct 27 shortest paths Dijkstra's algorithm, A* search 14.6
Oct 28 midterm 2 6:00pm - 8:00pm Room Cummings 100
Day18 Oct 29 pattern matching finite automata
Day19 (video) Oct 31 pattern recognition hidden Markov models PS-5 PS-4
Day20 Nov 3 web services acronym soup (URL, REST, XML, GUI) Java tutorials
Day21 Nov 5 client/server sockets, threads Java tutorials
Day22 Nov 7 synchronization synchronized blocks, monitors, semaphores Java tutorials PS-6 PS-5
Day23 Nov 10 producer/consumer streams Java tutorials
Day24 Nov 12 string finding Boyer-Moore, tries, suffix trees Ch 13.2, 13.3
Nov 14 future Future
Nov 17 review ask questions about the final PS-6
Nov 21 final exam 3:00pm - 6:00pm LSC100