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. Feedback is appreciated — typos, suggestions for more detailed explanations, additional examples, etc.

Date Problems Techniques References Out Due
Jan 6 intro course intro, Java basics 1 SA-0
Jan 8 encapsulation classes, instance variables, contructors, overloading 2 SA-1 SA-0
Jan 10 inheritance base classes, subclasses, overriding SA-2 SA-1
Jan 13 graphics buffered images, video SA-3 SA-2
Jan 15 abstraction abstract data types, asymptotic notation 7.1 PS-1 SA-3
Jan 17 lists linked list implementation 3.2 SA-4
Jan 20 no class MLK day
x-hour lists 2 growing array implementation 7.2, 3.1.1, 4-4.3, 7.4 SA-4
Jan 22 hierarchies trees and recursion 8 PS-2 PS-1
Jan 24 hierarchies 2 binary search trees 11.1
Jan 27 midterm review ask questions about midterm 1
Jan 28 midterm 1 6:00pm - 8:00pm Cummings 100
Jan 29 hierarchies 3 balance, 2-3-4 trees, red/black trees (no recitation) 11.2, 11.5, 11.6 SA-5 PS-2
Jan 31 info retrieval maps, sets 10.1 SA-6 SA-5
Feb 3 hashing hash functions, tables 10.2 SA-7 SA-6
Feb 5 keeping order stacks, queues 6 SA-8 SA-7
Feb 7 prioritizing priority queues, heaps 9.1 - 9.4 PS-3 SA-8
Feb 10 relationships graphs 14.1, 14.2 SA-9
Feb 12 graph traversal breadth- and depth-first search 14.3 SA-9
Feb 14 shortest paths Dijkstra's algorithm, A* search 14.6 PS-4 PS-3
Feb 17 midterm review ask questions about midterm 2
Feb 18 midterm 2 6:00pm - 8:00pm Cummings 100
Feb 19 pattern matching finite automata, finite state machines
Feb 21 pattern recognition hidden Markov models PS-5 PS-4
Feb 24 web services acronym soup (URL, REST, XML, GUI) Java tutorials
Feb 26 client/server sockets, threads Java tutorials
Feb 28 synchronization synchronized blocks, monitors, semaphores Java tutorials PS-6 PS-5
Mar 3 producer/consumer streams Java tutorials
Mar 5 string finding Boyer-Moore, tries, suffix trees 13.2, 13.3
Mar 7 final exam review ask questions about the final exam PS-6
tbd final exam 12-hour section location tbd
tbd final exam 2-hour section location tbd