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

Date Problems Techniques References Out Due
Sep 14 intro basic Java program structure, classes & objects, console 1 SA-0
Sep 16 animated blobs objects, classes, inheritance; GUI programming 2 SA-1 SA-0
Sep 18 animated images lists, images SA-2 SA-1
Sep 21 image processing image representation, nested loops SA-3
Sep 23 video processing put it all together PS-1 SA-2
Sep 25 lists interfaces; generics; exceptions; linked lists 7.1, 3.2 SA-4 SA-3
Sep 28 lists 2 efficiency; array lists; iterators 7.2, 3.1.1, 4-4.3, 7.4 SA-4
Sep 30 hierarchies trees and recursion 8
Oct 2 hierarchies 2 binary search trees 11.1 PS-2 PS-1
Oct 5 midterm 1
Oct 7 info retrieval maps, sets 10.1
Oct 9 hashing hash functions, tables 10.2 SA-5 PS-2
Oct 12 keeping order stacks, queues 6 SA-6 SA-5
Oct 14 prioritizing priority queues, files 9.1, 9.2 PS-3 SA-6
Oct 16 prioritizing 2 heaps 9.3, 9.4
Oct 19 relationships graphs 14.1, 14.2 SA-7
Oct 21 graph traversal breadth- and depth-first search 14.3 PS-4 PS-3
Oct 23 shortest paths Dijkstra's algorithm, A* search 14.6 SA-7
Oct 26 midterm 2
Oct 28 pattern matching finite automata
Oct 30 pattern recognition hidden Markov models PS-5 PS-4
Nov 2 web services acronym soup (URL, REST, XML, GUI) Java tutorials
Nov 4 client/server sockets, threads Java tutorials
Nov 6 synchronization synchronized blocks, monitors, semaphores Java tutorials SA-8 PS-5
Nov 9 producer/consumer streams Java tutorials PS-6 SA-8
Nov 11 balance 2-3-4 trees, red-black trees 11.2, 11.5, 11.6 SA-9
Nov 13 string finding Boyer-Moore, tries, suffix trees 13.2, 13.3 SA-9
Nov 16 review PS-6
final exam available Nov 30 9:00am to Dec 2 11:00am