計算機程式設計(通識)
臺大電機系 - 連豊力
2016 Fall (Sep16-Jan17)

  • 最新消息

    • 在 1know 上的課程整理: (updated on 1/6/17)
      • 105-1 學期的課程影片資料已經編輯好放到 1know.net 平台上了
        - 包含:主題,單元,作業,三個部分,
        - 請由 "任務" 區進入課程。
        - 主題區包含:查成績,CO2 分析,臉的動畫,三個單元,
        - 如果您有建議的主題,請提供給我參考,我在編輯進去。
        - 單元課程,即是 U01 - U15,15 個課程的影片整理
        - 作業區,即是 Hw01 - HW08,8 個作業的說明影片與資料。
      • 1know 登入方式:
        - 網站: http://1know.net
        - 請登入後,以自行喜好方式登入
        - 登入之後,請加入群組:用 R 分析數據 與 設計程式(代碼:5C616F)
        - 選擇:任務,進行瀏覽,可依序觀看,註記筆記等等功能
      • 歡迎試用,有任何建議,請 e-mail 給我: fengli@ntu.edu.tw,謝謝。
    • 未來課程規劃: (updated on 1/2/16)
      • 1/16 (Mon): 繳交期末報告,以及所有的作業等最後繳交期限
    • Course Resources: (updated on 9/20/16)

  • 過去公告:

    • 未來課程規劃: (updated on 10/30/16)
      • 9/13: U01 - 課程介紹
      • 9/20: U02 - 軟體使用方式與作業繳交
      • 10/4: U03 - 數據處理與繪圖指令功能
      • 10/11: U04 - 資料類別與基本運算
      • 10/18: U05 - 多維度資料格式
      • 10/25: U06 - 檔案資料輸入與輸出
      • 11/1: U07 - 邏輯運算與流程控制
      • 11/22: U08 - 函數與程式,繳交:期末專題之構想書 (3-page pptx/pdf)
      • 11/28: U09 - 繪圖功能設定與文字 (沒有作業)
      • 12/6: U10 - 多重繪圖與顏色 (作業 HW08)
      • 12/13, 12/20: U11 - 探索性資料分析
      • 12/20: U14 - 動畫
      • 12/27: U12 - 資料前置處理
      • 1/3: U13 - 資料連結分析
      • 1/3: U15 - 線性關係
      • Discussion on Final Project
      • 9/27: 因颱風停課一週
      • 11/8: 期中考,不上課 (3pm-6pm 明達館 717 專題或課程討論)
      • 11/15: 校慶,不上課( 3pm-6pm 明達館 717 專題或課程討論)
    • HW01-08 與 期末專題 繳交記錄: (updated on 1/17/17)
      • 請執行下面兩個指令或函數, 即可獲得您的作業是否有繳交的記錄:
        myfunc <- lapply( "http://goo.gl/E2lwmk", source)
        CheckHomeworkFinal( "B01921001", 3 )
      • 第二個指令中:CheckHomeworkFinal,
        第一個資料是您的學號,
        第二個資料是作業編號:1-8 代表 HW01-HW08, 9 代表 期末專題
        結果有三種:Yes, Yes-Late, No
        分別是:有交(期限之前),有交(期限之後),沒交
        也可以用:
        CheckHomeworkFinal( "B01921001", 1:9 )
        一起列出這九個記錄。
      • 如果您有交或覺得有準時交,
        請您再轉寄一次,當初繳交作業的那個 email,
        讓我們再次確認一次。
    • 期末專題報告: (updated on 1/13/17)
      • 繳交日期:1/16 (Mon), 23:00 之前。
      • 繳交內容:一個報告檔 (.pdf),一個程式檔 (.R),其他數據檔案。
      • 報告檔範例: 範例1 範例2 範例3 範例4 範例5
      • 程式檔範例: 範例1 範例2 範例3 範例4 範例5
      • 討論主題: 討論主題
      • 建議事項:
          您的程式如果需要其他的數據, 請儘量附上數據檔案,
          以及在報告中詳細說明如何取得該數據
          或如何從原始數據整理到目前的數據檔案。
        • 程式碼以及相關數據檔的使用過程或方式,
          以及可能需要注意的地方, 請在報告中說明清楚。
        • 檔案命名的方式,建議如下:
          B96901369_Project_PlotFace.R, or B96901369_Final_USPoll2016.R
          也就是,學號,類型,主題, 以利分類整理與辨識。
      • 報告 (.pdf) 部分評分方式:
        • 9分:
        • 詳細說明如何使用 R 程式,來進行數據擷取,計算,繪圖等呈現數據的功能
        • 例如:使用了哪一個指令,以及設定的參數,獲得了哪一些數據或圖形
        • 也就是,每一個地方的說明,都要有三個部分:
        • (1) 程式碼,(2) 使用此程式碼用途說明,以及(3) 呈現所產生的數據或圖的結果
        • 7分:
        • 大概說明如何使用 R 程式,來進行數據擷取,計算,繪圖等呈現數據的功能
        • 例如:僅呈現最後數據或圖形結果,但是,不清楚如何使用 R 程式來獲得這
        • 5分:
        • 大部分都是文字描述問題與處理過程,並未說明如何使用 R 程式
      • 程式 (.R) 部分評分方式:
        • 9分:
        • 所有程式都可以執行成功,大部分主要程式碼,都有註解
        • 7分:
        • 部分程式都可以執行成功,僅註解部分程式碼
        • 5分:
        • 大部分程式無法執行成功,程式碼沒有什麼註解
    • U15 線性關係,補充資料: (updated on 1/5/17)
      • On 1/3, 我們用 IRIS 的 Sepal.Width 與 Sepal.Length
      • 討論兩者之間的線性關係,
      • 發現所得的結果: a = 3.41895, b = -0.06188,
      • 所以,好像線性的相關性很低。
      • 不過,如果我們將三個品種分開來討論,
      • 則可以發現: 同一個品種之內,
      • Sepal.Width 與 Sepal.Length 的線性關係還蠻強的。
      • 詳細的程式與討論過程,
      • 請參考下面更新後的 單元 U15 的講義:pages 13-18
      • http://cc.ee.ntu.edu.tw/~fengli/Teaching/Computer/105-1_cp15.pdf
    • 關於 install.packages 的問題與解決方法: (updated on 1/5/17)
      • 通常,當我們要加入新的資料庫或程式庫,
      • 需要用 install.packages 自動上網到遠端伺服器去下載相關的檔案。
      • 但是,如 1/3 當天,遠端的伺服器或網路出現問題的時候,
      • 可以用手動的方式,從自己的電腦載入相關的檔案。
      • 當然,您的電腦內,需要先有這些檔案。
      • 以下是一個範例:
      • 如果我們要加入:mice
      • 通常的簡單作法是,執行下面指令,就會自動安裝:
      • install.packages( "mice" ) # 安裝 mice 軟體套件
      • 如果有問題,可以用下面手動方式:
        • 1. 從下面網站或其他網站,找到對應的網頁:
          https://cran.r-project.org/web/packages/available_packages_by_name.html
          從上面的網頁中找到:mice,
          點選該連結,跑出下面網頁:
          https://cran.r-project.org/web/packages/mice/index.html
        • 2. 在上面網頁的 downoads: 區,照到對應的電腦作業系統,
          例如:一般的 PC 就用:Windows binaries:
          然後,下載 mice_2.25.zip 到您的工作目錄。
        • 3. 在 RStudio 中,執行:
          install.packages("mice_2.25.zip", repos = NULL, type = "win.binary")
          # repos = NULL 是讓它從目前的工作目錄去載入該檔案
      • 以下是一些簡略的步驟:
      • 如何下載 R 軟體 - 套件(packages)
      • 方法1:
        • [步驟1] 連結 R 軟體首頁 http://www.r-project.org/
        • [步驟2] 選取左側 Download, Packages \ CRAN
        • [步驟3] 選取適當的 CRAN Mirrors, 例如: Taiwan http://cran.csie.ntu.edu.tw/
        • [步驟4] 選取左側 Software \ Packages
        • [步驟5] Currently, the CRAN package repository features 4212 available packages.(2013.1), 9006(2016.8) Packages - 33個類別 33類別中英文名稱對照
      • 方法2:
        • 以 caret package 為範例,
          在R軟體中輸入以下指令, 即可直接安裝 caret package
          install.packages("caret")
    • 抓蟲 (debug) 時刻: (updated on 1/5/17)
      • 寫程式寫到最後,會發現常常出現錯誤。
      • 明明我的程式是照我的想法寫的,
      • 但是,執行結果就是怪怪的。
      • 這可能是程式碼中有一些錯誤,俗稱的 有蟲 (bug),
      • 接著就需要把蟲抓出來,俗稱的 抓蟲 (debug)。
      • 通常抓蟲所花的時間也不少,
      • 有可能佔全部寫程式的時間的一半以上。
      • 那這些蟲通常在哪裡呢?
      • - 邏輯判斷符號弄錯了,
        e.g., > 弄成 <,== 弄成 != 等
      • - for 之內,變數的 index 弄錯了,
        e.g., data[ i, j ] 弄成 data[ j, i ],
        或者,data[ i+1 ] 弄成 data[ i-1 ] 等等
        或者,mydata[ k ] 弄成 yourdata[ j ] 等等
      • - 指定錯的資料位置或變數
        e.g., mydata <- speed 弄成 mydata <- velocity 等
      • ............................................................
      • 除錯的方法:
      • - 就是一行一行,再次檢查一次,想一下,每一行的作法對不對
      • - 給一個已知結果的數據,執行此程式,
        e.g., 那個成績評定的程式,
        給一組數據包含所有的成績,i.e., -3, -2, -1, 0, 1, 2, ..., 100, 101, 102
        0, 1, 2, ..., 100:這些是為了確認結果是否是自己想的,
        -3, -2, -1, 101, 102:這些是為了測試不在原來設定的數據,會有什麼結果呢?
      • - 再看看什麼數據輸入會產生問題,
        再對應找出該數據的處理程式碼在哪一些地方
      • - 也可以把所有的輸入數據都設成每一個出問題的數據,
        再看看輸出結果的哪一個位置出現問題,
        再去檢查該位置的處理程式碼所在之處是否有問題。
    • 在 1know 上的課程整理: (updated on 1/6/17)
      • 105-1 學期的課程影片資料已經編輯好放到 1know.net 平台上了
        - 包含:主題,單元,作業,三個部分,
        - 請由 "任務" 區進入課程。
        - 主題區包含:查成績,CO2 分析,臉的動畫,三個單元,
        - 如果您有建議的主題,請提供給我參考,我在編輯進去。
        - 單元課程,即是 U01 - U15,15 個課程的影片整理
        - 作業區,即是 Hw01 - HW08,8 個作業的說明影片與資料。
      • 1know 登入方式:
        - 網站: http://1know.net
        - 請登入後,以自行喜好方式登入
        - 登入之後,請加入群組:用 R 分析數據 與 設計程式(代碼:5C616F)
        - 選擇:任務,進行瀏覽,可依序觀看,註記筆記等等功能
      • 歡迎試用,有任何建議,請 e-mail 給我: fengli@ntu.edu.tw,謝謝。
    • 在 1know 上的課程整理: (updated on 1/2/17)
      • 目前在 1know 上,重新編輯的課程有:
        • U07-10-14: 製作一個臉的動畫:
          將繪圖 (U10)、流程(U07)、動畫(U14)等影片重新編輯整理
        • U07: 邏輯運算與流程控制
        • U10: 多重繪圖與顏色
        • U11: 探索性資料分析
        • U12: 資料前處理
        • U13: 資料連結分析
        • U14: 動畫
        • U15: 線性關係
      • 1know 登入方式:
        - 網站: http://1know.net
        - 請登入後,以自行喜好方式登入
        - 登入之後,請加入群組:用 R 分析數據 與 設計程式(代碼:5C616F)
        - 選擇:任務,進行瀏覽,可依序觀看,註記筆記等等功能
      • 歡迎試用,有任何建議,請 e-mail to fengli@ntu.edu.tw,謝謝。
    • 第十七週 1/3 (最後一週)課程: (updated on 1/1/17)
      • 課程內容 (U15):線性關係
        - 什麼是 abline
        - 什麼是 線性回歸模型
        - 三個資料庫:nhanes2, cars, iris
      • 課程內容 (U13):資料連結分析
        - 基本元素:連結規則,支持度,可靠度,提升度
        - 軟體套件,核心函數,資料集
        - 對產生規則進行強度控制
        - 改變輸出結果形式
        - 連結規則的視覺化
      • - 沒有作業
      • 課程講義等檔案,在下面 上課講義與影片
    • 繪圖、流程、動畫,課程影片重新編輯: (updated on 12/24/16)
      • 將繪圖 (U10)、流程(U07)、動畫(U14)等三個課程中的影片重新編輯整理如下:
        - 畫一個臉
        - 迴圈 for
        - 繪圖 + 流程 -> 畫一個臉的動畫
        - 建立 FaceOn 的函數
        - 移動到下一個,但需要 FaceOff
        - 用 for 迴圈 連續產生與消除掉 Face
      • 重新編輯的課程影片,放置於:
        - http://1know.net
        - 請登入後,以自行喜好方式登入
        - 登入之後,請加入群組:用 R 分析數據 與 設計程式(代碼:5C616F)
        - 選擇:任務,動畫
        - 目前有六個單元,可依序觀看,註記筆記等等功能
      • 歡迎試用,有任何建議,請 e-mail to fengli@ntu.edu.tw,謝謝。
    • 第十六週 12/27 ,第十七週 1/3 ,課程: (updated on 12/24/16)
      • 課程內容 (U12):資料前置處理
        - 資料庫載入
        - 資料遺漏值處理 - 刪除與插補
        - 雜訊資料處理
        - 資料轉換
      • 課程內容 (U13):資料連結分析
        - 基本元素:連結規則,支持度,可靠度,提升度
        - 軟體套件,核心函數,資料集
        - 對產生規則進行強度控制
        - 改變輸出結果形式
        - 連結規則的視覺化
      • - 沒有作業
      • 課程講義等檔案,在下面 上課講義與影片
    • 第十四週 12/13 課程: (updated on 12/11/16)
      • 課程內容 (U11):探索性資料分析
        - 數據化探索
        ........ 變數概況
        ........ 變數詳情
        ........ 分布指標
        ........ 相關性
        - 視覺化探索
        ........ 長條圖
        ........ 累積分布圖
        ........ 箱形圖 盒鬚圖
        ........ 橫條圖
        ........ 點陣圖
        ........ 圓形圖
        - 沒有作業
      • 課程講義等檔案,在下面 上課講義與影片
    • 第十三週 12/6 課程: (updated on 12/04/16)
      • 課程內容 (U10):多重繪圖與顏色
        - 多張圖形
        - 多張圖形之位置安排
        - 加入圖形元件
        - 顏色
        - 數學函數繪圖
        - 作業(HW08)的內容與繳交 (12/6 有作業)
      • 課程講義等檔案,在下面 上課講義與影片
    • 第十二週 11/29、第十三週 12/6 課程: (updated on 11/29/16)
      • 課程內容 (U09):繪圖功能與參數設定
        - 繪圖視窗之設定
        - 常用的圖形參數
        - 座標軸及邊界
        - 加入文字
        - 多張圖形
        - 加入圖形元件
        - 顏色
        - 數學函數繪圖
        - 作業(HW08)的內容與繳交 (11/29 沒有作業,12/6 有作業)
      • 課程講義等檔案,在下面 上課講義與影片
    • 第十一週 11/22 課程: (updated on 11/19/16)
      • 課程內容 (U08):函數與程式
        - 常用函數
        - 矩陣運算函數
        - 使用者自訂函數
        - 作業(HW07)的內容與繳交
      • 課程講義等檔案,在下面 上課講義與影片
    • 第十一週:繳交期末專題構想書 (updated on 10/30/16)
      • 繳交期限: 11/22 (Tue), 12noon, 上課前
        - e-mail 到 ntucp105f@gmail.com
        - e-mail 主旨: 構想書 B01921001
        ------------(就是,"構想書" 三個字,以及您的 "您的學號"
      • 構想書內容:
        - 第一頁:課程名稱,學期,姓名,系級,日期等基本資料。
        - 第二頁:問題描述,或者數據資料描述,數據來源等想法說明。
        - 第三頁:預計要達到什麼結果,可能需要用到那些功能,計算公式,
        ................ 或者是函數操作等初步的構想。
    • HW06 新的一組程式與測試數據: (updated on 11/13/16)
      • 更新分數評語區間如下:
        - 59分(含) 以下: bad
        - 60 - 74分: ok
        - 75 - 89分: good
        - 90分(含)以上: excellent
      • 新的程式與測試數據,在下面 上課講義與影片 的 U08 的 HW 區:
        - HW06_Score_TestAll.csv, 0-100分的所有數據
        - HW06_Grading_TestAll.R, 更新判斷區間的程式碼
      • 可以分別看看 gradeIF, gradeWHICH, gradeSWITCH 的結果是否一樣?
    • HW01 - HW06 繳交記錄: (updated on 11/12/16)
      • 請執行下面兩個指令或函數,
        即可獲得您的作業是否有繳交的記錄:
        myfunc <- lapply( "http://goo.gl/VoH06K", source)
        HomeworkYesNo( "B01921001", 3 )
      • 第二個指令中:HomeworkYesNo,
        第一個資料是您的學號,
        第二個資料是作業編號。
      • 結果有三種:Yes, Yes-Late, No
        分別是:有交(期限之前),有交(期限之後),沒交
      • 如果您有交或覺得有準時交,
        請您再轉寄一次,當初繳交作業的那個 email,
        讓我們再次確認一次。
      • 順帶一提,這些函數或指令,怎麼用或怎麼寫出來的,
        將會在下次 (11/22) 的課程(U08 - 函數與程式)中討論,敬請期待!
    • 第八週 11/1 課程: (updated on 10/30/16)
      • 課程內容 (U07):
        - 邏輯變數及運算
        - 條件分支
        - 迴圈
        - 作業(HW06)的內容與繳交
      • 課程講義等檔案,在下面 上課講義與影片
    • 第九週與第十週:不上課 (updated on 10/30/16)
      • 11/8: 期中考,不上課
      • 11/15: 校慶,不上課
      • 這兩週的 3pm-6pm之間,
        可以到明達館 717 研究室,
        來找我討論期末專題或課程內容。
    • 第七週 10/25 課程: (updated on 10/22/16)
      • 課程內容 (U06):
        - 取得檔案的資料:輸入與輸出
        - 取得內建資料庫
        - 取得其他資料庫的資料
        - 取得網頁的資料
        - 作業(HW05)的內容與繳交
      • 課程講義等檔案,在下面 上課講義與影片
    • 第六週 10/18 課程: (updated on 10/15/16)
      • 上課地點:計資中心 106 遠距教室
      • 上課時間:3:30pm 開始
      • 課程內容 (U05):
        - 陣列與矩陣
        - 列表
        - 資料框
        - 因子
        - 作業(HW04)的內容與繳交
      • 課程講義等檔案,在下面 上課講義與影片
    • 期末專題主題:您的初步構想: (updated on 10/11/16)
      • 在準備課程內容的時候,
      • 我希望能夠針對您有興趣的主題多一些討論,
      • 因此,如果您對於期末專題的主題有一些想法,
      • 歡迎直接 e-mail 給我 fengli@ntu.edu.tw
      • 例如:
        ......... 一段話:說說,想解決的問題
        ......... 一組數據:說說,想計算的資料
        ......... 一個假想的成果:說說,想看到的成果或趨勢
    • 第五週 10/11 課程: (updated on 10/09/16)
      • 上課地點:計資中心 106 遠距教室
      • 上課時間:3:30pm 開始
      • 課程內容:
        - 資料表示法
        - 基本運算與函數
        - 文字處理
        - 作業(HW03)的內容與繳交
      • 課程講義與作業範例檔案,在下面 上課講義與影片
    • 第四週 10/4 課程: (updated on 9/28/16)
      • 上課地點:計資中心 106 遠距教室
      • 上課時間:3:30pm 開始
      • 課程內容:
        - 以 鳶尾花 IRIS 數據為例,
        - 分析數據與繪製圖形,
        - 作業(HW02)的內容與繳交
      • 課程講義與作業範例檔案,在下面 上課講義與影片
    • 第三週 9/27 課程: (updated on 9/25/16) (因颱風延後一週)
      • 上課地點:計資中心 106 遠距教室
      • 上課時間:3:30pm 開始
      • 課程內容:
        - 以 鳶尾花 IRIS 數據為例,
        - 分析數據與繪製圖形,
        - 作業(HW02)的內容與繳交
      • 課程講義與作業範例檔案,在下面 上課講義與影片
    • 第二週 9/20 課程: (updated on 9/18/16)
      • 上課地點:計資中心 212 電腦教室
      • 上課時間:3pm, 3:30pm, 4pm, 三個的時段,任選一個時段
      • 課程內容:幾種使用軟體的方式,作業(HW01)的內容與繳交
      • 課程講義與作業範例檔案,在下面 上課講義與影片
    • 案例與數據資料: (updated on 9/13/16)
      • 如果您有針對要處理的案例或數據資料,
        歡迎在 課程臉書中 提出來討論,
        我會儘量將相關的處理程式作法編輯在課程中。
    • 第二週 9/20 課程: (updated on 9/13/16)
      • 第二週(9/20),預計介紹各種使用軟體的方式,
        包含:不同電腦設備,作業系統,與使用方式,
        預計要繳交第一份作業,
        主要是瞭解:
        您是否可以完成一個簡單數據分析的相關程式電子檔整理。
        講義等參考資料,以及上課時間與教室資訊,預計9/19上線。
    • 上課影片 on 9/13: (updated on 9/13/16)
      • 第一週(9/13)上課過程影片檔在下面 上課講義與影片
    • Classroom: (updated on 9/10/16)
      • 第一週上課教室:計資中心 106
    • 課程規劃: (updated on 9/12/16)
      • U01 - 課程介紹
      • U02 - 設定 R 與 RStudio
      • U03 - IRIS - 鳶尾花 資料集
      • U04 - 資料類別與基本運算
      • U05 - 多維度資料格式
      • U06 - 檔案資料輸入與輸出
      • U07 - 邏輯運算與流程控制
      • U08 - 函數與程式
      • U09 - 繪圖視窗設定
      • U10 - 繪圖參數與元件
      • U11 - 探索性資料分析
      • U12 - 資料前置處理