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