Type of Credit: Elective
Credit(s)
Number of Students
<資料結構與演算法>主要的目標是訓練學生對於解決問題步驟的設計與分析能力,它是程式設計的邏輯基礎。「資料結構」主要探討如何描述、紀錄資料,並且使用有效的方法來運用它們;而「演算法」則是資料結構的延伸,主要重心是進一步的探討「如何設計一套有結構、有效的方法來解決問題」。在過去,這個課程通常是資訊或電機相關科系才會開設,然而隨著所有領域全面的資訊化,當學習程式設計成為中學以下開始進行的重點科目、當大數據應用與資料分析成了不分理工或人文科系的共通課題,認識資料結構與演算法就變成有其必要的課程。
如果你想學習程式設計,除了認識程式指令這種「招式」之外,你還必須知道「如何運氣」,這就是資料結構的價值;演算法則訓練你如何把零碎的「招式」融會貫通變成可以有效派上場克服敵人的「一套武術」。對於傳播領域的同學來說,你的生涯發展重點可能不是追求成為當代的程式設計高手,然而,未來的新媒介領域處處充滿「演算法」的影子:例如將來當你進入社群媒介工作,這個領域講求的是「設計一系列步驟分析聲量變化與追蹤使用者的行為」;當你從事新聞工作想從網路世界撈取資料時,你必須學會「想出一系列步驟成功地找到並且過濾掉無關者」;當你從事電子商務行銷工作,這領域從頭到尾都在「設想一系列步驟猜測消費者想買什麼、怎麼樣可以成功誘使他買什麼」;這些都屬於廣義的「演算法」,狹義一點來說,如果你未來的專業領域將會牽涉到大數據應用、資訊蒐集、資料分析,「資料結構與演算法」對你而言可能會是未來專業知能的重要養分。
■先修要求:沒有!(若具有程式設計基礎,很好;但若沒有也OK,這門課不會多花時間在鑽研或撰寫厲害的程式碼,而是透過簡單舉例的方式談演算的實際作法) 會針對傳院同學的需求,從最基礎教起,不會太困難,但前提是一定要來聽課! ^^
■ 唯一要求:如果你想選修,務必每週來上課。有來上課你會覺得好像並不困難,課後不太需要多花時間;反之,翹課的話你當然自己會讀得很辛苦。-_-|||
能力項目說明
本課程的重點在於觀念的釐清以及邏輯的訓練,比起程式撰寫細節,更強調思路的正確以及效能的探討。學習資料結構與演算法這門課程的目的與其效用可如下所述:
了解結構化資料的表現與運用方式
邏輯推理、培養結構化的思考能力
程式設計的思路訓練(但並不鑽研程式指令)
大數據、資料分析、人工智慧相關領域的基礎
第 1 週 主題:Course introduction ※學習投入時數(課堂/課程前後):3/3
第 2 週 主題: 228紀念日放假
第 3 週 主題:陣列、堆疊、佇列、鏈結串列 ※學習投入時數(課堂/課程前後):3/3
第 4 週 主題:演算法基本認識 ※學習投入時數(課堂/課程前後):3/3
第 5 週 主題:如何分析演算法的效能 ※學習投入時數(課堂/課程前後):3/3
第 6 週 主題:各種sorting與時間分析 ※學習投入時數(課堂/課程前後):3/3
第 7 週 主題:兒童節放假
第 8 週 主題:Hashing table ※學習投入時數(課堂/課程前後):3/3
第 9 週 主題:期中考試
第 10 週 主題:Binary search tree ※學習投入時數(課堂/課程前後):3/3
第 11 週 主題:Red-Black tree ※學習投入時數(課堂/課程前後):3/3
第12週 主題:圖形基本觀念與定義 ※學習投入時數(課堂/課程前後):3/3
第13週 主題:圖形搜尋:Depth First Search ※學習投入時數(課堂/課程前後):3/3
第14週 主題:圖形搜尋:Breadth First Search ※學習投入時數(課堂/課程前後):3/3
第15週 主題:大數據與資料分析介紹 ※學習投入時數(課堂/課程前後):3/3
第16週 主題:大數據與資料分析介紹 ※學習投入時數(課堂/課程前後):3/3
第17週 主題:常見的應用問題 ※學習投入時數(課堂/課程前後):3/3
第18週 主題:期末考試
1. 平時表現以及課堂參與:20%
2. 期中考試:40%
3. 期末考試:40%
於課堂指定