陳久華 王榮良
計算思維(Computational Thinking)是運用計算機科學的基礎(chǔ)概念去求解問題、設(shè)計系統(tǒng)和理解人類行為。其中,求解問題包括使用計算機技術(shù)或設(shè)備解決問題以及用計算機科學的思想解決問題;設(shè)計系統(tǒng)包括設(shè)計計算機系統(tǒng),也包括用計算機科學的思想來設(shè)計一般系統(tǒng)。由此可見,計算思維可以指導(dǎo)人們設(shè)計與使用計算機,其更大的功能在于通過對計算及計算機的實現(xiàn)等機理的認識,反映客觀規(guī)律,并用以指導(dǎo)人們的社會生活。計算思維教育,就是通過對計算原理和過程的認識,掌握基本的計算方法,理解計算思維的本質(zhì),從而學會應(yīng)用計算思維解決實際問題。計算思維教育可以落實到數(shù)學方法和工程方法的學習,如遞歸法、分治法以及形式化表達等方法,來理解計算思維的抽象、自動化等本質(zhì)屬性。
如果說,在高中或者大學階段可以通過實施計算機編程、計算機原理類的課程,來開展計算思維教育,那么,小學階段是否也能開展計算思維教育呢?小學階段的學生,尤其是低齡段的學生,主要依賴于無意注意,以具體形象思維為主,通過直觀感知事物的特征和規(guī)律。因此,在小學階段開展計算思維教育,不適合從枯燥的計算機原理性知識學習的途徑進行,而應(yīng)該采用滲透教育的方法,讓學生在有趣的作品制作過程中體驗和理解計算思維。第一,早期開展的中小學計算機編程等課程,盡管也涉及計算機原理部分的教學,但是往往過分關(guān)注具體的編程技術(shù)以及細節(jié),而缺乏關(guān)注計算的本質(zhì)與思維。因此,在中小學開展計算思維教育,不是簡單的計算機原理或計算機編程的學習,也不是各種算法的學習,而是要通過適量的計算機知識與技能的學習,真正理解計算思維的本質(zhì)。第二,在小學開展計算思維教育,應(yīng)該有一個適合小學生的學習平臺或環(huán)境,具有趣味性、技術(shù)門檻低等特點,以便在教學過程中學生不必過多地關(guān)注操作性技能和規(guī)定。Kodu是一款游戲軟件開發(fā)工具,具有三維場景和模式化的編程方式,易學易用,是一個適合小學生使用的程序開發(fā)工具。第三,兒童化編程軟件融入小學信息科技的課堂,讓小學生從小接觸計算機編程,其目的不僅是讓學生學會編程,更是使其體驗一個程序完整的開發(fā)過程,知道計算機工作和解決問題的方式,從而發(fā)展學生的計算思維。“小學生Kodu趣味程序設(shè)計”課程的開發(fā),就是將信息科技課堂實踐經(jīng)驗和資料積累向課程、教材和教學轉(zhuǎn)化,為小學的計算思維的普及教學提供載體。
計算思維的本質(zhì)是抽象和自動化,下面是在小學開展Kodu編程教學中,滲透計算思維本質(zhì)教育的教學實踐。
在編程中體會抽象
所謂抽象,是指通過分析的途徑,運用概念在人腦中再現(xiàn)對象本質(zhì)的方法,從眾多的事物中抽取共同的、本質(zhì)性的特征,而舍棄其非本質(zhì)的特征。在小學階段,學生可以通過數(shù)學課感受數(shù)和形的抽象概念,但是通過計算思維教育,學生可以更全面地感受抽象。在兒童化編程的教學過程中,抽象也是必不可少的。學生學會抽象可以更容易找到編程的切入點,梳理游戲的規(guī)則,并且最終將游戲規(guī)則轉(zhuǎn)變?yōu)镵odu程序。下面通過案例《吃蘋果》來說明。
環(huán)節(jié)一:從故事抽象規(guī)則
上課伊始,教師出示游戲故事情境:我們的小伙伴Kodu擁有一個美麗的蘋果園,蘋果樹下落滿了成熟的蘋果,小伙伴Kodu要收集這些蘋果,并將蘋果搬運到自己的小屋里。然而,我們的小伙伴并不知道,有一個特別喜歡偷吃蘋果的壞蛋已經(jīng)盯上這里了。
教師然后提出問題,讓學生互相討論:根據(jù)這個故事情境,你可以制定怎樣的游戲規(guī)則?同時,教師出示相關(guān)的學習表格(如表1),輔助學生思考。
如果憑空討論,學生難免沒有頭緒,無從下手,或是異想天開,設(shè)想一些Kodu軟件無法實現(xiàn)的內(nèi)容。通過這樣的形式,教師引導(dǎo)學生有針對性地對故事情節(jié)進行分析和梳理,抽象出自己的游戲規(guī)則,學習表格不僅提供了抽象的方法,也為之后編寫程序提供了便利。
環(huán)節(jié)二:從規(guī)則編寫語句
制定了游戲規(guī)則,可以說是完成了編程的第一步,有了編寫程序的依據(jù)。這時,教師出示部分Kodu程序(如下圖)。
讓學生先讀一讀出示的程序,用“在什么情況,做什么事情”這樣的句式來翻譯這段程序,幫助學生熟悉“when-do”句式的含義。when就是條件,而do就是動作。接著提出問題,學生分析每一條游戲規(guī)則中,哪部分是條件,哪部分是動作。最后,學生理清所有的條件和動作,在Kodu中完成程序的編寫。
在制定計劃后,如果直接開始編寫程序,學生往往分不清楚條件和動作,會對教師提出諸如“when里面怎么沒有eat啊”“do里面怎么找不到bump”之類的問題。這些都反映了學生沒有搞清楚自己寫的程序,哪些是條件,哪些是動作。通過環(huán)節(jié)二,可以有效地幫助學生抽象出規(guī)則中的條件和動作,理解“when-do”句型,更加有效地完成Kodu程序的編寫。
對小學階段的學生來說,抽象概念的理解與運用是比較困難的。在Kodu編程實踐中,采用“故事情節(jié)→游戲規(guī)則→編程語句”的實踐路徑,可以有效引導(dǎo)學生體驗和運用抽象。
在編程中認識自動化
自動化是計算思維的本質(zhì)之一。所謂自動化,是指機器設(shè)備、系統(tǒng)或過程在沒有人或較少人的直接參與下,按照人的要求,經(jīng)過自動檢測,實現(xiàn)預(yù)期目標的過程。與其他課程不同,計算機編程最大的特點就是自動化,利用計算機本身的功能,解決實際的問題。程序的執(zhí)行過程就是自動化的具體分析體現(xiàn)。在Kodu《捕魚達人》一課中,有Kodu、漁夫爺爺以及小魚等多個角色,程序代碼也比較復(fù)雜,教師通過教學程序調(diào)試的方法,讓學生感受計算機執(zhí)行語句和執(zhí)行結(jié)果的關(guān)系,同時促進學生理解自動化的意義。
環(huán)節(jié)一:體驗程序調(diào)試
在學生寫完程序之后,教師提出問題:現(xiàn)在大家的程序已經(jīng)編好,是不是可以直接提交給老師了呢?
大部分學生會不約而同地說出“不可以,還要檢查程序”。
教師繼續(xù)追問道:“那么在寫完程序之后,我們該如何檢查程序呢?”
有些學生說:“自己寫好以后把程序讀一讀,就會發(fā)現(xiàn)錯誤。”
教師提出一種調(diào)試程序的方法:運行程序→觀察程序→分析錯誤的程序→改進程序。讓學生按照這個方法測試,看能不能發(fā)現(xiàn)程序中的問題。
按照這個方式,不少學生都找到了自己程序中出現(xiàn)的部分。
環(huán)節(jié)二:理解程序執(zhí)行過程
教師提出問題:是誰告訴你們程序在哪里出錯了?并進一步闡述:計算機最大的一個特點就是自動化,它在運行程序時,是一條一條語句逐步執(zhí)行預(yù)先設(shè)計的任務(wù)。計算機一旦執(zhí)行了錯誤的程序,表現(xiàn)出的現(xiàn)象與你原來設(shè)計的要求不一致。你需要像計算機執(zhí)行程序一樣地思考,理解計算機執(zhí)行每一步語句應(yīng)該有的現(xiàn)象,與實際的執(zhí)行結(jié)果比較,根據(jù)錯誤的現(xiàn)象,找到錯誤的程序語句,并把它修改正確。
教師為學生提供了調(diào)試程序的學習單(如表2)。
學生依照教師提供的程序調(diào)試方法,對照游戲規(guī)則,對《捕魚達人》這個游戲進行調(diào)試,觀察并記錄錯誤現(xiàn)象。在找到錯誤之后,學生互相討論,分析解決這些問題的方法,修改程序,重復(fù)調(diào)試的環(huán)節(jié),直到程序完全正確。
計算機是自動執(zhí)行程序的,但計算機的自動化是一個黑匣子,沒有辦法看到每一步程序的執(zhí)行過程,只能通過執(zhí)行結(jié)果來感受。對小學生來說,以程序調(diào)試為切入點,通過尋找計算機程序?qū)嶋H執(zhí)行結(jié)果與最初設(shè)計方案的不一致,讓學生嘗試像計算機執(zhí)行程序一樣思考執(zhí)行語句應(yīng)該對應(yīng)的動作,從而發(fā)現(xiàn)問題并解決問題。這一過程既是程序調(diào)試的過程,也是理解自動化的過程。
2012年10月,英國宣布了新的ICT課程,將ICT學科的教學層次從基礎(chǔ)應(yīng)用型提升到創(chuàng)造發(fā)明型,要重視培養(yǎng)學生的計算思維。我國的信息技術(shù)教育也正從知識與技能的學習向能力與思維方式轉(zhuǎn)變,從信息技術(shù)的應(yīng)用向信息技術(shù)的創(chuàng)造轉(zhuǎn)變。我們希望通過基于計算思維為核心的“小學Kodu趣味程序設(shè)計”課程的實施讓小學生常有一些靈感迸發(fā)出來,讓這些閃光點成為一個意想不到的創(chuàng)意,讓學生在自主、合作、交流、思考的過程中,促進思維發(fā)展,在學會編程過程中,提高科學創(chuàng)新的能力。