Data Structures
Schedule
- Week 1 (Aug 26th-)
- Week 2 (Sep 2nd-)
- Tues: Algorithm complexity (Chapter 2 & 3 | notes on algorithm analysis)
- Thur: Divide-and-conquer: quicksort & mergesort (Chapter 7.5, 7.6) and more sorting algorithms (notes)
- Lab: More practice with Java IDEA & Online judges
- Week 3 (Sep 9th-)
- Tues & Thur: Lists, stacks and queues (Chapter 4; notes)
- Lab: Understand ADT vs implementation. Use stacks vs queues
- Week 4 (Sep 16th-)
- Tues & Thur: Search problem & algorithm (Chapter 9.4; notes) & hashing (notes)
- Lab:
- Week 5 (Sep 23rd-)
- Tues: Binary trees and tree traversal (Chapter 5.1-5.4; notes)
- Thur: BST (notes)
- Lab: work with trees
- Week 6 (Sep 30th-)
- Tues: BST (Cont.) & Balanced BST -- AVL trees (notes)
- Thur: Heaps and priority queues (Chapter 5.5; notes)
- Lab: heaps and applications
- Week 7 (Oct 7th-)
- Week 8 (Oct 14th-)
- Tues: Review
- Thur: Midterm
- Lab: Fall Break NO lab
- Week 9 (Oct 21st-)
- Week 10 (Oct 28th-)
- Week 11 (Nov 3rd-)
- Tues: Topological sort (notes) & Single-source shortest paths (BFS based algorithm & Dijkstra's; Chapter 11.4; notes)
- Thur: Single-source shortest paths (Dijkstra's algorithm & Bellman-Ford algorithm; notes)
- Lab: Graph algorithms
- Week 12 (Nov 10th-)
- Week 13 (Nov 17th-)
- Tues: MST problem/algorithms & Review of disjoint-set data structure and its application in Kruskal's algorithm & finding connected components.
- Thur: Spatial trees (Chapter 13.3; notes)
- Lab: students work out the problems on their own
- Week 14 (Nov 24th-)
- Week 15 (Dec 1st-)
- Tues: Tries (Chapter 13.1; notes); Suffix tree, suffix array, and string matching (notes)
- Thur: B-trees (& variants) (notes) & Data structures and algorithms for big data (notes)
- Lab: review of lab problems & group project
- Week 16 (Dec 8th-)
- Week 17 (Dec 15th-)