程式設計 C.C.C.
Clang Compiler C Programming
| 節 | 週二 |
|---|---|
7 15:30–16:20 | 程式設計 C.C.C. CS-PC4 3 節連堂 |
8 16:30–17:20 | |
9 17:30–18:20 |
* 根據陽明交大上課時間表所列
1. 課程性質:程式語言與平行運算之入門級教學。 以C語言為核心,協助程式設計經驗較淺的學生建立與電腦溝通的基本能力,並訓練其編寫平行運算程式。本課程亦與教師後續進階課程相銜接,期盼學生逐步熟悉量子平行運算技術,引領即將到來的科技文明新階段。 2. 講授主題:Clang-Compiler C程式設計。 C是歷久彌新的程式語言,許多現代語言如C++、PHP、Python與Golang早年皆以之開發,諸多當代平行運算設備如GPU亦以其為介面語言。儘管強大,C語言跨平台寫作較難、學習曲線相對陡峭。本課程藉由Clang編譯器搭配教師自行開發的函式庫,提升跨平台實作效率並降低入門門檻。Clang是新世代高效能C編譯器 (compiler), 支援最新C標準、跨平台特性優越,已廣泛用於Linux、Windows、macOS等環境。中文課名中的「C.C.C.」,即為 Clang-Compiler C 之縮寫。 3. 理念與目標:連結程式設計能力與平行運算趨勢。 量子平行運算是即將顛覆人類文明、商機遠勝AI的重大科技。我們的理念是,透過平行運算程式教育為臺灣培育優秀的量子運算人才,搶佔全球先機,掌握未來關鍵科技。具體目標為: (1) 以C為主題,讓學員熟稔中階語言程式設計。 (2) 作業鑲嵌量子運算熱門題綱,為學員儲備量子演算法開發所需基礎知識。 (3) 實作平行運算程式,使學員具備操控多核心設備的能力,為未來操作量子電腦預做技術準備。 4. 課程願景:協助臺灣掌握國際科技發展之重大趨勢 — 量子運算。 我們相信,臺灣絕對有實力在科技舞台引領國際。程式教育之普及、量子平行運算之深研,必有助臺灣在資訊科技領域搶佔全球C位。 隨著行動裝置普及與科技演進,各領域資訊量爆炸性成長,推動社會進入大數據時代並促進人工智慧發展。大數據分析與人工智慧仰賴高效能平行運算,而平行運算的極致形態為量子運算。量子位元可透過疊加與糾纏特性同時攜帶多重資訊,使量子運算在合適主題上能超越傳統運算逾百萬倍速度,商機凌駕AI。各資訊科技大國及 Google, IBM, Microsoft, Intel 等頂尖企業均投入量子電腦研發,可見其戰略地位。 量子電腦成熟前,我們預期量子運算設備將先以類似GPU的加速器形式問世。目前主流GPU計算語言即為C,因此,具備C平行運算實作能力的學生,將最有潛力銜接未來量子運算的實務應用。 量子運算正逐步走出實驗室的幽暗,迎向實用化的曙光,這場科技革命將深刻改寫人類文明與商業型態。學生若及早投入,不僅能強化職涯競爭力與收入,更將在未來的科技與產業版圖中掌握主動權。本課程期望啟發學生以長遠視野看待自身角色,以專業知能積極貢獻社會、協助臺灣提升國際影響力,引領人類穿越科技奇異點,成為帶動下一波文明前進浪潮的創新領導者。
**本課程依據博雅書苑課程會議決議:不接受電機、資訊學院、工生院及百川學士學位學程核心專業為電機、資工、半導體、光電的同學採計為核心(通識)學分。 **是否採計為通識學分並非開課老師所決定,若有疑問,可聯絡博雅書苑。 ## 第一堂課請務必到課,或提前請假並於當週找教授完成補課,否則不具修課資格。 ## 無先修科目要求。 本課程適合理工、生科、醫學、人文、社會各背景之學生,但程式設計高度仰賴邏輯思維能力,且C語言難度偏高,學習曲線有著不可避免的起步坡度,初學者應有適當心理準備。
本課程以課堂講授為主、輔以約六次學生答題活動。每堂課都有作業。期中與期末考各一次。 於資訊技術服務中心電腦教室授課,每次三鐘點,含約一個半小時當週進度講授,一小時程式設計實例講解、20分鐘課堂活動。程式設計實例講解有兩部份:當週進度之程式設計示範及上週作業擇要講解。課堂活動視進度安排,可能是隨堂練習、小考、小組討論或答題競賽。 所有課程由開課老師講授。助教協助作業與考試之評分、課間輔導學生們跟上進度、維護課堂秩序、處理課程瑣雜事務。 教材規劃: 1. 教學投影片一組,規劃有十四章,含前言和結語。期中考範圍為前七章,後七章為期末考範圍。 2. 教學函式庫一組,配合各章教學使用。 3. 隨堂例題十二章(不含前言和結語),配合各章投影片使用。 4. 作業十二章,配合各章教學使用。 5. 考試題庫兩組,分別對應期中考與期末考範圍。 6. 教學伺服器一台。
40% 作業、隨堂測驗。每堂課都有作業,隨堂測驗視教學進展配合課堂活動舉行。 25% 期中考。程式設計上機考。 25% 期末考。程式設計上機考。 10% 學期綜合表現。課堂表現如回答問題、發問、討論、協助同學等。
- 程式設計通用能力
- 程式設計核心能力
- 程式設計常用技巧
- 平行運算
| 週次 | 主題 |
|---|---|
| 第 1 週 | *** 第一堂課請務必到課,否則不具修課資格。 Introduction to this Course and C Programming (課程與C程式語言簡介) 授課重點: 教學理念與課程目標、課程規劃與評分方式、程式設計及C語言基本概念、量子運算簡介、程式設計經驗分享。 閱讀材料或安排事項: 宣布期中期末考日期,請學生們確認可以配合。 |
| 第 2 週 | Setting up the Programming Environment (配置C程式設計環境) 授課重點: 教學伺服器帳號設置、Linux作業系統基本操作、Linux/Windows檔案共享方法、程式設計專用純文字編輯器使用教學、寫作第一支程式。 閱讀材料或安排事項: 投影片一份。作業一份:在個人電腦上安裝程式語言編輯器。 |
| 第 3 週 | Data and Variables – Output and Type Conversions (資料與變數,資料輸出與型態轉換) 授課重點: 程式設計學習關鍵技巧、資訊輸出、除錯技巧、變數宣告與使用、資料型態轉換。 閱讀材料或安排事項: 投影片一份。課堂活動一項。作業一份。 |
| 第 4 週 | Strings – Output, Input and Manipulations (字串輸出輸入與基本操作) 授課重點: 字串輸出輸入、字串大小寫轉換、子字串引用、子字串檢索及取代、中文字處理。 閱讀材料或安排事項: 投影片一份。課堂活動一項。作業一份。 |
| 第 5 週 | Reading and Writing Files (檔案讀寫及純文字處理) 授課重點: 檔案類型、讀取純文字檔案內容、將資料寫入檔案。進階純文字處理。 閱讀材料或安排事項: 投影片一份。作業一份。 |
| 第 6 週 | Arrays and Loops (靜態陣列與迴圈) 授課重點: 大數據分析基本概念、集合型變數概論、陣列宣告及使用。 閱讀材料或安排事項: 投影片一份。課堂活動一項。作業一份。 |
| 第 7 週 | Dynamic Arrays and Memory Managements (動態陣列與記憶體管理) 授課重點: 變數傳值與傳址、動態記憶體配置、記憶體回收。 閱讀材料或安排事項: 投影片一份。作業一份。 |
| 第 8 週 | Mid-term Exam 期中上機考 |
| 第 9 週 | Pointers and Their Operations (指標與指標運算) 授課重點: 指標型態、陣列記憶體配置、循址概念、指標運算。 閱讀材料或安排事項: 投影片一份。課堂活動一項。作業一份。 |
| 第 10 週 | Conditional Tests and Logic Operations (條件判斷與邏輯運算) 授課重點: 條件判斷、邏輯運算、條件式迴圈。 閱讀材料或安排事項: 投影片一份。作業一份。期中考檢討。 |
| 第 11 週 | User-defined Functions (自訂函式寫作) 授課重點: 封裝觀念、變數活動域觀念、自訂函式寫作、自定函式檢驗方法。 閱讀材料或安排事項: 投影片一份。課堂活動一項。作業一份。 |
| 第 12 週 | Dictionary-like Programming Skills (字典式配對表程式設計技巧) 授課重點: 大數據計算概念、配對表、配對表迴圈。 閱讀材料或安排事項: 投影片一份。課堂活動一項。作業一份。 |
| 第 13 週 | OS/Shell Utilities and Interactive Programming (作業系統工具集與互動式程式設計) 授課重點: 作業系統管理工具、外部程式呼叫、取得使用者輸入之資料。 閱讀材料或安排事項: 投影片一份。作業一份。 |
| 第 14 週 | Parallel Computation, Part I (平行運算) 授課重點: 分散式及平行運算簡介、CPU平行運算實作、GPU平行運算概論。 閱讀材料或安排事項: 投影片一份。課堂活動一項。作業一份。 |
| 第 15 週 | Parallel Computation, Part II & Introduction to Quantum Computing (平行運算與量子運算) 授課重點: CPU平行運算進階實作、量子運算概論。 閱讀材料或安排事項: 投影片一份。作業一份。 |
| 第 16 週 | Final Exam 期末上機考 |
課程投影片、隨堂講義、及練習題庫,由開課教師羅惟正設計。 自製講義或課本之參考書目: 1. K. N. King (2008) C Programming: A Modern Approach, 2nd Edition. W.W.Norton (ISBN: 0393979504) 2. Google (2020) Golang, https://golang.org/ (Golang-compiler Go官方教材) 3. Martin Jones (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. 羅惟正*等人 (2019)。分散式運算方法與管理系統。中華民國專利:發明第I661312號。 (分散運算參考技術) 6. 羅惟正*等人 (2019)。以機器學習為基礎之最佳化預測模型的建立與預測結果的取得系統及方法。中華民國專利:發明第I676940號。 (人工智慧參考技術) 註: *代表通訊作者。Lo WC 即開課教師羅惟正
- 地點
- 週二:博愛校區賢齊館401室 週四:光復校區科學三館226室
- 時間
- 週二、週四 09:00-11:30 AM (須預約) 週四 13:30-15:00 PM (須預約)
- 聯絡方式
- 分機:56922, 56923 WadeLo@nycu.edu.tw