使用開放原始碼教授大學資訊課程 by 陳鍾誠 | CodeData
top

使用開放原始碼教授大學資訊課程

分享:

前言

近五年來,我開始大量使用開放原始碼的軟硬體工具,在金門大學資工系教授各類的課程,舉例而言、我會用 Blender 教授動畫、用 R 教授機率統計、用 Node.js 教授 Web Programming,用 gcc + GNU tool chain 教授系統程式,甚至是用 Icarus 教授計算機結構。

在這樣的教學過程當中,大致有了幾個心得,也培養出一種教學模式,雖然還沒辦法達到很完善的程度,但是和十年前剛進大學教書時相比,有不少明顯的進展。

以下我將與各位讀者分享這種教學方式的優缺點,以及更多的開放原始碼教學軟硬體,讓大家能夠進一步思考開源工具在教學上的用途。

教學模式

在還沒有使用這些開源工具之前,對於某些課程,像是「機率統計」或「計算機結構」,我只能用理論講授的方式上課,很難教學生如何進行實作。但是使用了這些開源工具之後,我就可以很容易的進行實作與示範。

例如我可以用 Icarus 來示範如何用 Verilog 設計「全加器」、如何連結成「四位元加法器」、如何設計簡易的 ALU 單元,甚至是設計一顆 CPU 或一台 SOC 計算機等等,這讓原本只能講講理論的「計算機結構」課程變得較為有趣,學生們也比較能透過這樣的實作體會「如何設計一台電腦」的過程。

當然、如果只有採用 Icarus 模擬,還是會有點「不夠逼真」的感覺,因此若有 FPGA 板可以使用,那我們就能更進一步的教學生如何將這些 Verilog 程式燒錄到 FPGA 中,變成一台真正可以跑的電腦,這樣的學習方式,我相信比起單純進行理論教授的效果會更好。

而對於「機率統計」課程而言,使用 R 軟體輔助會有非常好的效果。舉例而言,當我們想講授中央極限定理的時候,若不採用實作工具,那麼就只能說「n 個獨立樣本的平均值,其機率分布會逼近於常態分布」,並且將這樣的慨念寫成數學,最多再加上一些口頭解說而已。

但是當我們採用 R 軟體實作時,就可以用以下的指令,模擬投擲一個骰子、兩個骰子、三個骰子、四個骰子的情況。

par(mfrow=c(2,2))
x=sample(1:6, 10000, replace=TRUE)
y=sample(1:6, 10000, replace=TRUE)
z=sample(1:6, 10000, replace=TRUE)
w=sample(1:6, 10000, replace=TRUE)
hist(x)
hist(x+y)
hist(x+y+z)
hist(x+y+z+w)

上述指令會用抽樣與統計的方式,畫出類似下列的統計圖形。

R_CentralLimitTheorem

於是學習者可以透過這樣的模擬,直接感受中央極限定理的意義,於是冷冰冰的數學突然之間就有了具體的意義。

待開發的領域

透過這種方式,我相信很多資訊領域的課程,都可以變得更有趣,教學效果也會更好,以下的列表顯示了這些工具可以用在哪些課程上,以便提供大學資工領域教學的一個可能的方向,而這也是筆者未來想要繼續做的事情。

軟體 適用課程
R 或 Python 機率統計、線性代數、數值分析、數位訊號處理、影像處理、人工智慧、類神經網路、機器學習、科學計算
Icarus 數位邏輯、計算機結構、 數位電路設計 (FPGA) 、微處理器
Arduino 單晶片微處理器、嵌入式系統、系統程式、機器人、自動控制系統
Raspberry Pi 嵌入式系統、系統程式、作業系統、機器人
C + gcc + GNU toolchain 程式設計、嵌入式系統、系統程式、作業系統、編譯器、….

當然、還有很多工具可以用在其他教學領域,像是 Node.js 可以用來教 Web Programming,而 GNU Radio 等可以用來作為通訊領域的學習工具等等,而且有更多筆者所沒想到的開源工具等者大家去使用在各式各樣的課程上。

另外、也有一些課程可能會需要用到很多種工具的配合,例如「軟體工程、專案管理」等領域可能就要用到 git, github, GNU make, Bugzilla, 以及開源的單元測試與專案管理系統等等。

不過、有時在某些領域,我們還是難以找到好的開放原始碼的工具,像是「多媒體、動畫設計」課程可能會需要「影音編輯軟體」,筆者就尚未找到適合的開源軟體,而「電子電路設計」時所需要使用的 SPICE 軟體,也沒發現有很好的開源工具 (像是 ngspice 好像還不夠好用,但是免費的 LTSpice 倒是不錯),另外像筆者在視窗程式設計課程也還是用 C# + Visual Studio 進行教學,並沒有完全採用開放原始碼的工具。而在使用 Icarus 教授的課程當中,最後也還必須依靠 Xylinks 或 Altera 的 FPGA 燒錄軟體與FPGA 板,來進行實際的燒錄與測試。

結語

雖然開源工具仍然沒辦法完全涵蓋所需要的課程,但是仍然對筆者的教學產生了重要的影響,而且我相信開源的工具對教學上會愈來愈重要,例如像 Papillo 這個專案已經釋出了開源的 FPGA 實驗板,而 HackRF 這個專案更企圖製造出開源的無線通訊 RF 模組,而筆者也還在慢慢學習 Linux 的使用與程式設計上,將這個開源的作業系統引入到教學當中,讓同學們在學校時就能夠熟悉開源工具的使用。

目前 OCW (開放教材) 、開源電子書 (像是 OpenStax 的物理學、生物學、社會學、化學) 也已經變得非常的普遍,高中以下的教材像 Khan Academy (可汗學院) 與中文的均一教學平台也都已經發展的不錯了,而大學課程的 MOOC (大量線上學習) 也正在急速的發展當中,這些現象都顯示了教育方式已經受到網路深厚的影響,傳統上由英國維多利亞女皇時代發展出來的上課模式正在改變,未來的教育方式很可能會與現在有很大的不同。

但是新的教育模式,像是「翻轉教學法」所提出的,學生在家自己先看影片,然後到了課堂上再來問問題的方式,筆者一直還難以用在課堂上,因為回家會看影片的同學真的很少,雖然筆者已經累積了一大堆上課錄影在 YouTube 上,但是這種新模式似乎不太適合我。

不過採用開源工具進行教學的模式,倒是在我的教學上產生了非常深刻的影響,我希望能夠持續更深入的探索開源工具在教學上的用途,例如透過解析 Arduino 的軟硬體系統,來進行「單晶片微處理機、系統程式與電路實驗」等課程的教學,我相信這種方法對大學資訊科系的教學應該會有更深入的正面影響,也期待能夠有更多能用在教學上的開源工具持續的出現。

分享:
按讚!加入 CodeData Facebook 粉絲群

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

熱門論壇文章

熱門技術文章