程式設計 Go Go Go
Programming Go Go Go
| 節 | 週二 |
|---|---|
6 14:20–15:10 | 程式設計 Go Go Go BI304(博愛) 3 節連堂 |
7 15:30–16:20 | |
8 16:30–17:20 |
* 根據陽明交大上課時間表所列
(本文作者為陽明交通大學羅惟正,保留智慧財產權。摘錄請註明出處。) 1. 講授主題:Go 程式設計。 Go 是 Google 開發的平行運算式程式語言,有兩個通行版本:官方編譯器版 (Golang Compiler version) 及自由軟體編譯器版 (GNU Compiler Collection version)。本課程採用官方版本,"Go Go Go" 為 Google Golang-compiler Go 之簡稱。 Go 可用極簡程式碼完成複雜平行運算,而大數據時代,各領域的龐大運算量(如人工智慧演算)仰賴優異的平行運算系統。因此,Go 在 2016 被軟體評價公司 TIOBE 評選為年度最佳程式語言。 2. 課程宗旨:推廣高效能平行運算科技。 我們相信,臺灣絕對有實力在科技舞台引領國際。程式教育之普及、量子平行運算之深研,必有助臺灣在資訊科技領域搶佔全球C位。本課程旨在推廣平行運算程式教育,期待新時代學子以資訊知能為跨領域融合的共同語言,開發新穎量子運算技術,推動臺灣在數位崛起之路彎道超車,成為科技領頭羊。 3. 開設理念與目標 量子平行運算,是即將顛覆人類文明、商機遠勝當前AI的重大科技。我們的理念,是以平行運算程式教育為臺灣培育優秀的量子運算人才,搶在全球之先,掌握量子運算科技。具體目標為: (1)以Golang為主題,讓學員熟稔平行運算程式語言。 (2)以量子運算熱門題綱設計作業,為學員儲備量子演算法開發所需基礎知識。 (3)以Golang與CUDA的連結為進階實作,使學員有能力操控現代高階平行運算設備,為未來操作量子電腦預做技術準備。 4. 程式教育願景概述 近年,因網路科技進步及可攜式計算機普及,全球邁入數位時代,諸國競相崛起。偏偏,臺灣因資訊科技發展早,導致年輕學子雖是數位時代原住民,卻普遍不覺得資訊科技新鮮、值得掌握。羅老師多年從事跨領域程式教育,發現學子們對程式設計的興向有分化之勢。極端化的發展,導致部份學生極力擠進資、通、電子、電機等程式能力得以直接應用之領域,其他學生的人生發展則與程式語言不易結緣。 第一類人才,掌握了程式與資通電機等專業技能,但對社會經濟文化等領域較陌生;第二類人才則由於不了解程式語言,不易想像資通電機科技如何幫助自身領域之發展。跨領域科技研發,固然能靠團隊協作,但背景各異的人才的不同思維模式,常形成溝通障礙。此時,熟悉雙方思維與基礎知能的兩棲型人才,便能為跨域整合發揮極大助力。 千禧年初電腦與網路普及化時期,許多不擅長電腦操作的人成了被推倒的前浪。而今新世代學子一出生便有電腦與人工智慧相伴,可謂無電腦文盲。值此數位科技普及化時期,想控制電腦與人工智慧而非被其取代,須具備的基本能力是看得懂程式語言。換言之,在數位時代,「程式文盲」很可能成為下一波沙灘上的前浪。 本課程期盼憑藉理工生醫人社等背景的學生都易學易懂的程式設計教材,為社會培育新世代的兩棲型跨領域領導人才,期許他們充分應用程式語言之優勢,掌握、甚至引領時代趨勢,協助福爾摩沙重歸數位科技與科技金融巨頭之林。 4. 量子運算願景概述 量子運算是以量子位元架構成量子電腦所進行的運算,量子運算基於量子力學的疊加態與糾纏態,為天然的高效能平行運算。在合適主題上,速度可以是傳統電腦的數百萬乃至數億倍快。目前,全球科技大國與頂尖企業如 Google, IBM, Microsoft 與 Intel 等,都在競相研發量子電腦。 人工智慧系統仰賴平行運算處理海量資訊。目前的人工智慧,由於硬體瓶頸,不得不用高度簡化、將大量細節資訊捨棄的演算方式來運作,性能雖已相當驚豔,且加速了各產業之發展,但終究難有真正的自主思考能力與創造力。量子電腦發展穩定後,若以量子運算重構人工智慧演算法,真正有意識的人造智慧體,很可能因此誕生。爾後,人類文明將迎向科技大爆炸的奇異點,所有產業將以難以言喻的超高速度發展。 當今,誰能掌握量子運算科技,便掌握了未來科技與產業發展的話語權。量子運算是天然高效能平行運算,而 Go 是當前最強大的平行運算程式語言。本課程搭配後續課程「Go人工智慧大數據平行運算」及「分散運算式網頁程式設計」,將以 Go 為經、量子運算為緯,訓練高效能平行運算演算法開發人才,為臺灣在全球量子運算科技爭霸之路上,預先培育優秀的種子人才。
*** 第一堂課請務必到課 (博愛校區賢齊館),或提前請假並於當週找教授完成補課,否則不具修課資格。 *** 依修課人數調整授課地點。第一堂課在博愛校區賢齊館授課 (如選課系統所登載),屆時將請大家投票後續要在博愛或光復校區上課。 本課程適合生科、醫學、人文、社會、理工各背景之學生,但程式設計之學習仰賴良好邏輯思維能力。請欲選課生檢附相關成績資料,以利審核修課資格(格式將於期初第一堂課公告)。
無備註
課堂講授為主、輔以答題競賽活動。每次三鐘點,含約一個半小時當週進度講授、一個半小時程式設計實例講解及課堂活動。講授時,同學們的螢幕主要處於廣播鎖定狀態,每一小段落解鎖開放練習。程式設計實例講解有兩部份:當週進度之程式設計示範及上週作業擇要講解。課堂活動,視進度安排,可能是隨堂練習、小考、小組討論或答題競賽。 所有課程由開課老師講授。助教協助作業與考試之評分、課間輔導學生們跟上進度、維護課堂秩序、處理課程瑣雜事務。
*** 請注意:評量方式在新學期初選課前可能會有更動 1. 20% 報告 書面報告一份。 2. 20% 作業、隨堂測驗 每堂課都會有作業,隨堂測驗則視教學進展配合課堂活動舉行。合佔學期總分20%,預計每單項佔1% (14次作業加6次測驗或活動)。 3. 25% 期中考 程式設計上機考。 4. 25% 期末考 程式設計上機考。 5. 10% 學期綜合表現 如回答問題、發問、討論、協助同學等。
程式設計核心能力
1. 邏輯與條件運算 2. 封裝與自訂套件
程式設計常用技巧
1. 配對表程式設計法 2. 作業系統管理 3. 外部程式呼叫 4. 使用者輸入
程式設計進階能力
1. 大數據分析 2. 平行運算 3. GPU運算
程式設計通用能力
1. 簡介與環境設定 2. 變數宣告與處理 3. 磁碟與目錄管理 4. 陣列與迴圈
| 週次 | 主題 |
|---|---|
| 第 1 週 | *** 第一節課請務必到課 (博愛校區賢齊館),否則不具修課資格。 課程與Go程式語言、量子平行運算簡介 => 教學理念與課程目標、課程規劃與評分方式、程式設計及Go基本概念、量子運算概論、程式設計經驗分享。 2025-09-02(二) |
| 第 2 週 | 程式設計環境配置 =>Linux作業系統基本操作、程式設計專用純文字編輯器使用教學、寫作第一支程式。 2025-09-09(二) |
| 第 3 週 | 字串與數值變數 =>程式設計學習關鍵技巧、資訊輸出、常用字串與數值處理函式。 2025-09-16(二) |
| 第 4 週 | 數值運算及變數型態轉換 =>數學運算、整數及小數運算、變數型態觀念、變數型態轉換。 2025-09-23(二) |
| 第 5 週 | 檔案讀寫及磁碟管理 =>程式除錯重點技巧、檔案類型、讀取純文字檔案內容、將資料寫入檔案、磁碟與目錄管理。 2025-09-30(二) |
| 第 6 週 | 陣列型集合變數與迴圈, Part I =>大數據分析基本概念、集合型變數概論、變數傳值與傳址、陣列宣告及使用。 2025-10-07(二) |
| 第 7 週 | 陣列型集合變數與迴圈, Part II =>迴圈觀念、集合變數穿繞式迴圈。 2025-10-14(二) |
| 第 8 週 | 期中上機考 2025-10-21(二) |
| 第 9 週 | 自訂函式 =>封裝觀念、變數活動域觀念、自訂函式、函式檢驗方法。 2025-10-28(二) |
| 第 10 週 | 條件判斷與邏輯運算, Part I =>條件判斷、邏輯運算、條件式函式。 2025-11-04(二) |
| 第 11 週 | 條件判斷與邏輯運算, Part II =>條件式迴圈、迴圈流程控制。 2025-11-11(二) |
| 第 12 週 | 配對表與相關程式設計技巧 =>大數據計算概念、配對表、配對表穿繞迴圈。 2025-11-18(二) |
| 第 13 週 | 作業系統工具集與互動式程式設計 =>作業系統管理工具、外部程式呼叫、取得使用者輸入之資料。 2025-11-25(二) |
| 第 14 週 | Golang 平行運算, Part I =>分散運算及平行運算概念、基礎平行運算程式設計。 2025-12-02(二) |
| 第 15 週 | Golang 平行運算, Part II =>大數據計算實作、進階平行運算程式設計。 2025-12-09(二) |
| 第 16 週 | 期末上機考 2025-12-16(二) |
| 第 17 週 | 期末補充:GPU 平行運算與後續相關課程簡介 =>CPU + GPU 分散運算概念、Go + CUDA 平行運算程式設計。 2025-12-23(二) |
以自製教材授課。 延伸參考書目如下: 1. Google (2021) Golang, https://golang.org/ (Golang-compiler Go官方教材) 2. Donovan A, Kernighan B (2015) The Go Programming Language. Addison-Wesley (ISBN:978-0134190440) 3. Jones M (2013) Python for Biologists. CreateSpace Independent Publishing Platform (CC 授權) 4. Lo WC, Lee CY, Lee CC, Lyu PC* (2009) iSARST: an integrated SARST web server for rapid protein structural similarity searches. Nucleic Acids Res 37: W545-551. (分散運算參考技術) 5. Lo WC, Wang LF, Liu YY, Dai T, Hwang JK*, Lyu PC* (2012). CPred: a web server for predicting viable circular permutations in proteins. Nucleic Acids Research, doi:10.1093/nar/gks529. (分散運算參考技術) 6. 羅惟正*等 (2019)。分散式運算方法與管理系統。中華民國專利:發明第I661312號。 (分散運算參考技術) 註: *代表通訊作者 Lo WC 即開課教師羅惟正
- 地點
- 週一:博愛校區賢齊館401室 週五:光復校區科學三館226室
- 時間
- 每週一10:00 – 16:00 (請先預約) 每週五10:00 – 16:00 (請先預約)
- 聯絡方式
- 分機:56922, 56923 WadeLo@nycu.edu.tw
