王繼華
【摘要】 本文通過文獻分析介紹了計算思維的關(guān)鍵內(nèi)涵“抽象”,然后通過對英國計算教育課程的分析,提出了將“抽象”和實現(xiàn)“自動化”的編程結(jié)合起來開展計算思維教學的總原則,最后用兩個典型的案例介紹了如何開展計算思維的教學。
【關(guān)鍵詞】 計算思維 抽象 自動化 編程 教學
【中圖分類號】 G633.67 【文獻標識碼】 A 【文章編號】 1992-7711(2016)02-090-020
計算思維是美國卡內(nèi)基·梅隆大學(CMU)計算機科學系主任周以真(Jeannette M.Wing)教授于2006年提出,在美國計算機權(quán)威刊物《Communications of the ACM》上首次提出了計算思維(Computational Thinking)的概念:“計算思維是運用計算機科學的基礎(chǔ)概念去求解問題、設(shè)計系統(tǒng)和理解人類的行為。它包括了涵蓋計算機科學之廣度的一系列思維活動?!钡捎谟嬎闼季S的內(nèi)涵豐富,在理解上給許多人帶來了困擾,甚至于有的人一開始并不承認計算思維的存在。
但隨著包括計算機科學界在內(nèi)的各界科學家的逐漸接受,計算思維在西方科學界越來越受重視。冠以“計算”二字的諸如“計算生物學”、“計算物理學”、“計算化學”等學科早已涌現(xiàn),并對各個學科的發(fā)展做出了重要貢獻。2013 年的諾貝爾化學獎授予了三位美國科學家馬丁·卡普布拉斯、邁克爾·萊維特和亞利耶·瓦謝爾,表彰他們在開發(fā)多尺度計算模型處理復雜體系的化學反應(yīng),利用計算機模擬化學反應(yīng)領(lǐng)域所作出的開創(chuàng)性貢獻,他們的貢獻就是典型的計算思維的體現(xiàn)。信息時代的創(chuàng)新,如果缺少了計算思維,猶如大雁失去了翅膀。
計算思維教育在美國、英國和一些發(fā)達國家受到了前所未有的重視。但內(nèi)涵廣泛的計算思維的關(guān)鍵到底是什么?怎樣去培養(yǎng)?本文試圖從計算思維的提出者周以真教授的演講稿的學習開始,借鑒英國的經(jīng)驗,談?wù)勎覀兊淖龇ā?/p>
1.抽象:計算思維的關(guān)鍵
我們檢索了許多關(guān)于計算思維的論文和演講稿,期望搞清楚計算思維的關(guān)鍵內(nèi)涵到底是什么,期望有一個通俗易懂的解釋能在中國傳播。在此過程中我們發(fā)現(xiàn)周以真在2011年3月4日的卡內(nèi)基·梅隆大學“OurCS Workshop”上做的“計算思維”的演講稿有一個清晰的圖示,如圖1.
在這個圖示中,計算思維被描述為“側(cè)重于抽象”,這里的抽象是或者類似為數(shù)學模型,這是可計算的前提條件。抽象的過程可以分解為:選擇正確的抽象;同時操作多個層次的抽象模型;定義層之間的關(guān)系。“自動化”在圖1中反映為對“抽象”的處理,即把高強度的或海量的運算交給高速的計算設(shè)備“自動化”處理,通過處理后的反饋,不斷優(yōu)化抽象模型。其重要性雖然被放到“抽象”之后,但理解并學會實現(xiàn)一定的“自動化”——學習編程,也是很有必要的。
什么是抽象?把現(xiàn)實中的事物或解決問題的過程,通過化簡等方式,抓住其關(guān)鍵特征,降低其復雜度,變?yōu)橛嬎阍O(shè)備可以處理的模型。
現(xiàn)代計算設(shè)備的計算能力雖然已經(jīng)相當高,但在處理復雜事物上還是力不從心。比如天氣預(yù)報、核爆炸、藥物學與分子生物學的計算……所以,藉由抽象,降低復雜度,但又可以非常逼近真實事物,使其不至于失真。前面所說的諾貝爾化學獎得主的算法,就是在抽象上做足了功夫后才成功的,不然很難反映真實的化學實驗過程。
抽象過程中的化簡對重構(gòu)事務(wù)處理的流程,利用自動化的高效率,人機結(jié)合,可以使生產(chǎn)、生活和學習的效率大大提高。比如自動化生產(chǎn)、自動化辦公、網(wǎng)上購物、滴滴打車、自適應(yīng)考試與學習診斷,等等。在今天幾乎所有現(xiàn)實都可以編碼為“0”和“1”的數(shù)字化時代,誰的抽象能力強,誰就可以體現(xiàn)出新的創(chuàng)造性。
所以,我們不妨將“抽象”看做計算思維的關(guān)鍵,設(shè)法貫穿到中小學教育中,讓學生從小具備“抽象”的意識和能力,為發(fā)展數(shù)字化的創(chuàng)新能力打下基礎(chǔ)。
2.英國計算教育中對“抽象”的安排與啟示
計算思維的培養(yǎng)受到了西方發(fā)達國家的高度重視。美國總統(tǒng)奧巴馬與計算機科學領(lǐng)域的企業(yè)界領(lǐng)袖如Facebook的CEO扎克伯克等一起,號召每一個孩子一起來學習編程。美國國際教育技術(shù)協(xié)會和計算機科學教育協(xié)會5年前就制定了相應(yīng)的課程綱要,但因為其計算機科學的專業(yè)性要求過強,難以實施,本文就不再介紹。但英國在此方面的行動顯得容易實施一些,值得我們學習和分析借鑒。
為了改變ICT教育以學習office等為主的落后的面貌,在計算機科學家群體和教育專家的倡議下,英國教育部于201x年專門研制了計算教育的國家課程。其學習目的是:“高質(zhì)量的計算(Computing)教育能讓學生使用計算思維和創(chuàng)造力來理解和改變世界。計算與數(shù)學、科學、設(shè)計、技術(shù)等深度關(guān)聯(lián),提供了一個理解自然系統(tǒng)和人工系統(tǒng)的視角。計算的核心是計算機科學,在這門學科中學生學習信息與計算的原理,數(shù)字系統(tǒng)如何工作以及如何通過編程使得這些知識得以使用?;谶@些知識與理解,讓學生運用信息技術(shù)創(chuàng)造程序、系統(tǒng)等。計算教育也能確保學生具備數(shù)字素養(yǎng),讓學生應(yīng)用并通過ICT表達自己的想法,使他們能達到一定的水平以適應(yīng)未來工作,并成為數(shù)字社會的積極參與者?!痹撜n程目的的陳述,把計算思維放到了核心位置。
課程的具體目標是:
(1)讓學生理解和應(yīng)用計算機科學的基本原理和概念,包括抽象、邏輯、算法、數(shù)據(jù)表示;
(2)能使用計算術(shù)語來分析問題,并具備為解決這些問題不斷地編寫計算機程序的實踐經(jīng)驗;
(3)能評價和使用信息技術(shù),包括新興的或不熟悉的技術(shù),分析性地解決問題;
(4)成為有責任心、有能力、自信的、有創(chuàng)造力的ICT使用者。
該目標對學生掌握計算機科學的概念如“抽象”等和涉及“自動化”的編程直接提出了要求。在學科內(nèi)容的具體規(guī)劃上,從5歲開始的幼兒園階段到16歲的高中階段,分為四個學段分別進行了安排。對于編程的教學,5歲開始的學段就讓安排了學習編程的內(nèi)容:
(1)理解什么是算法,算法作為數(shù)字設(shè)備上的程序是如何被實現(xiàn)的,并通過精確和清晰的指令執(zhí)行算法;
(2)創(chuàng)建和調(diào)試簡單的程序;
(3)使用邏輯推理預(yù)測簡單程序的行為……
到了11歲的學段,才明確安排有關(guān)“抽象”的內(nèi)容,并對學習“文本”的編程語言提出了要求:
(1)設(shè)計、使用和評價計算抽象,這個計算抽象可以模擬真實世界的問題和物理系統(tǒng)的狀態(tài)和行為。
(2)理解幾個反映計算思維的關(guān)鍵算法(如排序和搜索的算法),利用邏輯推理來比較使用不同算法解決同樣問題的績效。
(3)使用兩個或兩個以上的編程語言,其中一個是文本,每個語言用于解決各種計算問題;正確使用數(shù)據(jù)結(jié)構(gòu)(如列表、表格或數(shù)組),使用過程或函數(shù)來設(shè)計和開發(fā)模塊化程序。
這樣的內(nèi)容安排,對“編程”的要求是很高的,雖然越是懂得編程、算法、邏輯(主要是指編程中的判斷和循環(huán))和數(shù)據(jù)表示,越是有利于學習“抽象”。對“抽象”的要求后移太多,有可能造成編程——“自動化”和“抽象”的脫節(jié),其實兩者完全可以結(jié)合起來,放在一起學習。
另外,對于在課時捉襟見肘的中國中小學教育,我們傾向于推薦Scratch這樣可視化的搭積木式的編程,不推薦“文本”的編程語言的學習。即便是Python這樣的相對比較容易上手的“文本”編程語言,每周一課時的安排,“文本”編程語言的學習和實踐的時間是遠遠不夠的,如果要求所有的學生把精力放在這個方面將是得不償失的。建議對那些學有余力的學生,通過課外興趣小組的方式去讓他們進行深入的學習。
3.如何進行“抽象”的教學
我們多年的實踐經(jīng)驗是:不孤立地教編程,一開始就讓學生把抽象和編程結(jié)合起來。這是總的教學原則。
我們問一位在電大教JAVA的研究生,“你自己能用JAVA寫個小軟件嗎?”他說:“不能。”“那么你教的學生能做到嗎?”他又說:“不能”。“那么,考試怎么過關(guān)呢?”他說:“都是考的一些語句命令的簡單套用……”這樣的編程教學在以往中小學教LOGO語言和BASIC語言時同樣是個普遍現(xiàn)象,教學就是教語句命令,造成學而不能致用。孤立教編程的這條路,是已經(jīng)失敗了的,是走不通的。
那么如何將“抽象”和編程結(jié)合起來呢?我們介紹兩個例子來說明。
(1)“花”的Scratch編程
抽象的目的是為了把復雜的現(xiàn)實化簡為可計算的模型,比如對圖2中一朵花進行分析,8個花瓣具有相似性,那么可以把一片花瓣繪制為(抽象)如圖3中的樣子(當然還有繼續(xù)抓特征繼續(xù)完善的余地)。然后建模,即8個花瓣圍成360°一圈,每個花瓣圍繞下端的中心點旋轉(zhuǎn)45度即可實現(xiàn)。通過編程實現(xiàn)“自動化”繪制,見圖4,達到圖5的效果。如果繪制出來的效果距離抽象的對象(花)太遠,可以繼續(xù)修改完善圖3中的單個花瓣,直到滿意為止。這種從抽象到編程實現(xiàn)的過程是較為簡單的,小學生完全可以做到。
(2)小游戲的Scratch編程
理解了“花”的抽象,就容易理解更復雜的抽象了。用Scratch編寫小游戲是最常見的教學內(nèi)容,能較好地吸引學生的興趣。有些游戲?qū)Τ橄蟮囊筝^低,比如打地鼠游戲,從角色到舞臺的安排到編程的實現(xiàn),并不困難。我們可以在Scratch的各種教材里都看到設(shè)計這個游戲的內(nèi)容。
模擬類的游戲可能對“抽象”的要求會更高一些,比如要編寫一個食物鏈系統(tǒng)的模擬游戲,學生要搞清楚這個系統(tǒng)中有哪些動植物(抽象出角色)?這些動植物之間的食物關(guān)系是怎樣的(抽象出一個個的角色之間的關(guān)系)?當在舞臺(比如草地)中這些動植物遇到時各自會出現(xiàn)什么結(jié)果,一起和諧共生時相互間數(shù)量關(guān)系的影響(抽象為數(shù)學模型)?如果增加某個動物的數(shù)量,會對其它動植物的數(shù)量產(chǎn)生什么影響(應(yīng)用該數(shù)學模型)……
4.結(jié)語
計算思維的教學對我國中小學教育來說,還是一個全新的領(lǐng)域,不僅基本理論研究沒跟上,教師的教學準備也相當不足。本文試圖尋找計算思維的關(guān)鍵點來推進同行對計算思維的理解,以及思考在教學中的應(yīng)用,期望能起到拋磚引玉的作用,共同推動我國信息技術(shù)教育的發(fā)展。
[ 參 考 文 獻 ]
[1]周以真.計算思維[OL].http://csta.acm.org/Curriculum/sub/Curr Files/Wing CTPrez.pdf.
[2]牛杰,劉向永.從ICT到Computing:英國信息技術(shù)課程變革解析及啟示[J].電化教育研究,2013(12).