(3) The students could analysis the performance (both time and space complexity) for a given algorithm, then propose
optimization techniques to improve it.
(4) 了解先进的数据结构和算法思想,并能简单的加以引用
(4) The students will know some advanced data structures and algorithms, and they also can use them in simple cases
Lecture tentative schedule:
Lec 1 Course introduction, preliminary review (math, programming language)
Lec 2 Algorithm analysis (Searching on ordered array and binary search)
Lec 3 Linked List, Stack and Queue (basic operators, implementations and applications)
Lec 4 String, KMP, and FSA (string introduction, KMP algorithm)
Lec 5 Advanced strings (FSA introduction, the suffix tree)
Lec 6 Tree (tree definition, properties)
Lec 7 Priority Queue / Heap / Binary Search Tree (binary tree and complete binary tree)
Lec 8 Balanced Binary Search Tree: AVL-tree, Red-black tree, Splay tree (insertion/deletion operators)
Lec 9 Graph (graph definition, properties, traversal algorithms and applications: SSSP, Topological Sort, DAG)
Lec 10 Advanced Graph Theory I (Union-find structure, Euler-tour structure)
Lec 11 Advanced Graph Theory II (Dynamic connectivity, Binomial and Fibonacci heaps)
Lec 12 Points (kd-tree, bootstrapping, priority search tree, and range tree)
Lec 13 Intervals (Interval tree and segment tree)
Lec 14 Nearest neighbor search (Locality Sensitive Hashing)
Lec 15 Computational Complexity (P, NP, NP-hard, NP-Complete)
Lec 16 Course Review
Lab tentative schedule:
Lab 1 fundamental programming language skill training
Lab 2 fundamental math problems
Lab 3 searching problems