第二章 文獻探討
第三節 運算思維教材分析與探討
本節探討運算思維相關教材,並從中參考合適教材並融入情境式學習,依序 分 析 國 外 教 材 文 獻 為 Exploring Computational Thinking 、 Computer Science Unplugged 以 及 Learn to Program with Scratch: A Visual Introduction to Programming with Games, Art, Science, and Math 書。
壹、Google 的 Exploring Computational Thinking
Google 的 Exploring Computational Thinking 網站提供了豐富的教學資源,包 括融入英文、社會歷史、數學、及科學等學科的學習單元,強調運算思維有助於 各類問題的解決,是學生應該具備的基本能力(ECT, 2015),接下來列舉將運算 思維融入電腦科學、數學和英文進行教學的例子並加以分析。
一、電腦科學-訊息加密(Ciphering a Sentence)
學生在活動過程中,以建立演算法的方式來詳細描述訊息加密的過程,最後 檢視加密和解密的訊息中以識別模式的方式,來破解訊息並發展出解密策略。老 師在開場活動提問學生「假如你要傳遞私密訊息給你朋友,而你只能寫在任何人 都看得到的白板上,你要如何確保只有你朋友才看得懂」,學生試著回答可行的 想法與策略。接著進行建立訊息加密表的活動,學生建立一字母映射表,並依照 規則一:將英文單字分為有封閉區的(如 A, B, D, O, P, Q, R),和沒封閉區的(如 C, E, F, G, H, I, J, K, L, M, N, S, T, U, V, W, X, Y, Z)兩組,再將兩組合併後填入表 格,如圖 2-1,之後則開始加密訊息並傳給其他同學。在總結部分則是讓學生小 組討論訊息加密規則的優缺點以及可以改善之處,並讓學生詳列步驟建立演算法 後以電腦去執行加密,最後讓學生思考並了解對於無法解密的訊息時,如何拆解 訊息並透過識別模式的方式找出解開加密訊息的策略,例如以字母出現的頻率來 解密訊息。
圖2-1 字母映射表一
二、電腦科學-各個擊破法(Divide and Conquer)
讓學生能用各個擊破法的策略解決課程中活動的謎題,並且以分解問題概念 來將完整的問題分解成較小的問題,最後透過演算法設計規畫解決策略。首先老 師講解第一個活動的規則為「學生們自行將一物品隨機交給一位同學保管,不讓 老師得知,待學生藏好後,老師可以提問學生問題,但學生只能回答是或否,於 是老師要試著在這些限制下,以最少的提問次數找到藏物品的學生」,活絡學生 氣氛引起學習動機。接著老師透過二元搜尋法的策略,從所有學生群的中間剖半,
詢問物品是否在左半邊的學生中來縮小搜尋範圍,若否則從另一半邊繼續用同樣 方式提問,反之亦然。最後持續重複此步驟直到剩下一位同學(圖 2-7)。該活動 藉此讓學生學習將大問題分解至小問題,也就是分解問題能力。結束後與學生小 組討論「還有什麼其他策略可以找到標的物」以及「老師採取的策略為什麼這麼 有效率」等問題來腦力激盪,使學生可以主動思考學習,以及溝通合作發展演算 法解決問題的能力,並讓學生討論後發表心得以評量學生在該活動的學習表現。
圖2-2 二元搜尋法尋找學生
之後的活動一則是塑造一情境讓學生透過二元搜尋法來解決問題,該情境問 題為「假設一珍貴物品在監視器的錄影下被竊取,而監視畫面在過去 24 小時裡,
每五分鐘會拍一次照片,如何在這堆照片中以最有效率的方式找出物品被偷的時 間點」,接著讓學生小組討論搜尋辦法,再讓小組派出代表讓他們發表解決方法,
藉此讓學生在課程後有實際應用的機會,並且學習評估問題解決策略的效率之能 力。課程最後總結活動則是再建立另一可以用二元搜尋法來解決的例子,例如單 字在字典裡的搜尋,幫助學生有能力將解決策略應用至其他類似問題,讓學生能 否將該能力應用至其他情境。
三、數學-圓面積(Area of a Circle)
老師先讓學生觀察圖 2-4,並討論與描述出所注意到不同切片數的圓形以及 組合起來後的圖形之間的差別,之後觀察切片數不同的圓,識別出切片圓的高與 圓半徑之間比例的模式(如圖 2-5);當學生發現切片數量接近無限大時,切片圓 的高會等同圓半徑,因而推導出以矩形面積的算法可以得出圓面積,以此帶入模 式識別的概念。此時,再加入 Python 程式設計練習,以強化核心概念之理解;
最後提出問題為讓學生進一步思考「在十六世紀時,沒有圓面積的公式,只有矩 形和平行四邊形的算法,要如何求出圓的面積?」
圖2-3 各種切片數的圓
圖2-4 模式識別推敲公式
貳、Computer Sciences Unplugged
由三位電腦科學講師以及兩位學校教師根據自身現場教學二十多年的經驗 所編輯而成的 Computer Sciences Unplugged(http://csunplugged.org/)教材,他們 認為現今電腦與生活息息相關,希望藉由探索電腦科學來了解電腦是如何運作以 及如何思考,強調不使用電腦工具教授電腦科學概念,以學生親身體驗及模擬演 算法等有意義的脈絡下,來互相溝通合作、解決問題、創造力思考,使電腦科學 概念的學習具象化、簡單化來加強運算思維與生活的連結。讓運算思維成為工具,
以電腦科學概念學習為主,工具只是加強知識學習的手段。將知識視為工具在真 實情境中使用(Brown, Collins & Duguid, 1989)。
以第二部份:讓電腦工作—演算法為例子,課程摘要提到電腦通常會把許多 資料依照字母、日期或數字有順序地排好,讓搜尋時更快速找到,但錯誤的排序 方法將會非常的耗時,因此在該活動中學生可以發現到不同排序演算法以及其效 率之差別。活動事先需準備 8 個非透明容器裝入不同容量的水或沙子,以及一個 天秤可以對每個容器進行秤重。首先讓學生自行用天秤找出最輕的容器,並分析 出最快的方式;接著更進階地再選出三個容器由輕到重的排出順序,分析比較方
式以及記錄下比較的次數;最後將全部八個由輕到重的重量排出順序。然後帶出 選擇排序法的概念-逐一找出最輕的容器,並且介紹其排序的方式。
接著介紹快速排序法,如圖 2-8,讓學生試著比較快速排序法與前項活動的 選擇排序法效率之差異。最後課程總結收斂到生活中排序的優點與應用。
圖2-5 快速排序法示意圖
參、幾何繪圖
Marji 在 2014 年出版 Learn to Program with Scratch: A Visual Introduction to Programming with Games, Art, Science, and Math 一書,認為 Scratch 可以幫助學習 者能提升生活中各個重要領域的解決問題能力,並且其即時回饋可以驗證思考邏 輯是否正確,課程活動可以提升學習內在動機、促進對知識的追求以及在動手操 作的過程中探索和發現自我的創造力和想像力。Scratch 的目的是作為一種工具 來講授基本的程式設計概念並探索電腦科學。適合拿來教導國、高中的學生,甚 至也可以用在來自不同領域背景的大學生,讓學生以有意義的方式將 Scratch 運 用至與他們相關領域所需要相適應的技能。
以第四章「程序」(procedure)為例子,本章介紹「各個擊破法」的概念來 進行程式設計。將一個大專案分成不同的程序,針對每一程序進行編寫,最後拼 湊一起完成問題。可以幫助編寫程式時更容易完成以及測試時更容易排除錯誤。
課程中首先以 Scratch 繪製基礎的圖形為主,並針對不同的形狀設計出程式碼,
之後再介紹程序的功能,針對先前的程式碼簡化程式,如圖 2-9。接下來活動則 更進階至花朵的繪畫以及分析複雜的幾何圖形,並將之重複繪畫並旋轉以達成任
務,如圖 2-10,主要說明如何將複雜的程式分解成較小的片段來進行解決,並針 對每個程序進行測試執行,之後再進行更進階圖形繪製時則可重複利用先前的程 序,而不需再費心於基本圖形繪畫的細節。
圖2-6 以程序來簡化程式碼
圖2-7 重複繪圖與旋轉來完成圖形
經由上述活動練習後,可以理解到將程式分解成小部分並一一解決的重要性,
將複雜的問題由上到下分解成小部分的邏輯結構,並將每個小部分以程序的方式 解決並結合最終完成會後的程式。但在分解問題前,需先充分了解問題,再將問 題分解成各個小任務去執行解決,而分解的方式沒有所謂的對或錯,是根據知識
經驗的累積與培養來讓問題的分解上更加明確與效率,但分解後的問題要在邏輯 上是正確的。
肆、小結
經由上述教材分析後可以發現到,教材的教學流程大部分皆是由教師先以提 問的方式跟學生互動,並且引導學生以運算思維的方式理解與討論教學內容,接 著再以實作活動搭配資訊科技或工具的輔助(如:Google 表單、試算表或天秤)
實踐運算思維解決課程問題,最後則收斂課程將知識做更多的延伸與應用,在整 個課程的過程中培養運算思維。本研究分析與參考上述運算思維相關教材內容,
從中選定「二元搜尋法」、「快速排序法」、「分析幾何繪圖」等三個主題單元,並 將教材以情境式學習進行教學來探討學習成效。