課程大綱 Syllabus |
學生學習目標 Learning Objectives |
單元學習活動 Learning Activities |
學習成效評量 Evaluation |
備註 Notes |
序 No. | 單元主題 Unit topic |
內容綱要 Content summary |
1 | Algorithm and time complexity |
1. What is algorithm?
2. Time complexity and big O notation |
Learn the basic concepts of algorithms and time complexity |
講授
|
|
|
2 | Insertion Sort and Merge Sort |
1. Insertion sort
2. Merge sort |
Learn insertion sort and merge sort algorithms |
講授 閱讀討論
|
|
|
3 | Priority Queues and Heaps |
1. Priority Queues
2. Heaps |
Learn the data structures of priority queues and heaps. |
講授 實作 閱讀討論
|
作業
|
|
4 | Heap Sort and Quick Sort |
1. Heap Sort
2. Quick Sort |
Learn heap sort and quick sort algorithms |
講授 閱讀討論
|
|
|
5 | The Lower Bound of Sorting Algorithms and Finding the Kth Minimum |
1. The Lower Bound of Sorting Algorithms
2. Finding the Kth Minimum |
Learn the lower bound of sorting algorithms and an algorithm for finding the Kth minimum |
講授 閱讀討論
|
|
|
6 | Binary Search and Hash Table |
1. Binary Search
2. Hash Table |
Learn binary search and hash table algorithms |
講授 實作 閱讀討論
|
作業
|
|
7 | Divide-and-Conquer Strategies and Recursion |
1. Divide-and-Conquer Strategies
2. Recursion |
Learn the divide-and-conquer strategies and recursion algorithms |
講授 實作 閱讀討論
|
|
|
8 | Greedy Algorithms |
1. Greedy Algorithms
2. Some scheduling algorithms using the greedy strategy |
Learn some greedy algorithms and scheduling algorithms. |
講授 實作 閱讀討論
|
|
|
9 | Dynamic Programming |
1. Dynamic Programming
2. Dynamic Programming versus Divide-and-Conquer |
Learn the principles of dynamic programming versus divide-and-conquer |
講授 實作 閱讀討論
|
報告
|
|
10 | Matrix-Chain Product and Longest Common Subsequence |
1. Matrix-Chain Product Algorithms
2. Longest Common Subsequence Algorithms |
Learn matrix-chain product and longest common subsequence algorithms. |
講授 實作 閱讀討論
|
|
|
11 | Graph Traversal |
1. Depth-First Search
2. Breadth-First Search |
Learn graph traversal algorithms. |
講授 實作 閱讀討論
|
|
|
12 | Strongly Connected Components of Graphs |
1. Strongly Connected Components of Graphs
2. Algorithms for Finding Strongly Connected Components |
Learn strongly connected components of graphs and algorithms for finding strongly connected components. |
講授 實作 閱讀討論
|
作業
|
|
13 | Shortest Path Algorithms |
1. Positive-Edge Shortest Path Algorithms
2. Shortest Path Algorithms with Negative Edges |
Learn single-node shortest path algorithms |
講授 實作 閱讀討論
|
|
|
14 | All-Pair Shortest Path Algorithms |
1. All-Pair Shortest Path Algorithms
2. Detecting Negative Cycles |
Learn all-pair shortest path algorithms and algorithms for detecting negative cycles. |
講授 實作 閱讀討論
|
|
|
15 | Acyclic Graphs |
1. Detecting Acyclic Graphs
2. Topological Sort of an Acyclic Graph |
Learn algorithms for detecting acyclic graphs and for topological sort of an acyclic graph. |
講授 實作 閱讀討論
|
作業
|
|
16 | Minimum Spanning Tree |
1. Prim's Algorithm
2. Kruskal's Algorithm |
Learn minimum spanning trees of a graph, and Prim's algorithm and
Kruskal's algorithm for finding a minimum spanning tree. |
講授 實作 閱讀討論
|
|
|
17 | Network Flow and Bipartite Matching |
1. Network Flow Algorithms
2. Maximum Bipartite Matching Algorithms |
Learn network flow algorithms and maximum bipartite matching algorithms |
講授 實作 閱讀討論
|
|
|
18 | NP-Completeness |
1. P and NP
2. NP-Completeness
3. Some NP-Complete Problems |
Learn NP-completeness and some NP-complete Problems |
講授 實作 閱讀討論
|
期末考
|
|