本課程是由 國立陽明交通大學電機工程學系 提供。
The study of algorithms is at the heart of the computer science.
This course focuses on fundamental results in this area, including the unifying principles and underlying concepts of algorithm design and analysis.
We expect everyone to be comfortable reading, even writing, proofs. Several programming assignments will be given to embody the ideas.
Moreover, we hope that everyone can learn general problem-solving techniques.
Intended audience:
1. who are interested in computer science
2. who are computing something
3. who are learning problem-solving techniques
Textbook:
J. Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2006.
(J. Kleinberg, 20 Best Brains under 40, Discover Magazine, 2008)
For perfect learning results, please buy textbooks!
| Instructor(s) | College of Electrical and Computer Engineering Prof. Hui-Ru Jiang |
|---|---|
| Course Credits | 3 Credits |
| Academic Year | 103 Academic Year |
| Level | College Students |
| Prior Knowledge | 1. Data structures 2. Discrete mathematics 3. Computer programming in C 4. Computer programming in C++ |
| Related Resources | Course Video Course Syllabus Course Calendar |
| Week | Course Content | Course Video |
|---|---|---|
| Week 01 | Course Syllabus | Watch Online |
| Week 01 | Chapter 1 Introduction (1/2) | Watch Online |
| Week 02 | Chapter 1 Introduction (2/2) | Watch Online |
| Week 02 | Chapter 2 Algorithm analysis (1/2) | Watch Online |
| Week 03 | Chapter 2 Algorithm analysis (2/2) | Watch Online |
| Week 03 | Chapter 3 Graphs (1/4) | Watch Online |
| Week 04 | Chapter 3 Graphs (2/4) | Watch Online |
| Week 04 | Chapter 3 Graphs (3/4) | Watch Online |
| Week 05 | Chapter 3 Graphs (4/4) | Watch Online |
| Week 05 | Chapter 4 Greedy algorithms (1/5) | Watch Online |
| Week 07 | Chapter 4 Greedy algorithms (2/5) | Watch Online |
| Week 07 | Chapter 4 Greedy algorithms (3/5) | Watch Online |
| Week 09 | Chapter 4 Greedy algorithms (4/5) | Watch Online |
| Week 09 | Chapter 4 Greedy algorithms (5/5) | Watch Online |
| Week 10 | Chapter 5 Divide and conquer (1/2) | Watch Online |
| Week 10 | Chapter 5 Divide and conquer (2/2) | Watch Online |
| Week 13 | Chapter 6 Dynamic programming (1/3) | Watch Online |
| Week 14 | Chapter 6 Dynamic programming (2/3) | Watch Online |
| Week 14 | Chapter 6 Dynamic programming (3/3) | Watch Online |
| Week 15 | Chapter 7 Network flow (1/2) | Watch Online |
| Week 15 | Chapter 7 Network flow (2/2) | Watch Online |
| Week 16 | Chapter 8 Beyond Polynomial running times (1/2) | Watch Online |
| Week 16 | Chapter 8 Beyond Polynomial running times (2/2) | Watch Online |
| Week 17 | Chapter 9 Linear Programming | Watch Online |
課程目標
The study of algorithms is at the heart of the computer science.
This course focuses on fundamental results in this area, including the unifying principles and underlying concepts of algorithm design and analysis.
We expect everyone to be comfortable reading, even writing, proofs. Several programming assignments will be given to embody the ideas.
Moreover, we hope that everyone can learn general problem-solving techniques.
Intended audience:
1. who are interested in computer science
2. who are computing something
3. who are learning problem-solving techniques
課程章節
| 主題 | 內容綱要 |
| Introduction | Stable matching and some representative problems |
| Basics of algorithm analysis | Asymptotic order of growth, case study on stable matching |
| Graphs | Connectivity, traversal, bipartiteness testing, topological sorting |
| Greedy algorithms | Interval scheduling, shortest paths, minimum spanning tree, (Huffman codes) |
| Divide and conquer | Mergesort, recurrence relations, counting inversions, finding the closest pair of points, (convolutions & FFT) |
| Dynamic programming | Weighted interval scheduling, memoization/iteration, segented least squares, subset sums & Knapsacks, RNA secondary structure, sequence alignment, shortest paths |
| Network flow | Maximum-flow and min-cut, bipartite matching, airline scheduling |
| NP and computational intractability | Polynomial-time reductions, satisfiability, NP, NP-completeness, graph coloring |
| PSPACE | Optional |
| Approximation algorithms | Optional |
| Local search | |
| Randomized algorithms | Optional |
| Algorithms that run forever | Optional |
課程書目
§ Required text
J. Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2006.
(J. Kleinberg, 20 Best Brains under 40, Discover Magazine, 2008)
§ Reference book
S. Dasgupta, C. Papadimitriou, and U. Vazirani, Algorithms, McGraw-Hill, 2007.
評分標準
| 項目 | 百分比 |
| Homework assignments | 15% |
| Programming assignments | 10% |
| Projects | 25% |
| Two open book in-class tests | 25%+25% |
本課程行事曆提供課程進度與考試資訊參考。
學期週次 | 上課日期 | 參考課程進度 |
第一週 | 09/15、09/17 |
|
| 第二週 | 09/22、09/24 |
|
| 第三週 | 09/29、10/01 |
|
| 第四週 | 10/06、10/08 |
|
| 第五週 | 10/13、10/15 |
|
| 第六週 | 10/20、10/22 |
|
| 第七週 | 10/27、10/29 |
|
| 第八週 | 11/03、11/05 |
|
| 第九週 | 11/10、11/12 |
|
| 第十週 | 11/17、11/19 |
|
| 第十一週 | 11/24、11/26 |
|
| 第十二週 | 12/01、12/03 |
|
| 第十三週 | 12/08、12/10 |
|
| 第十四週 | 12/15、12/17 |
|
| 第十五週 | 12/22、12/24 |
|
| 第十六週 | 12/29、01/31 |
|
| 第十七週 | 01/05、01/07 |
|
| 第十八週 | 01/12、01/14 |
|