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 |
---|---|---|---|---|---|
Mar 27 | intro | basic Java program structure, classes & objects, console | 1 | SA-0 | |
Mar 29 | animated blobs | objects, classes, inheritance; GUI event-driven programming | 2 | SA-1 | SA-0 |
Mar 31 | animated images | lists, images | SA-2 | SA-1 | |
Apr 3 | image processing | image representation, nested loops | SA-3 | SA-2 | |
Apr 5 | video processing | put it all together | PS-1 | SA-3 | |
Apr 6 (x-hour) | lists | interfaces; generics; exceptions; linked lists | 7.1, 3.2 | SA-4 | |
Apr 7 | lists 2 | efficiency; array lists; iterators | 7.2, 3.1.1, 4-4.3, 7.4 | ||
Apr 10 | hierarchies 1 | trees and recursion | 8 | SA-4 | |
Apr 12 | midterm review | ||||
Apr 13 | midterm 1 | LSC100 6:00pm - 8:00pm | |||
Apr 14 | hierarchies 2 | binary search trees | 11.1 | PS-2 | PS-1 |
Apr 17 | info retrieval | maps, sets | 10.1 | ||
Apr 19 | hashing | hash functions, tables | 10.2 | SA-5 | |
Apr 21 | keeping order | stacks, queues | 6 | SA-6 | PS-2 |
Apr 24 | prioritizing | priority queues, files | 9.1, 9.2 | PS-3 | SA-5 |
Apr 26 | prioritizing 2 | heaps | 9.3, 9.4 | SA-6 | |
Apr 28 | relationships | graphs | 14.1, 14.2 | ||
May 1 | graph traversal | breadth- and depth-first search | 14.3 | SA-7 | |
May 3 | shortest paths | Dijkstra's algorithm, A* search | 14.6 | SA-7 | |
May 4 | midterm 2 | LSC100 6:00pm - 8:00pm | |||
May 5 | state space | backtracking | PS-4 | PS-3 | |
May 8 | pattern matching | finite automata | |||
May 10 | pattern recognition | Classification | |||
May 12 | web services | acronym soup (URL, REST, XML, GUI) | Java tutorials | PS-4 | |
May 15 | client/server | sockets, threads | Java tutorials | SA-8 | |
May 17 | synchronization | synchronized blocks, monitors, semaphores | Java tutorials | PS-5 | |
May 19 | producer/consumer | streams | Java tutorials | SA-8 | |
May 22 | balance | 2-3-4 trees, red-black trees | Ch 11.2, 11.5, 11.6 | SA-9 | |
May 24 | yet another map | skip lists | Ch 10.4 | ||
May 26 | string finding | Boyer-Moore, tries, suffix trees | Ch 13.2, 13.3 | SA-9 | |
May 29 | No Class | PS-5 | |||
May 31 | Exam Review | ||||
June 03 | Final Exam | Saturday, June 03, 2017 3:00 PM | KEMENY 008 |