本學期高年級的彈性偵探有一節課是進行運算思維的課程,這門課的內容將以運算思維融入程式思維,透過思考來達到學習的目標。
運算思維(Computational Thinking, CT)其實並不是一種特別的概念,簡單來說是我們人人都有的邏輯思考能力,透過下列4種方式來找出問題的解決方式
拆解 (Decomposition)
找出規律 (Pattern Recognition)
歸納與抽象化 (Pattern Generalization and Abstraction)
設計演算法 (Algorithm Design)
而運算思維中有個概念叫做運算性概念(Computational Concepts),透過在程式的建構,其中有很多的概念是不分語言的,所以平台我們選擇了code.org,透過任務的進行從中學習到相關概念,而程式設計中最常使用到的元素是下列七種:
序列(Squence)
迴圈(Loops)
平行化(Parallism)
事件(Events)
條件式(Conditionals)
運算子(Operators)
資料(Data)
【學習進度:序列】對某個任務,確定其連續的步驟 。
從一開始的運算思維概念上的解說,到實際上使用code.org平台進行任務的進行,我們帶學生從中學習了序列的概念,這個元素知識是高年級學生最容易具備的能力,一開始帶給學生的課程,大部分學生可以自己獨力完成這個觀念的任務,且可以舉一反三、或是以更少的程式去完成任務;少部分同學一開始因為需要思考的時間,或是還在學習使用平台的功能,進度會比較慢,透過老師講解或是同學間的相互指導,掌握到技巧之後,在進行任務關卡的速度相對的就提升較多。
【學習進度:迴圈】將相同的序列重複執行。
迴圈這個概念對於高年級學生而言,主要也沒什麼問題,透過序列的排序或是點數之後,可得知迴圈在程式中的運用,有了序列這個程式的先備知識之後,在迴圈的了解就相對而言快速多了,利用迴圈的程式重複執行一個或數個序列程式,來達到程式的精簡化,節省了程式的行數,也讓自己認識了迴圈的使用。
在教學過程中,我觀察到學生使用 Code.org 來學習程式語言的過程中,條件式和函式這兩個概念對他們的程式設計能力有顯著的提升。每個學生的學習進度和理解程度不盡相同,但透過思考與指導,他們在這些關鍵概念上逐漸掌握了基本的邏輯和運用。
條件式語句(如 if、else)是程式設計中非常重要的基礎,它幫助學生理解如何根據不同情境選擇不同的操作。在 Code.org 提供的學習平台上,學生可以透過簡單的圖形化程式語言,先從直觀的方式理解條件判斷,逐步過渡到文字編程語言。這個過程讓學生可以從生活中的例子來聯想條件式的概念,例如「如果今天下雨,就帶傘,否則就不帶」。這樣的生活化連結,使學生能夠快速理解並應用條件式的邏輯。
在實際學習過程中,我發現學生在遇到條件式題目時,通常會先用簡單的方式理解邏輯,但隨著題目難度的提升,他們開始思考不同情況下應該如何設置條件,進而解決問題。雖然每個學生在進行邏輯推理時的速度有所不同,但他們在指導下,漸漸能夠獨立思考並運用條件式來解決問題。
函式(Function)是程式設計中另一個至關重要的概念,它能幫助學生理解如何將重複的程式碼進行封裝,提高程式的可讀性和可維護性。在 Code.org 的教學過程中,學生首先接觸到的是簡單的「行為」或「動作」函式,這些函式讓學生能夠輕鬆理解函式的基本運作:把一組程式碼封裝成一個可重複調用的模塊。
儘管學生的學習速度和掌握情況不同,有些學生能夠迅速理解函式並應用自如,而有些學生則需要較多的引導和實作練習。作為老師,我在這個過程中強調實踐和反覆練習,通過小範圍的程式碼實驗,幫助學生建立對函式的深入理解。
每位學生的學習過程都有其獨特的挑戰與突破。對於初學者來說,邏輯推理能力的不足可能讓條件式的理解變得困難,而對函式的掌握則需要對抽象概念有更高的認知能力。在這樣的過程中,我作為老師,透過多元的教學方法和及時的反饋,幫助學生在理解上突破瓶頸,逐步培養出解決問題的信心和能力。
有些學生在學習過程中進展較快,他們不僅能迅速掌握條件式和函式的基本概念,還能夠進一步挑戰更複雜的程式設計題目。這些學生往往會向我提出更高階的問題,並展現出對編程的濃厚興趣。我會鼓勵這些學生,讓他們參與更多進階的挑戰,並進一步加深他們對程式語言的理解。
然而,也有一些學生學習的進度較慢,對於條件式和函式的掌握不夠扎實。對於這些學生,我會更加注重他們基礎概念的鞏固,通過一步步引導,讓他們從簡單的問題開始,逐漸建立起解題的信心和能力。最終,他們也能夠在逐步的學習過程中,找到自己的節奏,掌握必要的程式設計技巧。