趙福生,劉力
(沈陽(yáng)師范大學(xué)教師教育學(xué)院,沈陽(yáng) 110034)
形式化是指分析、研究思維形式結(jié)構(gòu)的方法。它把各種具有不同內(nèi)容的思維形式(主要是命題和推理)加以比較,找出其中各個(gè)部分相互聯(lián)結(jié)的方式[1]。現(xiàn)實(shí)中的問(wèn)題可以抽象為一個(gè)數(shù)學(xué)問(wèn)題或一個(gè)形式化問(wèn)題[2]。計(jì)算思維作為核心素養(yǎng)在教育部《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(2017年版)》提出后,引起了普遍重視,繼理論探討之后,計(jì)算思維的實(shí)踐應(yīng)用成為一個(gè)熱點(diǎn)。作為計(jì)算思維培養(yǎng)主要陣地的“算法與程序?qū)崿F(xiàn)”部分,實(shí)施效果難以令人滿意。因此,本研究采用內(nèi)容分析法分析谷歌計(jì)算思維課程并與國(guó)內(nèi)課程內(nèi)容進(jìn)行對(duì)比,認(rèn)為計(jì)算思維培養(yǎng)的策略應(yīng)以數(shù)學(xué)類問(wèn)題為引入,以數(shù)學(xué)+形式化問(wèn)題為過(guò)渡,以形式化問(wèn)題為重點(diǎn),結(jié)合恰當(dāng)?shù)慕虒W(xué)設(shè)計(jì),才能達(dá)到發(fā)展學(xué)生計(jì)算思維的目的。
2006年周以真教授提出計(jì)算思維概念后,2010年她又指出計(jì)算思維是與形式化問(wèn)題及其解決方案相關(guān)的思維過(guò)程[3]。計(jì)算思維的核心是抽象和自動(dòng)化,那么什么是形式化問(wèn)題的抽象呢?研究認(rèn)為,它抽象的不是事物的因果關(guān)系,而是問(wèn)題的計(jì)算過(guò)程,利用計(jì)算機(jī)強(qiáng)大的計(jì)算力去自動(dòng)完成,是一種基于計(jì)算機(jī)的思維方式。本研究將問(wèn)題從6個(gè)方面進(jìn)行分類,力爭(zhēng)凸顯計(jì)算思維的本質(zhì)及內(nèi)涵。第一類問(wèn)題屬于數(shù)學(xué)類,第二類問(wèn)題屬于數(shù)學(xué)+形式化類,其余為形式化類問(wèn)題。
(1)枚舉類問(wèn)題。典型代表為“雞兔同籠”、“百錢百雞”,這類題本質(zhì)上無(wú)差別,僅情境不同,復(fù)雜度不同[4]。除此以外,數(shù)論中的尋找素?cái)?shù)、合數(shù)、素?cái)?shù)篩選法等都屬于復(fù)雜度更高的該類問(wèn)題。信息數(shù)字化類的,如“抓小偷”、“誰(shuí)在說(shuō)謊”、“預(yù)測(cè)名次”等也是用枚舉法來(lái)解決的,這類題目更能體現(xiàn)計(jì)算機(jī)作為工具解決現(xiàn)實(shí)生活問(wèn)題的優(yōu)勢(shì)。
(2)作圖類問(wèn)題。典型代表為“小海龜幾何”,它是Google面向教育者計(jì)算思維課程“模式發(fā)掘”類題目之一。它通過(guò)繪制簡(jiǎn)單的正n邊形,培養(yǎng)計(jì)算思維分析問(wèn)題的步驟:分解功能——將一個(gè)任務(wù)轉(zhuǎn)換為一系列步伐和轉(zhuǎn)向;模式識(shí)別——觀察重復(fù)步伐和所畫(huà)圖形的邊之間相互關(guān)系;抽象化——使用轉(zhuǎn)向角度和步伐數(shù)目中的模式來(lái)深入了解步伐數(shù)目、角度和多邊形的是這是數(shù)學(xué)思維求解,用計(jì)算思維怎么求π呢?我們采用蒙特·卡羅方法(Monte Carlo method),它是以概率統(tǒng)計(jì)理論為指導(dǎo)的一類非常重要的數(shù)值計(jì)算方法,使用隨機(jī)數(shù)(或偽隨機(jī)數(shù))來(lái)解決很多計(jì)算問(wèn)題的方法。下面用蒙特·卡羅法求解。在一個(gè)單位長(zhǎng)度為1的正方形內(nèi)(如圖1所示),連接對(duì)角線兩點(diǎn)形成一段1/4圓弧,向正方形內(nèi)隨機(jī)撒點(diǎn),通過(guò)計(jì)算落在1/4圓內(nèi)與正方形內(nèi)隨機(jī)點(diǎn)數(shù)的比值,再乘以4,即求得π。撒點(diǎn)數(shù)越多,π值越精確。通過(guò)Python語(yǔ)言編程(如圖2所示)和顯示結(jié)果(如圖3所示)看到,14行代碼實(shí)現(xiàn)了向正方形內(nèi)撒了一百萬(wàn)個(gè)點(diǎn),求得的π值很精確,且只花費(fèi)1.21秒。這種設(shè)計(jì)方法只關(guān)心過(guò)程的設(shè)計(jì)和構(gòu)造,不管因果關(guān)系。它尤其適用于那些沒(méi)有數(shù)學(xué)通項(xiàng)公式的問(wèn)題,如四色定理,旅行商問(wèn)題,最大梅森素?cái)?shù),股市中的量化分析,通過(guò)MM5模型預(yù)測(cè)天氣預(yù)報(bào)等。數(shù)目之間關(guān)系;自動(dòng)化——執(zhí)行完成作圖任務(wù)[5]。“畫(huà)筆”提供的運(yùn)動(dòng)控制和方向控制功能使小海龜可以繪制很多復(fù)雜圖形,如玫瑰花、人物肖像等。類似的工具還有“蟒蛇繪圖”(Python語(yǔ)言)。
(3)遞歸類問(wèn)題。典型代表為“漢諾塔”。哈工大的戰(zhàn)德臣教授將遞歸列為“計(jì)算之樹(shù)”的樹(shù)根——三大奠基維度之一(其余兩個(gè)是二進(jìn)制和程序)[6]。漢諾塔沒(méi)有一個(gè)數(shù)學(xué)模型加以求解,但是從形式化的角度遞歸地分析這個(gè)過(guò)程能夠很容易地解決它。讓我們來(lái)分析一下漢諾塔的移動(dòng)過(guò)程。我們的目的是將n個(gè)盤(pán)子從A移到C,那么先將上面n-1個(gè)盤(pán)子從A移到B,把第n個(gè)盤(pán)子從A移到C之后,要考慮再將n-1個(gè)盤(pán)子從B移到C,怎么移呢?誰(shuí)也不知道,也不用知道,我們只關(guān)心將n拆解為和n-1的關(guān)系,即只關(guān)心遞歸過(guò)程(遞歸鏈條)和終止條件(遞歸基例),至于n-1具體怎么做,我們不管,這就是形式化。程序并沒(méi)有拆解該怎么移動(dòng)盤(pán)子,只是將遞歸過(guò)程和終止條件通過(guò)函數(shù)加分支結(jié)構(gòu)表達(dá)出來(lái),剩下的交由計(jì)算機(jī)完成就行了。同類的問(wèn)題還有科赫雪花等。該類問(wèn)題共同點(diǎn)是大問(wèn)題可不斷地拆分為小問(wèn)題,且大、小問(wèn)題的性質(zhì)相同。
(4)數(shù)學(xué)難題類。我們知道求數(shù)學(xué)中π值的表達(dá)式
圖1 邊長(zhǎng)為1的正方形
圖2 Python程序蒙特·卡羅法求π值
圖3 求π值結(jié)果和運(yùn)行時(shí)間
(5)模擬仿真類。這類問(wèn)題體現(xiàn)了計(jì)算思維與自然科學(xué)的交叉應(yīng)用,如物理學(xué)、化學(xué)、生物學(xué)、醫(yī)學(xué)[7]等?,F(xiàn)在很多科學(xué)實(shí)驗(yàn)無(wú)法在實(shí)驗(yàn)室中進(jìn)行,例如物理學(xué),研究對(duì)象太過(guò)微?。ɡ鐏喸游⒘#?,或者需要一個(gè)沒(méi)有重力的實(shí)驗(yàn)環(huán)境?;瘜W(xué)的反應(yīng)極為迅速,電子從一個(gè)原子核遷移到另外一個(gè)原子核需要百萬(wàn)分之一秒,經(jīng)典化學(xué)難以跟上這樣步伐,想借助實(shí)驗(yàn)方法去描繪化學(xué)過(guò)程中每一個(gè)步驟是不可能的,所以化學(xué)一半以上實(shí)驗(yàn)是在計(jì)算機(jī)上模擬實(shí)現(xiàn)的。下面舉一個(gè)物理彈球的例子,用以模擬自由落體運(yùn)動(dòng)。該案例在Scratch中實(shí)現(xiàn),為了看清楚它的軌跡(如圖4所示),特增加了橫向X軸方向的速度。
圖4 模擬自由落體運(yùn)動(dòng)的小球軌跡
這類問(wèn)題拓展題目很多,如霰彈槍算法大大提高了人類基因組測(cè)序的速度,蛋白質(zhì)結(jié)構(gòu)可以用繩結(jié)來(lái)模擬,用計(jì)算機(jī)模擬探測(cè)引力波及氣候變暖等問(wèn)題。
(6)社會(huì)科學(xué)類。這類問(wèn)題體現(xiàn)了計(jì)算思維與社會(huì)科學(xué)的交叉應(yīng)用[8]。如十九大報(bào)告中出現(xiàn)頻率最多的前5個(gè)詞是什么?威廉莎士比亞的著作是否全部為親筆所著?下面以計(jì)算十九大報(bào)告詞頻統(tǒng)計(jì)為例說(shuō)明。15行代碼(如圖5所示)瞬間就統(tǒng)計(jì)出了十九大報(bào)告排名前10的關(guān)鍵詞(如圖6所示),可以看出中國(guó)當(dāng)前第一要義是發(fā)展。另外,聊天機(jī)器人、制作音樂(lè)[5]等都屬于社科類。
圖5 Python程序十九大報(bào)告詞頻統(tǒng)計(jì)
圖6 十九大報(bào)告詞頻統(tǒng)計(jì)結(jié)果
理解計(jì)算思維內(nèi)涵,運(yùn)用計(jì)算思維步驟解決具體問(wèn)題,培養(yǎng)計(jì)算思維能力,促進(jìn)核心素養(yǎng)形成。
著名教育家裴斯泰洛齊指出,循序漸進(jìn)性是心理化教學(xué)的重要原則,正如智慧和才能的發(fā)展一樣,教學(xué)“要有一個(gè)適合人類本性的、心理學(xué)的、循序漸進(jìn)的方法”,應(yīng)該“在一切學(xué)科中盡力循序漸進(jìn)地安排知識(shí)結(jié)構(gòu)[9]?!毙畔⒓夹g(shù)是發(fā)展中的新興學(xué)科,就把握學(xué)科思維的途徑而言,自下而上更具有可操作性,尤其對(duì)于一線教師而言,從學(xué)科知識(shí)切入,向上探尋學(xué)科思維,是比較理想的方式[4]。依據(jù)此原則,本模塊的教學(xué)內(nèi)容應(yīng)按照上述第一到第六類的順序安排。第一類“數(shù)學(xué)成分”最多,學(xué)生經(jīng)驗(yàn)豐富,課程內(nèi)容熟悉,可順利地“同化”新知識(shí)。第二類可將簡(jiǎn)單的已有知識(shí)與計(jì)算思維的本質(zhì)特點(diǎn)一一對(duì)應(yīng)起來(lái),體驗(yàn)了計(jì)算思維的分析過(guò)程。從程序的邏輯結(jié)構(gòu)來(lái)看,前兩類包含了順序、選擇、循環(huán)3種結(jié)構(gòu),為后續(xù)編程奠定了基礎(chǔ)。第三類是形式化抽象的突出體現(xiàn),漢諾塔的迷人加上處理的巧妙,讓學(xué)生領(lǐng)悟到了計(jì)算思維魅力,理解了它的內(nèi)涵。第四類通過(guò)從工程學(xué)的角度求π值,拓寬了視野,完成了對(duì)計(jì)算思維的建構(gòu)。第五類和第六類讓學(xué)生看到了計(jì)算思維與多學(xué)科的交叉滲透以及在生活中的應(yīng)用價(jià)值。這六類順序的安排幫助學(xué)生完成了從同化到順應(yīng)的認(rèn)知發(fā)展。
(1)工具選擇
編程是計(jì)算思維變成現(xiàn)實(shí)的主要手段?,F(xiàn)今,Scratch、Blockly、Kodu等可視化編程工具日益豐富,極大地降低了學(xué)生參與程序開(kāi)發(fā)的難度[11],隨著國(guó)內(nèi)流行的編程貓Codemao、Google在線可視化編程工具pen?cilcode的加入,課堂上可選擇手段變得更多。鑒于Scratch在我國(guó)中小學(xué)的普遍應(yīng)用及編程貓基于Python語(yǔ)言的特點(diǎn),推薦這兩個(gè)作為可視化編程工具。Python語(yǔ)言已經(jīng)被浙江、山東等幾個(gè)省列為高考語(yǔ)言,因?yàn)樗悄壳白罱咏匀徽Z(yǔ)言的通用編程語(yǔ)言。從語(yǔ)法角度看,它具備以下幾個(gè)特點(diǎn):①變量無(wú)須定義直接使用,具有獨(dú)立的字符串類型;②簡(jiǎn)化了多語(yǔ)言文本的操作,對(duì)中文有良好的支持;③通過(guò)使用變長(zhǎng)列表而不是定長(zhǎng)數(shù)組,兼容多種數(shù)據(jù)類型并靈活表達(dá)集合長(zhǎng)度;④代碼簡(jiǎn)潔,支持面向過(guò)程和面向?qū)ο髢煞N程序設(shè)計(jì)方法,代碼行數(shù)可以縮減為C語(yǔ)言同樣功能的1/5到1/10。該語(yǔ)言只關(guān)心計(jì)算問(wèn)題的求解,其輕量級(jí)的語(yǔ)法和高層次的語(yǔ)言表示表達(dá)了應(yīng)用計(jì)算機(jī)解決問(wèn)題的計(jì)算思維理念[11]。所以Python成為必選。美國(guó)教育家愛(ài)德加·戴爾的“經(jīng)驗(yàn)之塔”和視聽(tīng)教學(xué)理論告訴我們,直觀的教學(xué)媒體能夠幫助學(xué)生更好地理解抽象知識(shí),故建議使用微課、視頻等多媒體手段。從意義學(xué)習(xí)角度看,思維導(dǎo)圖等可視化認(rèn)知工具實(shí)現(xiàn)了學(xué)習(xí)者新舊知識(shí)之間的連接,促進(jìn)了有意義學(xué)習(xí)的發(fā)生;從認(rèn)知負(fù)荷理論看,可視化通過(guò)將小的組塊組裝成大的組塊,降低了大腦的認(rèn)知負(fù)荷,所以要用思維導(dǎo)圖可視化思維過(guò)程[12]。
(2)教學(xué)組織
基于項(xiàng)目的學(xué)習(xí)(PBL)是“以學(xué)生學(xué)習(xí)為中心”的一種教學(xué)組織方式[13],《課程標(biāo)準(zhǔn)》中建議采用項(xiàng)目活動(dòng)創(chuàng)設(shè)問(wèn)題情境,引導(dǎo)學(xué)生在解決問(wèn)題的過(guò)程中感受信息技術(shù)對(duì)日常生活的影響,探究知識(shí),提高能力,發(fā)展計(jì)算思維,因此課堂上應(yīng)采取項(xiàng)目創(chuàng)設(shè)情境的方式導(dǎo)入教學(xué),激發(fā)學(xué)生興趣,提出任務(wù)。按照設(shè)計(jì)思維的第3個(gè)步驟,應(yīng)該組織學(xué)生小組合作進(jìn)行“頭腦風(fēng)暴”,這個(gè)階段,教師一定要使每個(gè)小組明確任務(wù),擇機(jī)給出建議和指導(dǎo),使學(xué)生的討論沿著問(wèn)題解決的方向展開(kāi)[14],體現(xiàn)出“學(xué)生主體、教師主導(dǎo)”的理念。在項(xiàng)目分析時(shí),教師可采用思維導(dǎo)圖模式分解,程序流程圖抽象過(guò)程。程序?qū)崿F(xiàn)階段,采用自主探究+小組合作+成果推介+教師講授的形式,使用Scratch(或編程貓)或Python語(yǔ)言完成。學(xué)習(xí)遷移是對(duì)知識(shí)的深入加工,在習(xí)得知識(shí)的同時(shí)提升了思維能力,是思維教學(xué)的有效手段[12],上述六類問(wèn)題中的每一類都列舉了多個(gè)候選任務(wù),供教師作為“舉一反三”使用。
如果以小組為單位展示作品,個(gè)人得分為小組得分結(jié)合個(gè)人在作品中的貢獻(xiàn)率;如果是個(gè)人作品,可采用互評(píng)、自評(píng)等多元評(píng)價(jià)方式,也可采用一些測(cè)評(píng)工具,例如Dr.Scratch專門(mén)測(cè)量Scratch作品成績(jī)[15]。無(wú)論采用哪種形式,一定本著評(píng)價(jià)是激勵(lì)、促進(jìn)教學(xué),發(fā)揮積極導(dǎo)向作用的原則。
計(jì)算思維作為人類第三種思維方式,已經(jīng)滲透進(jìn)人們的學(xué)習(xí)、生活并在各學(xué)科領(lǐng)域中發(fā)揮著重要作用。中小學(xué)課堂要培養(yǎng)學(xué)生的計(jì)算思維,選擇什么樣的教學(xué)內(nèi)容作為知識(shí)載體成為關(guān)鍵問(wèn)題。本研究將計(jì)算思維在多個(gè)領(lǐng)域的應(yīng)用分為六個(gè)方面,由淺入深,從數(shù)學(xué)問(wèn)題到形式化問(wèn)題,兩段代碼意在直觀地認(rèn)識(shí)并深入理解計(jì)算思維解決問(wèn)題的方式,即如何抽象和自動(dòng)化。最后提出了簡(jiǎn)要的教學(xué)設(shè)計(jì)方案,可作為一線教師課堂實(shí)踐的參考。