陳染
計算思維是2006年卡內(nèi)基梅隆大學周以真教授提出的概念。計算思維指的是一種運用計算機科學基本概念求解問題、設(shè)計系統(tǒng)和理解人類行為的方式,它涵蓋了計算機科學領(lǐng)域廣度的一系列思維工具。學習計算思維不僅有助于我們理解計算機科學的概念和思想,更可以將它廣泛應(yīng)用于工作、學習、生活中,為我們提供不一樣的組織和分析問題的視角。
在小學和中學階段,信息技術(shù)課程的學習是培養(yǎng)計算思維的一個重要途徑,以至于有些學生和教師會把計算思維誤解為編程的思維方法。其實,自2006年周以真教授提出計算思維的理念時,她就已經(jīng)明確指出了計算思維是人的思維,不是計算機的思維,計算思維面向所有人、所有地方,而不僅僅是編程中使用的思維方式。舉一個小例子,想一想日常生活中我們做一頓飯的程序是怎么樣的:先把米放進電飯鍋,讓電飯鍋開始煮飯,趁著電飯鍋煮飯的時間再處理其他食材。為什么我們不先做好菜再開始煮飯呢?這是因為我們采用這種程序的時候剛好能在菜做完之后,飯也剛好熟了,這就是計算思維中的流程優(yōu)化。只要多觀察,我們會發(fā)現(xiàn)計算思維在生活中無處不在。
除了計算機課程外,我們可以將計算思維融入學科學習、創(chuàng)客教育、社會實踐活動等方面。計算思維的培養(yǎng)方式很多,構(gòu)建模型就是其中一種方式。運用計算思維構(gòu)建模型的4個主要步驟是分解、模式識別、抽象和算法。面對一個大的問題,我們將問題分解為若干方便我們解決的小部分,識別出每個部分的模式,化繁為簡,將現(xiàn)實的事物抽象為計算機能夠理解、能夠識別的東西,再通過構(gòu)建算法,通過算法建立起我們所需的模型。
實用的模型學習軟件NetLogo
2020年3月, “科技學堂”組織了4期STEM云教研活動,和數(shù)百位教師在線探討如何通過構(gòu)建模型的方法將計算思維運用于科技教育課堂中。在這幾期STEM云教研中,我們選擇了多主體建模軟件NetLogo作為構(gòu)建模型的工具,以幫助學生運用計算思維探究學科和項目式學習中遇到的問題。從功能層面上看,NetLogo并不是一個強大的編程工具,不適合開發(fā)復雜的計算機程序。但NetLogo的優(yōu)勢在于它的語法足夠簡單,學習成本很低,并且還配備了完善的模型庫可供使用。即使學生沒有經(jīng)過NetLogo的編程語法的學習,我們也可以直接運用模型探究現(xiàn)實問題,我們還可以通過修改代碼,對模型進行進一步拓展,以滿足我們實際研究需求。NetLogo的特點意味著它很適合開發(fā)簡易的模型,也很適合成為培養(yǎng)學生計算思維的工具。
NetLogo是美國西北大學連接學習與計算機建模中心教授尤里·韋倫斯基(UriWilensky)于1999年開發(fā)的一款開源編程語言。從名字可以看出,NetLogo基于Logo語言設(shè)計而成。Logo語言是第一門專門面向于教育的編程語言,它的出現(xiàn)對編程教育和計算機語言產(chǎn)生了深遠的影響,目前流行的編程教育工具Scratch便直接從Logo語言發(fā)展而來,而目前最流行的編程語言Python也深受Logo語言的影響,Python的編程教育工具Turtle類庫更是向Logo語言致敬(圖1)。經(jīng)過了50多年的發(fā)展,Logo語言枝繁葉茂,而NetLogo便是這棵大樹低調(diào)而美麗的花朵。
NetLogo適用于計算思維教學的一個優(yōu)勢在于它自帶的模型庫,模型庫中擁有數(shù)百個模型,所涉及的學科包括藝術(shù)、生物、物理、化學、計算機科學、地球科學、數(shù)學、網(wǎng)絡(luò)、哲學、心理學、社會科學等。這些模型的源代碼都是開源的,我們可以在NetLogo的代碼頁面修改相應(yīng)的代碼,以拓展模型的應(yīng)用空間。大部分模型還配備了教學建議,在模型的“信息”頁面我們可以看到這個模型是什么,它是怎樣運行的,我們怎樣運用模型,使用的注意事項,如何引導學生探索,怎樣拓展模型,以及有哪些了解更多的閱讀材料。
NetLogo是一種建立多主體系統(tǒng)(multiagent system)的工具,所謂多主體,即通過計算機生成一個個主體,每個主體遵循一定的規(guī)則活動。通過主體的行為和相互作用觀察對世界的宏觀影響。NetLogo的世界中包括4種類型的主體:海龜、瓦片、鏈和觀察者。
·海龜(turtle):海龜指的是可以在模型中自由移動的主體,大多數(shù)模型都會出現(xiàn)海龜角色。海龜?shù)哪J形狀是箭頭,我們也可以把它修改成其他形狀。海龜?shù)母拍罾^承自Logo語言,Python Turtle等類庫也運用了海龜?shù)母拍睢?/p>
·瓦片(patch):瓦片指的是在模型中靜止的主體,我們也可以稱之為網(wǎng)格。NetLogo模型的場景中每一個坐標格就是一個瓦片。瓦片可以和海龜交互,也可以與其他瓦片交互。大多數(shù)模型會用到瓦片的角色。
·鏈(link):鏈指的是連接在海龜與海龜之間的線,相連的每一個海龜稱之為節(jié)點(node)。鏈在研究社群網(wǎng)絡(luò)關(guān)系中有著重要的作用。
·觀察者(observer):觀察者指的是不參與到模型運行中的角色,它包括控制模型運行的按鈕、調(diào)整模型參數(shù)的滑桿、控制運營模式的開關(guān)、觀察模型數(shù)據(jù)的圖表和監(jiān)視器等。這些角色雖然不直接參與模型的運行,但它對于我們觀察模型的變化,得出模型的結(jié)論至關(guān)重要。因此,幾乎所有的模型都會出現(xiàn)觀察者的主體。
我們可以通過NetLogo自帶的模型庫認識各種主體的作用。以“狼 羊捕獵”模型(WolfSheep Predation)為例,這個模型模擬的是一個由狼、羊和草組成的簡易生態(tài)系統(tǒng)。這個模型有3條簡單的運行規(guī)則:
。狼會吃羊,羊會吃草;
。每隔一段時間,空地會長出新的草;
。羊和狼通過捕食會增加能量,能量會隨著時間逐漸消失,當能量到達一定數(shù)值就會生出新的狼和羊,當能量消失為0的時候狼或者羊就會死去。
通過這3條簡單的規(guī)則,我們就能夠探索在這個生態(tài)系統(tǒng)中狼、羊和草的變化規(guī)律。運行模型時,我們會看到這樣的畫面(圖2)。
在畫面左側(cè),我們看到有很多滑桿、按鈕、開關(guān)、圖表、數(shù)字窗口等。它們都屬于“觀察者”,這些主體不直接參與模型的運行,但它們的作用也是非常重要的。我們可以通過畫面左上角的滑桿調(diào)整模型參數(shù),如狼和羊的初始數(shù)量、草的生長數(shù)量,狼和羊的繁殖所需的能量等,從而了解不同因素對狼 羊 草生態(tài)系統(tǒng)的影響。畫面左下角的表格和監(jiān)視窗可以讓我們直觀地了解到當前狼、羊、草的數(shù)量和它們的變化情況。
畫面右側(cè)為場景區(qū),我們可以看到場景區(qū)上有白色的羊、黑色的狼、綠色的草和褐色的空土地。在這個區(qū)域,羊和狼可以在畫面中隨機行走,因此,都屬于“海龜”主體,盡管它們并不是海龜?shù)男螤?地面的草是不可以移動的,因此,屬于“瓦片”主體,當羊從綠色的瓦片經(jīng)過的時候,瓦片就從綠色轉(zhuǎn)為褐色,表示草被羊吃掉了,這意味著“海龜”主體能夠和“瓦片”主體進行交互。
這個模型并沒有用到“鏈”,我們換個模型認識一下。圖3是“病毒傳播網(wǎng)絡(luò)” (Viruson Network)模型,我們可以用它研究病毒在人群中傳播的規(guī)律。
這個模型左側(cè)同樣是屬于“觀察者”的按鈕、滑桿和圖表;在右側(cè)我們可以看到一個個圓形的點,點和點之間連接著一根根線。這些線就是所謂“鏈”,而鏈上的圓點我們稱之為節(jié)點。節(jié)點屬于一種比較特殊的“海龜”。紅色的節(jié)點表示感染者,藍色的節(jié)點表示易感者,灰色的節(jié)點表示免疫者,而連接著節(jié)點與節(jié)點的鏈表示人與人的社會關(guān)系。當一個節(jié)點感染了病毒之后,它會有一定概率經(jīng)過鏈將病毒傳播到與之相鄰的易感者上,使之成為新的感染者。而感染者也有可能在一段時間后成為免疫者,免疫者不會傳播病毒。通過這個模型我們就能研究病毒在社群中傳播的路徑,并作出相應(yīng)的預防措施。這個模型很適合與當下的疫情情況結(jié)合起來,通過計算思維的方法讓學生認識采用什么方法能夠防范病毒在社會中擴散。
@NetLogo的使用和學習
NetLogo是一款免費的建模軟件,在NetLogo的官方網(wǎng)站(http://ccl.northwestem. edu/netlogo/index. shtml) 即可以選擇合適的版本下載。如果教師只是想在學科課程中偶爾展現(xiàn)模型,或想簡單體驗?zāi)P?,NetLogo官方網(wǎng)站也提供了在線版本,在這個版本中你可以體驗到NetLogo自帶的所有模型,但在線版本不能制作和保存新的模型,功能也不如桌面版的完善。
NetLogo安裝包包括NetLogo、NetLogo3D、HubNet Chent和Behaviors Earth,我們主要使用的軟件是NetLogo。點擊NetLogo的“文件”
“模型庫”,即可獲得數(shù)百個完善的模型。打開模型后,頁面上方出現(xiàn)“界面”“信息”和“代碼”3個標簽頁,在信息頁面中我們可以了解模型的具體信息和操作指南,在代碼頁面中我們可以閱讀模型是如何建構(gòu)的,我們可以修改代碼以拓展模型。
如果保愿意更加深入地學習NetLogo,制作自己的模型。你可以在NetLogo的官方網(wǎng)頁獲取中文版用戶手冊,它可以幫助我們初步掌握NetLogo的程序編寫。如果在編寫程序中遇到困難,我們還可以在幫助頁面查閱NetLogo詞典。這些都很方便我們構(gòu)建自己的程序。
參考文獻
[1] Google面向教育者的計算思維課程.https://edu.google. com/resources/programs/exploringcomputationalthinking/
[2] NetLog0 4.0.2用戶手冊(中文版)http://ccl.northwestern. edu/netlogo/4.0. 4/docs/NetLogo_manualchinese.pdf