中正大學課程大綱
課程名稱(中文): 演算法導論 開課單位: 通訊工程學系(Department of Communications Engineering)
課程名稱(英文) Introduction to Algorithms 課程代碼 4303035_01
授課教師: 賴傳淇 學分數 3
必/選修 選修 開課年級 大三
先修科目或先備能力:
Computer programming, Discrete mathematics, and Data structures
課程概述:
Study design, analysis, correctness proof, and implementation of algorithms for solving problems by computers. Learn strategies for solving problems, techniques for designing and analyzing algorithms, and details for efficient implementations of algorithms in computers.
學習目標:
1. Formulate applications as problems solvable by computers.
2. Design efficient algorithms for solving problems.
3. Prove the correctness of an algorithm.
4. Analyze the time and space complexity of an algorithms.
5. Efficient implementations of algorithms as programs in computers.
教科書:
自編教材
Introduction to Algorithms, Cormen, Thomas H., Leiserson, Charles E., Rivest, Ronald L., https://www.tenlong.com.tw/products/9780262046305?list_name=srh ISBN : 026204630X

課程大綱 分配時數 核心能力 備註
單元主題 內容綱要 講授 示範 隨堂作業 其他
Lecture 1
Course Introduction
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 2
Introduction to basic data structures
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 3
Complexity Analysis:
1. Model of computation
2. Worst-case and average-case analysis
3. Big-O Notation
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 4
Complexity Analysis:
4. Running time calculation
5. Iteration and Integration
6. Recursion and recurrence equations
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 5
To demonstrate how divide-and-conquer is used to solve problems, and how to analyze the time and stack complexity of recursive programs:
1. Mergesort, Quicksort, divide and conquer, and recursion
2. Developing recurrence equations for recursive programs
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 6
To demonstrate how divide-and-conquer is used to solve problems, and how to analyze the time and stack complexity of recursive programs:
3. Techniques for solving recurrence equations
4. Divide-and-conquer for computational geometry
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 7
To demonstrate how incremental insertion is used to solve problems, and counting techniques for analyzing incremental insertion.
1. Introduction Incremental Insertion
2. Incremental insertion for sorting and computational geometry
3. Counting techniques for analyzing increment insertion
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 8
To demonstrate how to prove nontrivial lower bounds for comparison sort and geometric problems.
1. Decision tree and lower bound for comparison sort
2. Countsort and Radixsort
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 9
Midterm Exam
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 10
Greedy algorithms, amortized analysis :
1. Greedy algorithms vs Dynamic Programming
2. Greedy Choice Property
3. Activity selection
4. Hoffman code
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 11
Greedy algorithms, amortized analysis :
5. Knapsack problem
6. Task scheduling
7. Greedy used as a heuristic for finding “good” solutions
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 12
Graph Search and Connectivity :
1. Representations and Basics of Graphs
2. Graph search: DFS, BFS, and PFS
3. DFS and Topological Sort
4. DFS for computing strongly connected components
5. DFS for computing biconnected components, bipartite matching
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 13
Minimum Spanning Trees:
1. Greedy Choice Theorem
2. Kruskal’s Algorithm
3. Data structures for disjoint sets
4. Prim’s Algorithm
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 14
Single-Source shortest paths :
i. Single-source shortest paths in weighted graphs
ii. Shortest-Path Problems
iii. Properties of Shortest Paths, Relaxation
iv. Dijkstra’s Algorithm
v. Bellman-Ford Algorithm
vi. Shortest-Paths in DAGs
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 15
All-Pair Shortest Paths
i. Recursive formulation of all-pairs shortest paths
ii. Shortest paths and matrix multiplication
iii. Floyd-Warshall Algorithm
Johnson’s Algorithm for Sparse Graphs
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 16
P, NP, and NP-Complete :
1. Class P and NP
2. NP algorithms

3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 17
P, NP, and NP-Complete :
3. NP-Complete
4. Approximation Algorithms
3 1.11.21.32.12.23.13.24.14.24.34.4
Lecture 18
Final Exam
3 1.11.21.32.12.23.13.24.14.24.34.4

教育目標
1.傳授學生通訊工程相關知識,配合各種實驗的進行,達到理論與實務相結合之目的。
2.訓練學生具有分析與解決問題的能力。
3.訓練學生良好的溝通技巧,並培養分工合作發揮團隊力量的能力。
4.培養學生瞭解國內外相關產業之現狀與需求,並理解專業倫理及社會責任。

核心能力
1.1.瞭解通訊工程基礎知識。
1.2.培養通訊工程實作能力。
1.3.訓練技術報告寫作與簡報的能力。
2.1.培養分析問題的能力。
2.2.培養善用資源以解決問題的能力。
3.1.培養溝通與表達的能力。
3.2.訓練運用個人專長,與他人合作完成專案計畫。
4.1.瞭解國內外相關產業現況。
4.2.理解工程倫理及社會責任。
4.3.培養良好的資訊能力。
4.4.培養科技英文能力

請尊重智慧財產權,不得非法影印教師指定之教科書籍

教學要點概述:
1. 教材編選(可複選):自編簡報(ppt)教科書作者提供
2. 教學方法(可複選):講述板書講述
3. 評量工具(可複選):上課點名 10.00%, 隨堂測驗0%, 隨堂作業30.00%, 程式實作0%, 實習報告0%,
                       專案報告0%, 期中考30.00%, 期末考30.00%, 期末報告0%, 其他0%,
4. 教學資源:課程網站 教材電子檔供下載 實習網站
5. 教學相關配合事項:

課程目標與教育核心能力相關性        
請勾選:1.11.21.32.12.23.13.24.14.24.34.4
1.1 瞭解通訊工程基礎知識。()
為何有關:
This course will introduce several classical problems and well-known algorithms. Also, algorithms are the core to many sub-fields in Information Engineering.
達成指標:
對授課內容了解程度達到60%以上
評量工具(可複選):
作業與筆試總成績 Level 5:80 and above; Level 4:70-79; Level 3:60-69; Level 2:50-59; Level 1:
2.1 培養分析問題的能力。()
為何有關:
This course helps students understand the design strategies for solving computational problems.
達成指標:
對授課內容了解程度達到60%以上
評量工具(可複選):
作業與筆試總成績 Level 5:80 and above; Level 4:70-79; Level 3:60-69; Level 2:50-59; Level 1:
2.2 培養善用資源以解決問題的能力。()
為何有關:
演算法有效培養學生良好的解決問題能力:
1. 培養「拆解問題」的能力
2. 強化資料結構的應用,善用資料結構工具解決問題
達成指標:
對授課內容了解程度達到60%以上
評量工具(可複選):
作業與筆試總成績 Level 5:80 and above; Level 4:70-79; Level 3:60-69; Level 2:50-59; Level 1:
4.3 培養良好的資訊能力。()
為何有關:
演算法有效培養學生良好的資訊能力:
1. 訓練邏輯思考與嚴謹性
2. 建立效率與成本意識
3. 提升抽象化能力,從混亂的現實問題中提取出數學模型
達成指標:
對授課內容了解程度達到60%以上
評量工具(可複選):
作業與筆試總成績 Level 5:80 and above; Level 4:70-79; Level 3:60-69; Level 2:50-59; Level 1: