程式設計 Go Go Go
Programming Go Go Go
| 節 | 週二 |
|---|---|
7 15:30–16:20 | 程式設計 Go Go Go BI304 3 節連堂 |
8 16:30–17:20 | |
9 17:30–18:20 |
* 根據陽明交大上課時間表所列
(本文作者為陽明交通大學羅惟正,保留此著作之智慧財產權。摘錄請註明出處。) 1. 講授主題:Go 程式設計。 Go 是 Google 開發的平行運算式程式語言,目前有兩個通行版本:官方編譯器版 (Golang Compiler version) 及自由軟體編譯器版 (GNU Compiler Collection version)。本課程採用官方版本,課名中的 "Go Go Go" 為 Google Golang-compiler Go 之簡稱。學習難度明顯高於 Python, 約介於 C++ 及 Java 之間。 2. 課程宗旨 我們相信,資訊知能,是支持臺灣學子與數位時代崛起之各國人才競爭、合作的關鍵能力。本課程旨在推廣程式教育,期待新時代學子以資訊知能為根基,促進跨領域融合,推動臺灣加速邁向數位崛起之路。 3. 開設理念與目標 近年,因網路科技進步及可攜式計算機普及,全球邁入數位時代,諸國競相崛起。偏偏,臺灣因資訊科技發展早,導致年輕學子雖是數位時代原住民,卻普遍不覺得資訊科技新鮮,對掌握資訊能力,亦未顯熱情。羅老師多年從事跨領域程式教育,發現學子們對程式設計的興向漸有分化之勢。極端化的發展,導致部份學生極力擠進資、通、電子、電機等程式能力得以直接應用之領域,其他學生的人生發展則與程式語言不易結緣。 第一類人才,掌握了程式與資通電機等專業技能,但對社會經濟文化等領域較陌生,不易應用專業知能來解決跨領域的問題。第二類人才則由於不了解程式語言,不易想像資通電機科技如何幫助自身感興趣領域之發展。跨領域發展,固然能靠不同領域人才之協作,但背景各異的人才的不同思維模式,常形成溝通障礙。此時,熟悉雙方思維與基礎知能的兩棲型人才,便能為跨域整合發揮極大助力。 千禧年初電腦與網路普及化時期,許多不擅長電腦操作的人們成了被時代推倒的前浪。而今新世代學子一出生便有電腦與人工智慧相伴,可謂無電腦文盲。值此數位科技普及化時期,想控制電腦與人工智慧而非被其取代,須具備的基本能力是看得懂程式語言。換言之,在數位時代,「程式文盲」很可能成為下一波沙灘上的前浪。 本課程期盼憑藉理工生醫人社等背景的學生都易學易懂的程式設計教材,為社會培育新世代的兩棲型跨領域領導人才,期許他們充分應用程式語言之優勢,掌握、甚至引領時代趨勢,協助福爾摩沙重歸數位科技與科技金融巨頭之林。 4. 與生物科技學院相關之課程銜接 生物科技學系大學部程式語言講授直譯式 Python,其特性易懂易學執行彈性高,非常適合初學者,但架構相對不嚴謹且效率較低。Go 為編譯式程式語言,效率極高,某些類型演算法的運算速度甚至優於 C++。其最強大功能為高度優化的平行運算、分散運算模式,可用極精簡程式碼完成傳統平行運算系統的複雜功能。值此大數據時代,各領域龐大的運算量(如人工智慧演算)仰賴優異的分散運算系統,因此,Go 在 2016 被知名軟體評價公司 TIOBE 評選為年度最佳程式語言。讓學生們學習此類編譯式、高效率且架構嚴謹的程式語言,對未來專業能力進展與求職,相信會有很大幫助。 生物科技學系研究所課程如「分散運算式網頁程式設計」及「生物資料庫理論與實作」都是仰賴大數據分析的高階課程。過去幾年,為方便教學開展,授課老師必須先訓練修課生基礎分散運算程式設計。平行/分散運算程式比一般程式設計難上許多,往往大程度壓縮高階教材的時數。透過本課程,訓練已具備Python能力的學生進階的編譯式分散運算語言,將大有助推動他們於往後高段課程的學習進展。
*** 請注意:選課期間為師生互選,老師有權決定接受哪些學生修課。選課系統上的名單及亂數結果只是預排參考,開學時老師將統一甄選。第一堂未到課者不具修課資格。 *** 本課程會依修課人數調整授課地點。第一堂課在博愛校區賢齊館授課 (教室如選課系統所登載),屆時將請大家投票後續要在博愛校區或光復校區資訊服務中心上課。 本課程適合生科、醫學、人文、社會、理工各背景之學生,但程式設計之學習仰賴充分的數學及邏輯思維能力。請欲選課生檢附相關成績資料,以利審核修課資格(格式將於期初第一堂課公告)。
*** 請注意:課程進展方式將因當屆學生狀況與疫情機動調整 課堂講授為主、輔以約六次學生小組答題競賽活動。每堂課都有作業。期中與期末考各一次,外加書面報告一份。作業與考試由老師及助教們評分,書面報告以學生互評為主、老師及助教評分為輔。 每次三鐘點,含約一個半小時當週進度講授,一小時程式設計實例講解、20分鐘課堂活動。前2.5小時,同學們的螢幕主要處於廣播鎖定狀態,每一小段落解鎖開放練習。程式設計實例講解有兩部份:當週進度之程式設計示範及上週作業擇要講解。剩餘大約20分鐘的課堂活動,視進度安排,可能是隨堂練習、小考、小組討論或答題競賽。 所有課程由開課老師講授。助教協助作業與考試之評分、課間輔導學生們跟上進度、維護課堂秩序、處理課程瑣雜事務。
*** 請注意:評量方式在新學期初選課前可能會有更動 1. 20% 報告 書面報告一份。 2. 20% 作業、隨堂測驗 每堂課都會有作業,隨堂測驗則視教學進展配合課堂活動舉行。合佔學期總分20%,預計每單項佔1% (14次作業加6次測驗或活動)。 3. 25% 期中考 程式設計上機考。 4. 25% 期末考 程式設計上機考。 5. 10% 學期綜合表現 如回答問題、發問、討論、協助同學等。
- 程式設計核心能力
- 程式設計常用技巧
- 程式設計進階能力
- 程式設計通用能力
| 週次 | 主題 |
|---|---|
| 第 1 週 | *** 第一節課請務必到課 (博愛校區賢齊管),否則不具修課資格。 課程與Go程式語言簡介 教學理念與課程目標、課程規劃與評分方式、程式設計及Go基本概念、程式設計經驗分享。 |
| 第 2 週 | 程式設計環境配置 Linux作業系統基本操作、程式設計專用純文字編輯器使用教學、寫作第一支程式。 |
| 第 3 週 | (老師出差) |
| 第 4 週 | (中秋節) |
| 第 5 週 | 字串與數值變數 程式設計學習關鍵技巧、資訊輸出、常用字串與數值處理函式。 |
| 第 6 週 | 數值運算及變數型態轉換 數學運算、整數及小數運算、變數型態觀念、變數型態轉換。 |
| 第 7 週 | 檔案讀寫及磁碟管理 程式除錯重點技巧、檔案類型、讀取純文字檔案內容、將資料寫入檔案、磁碟與目錄管理。 |
| 第 8 週 | 陣列型集合變數與迴圈 大數據分析基本概念、集合型變數概論、變數傳值與傳址、陣列宣告及使用、迴圈觀念、集合變數穿繞式迴圈。 |
| 第 9 週 | 期中上機考 |
| 第 10 週 | 自訂函式 封裝觀念、變數活動域觀念、自訂函式、函式檢驗方法。 |
| 第 11 週 | 條件判斷與邏輯運算 條件判斷、邏輯運算、條件式函式、條件式迴圈、迴圈流程控制。 |
| 第 12 週 | 配對表與相關程式設計技巧 大數據計算概念、配對表、配對表穿繞迴圈。 |
| 第 13 週 | 作業系統工具集與互動式程式設計 作業系統管理工具、外部程式呼叫、取得使用者輸入之資料。 |
| 第 14 週 | 分散運算, Part I 大數據計算實作、分散運算及平行運算概念。 |
| 第 15 週 | 分散運算, Part II & 期末補充授課 Go分散運算程式設計。期末補充教材及延伸課程介紹。 |
| 第 16 週 | 期末上機考 |
以自製教材授課。 延伸參考書目如下: 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室
- 時間
- 週一、週五 09:00-11:30 AM (須預約) 週四 13:30-15:00 PM (須預約)
- 聯絡方式
- 分機:56922, 56923 WadeLo@nycu.edu.tw