運算思維導向程式設計教學─
以「動手玩音樂」模組化程式設計為例
陳怡芬
*教師
林育慈 副教授
翁禎苑 教師
臺北市立第一女子高級中學 國立臺灣師範大學資訊教育研究所 臺北市立東湖國民中學 運算思維無所不在,具備運算思維的問題解決模式正悄悄地影響著近代科學、工 程、人文、社會與藝術領域。美國教育部與蘋果、思科、微軟、戴爾電腦等公司共同創 立 21 世紀關鍵能力聯盟(Partnership for 21st Century Skills,簡稱 P21),並提出批判性 思考、問題解決、運算思維、合作溝通與創造力是 21 世紀公民必須具備的關鍵能力(P21, 2007)。這些關鍵能力攸關國家整體的經濟與成就,必須靠教育轉型才能養成。2011 年 以來,英、美等先進國家為因應科技發展與人才所需,皆重新擬訂電腦科學課程的教育 理念與方向,視運算思維為貫穿整個資訊科學課程的主軸;我國資訊科技教育也由程式 技能與軟硬體應用導向逐漸演變為高階能力之問題解決與運算思維導向課程(林育慈、 吳正己,2016)。 108 年度即將施行的十二年國教資訊科技課程綱要1強調培養學生高階的思維能 力,期能藉由資訊科技活動設計與實作,增進學生運算思維與問題解決能力,同時發展 團隊合作與創新思考力。本文以模組化程式設計教學為例,提出運算思維導向課程設計 模式,透過觀察樂曲的規律性,讓學生體驗運算思維歷程,建立以運算思維解決問題的*本篇通訊作者:陳怡芬,通訊方式:[email protected]。 1 國家教育研究院「十二年國民基本教育課程綱要國民中小學暨普通型高級中等學校—科技 領 域 ( 草 案 )」 請 參 考 : https://www.naer.edu.tw/ezfiles/0/1000/attach/92/pta_10229_131308_ 94274.pdf。
實作能力。
壹、運算思維內涵
美國卡內基梅隆大學電腦科學家周以真教授(
Jeannette M. Wing
)在美國電腦權威期刊《
ACM
通訊》(Communications of the ACM
)上提出運算思維(Computational
Thinking
)的概念,隨即受到舉世重視(Wing, 2006
)。她認為運算思維是一種分析式思維(
Analytical Thinking
),也是運用電腦科學基礎概念進行問題求解、系統設計以及人類行為理解的一系列思維活動。它包含了問題解決的數學思維(
Mathematical
Thinking
),在真實世界的條件限制下找到設計與評估複雜系統的工程思維(Engineering
Thinking
),以及能夠了解人類心智運作規律的科學思維(Scientific Thinking
)(Wing,
2008
)。世界各國開始重視運算思維的概念與其在教學上的應用,各領域專家學者也紛紛對 運算思維的定義提出不同看法。為了讓全球教學者有所依循,美國
Google for Education
(2015
),並提出運算思維概念準則與教學建議。
歷程(
mental process
)與後段的成果產出(tangible outcomes
),如圖1
。其內涵說明如下:
一、心智歷程
問題拆解(Decomposition
):將資料、程序或問題拆解成較小可處理的部分。 抽象化(Abstraction
):識別並擷取可表達主要概念的重要訊息。 樣式辨識(Pattern Recognition
):找出資料中可見的樣式、趨勢與規則。 演算法設計(Algorithm Design
):產生可行的程序性指令以解決問題。二、成果產出
自動化(Automation
):讓電腦或機器做重複性的工作。 資料搜集(Data Collection
):搜集與問題相關的可用資料。 資料分析(Data Analysis
):藉由尋找資料的樣式規則理解數據。 資料表達(Data Representation
):以合適的圖表、文字或影像表達數據。 樣式一般化(Pattern Generalization
):建立一個可預測結果的模型或規則。圖1 Google 定義運算思維的歷程
貳、運算思維導向程式設計教學設計
傳統程式設計教學偏重程式語法與結構的教學,並未強調運算思維的歷程與方法, 然而,對多數學生而言,即使熟知語法與結構,若無運算思維的引導,要直接撰寫程式 來解決問題是複雜且困難的(Jenkins, 2002)。因此,程式設計一直是教學上的一大挑戰 (McGettrick, Ibbett, Lloyd, Lovegrove & Mander, 2005)。自運算思維概念被提出以來, 許多研究開始探討如何引導學生運用運算思維解決問題(Howland, Good, & Nicholson, 2009; Lewis, 2010; Jonas & Sabin, 2015)。
本文參考 Google 的運算思維操作型定義,將運算思維歷程融入傳統程式設計教學 中,強調以運算思維作為程式概念理解與程式實作的鷹架(scaffolding),提出「運算思 維導向程式設計教學模式」(如圖 2)。 在教學前,教師須先考量教學內容所對應的主要運算思維,以進行運算思維導向的 教學設計。教學過程可分為四個階段,第一階段為任務式動機引導,教師可運用影音等 具體事物的觀察與操作,讓學生了解學習概念的具體意義,並藉由提問引出問題以提升 學生學習動機;第二階段為運算思維,教師可透過學習單與活動設計讓學生經歷預先設 定的主要運算思維;第三階段才導入主要程式概念學習內容,教師透過程式概念解說引 導學生進行程式實作,進而完成第四階段的程式創作。
圖2 運算思維導向程式設計教學模式
本教案以「動手玩音樂」模組化程式設計課程為例。由於此課程最重要的教學內容 是模組化程式設計,因此問題的拆解、模組樣式的觀察皆為重要運算思維,學生須觀察 樂曲重覆的樣式,將其拆解成適當的模組以有效演奏樂曲。此外,學生須利用適當的資 料格式表達樂曲,並進一步設計適當的流程以達成樂曲創作,因此於此課程中,學生將 經歷的主要運算思維包含:樣式辨識與問題拆解、資料表達、演算法設計。 根據所萃取出來的主要運算思維,教師須設計對應這些主要運算思維的學習活動, 讓學生進行高層次思考的練習而不落入語法的細節,這些活動可協助學生進行問題拆 解、找尋規則、資料抽象化與流程規劃,並提供程式實作前的問題解決鷹架。教學活動 設計與運算思維歷程對應如圖 3。學習過程中透過視覺與聽覺的具象感知轉化為抽象的 運算思維,例如:解析樂句與尋找樂曲規則,可經歷問題拆解與樣式辨識;數值模型記 錄音高與節拍資料的過程中,可經歷資料表達;自動化演奏樂曲實作,可體驗演算流程 設計。圖3 動手玩音樂教學活動設計與運算思維歷程對應
參、教學內容
本教案以「運算思維導向程式設計教學模式」為架構,呼應十二年國教核心素養, 編寫教學單元、學習內容與活動設計。茲分述如下:一、教學單元簡述
領域/科目 科技領域/資訊科技概論 實施年級 七、八年級 總節數 4~6 節 單元名稱 模組化程式設計─動手玩音樂 學 習 表 現 資 t-IV-3 能設計資訊作品以解決生活問題 資 t-IV-4 能應用運算思維解析問題 資 c-IV-2 能選用適當的資訊科技與他人合作完成作品 資 c-IV-3 能應用資訊科技與他人合作進行數位創作 資 p-IV-1 能選用適當的資訊科技組織思維,並進行有效的表達 資 p-IV-2 能利用資訊科技與他人進行有效的互動 學習 重點 學 習 內 容 資 P-IV-2 結構化程式設計 - 循序與選擇結構 - 重複結構 資 P-IV-4 模組化程式設計的概念 資 P-IV-5 模組化程式設計與問題解決實作 資 D-IV-2 數位資料的表達方法運算思維 問題拆解:解析樂句 樣式辨識:從樂曲的規律性中尋找規則 資料表達:以數值模型記錄樂曲音高與節拍資料 演算法設計:運用模組化程式設計完成自動化樂曲演奏
二、教學內容與活動設計
本課程以美國麻省理工學院媒體實驗室(MIT Media Lab)所開發的線上版視覺化 程式語言 Scratch Online Editor 為實作工具2,讓學生把抽象的程式語法和邏輯用視覺化
界面簡單地呈現出來。教學活動以兩人一組進行,共分四個單元。由學生熟悉且節奏簡 明的兒歌、兒歌自選曲、流行樂曲、到樂曲創作,逐步引導學生思考電腦自動化演奏音 樂的創作過程。透過對樂曲與樂句結構的分析,讓學生了解模組化程式設計的概念。
(一)《兒歌音樂盒—指定曲》40 分鐘
核心素養呼應說明:本教案旨在建立學生以系統化運算思維解決問題的實作能力。 活動中可播放音樂盒與自動演奏鋼琴的音樂影片,讓學生思考自動化音樂演奏的原理。 教師帶領學生視唱樂譜,並引導學生從規律性中進行樂句解析,培養樣式辨識的能力。 透過範例音樂程式播放與樂曲解析活動引導學生觀察樂句,並從規律性中尋找重複樂句 的規則與結構,在測試與聆聽中了解樂曲演奏的程式流程。「音符數值化」活動將樂曲 屬性資料以抽象化的形式表達。其中五線譜音高與節拍資料的數值轉換練習,讓學生透 過資料表示法了解音符數位化資料的特質,並培養學生掌握科技符號與運算思維表達的 能力。透過樂曲流程的程序性規畫與程式編寫發展解題方法,培養學生系統化運算思維 解決問題的實作能力。最後,在變奏曲實作活動體驗程式編寫、聆聽、測試、修正的歷 程,達成學生身心素質與自我精進。 教學階段 教學內容 具體操作 A. 播放音樂盒與自動化演奏音樂影片 B. 介紹自動化音樂演奏的原理與發展 C. 引導學生思考電腦如何自動演奏樂譜 運算思維 A. 樣式辨識:樂譜視唱 引導學生從規律性中進行樂句解析,培養樣式辨識的能力 B. 問題拆解:樂曲結構分析(如圖 4)培養問題拆解與模組化思考的 能力 開啟線上程式寫作平臺與範例程式 引導學生聽一聽樂句函式,並在學習單的樂譜上標示出樂句名稱教學階段 教學內容
圖4 樂曲結構分析|運算思維:解析問題+樣式辨識
C. 演算法設計 樂曲程式寫作:運用模組化程式設計與流程控制完成自動化樂曲演 奏,培養演算法設計能力 以程式範例實作檔引導學生辨識樂句 學生需依樂曲演奏流程置放樂句,完成音樂自動播放程式 D. 資料表達 音符數值化(如圖 5):運用數值模型記錄音樂與節拍,培養符號表 達的抽象化思考能力 運用學習單引導學生思考音符代號的意義 嘗試改變代號,觀察變化 引導學生找出中央 C(Do)的代號與音符規則圖5 音符數值化、資料表達法|運算思維:抽象化
運算思維 E. 資料表達 樂器數值化、演奏速度數值化:運用學習單提問引導學生思考樂器 與演奏速度代號的意義,並讓學生嘗試改變代號,觀察演奏結果的 變化 學習內容 與 程式創作 F. 變奏曲實作 程式實作 修改樂曲演奏流程、音符、樂器與演奏速度,嘗試兒歌變奏創作 與測試修正(二)《個性化兒歌音樂盒─自選曲》40 分鐘
核心素養呼應說明:為提升學生學習興趣與自我挑戰,本單元中鼓勵學生選擇自己 喜愛與熟悉的樂曲,製作自己喜歡的兒歌音樂盒。學生將透過實作自選音樂的歷程,學 習獨立完成樂曲規律的觀察與樂句結構的分析,再次經歷問題拆解、尋找規則與抽象化 等運算思維,藉以強化學生系統性思考與分析問題的能力。樂曲分析中的音符數值化活 動,則再次進行五線譜音高與節拍資料數值轉換的練習,讓學生更加熟悉音符資料的特 質與數位化資料的關聯性,深化學生精確掌握科技符號與運算思維表達的能力。學生在 樂曲實作過程可依據對應的數值描寫樂句函式,以流程描述樂句演奏順序。透過試聽、 測試與調整修正,完成程序性規劃與程式編寫,發展解題方法,培養學生整合運算思維 與資訊科技解決問題的能力。透過自動化樂曲演奏與變奏的程式創作活動,讓學生了解 聽覺美感應用於科技的特質,藉以培養學生藝術涵養與美感素養。透過程式編寫、聆聽、 測試、修正的歷程,達成學生身心素質與自我精進。最後將作品上傳於網路平臺,以線 上音樂廳的方式分享樂曲創作成果,並開放程式碼創作,進行傳播、分享與賞析,有助 於培養學生友善的人際情懷,與他人建立和諧互動與欣賞切磋的學習素養。 教學階段 教學內容 具體操作 1. 播放範例音樂盒引起動機,鼓勵學生製作自己喜歡的兒歌音樂盒 2. 自選曲目:引導學生選擇喜愛的樂曲 3. 兩人一組解決部分學生識譜能力不佳的問題 4. 教師可提供範例樂譜,或依課堂時間而定讓學生自行找譜,識譜練唱 A. 問題拆解、樣式辨識 樂句結構分析:在樂譜學習單上寫出樂句,並標示出樂句代號 B. 抽象化:樂句函式定義音符數值化 定義每個樂句內容:對應樂譜,將音高與節拍數值化 運算思維 C. 演算法設計:樂曲描述 安排樂句流程控制,並以代號與程式流程描述樂曲演奏 學習內容 與 程式創作 A. 樂曲程式寫作 函式概念解說 定義樂句函式—依據對應的數值描寫樂句函式 以程式流程描述樂句演奏順序 B. 試聽並調整,完成兒歌音樂自動播放程式,產出完成檔(如圖 6)教學階段 教學內容
圖
6
個性化兒歌自選曲──樂曲程式寫作
學習內容 與 程式創作 C. 變奏曲實作 修改樂曲演奏流程、音符、樂器與演奏速度 分組合作共同創作編寫音樂盒程式 兒歌變奏程式實作與測試修正 作品賞析 A. 線上音樂廳公開分享(如圖 7) B. 小組互評與賞析:評析程式模組化與流程控制的優點圖
7
線上大賞─
MusicBox Studio
(
https://scratch.mit.edu/studios/3431995/
)
(三)《流行樂音樂盒—自選曲》
40
~
80
分鐘
核心素養呼應說明:本活動藉由自選流行樂的實作過程,讓學生進一步體會以重複 結構與樂句函式呈現主歌、副歌流行樂創作曲式的方法,進而更熟練地運用精簡流程完 成流行樂曲自動演奏。從簡單兒歌進展到較複雜的流行樂,學生需獨立完成更複雜的樂曲規律與樂句結構分析,再次經歷問題拆解、尋找規則、與抽象化等運算思維,更深化 學系統性思考與分析問題的能力。流行樂自選曲實作過程需依據對應的數值描寫樂句函 式,並以更複雜的重複結構流程描述樂句演奏順序。透過不斷試聽、測試與調整修正, 更熟練程序性規劃與程式編寫,進一步強化發展解題方法,培養學生整合運算思維與資 訊科技解決問題的能力。 教學階段 教學內容 具體操作 A. 聽聽流行樂(範例音樂)、看看流行樂譜(範例樂譜) B. 引導學生思考流行樂是否存在規律曲式範例引導:大家一起來唱歌, 認識流行音樂樂曲形式,認識反覆記號並了解演唱流程。分析範例樂 譜主歌、副歌 C. 兩人一組從範例樂譜中尋找喜歡的自選曲 A. 問題拆解 樂句結構分析:對範例樂譜進行樂曲主歌、副歌分析(學習單) B. 抽象化 音符數值化 樂句函式設計 主歌、副歌函式設計 運算思維 C. 演算流程設計:樂曲描述—樂句流程設計 學習內容 與 程式創作 樂曲程式實作:線上程式寫作平台程式實作、測試 樂句函式實作 主歌、副歌函式實作 程式實作與測試修正 作品賞析 線上音樂廳展示學生作品
(四)《流行樂音樂盒—自編曲》40~60 分鐘(選授—依時間與學生興趣而定)
核心素養呼應說明:本活動可依授課時間與學生興趣而定,鼓勵學生依據流行樂曲 式自行創作音樂。授課教師可與音樂教師共同研討開發跨科整合教材,引導學生設計屬 於自己的音樂盒。自編曲創作的歷程讓學生從觀察規律曲式中進而學習創作規律樣式。 在活動中學生能更結構化創作樂曲,更模組化編寫程式,強化學生系統性思考與分析問 題的能力。透過自編曲程式創作活動可培養學生藝術涵養與美感素養,在聆聽、測試、 修正的歷程中強化學生身心素質與自我精進。教學階段 教學內容 具體操作 A. 複習流行樂創作曲式與元素 B. 引導學生設計屬於自己的音樂盒 運算思維 A. 問題拆解:樂句結構設計 B. 資料表示:樂句函式設計—音符數值化 C. 演算法:主歌、副歌樂曲結構設計 流程設計。例如:ABA,ABAA,AABA 學習內容 與 程式創作 程式概念解說與流行音樂程式實作 A. 樂句函式實作 B. 主歌、副歌函式實作 C. 樂句主流程實作 D. 程式實作與測試修正 作品賞析
線上音樂廳展示學生作品
肆、課程試行與學習成果
本課程於 105 年與 106 年分別在臺北市某高中一年級與某國中七年級試行,高中學 生參與人數 39 人,國中學生參與人數 359 人。課程進行時間約為 3~4 小時。教師先運 用學習單帶領學生經歷問題拆解、樂句分析、音符數值化的運算思維歷程(圖 8-1、8-2), 再到 MIT Scratch 線上程式寫作平臺進行模組化程式設計實作與測試(圖 9-1、9-2)。課 程活動結束隨即進行運算思維概念評量(圖 10-1、10-2)與學習態度自評(結果如表 1-1、 1-2)。圖8-1 樂句分析(國中學生)
圖8-2 樂句分析(高中學生)
圖9-1 模組化程式設計實作與測試
(國中學生)
圖9-2 模組化程式設計實作與測試
(高中學生)
圖10-1 運算思維概念評量—
樣式辨識(1)
圖10-2 運算思維概念評量—
樣式辨識(1)
評量結果發現運算思維導向程式設計的音樂專題有助於學生問題拆解(高中生 3.79;國中生 3.49)、抽象資料表示概念的理解(高中生 4.23;國中生 3.34)、結構化程 式設計概念(高中生 3.87;國中生 3.41)與模組化程式概念(高中生 3.97;國中生 3.37) 的形成。表1-1 高中試行─自我評量結果統計
1 2 3 4 5 題項 N(%) N(%) N(%) N(%) N(%) Mean 1. 音樂盒專題讓我了解分析問題的方法 0 (0) 5 (13) 8 (21) 16 (41) 10 (26) 3.79 2. 音樂盒專題讓我了解音符資料表達的方法 0 (0) 1 (3) 6 (15) 15 (38) 17 (44) 4.23 3. 音樂盒專題讓我了解函式的使用時機 0 (0) 3 (8) 7 (18) 17 (44) 12 (31) 3.97 4. 音樂盒專題讓我了解流程控制與迴圈用法 0 (0) 2 (5) 11 (28) 16 (41) 10 (26) 3.87 *1~5:非常不同意~非常同意表1-2 國中試行─自我評量結果統計
1 2 3 4 5 題項 N(%) N(%) N(%) N(%) N(%) Mean 1. 先進行樂曲分析我知道怎麼思考這個程式問題 17(5) 43(12) 118(33) 108(30) 73(20) 3.49 2. 我知道如何定義新區塊進行結構化的程式設計 20(6) 56(16) 141(41) 78(23) 48(14) 3.23 3. 音高與節奏讓我知道數值化資料表達的意義 31(9) 47(13) 121(34) 89(25) 71(20) 3.34 4. 樂曲分析我比較知道怎麼應用循序結構與重複 結構 21(6) 47(14) 116(34) 90(26) 69(20) 3.41 5. 分析音樂曲式的歷程讓我更喜歡寫程式 35(10) 53(15) 100(29) 81(24) 74(22) 3.31 6. 分析樂句的組合與變化所找到的重複區段我發 現程式模組化的用意 26(7) 54(15) 115(32) 88(25) 76(21) 3.37 *1~5:非常不同意~非常同意 授課教師發現學生普遍能拆解複雜樂曲、進行樂句分析與樂譜音符數值化,並透過 樂句函式的定義理解函式概念,再運用結構化程式創作完成樂曲演奏(如圖11-1
、11-2
)。 此外,學生也對整個音樂創作模組化程式設計學習活動保有高度興趣,有三成同學能在 資料結構與演算方法上有進階表現。例如能找到音樂樣式裡的通則,利用清單與條件判 斷,寫出精確的結構化程式碼、能在簡單的樂曲中搭配適切的動畫,完成有趣又有用的 進階程式創作,甚致能夠舉一反三融入和弦作曲創作(如圖12
)。更多學生投注熱情完 成的作品展示於線上音樂廳(https://scratch.mit.edu/studios/3996432/
),程式碼可公開瀏 覽並直接引用改作。圖11-1 國中學生樂曲程式創作「兩隻老虎」
─分析樂句、找規則、改變樂器
與節奏演奏第二次
圖11-2 國中學生樂曲程式創作
「哆啦A夢」─分析樂
句、找規則、第二次演奏
加速變奏
圖
12
國中學生進階程式創作「
Undertale
—
Dogsong
」
左邊的
DOGSONG
:作者改編版;右邊的
DOGSONG
:原版
和弦作曲概念加上
multi-pipeline
流程
伍、結語
本文嘗試以「運算思維歷程活動」引導學生從視覺與聽覺的面向觀察樂句的重複 性,並運用函式描述樂曲,讓學生了解模組化程式設計的精神,也體驗系統化運算思維 解決問題的歷程。108 年度新課綱施行之初,高中階段將有三年的銜接期,本課程教學 對象雖定位在 108 課綱施行後的七、八年級學生,但根據本教案對高中生試行成效,教 學者也可以運用此課程對完全沒有國中先備課程的高一學生進行模組化程式設計教 學。期待有更多運算思維導向教學設計教案的產出,為程式設計教學帶來新的可能。致謝
本文的部分內容與教案係參與國立臺灣師範大學「中學運算思維教材及評量工具之 開發及推廣」計畫之產出,感謝科技部計畫(MOST 104-2511-S-003-055-MY3)支持。參考文獻
林育慈、吳正己(