Algorithms

本課程是由 國立陽明交通大學電機工程學系 提供。

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 

WeekCourse ContentCourse Video
Week 01Course SyllabusWatch Online
Week 01Chapter 1 Introduction (1/2)Watch Online
Week 02Chapter 1 Introduction (2/2)Watch Online
Week 02Chapter 2 Algorithm analysis (1/2)Watch Online
Week 03Chapter 2 Algorithm analysis (2/2)Watch Online
Week 03Chapter 3 Graphs (1/4)Watch Online
Week 04Chapter 3 Graphs (2/4)Watch Online
Week 04Chapter 3 Graphs (3/4)Watch Online
Week 05Chapter 3 Graphs (4/4)Watch Online
Week 05Chapter 4 Greedy algorithms (1/5)Watch Online
Week 07Chapter 4 Greedy algorithms (2/5)Watch Online
Week 07Chapter 4 Greedy algorithms (3/5)Watch Online
Week 09Chapter 4 Greedy algorithms (4/5)Watch Online
Week 09Chapter 4 Greedy algorithms (5/5)Watch Online
Week 10Chapter 5 Divide and conquer (1/2)Watch Online
Week 10Chapter 5 Divide and conquer (2/2)Watch Online
Week 13Chapter 6 Dynamic programming (1/3)Watch Online
Week 14Chapter 6 Dynamic programming (2/3)Watch Online
Week 14Chapter 6 Dynamic programming (3/3)Watch Online
Week 15Chapter 7 Network flow (1/2)Watch Online
Week 15Chapter 7 Network flow (2/2)Watch Online
Week 16Chapter 8 Beyond Polynomial running times (1/2)Watch Online
Week 16Chapter 8 Beyond Polynomial running times (2/2)Watch Online
Week 17Chapter 9 Linear ProgrammingWatch 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 algorithmsInterval scheduling, shortest paths, minimum spanning tree, (Huffman codes)
Divide and conquerMergesort, 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 flowMaximum-flow and min-cut, bipartite matching, airline scheduling
NP and computational intractabilityPolynomial-time reductions, satisfiability, NP, NP-completeness, graph coloring
PSPACEOptional
Approximation algorithmsOptional
Local search 
Randomized algorithmsOptional
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 assignments15%
Programming assignments10%
Projects25%
Two open book in-class tests25%+25%

本課程行事曆提供課程進度與考試資訊參考。

學期週次
上課日期
參考課程進度

第一週

09/15、09/17
  • 課程介紹、Chapter1
第二週09/22、09/24
  • Chapter1、Chapter2
第三週09/29、10/01
  • Chapter2、Chapter3
第四週10/06、10/08
  • Chapter3
第五週10/13、10/15
  • Chapter3、Chapter4
第六週10/20、10/22
  • 停課
第七週10/27、10/29
  • Chapter4
第八週11/03、11/05
  • 停課
第九週11/10、11/12
  • Chapter4
第十週11/17、11/19
  • Chapter5
第十一週11/24、11/26
  • 期中考週
第十二週12/01、12/03
  • 期中考題檢討
第十三週12/08、12/10
  • Chapter6
第十四週12/15、12/17
  • Chapter6
第十五週12/22、12/24
  • Chapter7
第十六週12/29、01/31
  • Chapter8
第十七週01/05、01/07
  • Chapter9
第十八週01/12、01/14
  • 期末考週