■ 課程目標及內涵 (Course Objectives and Contents) 主要內容:
The Role of the Algorithms in Computer
Growth of Functions
Recurrences
Sorting
Elementary data structures
Binary Search Tree
Dynamic program
Greed algorithm
Graph
NP Completeness
■ 多元教學方式 (Muliti-Teaching Methods) 說明:除了課堂講授與考試測驗之外,本課程在學期中可能會運用到以下哪些教學方式,以期能進一步提升學生學習成效 Direction: In addition to course teaching and regular exams, which of the following methods may also be used to promote students’ learning outcome
■ 主要參考書籍/資料 (Textbooks and References)
(教科書遵守智慧財產權觀念不得非法影印) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, Introduction to Algorithms, 3rd Edition, 2009 MIT (開發代理)
■ 本課程是否有使用原文書 Does This Curriculum Use the Original Textbook (English) 是(Yes)
■ 教學進度(Course Schedule) - 期中考前後(2 Stage)
週次 Week
日期Date
1
112/09/10 ~ 112/09/16 9/11第1學期開始上課
To discusses the role of algorithms in computing. To learn pseudocode that conveys the structure of the algorithm clearly enough that a competent programmer can implement it in the language of his choice.
To define several asymptotic notations, which we use for bounding algorithm running times from above and/or below. This part contains methods for solving recurrences, which are useful for describing the running times of recursive algorithms.
This part introduces various algorithms that sort arbitrary real numbers: heapsort, quicksort, counting sort algorithm, radix sort, and bucket sort. To discuss the performance limitations of comparison sorts and the order statistics.
To present the essentials of working with simple data structures such as stacks, queues, linked lists, and rooted trees.
To introduce all the dynamic-set operations of binary search trees
2
112/09/17 ~ 112/09/23 9/22加退選課程結束(特殊加選及網路退選截止)
3
112/09/24 ~ 112/09/30 9/29中秋節(放假)
4
112/10/01 ~ 112/10/07 10/6特殊退選課程申請截止
5
112/10/08 ~ 112/10/14 10/9調整放假、10/10國慶日(放假)
6
112/10/15 ~ 112/10/21
7
112/10/22 ~ 112/10/28
8
112/10/29 ~ 112/11/04 11/2校慶紀念日、全校運動大會(停課照常上班)
9
112/11/05 ~ 112/11/11 期中考週
10
112/11/12 ~ 112/11/18
This part covers three important techniques for the design and analysis of efficient algorithms: dynamic programming and greedy algorithms. Earlier parts have presented other widely applicable techniques, such as divide and-
conquer, randomization, and the solution of recurrences.
Graphs are a pervasive data structure in computer science, and algorithms for working with them are fundamental to the field. This part shows how we can represent a graph on a computer and then discusses algorithms based on searching a graph using either breadth-first search or depth-first search.
1. Topological sorting
2. Minimum spanning trees
3. Transitive closure
4. Single-source shortest paths
5. All-pairs shortest-paths
To demonstrate how to reduce a problem to another problem and how to use reduction in solving a problem and comparing the complexities of two problems