于露 江蘇省南京外國語學校
計算思維是運用計算機科學的基礎概念進行問題求解、系統設計、人類行為理解的思維活動,其實質是掌握和運用計算機科學的方法進行問題求解。對計算思維能力的衡量可以從計算概念、計算實踐和計算觀點三個維度展開。計算概念強調編程知識及技能,是具備計算實踐和計算觀點的前提條件,對計算概念能力的評價,可從序列、循環、并行、事件、條件、運算和數據維度展開。在計算實踐部分,學生需要在掌握計算知識的基礎上,運用實驗與迭代、測試與調試、重復使用與融合、抽象與模塊化去進行程序設計實踐操作。計算觀點則是需要學生在學習程序設計課程后,擁有計算觀點,并將“分解—模式識別—抽象—算法—問題解決”這樣的步驟運用于實際生活中的問題解決。
筆者在深入分析現有計算思維評價等級的基礎上,結合現有初高中信息科技教材,將計算思維評價等級設計了十個等級,從零基礎開始,適用于全體入門級學生,同時也兼顧競賽水平等級的學生,下頁表所示是每個等級對應的考題內容。
一級考查內容為語言與邏輯,包括Python基本語法元素、常用變量類型、順序結構,這一部分的程序都是自上而下執行,對于入門級學生來說在理解上沒有難度,重點在于掌握Python語法規則。
二級考查內容為選擇結構,考查題目的選擇涵蓋雙分支與多分支結構,學生需要掌握常見關系表達式,包括“>”“<”“>=”“<=”“==”“!=”,以及如何正確運用關系連接符and和or正確表達判斷條件,本等級考查題目融合數學幾何、代數、常見生活案例,需要學生從實際問題中抽象出編程模型,這是對其計算思維抽象能力的考查。
三級考查內容為循環結構,這是編程入門的第一個難點,初學者需要理解循環體的執行方式。三級考查涉及的題目包括兩種循環模式,即For循環和While循環,并且需要學生掌握如何運用break和continue語句去控制循環體執行次數,在程序編寫過程中考慮時間復雜度問題。

?
四級考查內容為列表數組,在掌握程序設計的三種基本結構后,教材中的部分內容已經基本涵蓋,本等級主要考查學生對列表這種數據結構的掌握程度,以及能否運用列表解決實際問題。
五級考查內容為字符串,字符串可以理解為一種特殊的列表,但因其有很多特殊的方法及實際運用需求,所以將字符串單列為五級的內容。本等級的考查內容涉及字符串常用函數,包括capitalize()、upper()、count()等。
六級考查內容為字典,因為字典是Python中特有的一種數據類型,學生需要在實際問題中發現其中存在的“字典”這一數據類型。該等級的考查內容包括字典的定義及賦值、對key和value值的查找,以及常見的刪除、增加、修改操作。
七級內容為函數,學生在掌握了程序基本結構和常見數據類型后,需要具備模塊化的編程思想。在計算思維核心概念界定中,強調將實際問題抽象為計算機可解決的一個個小問題的能力,七級函數內容便是對這一能力的重點考查,在語法結構上,需要學生掌握函數的格式以及參數的傳遞調用方法。
八級內容為排序與查找,排序和查找是計算機解決諸多問題的基礎,也屬于算法初階內容,插入排序、快速排序、冒泡排序、順序查找、二分查找都體現了計算思維的重要思想。該等級需要學生掌握多種常見排序算法及二分查找,能比較其時間及空間復雜度,并且根據實際問題選用合適的排序、查找算法。
九級內容為遞歸,屬于算法初階內容。遞歸是計算思維的重要體現之一,它是一種自上而下、先整體再局部的思維方式,需要學生能夠分離出現實問題中不斷遞歸調用的小模塊,分析其遞歸變量、遞歸過程以及遞歸結束條件。
十級內容為隊列、棧、二叉樹,屬于數據結構基礎。現實問題中數據的存在及操作方式非常復雜,彼此之間存在線性或非線性的關系,問題解決的前提是將復雜的實際數據抽象為隊列、棧、樹、圖等一系列數據結構,用精簡的方式表達彼此之間的聯系,該等級的考查內容主要為數據結構抽象以及常見的查找、修改、刪除操作。
鑒于筆者所在學校已經有運用于課程教學及測試的OnlineJudge(以下簡稱OJ)平臺,筆者將計算思維等級評價測試模塊架構在OJ平臺上。學生端在登錄OJ平臺后,可以進入認證模塊參加等級測試,本等級測試采用逐級考核的方式,即通過前一等級為參與后一等級考試的先決條件,學生進入某一級別考核界面后,按照要求完成對應試題,考核采用OI模式,即學生在考核過程中不可獲得解題正確與否的反饋,學生在規定時間內完成考核提交認證,系統采用自動評測的方式給出得分情況,若達到60分給予合格認證,并可繼續參加下一等級的認證,若達到85分給予優秀的認證。學生可多次參與某一等級的認證直至合格或者優秀等級。教師端登錄OJ管理后臺后可以對認證模塊進行設置,管理后臺的功能主要分為兩部分,一是對等級考試題目及時間、分數標準的設置,二是獲取認證結果數據,即每一個學生完成詳情。
1.一至四級主要面向非競賽生,整體參與程度和通過率都較高
筆者從OJ平臺管理后臺獲得參與情況數據如下:一級參與人數800人,通過682人,通過率為85%;二級參與人數510人,通過率85%;三級參與人數240人,通過率87%;四級參與人數159人,通過率95%。
筆者制訂的等級標準相較于已有的評價標準,整體難度降低,并將考查內容細化到不同等級中。現有中學教材中的Python內容基本只到循環結構,所以本標準將循環結構之前的知識點進行了細化,分成了三個等級,并根據教學進度設置第四等級:列表與元組。所有完成校內學習的非競賽生均能參與前四個等級的考核。從數據結果來看,前四級參與人數遠超后面的若干等級,且通過率都在85%以上,一級考試的滿分率為40%,這反映出學生整體掌握水平較好,各等級題目選取的難度適中,能較為客觀地反映學生相應知識技能掌握情況,在有一定區分度及選拔性的基礎上,兼顧整體學生現有水平,激發了學生進一步學習的熱情與積極性。
2.五至十級主要面向競賽生,測試結果能夠體現較好的區分度
對統計結果進行分析得出,學生在程序設計學習的初級階段,需要邁過三級臺階:第一級臺階為程序設計基本語法知識及順序、選擇、循環三大結構,屬于入門級別,絕大多數完成校內課程學習的學生均能達到此水平;第二級臺階為常用數據類型(列表、元組、字符串、字典)和函數,是學生進一步學習編程知識的基礎,也可視為非競賽生與競賽生之間的過渡階段,這一階段主要讓學生掌握更豐富的數據表示方法,初步具備模塊化的編程思想,這一級臺階若校內編程學習的時間充裕也可以完成;第三級臺階為競賽生的起步階段,涉及常見算法,包括排序、查找、遞推、遞歸等,以及初步的數據結構。
筆者發現,雖然五至十級參與人數較少,但通過比例大大提升,五級通過率93%,六級通過率94%,七級通過率90%,八級通過率93%,九級和十級通過率100%。筆者分析后認為,等級的提高即是對學生的篩選,能夠參與較高等級考核的學生具備扎實的編程基礎、濃厚的編程興趣和一定的學習能力,其通過相應等級的概率也會比低等級更高,這也正是等級考核區分度的體現。
該等級評價認證方式能夠激發學生的自主學習熱情,并對其提供引領性指導作用。在Python程序教學過程中,筆者發現信息科技課程雖不是中高考科目,但不少學生對編程呈現出很高的興趣。同時,等級劃分為學生的自主學習提供了路徑指導,為其搭建了學習“腳手架”。
該等級評價能夠給教師提供Python程序教學指導。在課程教學中,利用該體系對學生計算思維能力進行跟蹤測試,比較出課程開展前后其計算思維水平的變化,從考核反饋中教師可以深入分析學生面臨的學習難點,進而調整教學進度與側重點,對學生薄弱之處進行細化教學。
1.進一步細化評價等級,調整評價參與模式
在當前的信息科技課程教學中,初中階段能夠涵蓋的內容主要包括順序、選擇、循環結構,有條件的高中學校可進行到列表、函數,但再往下的內容往往很少涉及。所以,在后續的研究中,要考慮進一步細化前四個等級,讓更多非競賽生可以獲得與其能力更加精準匹配的評級結果,另外還應繼續制訂更多層次的評價體系,旨在將面向普通高中生的編程能力評價體系與高層次的信息學競賽能力等級銜接起來,打造一套完整的面向中學生的計算思維能力評價體系。目前采用的認證方式是:完成前一等級方可進行下一等級,對于要達到高等級的參與者來說,需要完成前面的所有等級。這種模式在一定程度上導致高等級參與人數較少,所以在下一階段的設計中,應考慮是否更改認證模塊參與方式以便收集到更加全面的數據。
2.擴大評價標準參與面,提高高水平學生參與程度
雖然已經有一批學生參與到評價標準的測試中,但從目前收集的數據來看,不論是采樣對象的分布還是樣本數,距離理想狀態仍有一定差距。從后臺數據可以看到,參與對象具有一定的隨機性,不僅有本部學生、分校學生,還有很多其他省市的參與者。由于采樣樣本、采樣時間的隨機性,按照目前的采樣方法獲得的數據,并不能客觀反映學生群體的整體計算思維水平。
在進一步完善測試等級和試題后,筆者將在本部與分校進行數據收集,學生采樣樣本安排如下:初二各校200人,安排在初二下學期進行,高一各校200人,安排在高一下學期進行,本部選取競賽學生100人,其余各校選擇競賽學生20人。這批學生將參與OJ平臺計算思維等級測試,由于采樣更加客觀科學,未來能夠獲得客觀全面的數據,為評價標準的修正提供數據來源。
筆者圍繞如何更加客觀有效地進行計算思維能力評價展開研究,在比較了現有多個計算思維評價標準之后,以兼顧日常教學和競賽學生培養為宗旨,開發出十級的計算思維評價體系,從評價體系測試階段的反饋數據來看,對于不同水平等級的學生都能呈現出較好的適應性與區分度。該評價體系具有一定的推廣性,可激發學生程序設計學習的熱情,對教師的教學工作亦有指導價值。