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 |