◎系所教育目標: 為配合國家建設及產業發展之需要,本系以培育中高級資訊科技人才為目的。在教學理念上除了注重理論的探討之外並強調實際動手的能力,以期培育出具有深厚學識基礎並能實際應用的資訊科技人才。在專業必修中涵蓋基礎理論、電腦硬體、作業系統、資料結構及計算機網路等方面,並有畢業專題製作,使學生紮實基礎,同時課程包含四個專業學程,兼顧學術及實務之分流與訓練。分別為一:軟體工程及知識工程學程、二:互動多媒體學程、三:網路及資訊安全學程、四:資訊系統開發實務學程,以期作為日後升學就業的準備。 |
◎核心能力 | 關聯性 |
1.應用數理邏輯推理之能力 | 4 關聯性稍強 |
2.發掘、分析及解決問題之能力 | 3 關聯性中等 |
◎本學科內容概述: 本課程前段會介紹The Complexity of Algorithms的基礎知識,後段會介紹各類不同的演算法策略,包含:The Greedy Method, The Divide-and-Conquer Strategy, Tree Searching Strategies, Prune-and-Search和Dynamic Programming。每個策略會說明其概念,以及延申出的各種演算法。 |
◎本學科教學內容大綱: 1.The Complexity of Algorithms的基礎知識
2.演算法策略: The Greedy Method
3.演算法策略:The Divide-and-Conquer Strategy
4.演算法策略:Tree Searching Strategies
5.演算法策略:Prune-and-Search
6.演算法策略:Dynamic Programming |
◎本學科學習目標: 這門課的教育目標有三:
1 建立演算法領域紮實的基礎
2 訓練學生設計演算法解決問題的能力
3 並使其熟悉演算法的分析方法,進而能延伸至各樣的研究領域。 |
◎教學進度: |
週次 | 主題 | 教學內容 | 教學方法 |
01 02/20 | 課程介紹 | 介紹本課程目標、進行方式、配分比例、與內容大綱。 | 講授。 授課方式:面授 |
02 02/27 | Ch 1. Introduction of Algorithms/認識演算法基本知識 | 第一章Introduction of Algorithms
1 何謂演算法
2 為何要學演算法
3 介紹演算法實例 | 操作/實作、講授。 授課方式:遠距(非同步)、遠距(同步) |
03 03/05 | Ch 2. The Complexity of Algorithms and The Lower Bounds of Problems//認識分析演算法的複雜度 | 第二章The Complexity of Algorithms
1 什麼是演算法的複雜度
2 在最佳情況下來分析演算法
3 在最差情況下來分析演算法
4 在平均情況下來分析演算法 | 操作/實作、講授。 授課方式:遠距(非同步) |
04 03/12 | Ch 2 insert sort,binary search//以例子學習演算法的複雜度 | 1 在最佳/最差/平均情況下來分析insert sort
2 在最佳/最差/平均情況下來分析binary search
3 演算法複雜度的估計 | 操作/實作、講授。 授課方式:遠距(非同步)、遠距(同步) |
05 03/19 | Ch2 select sort, quick sort/以例子學習演算法的複雜度 | 1 在最佳/最差/平均情況下來分析select sort
2 在最佳/最差/平均情況下來分析quick sort
3 在最佳/最差/平均情況下來分析2d ranking finding | 操作/實作、講授。 授課方式:遠距(非同步) |
06 03/26 | Ch2 lower bounds of problems/認識評估問題困難度的方法 | 1 介紹lower bounds of problems
2 在最佳/最差/平均情況下來分析sort problem
3 介紹提高lower bounds of problems的技術 | 操作/實作、講授。 授課方式:遠距(非同步)、遠距(同步) |
07 04/02 | 校外研習活動 (放假) | 校外研習活動 (放假) | 操作/實作、講授。 |
08 04/09 | Ch 3. The Greedy Method/認識貪婪演算法 | 1 介紹貪婪演算法基本觀念
2 介紹Minimum spanning trees的兩種方法
3 介紹Dijkstra’s algorithm | 操作/實作、講授。 授課方式:遠距(同步) |
09 04/16 | 期中考 | 期中考 | 期中考。 授課方式:面授 |
10 04/23 | Ch 3. The Greedy Method/學習貪婪演算法的實例 | 1 介紹2-way merging problem
2 介紹Huffman codes
3 介紹minimal cycle basis problem | 操作/實作、講授。 授課方式:遠距(非同步) |
11 04/30 | Ch 4. The Divide-and-Conquer Strategy/認識個個擊破演算法 | 1 介紹個個擊破演算法基本觀念
2 介紹Closest Pair Problem
3 介紹2-D Maxima Finding Problem | 操作/實作、講授。 授課方式:遠距(非同步)、遠距(同步) |
12 05/07 | Ch 4. The Divide-and-Conquer Strategy/認識個個擊破演算法 | 1 介紹Convex Hull Problem
2 介紹Voronoi Diagram
3 介紹Fast Fourier transform | 操作/實作、講授。 授課方式:遠距(非同步) |
13 05/14 | Ch 5. Tree Searching Strategies/學習樹狀搜尋演算法實例 | 1 介紹Tree Searching Strategies基本觀念
2 介紹Boolean Satisfiability Problem
3 介紹Hamiltonian Cycle Problem | 操作/實作、講授。 授課方式:遠距(非同步)、遠距(同步) |
14 05/21 | Ch 5. Tree Searching Strategies/學習樹狀搜尋演算法實例 | 1 介紹DFS/BFS/Hill Climbing
2 介紹Best-First Search Strategy
3 介紹Personnel Assignment Problem | 操作/實作、講授。 授課方式:遠距(非同步) |
15 05/28 | Ch 6. Prune-and-Search/認識分割演算法 | 1 介紹分割演算法基本觀念
2 介紹selection problem
3 介紹線性規劃問題 | 操作/實作、講授。 授課方式:遠距(非同步)、遠距(同步) |
16 06/04 | Ch 7. Dynamic Programming/ 認識動態規劃演算法 | 1 介紹動態規劃演算法基本觀念
2 介紹費氏數列
3 介紹Forward/Backward Approach | 操作/實作、講授。 授課方式:遠距(非同步) |
17 06/11 | Backtracking Strategy/認識回溯演算法 | 1 介紹回溯演算法基本觀念
2 介紹8皇后問題
3 介紹排列問題 | 操作/實作、講授。 授課方式:遠距(非同步)、遠距(同步) |
18 06/18 | 期末考 | 期末考 | 期末考。 授課方式:面授 |
◎課程要求: 本課程須具備程式語言(C/C++ or python)實作能力。
本課程須了解資料結構(tree, linked list, graph)及實作。 |
◎成績考核 課堂參與討論15% : 本課程每週課程都會點名。 期中考15% 期末考15% 作業/習題演練55% |
◎參考書目與學習資源 教科書:
Introduction to the Design and Analysis of Algorithms(A Strategic Approach)
by R. C. T. Lee, , S. S. Tseng, R. C. Chang, Y. T. Tsai
McGraw Hill 2005 旗標圖書 02-23963257
參考書:
1. Introduction to Algorithms
by Cormen, Leiserson, Rivest, 2nd Edition, MIT Press (開發圖書) ISBN: 0-262-03293-7
2. Computer Algorithms,
by Horowitz, Sahni, and Rajasekaran, Computer Science Press Inc., 1998
3. Algorithm Design: Foundations, Analysis, and Internet Examples
Michael T. Goodrich, Univ. of California, Irvine, Roberto Tamassia, Brown Univ.
ISBN: 978-0-471-38365-9 |
◎教材講義 請改以帳號登入校務系統選擇全校課程查詢方能查看教材講義 |
適合修習對象:本課程須具備程式語言(C/C++ or python)實作能力。
本課程須了解資料結構(tree, linked list, graph)及實作。
本課程會配合演算法主題,使用leetcode平台上的題目進行練習與作業。 |
教學方式:
■提供線上課程主要及補充教材
■提供線上非同步教學
■有線上教師或線上助教
■提供面授教學, 次數:3次, 總時數:9.0小時
■提供線上同步教學, 次數:15次, 總時數:30小時
■每週上課時數(遠距教學):2.17小時 |
學習管理系統:
1、提供給系統管理者進行學習管理系統資料庫管理
■個人資料
■課程資訊
2、提供教師(助教)、學生必要之學習管理系統功能
■最新消息發佈及覽
■教材內容設計、觀看及下載
■成績系統管理及查詢
■進行線上測驗及發佈
■學習資訊
■互動式學習設計(聊天室或討論區)
■各種教學活動之功能呈現 |
作業繳交方式:
■提供線上說明作業內容
■線上即時作業填答
■作業檔案上傳及下載
■線上測驗
■成績查詢 |
上課注意事項: 本課程看影片與寫程式作業將占據不少珍貴的睡眠時間,修習前請作好心理準備。
本課程採取遠距(非同步與同步)上課,第一週、期中考與期末考採用實體。
本課程學習指引:
每週同學先自行觀看教學影片並完成作業,上課時間(採用MS teams)則進行重點說明,抽點,作業檢討,回覆問題。
若是對影片或作業有疑問,可在每週回饋區告訴老師,老師會在同步上課時解說。
實作leetcode程式若有困難,都可在leetcode討論區,google,youtube找到參考答案,請參考後再自行嘗試。 |