王艷霞 山東省鄒平市第一實驗小學
2006年,周以真教授對計算思維給出了比較系統的定義,即運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。我們也可以把計算思維理解為,是把看起來復雜的問題分解成一個個簡單、具體的問題,通過分析、聯想等方法解決問題的過程。[1]計算思維不是獨立存在的,而是在用計算機工具和計算機科學方法解決問題的過程中,體現出來的數學能力、設計能力、工程能力等多方面能力的集合。
圖形化編程軟件為學生提供可視化的編程與開發(fā)環(huán)境,學生不需要輸入復雜難懂的代碼,直接通過可視化的程序命令積木塊拼接就可以實現程序的快速編寫。圖形化編程不是簡單地讓學生掌握編寫的技巧,更注重的是培養(yǎng)學生在解決問題時綜合運用邏輯操作、算法、數據結構等通用的工程方法和數學知識所表現出的關鍵能力。學生在學習程序編寫的過程中需要理清各事件發(fā)生的先后順序,理解所蘊含的邏輯操作,再在此基礎上完成各個模塊的搭建、修改,解決問題,從而提升計算思維。
問題驅動是學生學習的興趣源頭和動力源泉。學習的目的是解決實際問題,而提出一個有效、有趣、有實際意義的問題恰恰是激發(fā)學生求知、探索的最好“引線”[2],因為基于解決問題的學習可以促使學生迅速調動潛能,積極融入創(chuàng)設的情境,從而主動嘗試分析問題、解決問題。例如,在教學《安全停車有感知》一課時,筆者通過大屏展示了兩位新手司機“停車入庫”的視頻。在學生觀看視頻后,筆者提問:“第二位新手司機是怎樣快速安全地將車倒入停車位的?”學生通過觀察回答:“第二位新手司機是通過倒車雷達和倒車影像成功將車倒入停車位。”筆者問:“我們可以用圖形化編程軟件來設計一個自動泊車程序嗎?如果可以,我們應該怎樣實現?”借此建立聯系,讓學生利用圖形化編程軟件創(chuàng)作自動泊車程序。
流程圖可以很好地作為計算思維過程抽象表達的形式化工具,以有效展現問題解決的細節(jié)分解和過程演繹。例如,在《安全停車有感知》一課中筆者設計了一個簡單的自動泊車程序,讓學生先觀察,然后描述汽車倒入停車位的過程:“汽車首先停在對準車位的位置,接著汽車緩慢倒車,在倒車的過程中,如果檢測到白色停車線,則停車。”筆者接著引導學生分析完成這些操作,明確需要用到哪些積木并繪制流程圖。學生通過分析歸納繪制流程圖(如圖1),找到解決問題的方法。

圖1
在繪制流程圖后,學生嘗試自主搭建腳本(與顏色有關的積木塊在偵測模塊,與執(zhí)行次數有關的積木塊在控制模塊。要想讓程序運行起來,還需要在事件模塊中找一個觸發(fā)積木塊,將這些積木塊依照邏輯順序搭建起來)。在基本的腳本搭建完成后,學生進行調試,以保證汽車在倒庫的過程中只有檢測到白線(車庫停車線)才停下來(如圖2)。

圖2
這個自動泊車程序基本實現了倒車入庫的功能,筆者再次提問:“同學們覺得這個自動泊車程序是否已經很完美了?如果在倒車的過程中,有行人突然出現在停車位上,會怎么樣?”學生通過運行調試發(fā)現,這個自動泊車程序還不夠完善,當行人出現在停車位上時,小車會徑直撞向行人。學生通過交流討論找到了原因——缺少“偵測”行人的模塊,于是又添加了“偵測”行人的模塊(如圖3)。

圖3
筆者繼續(xù)提問:“同學們看看這個程序還有什么需要改進的地方?還有沒有不合理的地方?”有的學生結合自己的生活經驗得出:“司機應該看到行人提前停車,等行人離開后再繼續(xù)倒車。”小組交流尋求解決問題的辦法,最終得出:要添加“偵測”行人與車的距離模塊,即如果汽車“偵測”到“到行人的距離小于一定安全距離”時提前停車,等行人離開后再繼續(xù)倒車(如圖4)。行人也要加一個“偵測”模塊,即如果行人偵測到“到汽車的距離小于一定安全距離”時,離開停車位(如下頁圖5)。

圖4

圖5
學生還可以在組內展示自己的作品,與教師、同學一起交流想法,分享創(chuàng)意。筆者鼓勵學生通過圖形化編程社區(qū)網站,對他人設計好的作品進行“再創(chuàng)作”。學生在“再創(chuàng)作”的過程中,既要讀懂他人的作品,又要在理解邏輯結構的前提下進行改進,通過這樣的過程,提升計算思維。
總之,在圖形化編程教學中,通過問題驅動、分析歸納、腳本搭建、延伸拓展、評價分享環(huán)節(jié),提升了學生分析問題和解決問題的能力,有效地培養(yǎng)了學生的計算思維。
筆者認為,在小學階段要想培養(yǎng)學生的計算思維,信息科技教師不應局限于本學科領域,而應有意識地與其他學科有效整合、有機融合,打破學科之間的壁壘[3],形成“信息技術+數學”“信息技術+科學”“信息技術+英語”“信息技術+閱讀寫作”等跨學科教學模式。
以“信息技術+數學”為例,無論是數學學習還是編程學習,都強調解決問題的邏輯性和思維方式的多樣性,兩者之間有著密切聯系。因此,在圖形化編程教學中,筆者將編程知識與小學數學知識結合起來開展教學,通過編程的形式解決數學中的問題,讓編程成為解決數學問題的一種輔助工具。[4]例如,在“雞兔同籠”這一案例中,筆者從數學問題出發(fā),用“砍足方法”幫助學生理解這一數學問題中的突出元素——兔子和雞的頭和腳,并且梳理了各元素在等式中的運算關系:兔數=總腳數/2-總頭數;雞數=總頭數-兔數。隨后在編程軟件界面中設置好變量,編寫了計算雞兔同籠問題的小程序,學生只要輸入籠中動物頭數的總和與腳數的總和即可計算出雞兔各幾只。筆者繼續(xù)引導學生探索其他方法,學生通過小組合作探究,又找到了“假設法”,即假設全是兔子或假設全是雞,在剛才“砍足法”的基礎上再設置兩個變量——假設都是兔的腳和假設都是雞的腳,從而將抽象的“設……為x”的簡單方程及其求解變?yōu)樯鷦佑腥さ木幊踢^程。
除了與數學學科進行整合,筆者還將編程教學與其他學科知識整合。例如,在學生學完圖形化編程基本知識和技能后,筆者會提供一系列的跨學科編程項目讓學生選擇,如“顏色冷暖我知道”“智能讀書小程序”“我是小小鋼琴家”“根據天氣來穿衣”等。通過完成這些項目,學生能結合相應學科知識利用程序的思路去分析具體問題、擬定對應流程、搭建相應程序,有效提升自己的計算思維。