郭詠梅
(長治學(xué)院 計算機(jī)系,山西 長治 046011)
計算思維(Computational Thinking)是在 2006年由美國卡內(nèi)基梅隆大學(xué)計算機(jī)科學(xué)系主任周以真教授提出的教育理念。她認(rèn)為計算思維不僅僅屬于計算機(jī)科學(xué)家,而應(yīng)該和閱讀、寫作、算術(shù)一樣,成為21世紀(jì)每個人必須具備的基本技能。
這一概念一經(jīng)提出就引起了國內(nèi)外計算機(jī)專家學(xué)者的廣泛關(guān)注,如何培養(yǎng)學(xué)生的計算思維成為當(dāng)前計算機(jī)教育研究的重要課題。美國計算機(jī)協(xié)會(ACM)和國際電子電氣工程師協(xié)會計算機(jī)學(xué)會(IEEE-CS)在修訂后的計算機(jī)科學(xué)教程2008(Computer Science Curriculum 2008)[1]中明確指出應(yīng)該將計算思維作為計算機(jī)科學(xué)教學(xué)的重要組成部分。在國內(nèi),教育部高等學(xué)校計算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會編制的《高等學(xué)校計算機(jī)科學(xué)與技術(shù)專業(yè)人才專業(yè)能力構(gòu)成與培養(yǎng)》[2](2010年編)中指出,計算機(jī)專業(yè)人才的專業(yè)基本能力主要包括計算思維能力、算法設(shè)計與分析能力、程序設(shè)計與實(shí)現(xiàn)能力、系統(tǒng)能力,其中計算思維能力是最重要的能力。與此同時,多位研究者對如何培養(yǎng)計算思維進(jìn)行了探索和討論:文獻(xiàn)[3][4]論述了計算思維在計算機(jī)基礎(chǔ)教學(xué)中的重要性,強(qiáng)調(diào)要注重學(xué)科思維能力培養(yǎng)。文獻(xiàn)[5]旗幟鮮明地把“計算思維能力的培養(yǎng)”作為計算機(jī)基礎(chǔ)教學(xué)的核心任務(wù)。文獻(xiàn)[6][7]探討了在人工智能和離散數(shù)學(xué)課程中培養(yǎng)計算思維的思路和策略。盡管如此,如何在教學(xué)過程中培養(yǎng)學(xué)生計算思維仍處于一個摸索階段,需要教學(xué)工作者去探索和實(shí)踐。
文章以實(shí)際問題為主線,將計算思維的方法滲透到教學(xué)過程中,探討培養(yǎng)學(xué)生計算思維的方法和策略,達(dá)到提高學(xué)生的計算思維能力的目的。
周以真教授對計算思維的定義:計算思維是運(yùn)用計算機(jī)科學(xué)的基礎(chǔ)概念去求解問題、設(shè)計系統(tǒng)和理解人類的行為,它包括了涵蓋計算機(jī)科學(xué)之廣度的一系列思維活動[8]。計算思維的本質(zhì)是抽象(Abstract)和自動化(Automation)。典型的計算思維包括一系列廣泛的計算機(jī)科學(xué)的思維方法:遞歸、抽象和分解,關(guān)注點(diǎn)分離、保護(hù)、冗余、容錯、糾錯和恢復(fù),利用啟發(fā)式推理來尋求解答、在不確定的情況下規(guī)劃、學(xué)習(xí)和調(diào)度等。計算思維中求解問題的一般過程為:首先對問題進(jìn)行抽象化的描述,然后設(shè)計求解問題的方案,最后通過編寫程序代碼、運(yùn)行程序,實(shí)現(xiàn)計算機(jī)對問題的求解。
問題探究教學(xué)是以學(xué)生為主體、教師為主導(dǎo),體現(xiàn)“自主、探究、合作”的學(xué)習(xí)方式[8]。通過對教學(xué)內(nèi)容中主要知識點(diǎn)進(jìn)行自主學(xué)習(xí)、深入探究并進(jìn)行小組合作交流,最終較好地應(yīng)用已有的知識求解實(shí)際問題。
計算思維和問題探究教學(xué)共同的目標(biāo)都是對實(shí)際問題的有效求解,計算思維的核心是以科學(xué)的思維方法思考問題和求解問題,問題探究教學(xué)是在實(shí)際問題的深入分析探究過程中進(jìn)行學(xué)習(xí)。我們將二者結(jié)合起來,在探究性學(xué)習(xí)過程中,引導(dǎo)學(xué)生運(yùn)用計算思維的方法分析、解決實(shí)際問題,一方面培養(yǎng)學(xué)生的計算思維能力,另一方面提高學(xué)生解決實(shí)際問題的能力和創(chuàng)新能力,進(jìn)一步提高教學(xué)效果。
問題探究教學(xué)的過程一般分為五個步驟:(1)根據(jù)實(shí)際需求提出探究問題;(2)啟發(fā)學(xué)生自主探究問題;(3)小組合作分析解決問題;(4)協(xié)作討論交流成果;(5)總結(jié)提高拓展遷移。教師在各個環(huán)節(jié)啟發(fā)、引導(dǎo)學(xué)生運(yùn)用計算思維的方法去研究問題、解決問題,學(xué)生運(yùn)用計算思維的方法自主、探究、合作學(xué)習(xí),提高獨(dú)立思考和解決問題的能力。下面是程序設(shè)計課程中“數(shù)據(jù)查找”問題的教學(xué)過程。
教師根據(jù)教學(xué)目標(biāo)和教學(xué)內(nèi)容的知識點(diǎn),以一個實(shí)際問題為切入點(diǎn),引出探究問題,調(diào)動學(xué)生的學(xué)習(xí)積極性、激發(fā)其學(xué)習(xí)動機(jī)。教師要深入研究教材,提出的問題要具有代表性和應(yīng)用性,能夠涵蓋教學(xué)內(nèi)容的知識點(diǎn)和計算思維方法。學(xué)生明確學(xué)習(xí)目標(biāo),理解要解決的問題,進(jìn)入學(xué)習(xí)情景。
在教師的組織下,引導(dǎo)學(xué)生列舉出日常生活中的實(shí)例。例如:查找學(xué)生考試成績、在字典中查找字或詞等,讓學(xué)生討論如何查找各類數(shù)據(jù),激發(fā)學(xué)生學(xué)習(xí)和探究的積極性,由此引出“數(shù)據(jù)查找”問題。組織學(xué)生組成3-4人的學(xué)習(xí)小組,每組選擇一個具體查找問題進(jìn)行討論。教師不僅要引導(dǎo)學(xué)生明確查找問題的具體要求,更重要的是啟發(fā)學(xué)生用計算思維的概念和方法分析問題和求解問題。
學(xué)生帶著問題自主學(xué)習(xí),思考解決問題的方法,形成初步的解題思路。發(fā)揮主導(dǎo)作用的教師要適時為學(xué)生提供幫助與指導(dǎo),對探究性學(xué)習(xí)中的思維方法作必要的指導(dǎo)。教師不能直接告知學(xué)生正確的答案,要啟發(fā)、引導(dǎo)學(xué)生用計算思維的抽象、分解、關(guān)注點(diǎn)分離等方法去思考問題、解決問題,培養(yǎng)學(xué)生良好的思維習(xí)慣。
對于查找學(xué)生成績問題,教師要引導(dǎo)學(xué)生獨(dú)立地對問題的輸入數(shù)據(jù)、輸出數(shù)據(jù)和功能進(jìn)行分析,對問題進(jìn)行抽象,啟發(fā)學(xué)生用程序設(shè)計語言中的符號、數(shù)據(jù)結(jié)構(gòu)表示學(xué)生成績信息。例如,將學(xué)生基本信息定義為類或結(jié)構(gòu)體,數(shù)據(jù)成員包括學(xué)號、姓名、成績等,函數(shù)成員包括數(shù)據(jù)的輸入、輸出、排序、查找等,定義對象數(shù)組或結(jié)構(gòu)體數(shù)組存放學(xué)生成績信息,讓學(xué)生學(xué)會將實(shí)際問題表示為計算機(jī)能夠處理的符號。在完成問題的表示之后,進(jìn)一步鼓勵學(xué)生自主分析、設(shè)計查找某一學(xué)生成績的算法。
學(xué)生小組協(xié)作討論、共享學(xué)習(xí)資源、內(nèi)化知識和學(xué)習(xí)方法,形成解決問題的方案。教師在思維和策略方面提供幫助,引導(dǎo)學(xué)生進(jìn)行知識的主動建構(gòu),學(xué)生以自己所掌握的知識經(jīng)驗(yàn)為基礎(chǔ),對問題進(jìn)行分析和處理,從而培養(yǎng)學(xué)生思維能力和協(xié)作能力。
在這一過程中,學(xué)生比較各種方案的優(yōu)劣,選出最佳方案,設(shè)計具體的實(shí)現(xiàn)算法。教師要引導(dǎo)學(xué)生應(yīng)用已學(xué)過的知識獨(dú)立思考,設(shè)計查找算法;同時鼓勵學(xué)生收集、查閱典型的查找算法,如順序查找、折半查找等,讓學(xué)生理解各種查找算法的具體過程,比較各種查找算法優(yōu)點(diǎn)和不足,體會計算機(jī)處理問題的過程。通過小組討論交流,各組選出一種最佳算法,進(jìn)行完善和優(yōu)化,并用流程圖或N-S圖等規(guī)范的工具描述算法。
在教師在組織引導(dǎo)下,學(xué)生以小組為單位討論交流學(xué)習(xí)成果,切磋學(xué)習(xí)當(dāng)中遇到的問題。
各小組根據(jù)設(shè)計的查找算法編寫程序,展示各自的運(yùn)行結(jié)果。通過成果展示,讓學(xué)生學(xué)習(xí)同一問題不同的算法設(shè)計,從別人的成果中獲得啟發(fā),拓展思路,領(lǐng)悟計算機(jī)自動化的內(nèi)涵。
首先由學(xué)生個人(或?qū)W習(xí)小組)對探究問題涉及到的基本概念、基本方法進(jìn)行總結(jié),對學(xué)習(xí)過程中出現(xiàn)的錯誤進(jìn)行反思。然后由教師對教學(xué)內(nèi)容的重點(diǎn)和難點(diǎn)、解決問題的計算思維方法、學(xué)生學(xué)習(xí)小組的表現(xiàn)進(jìn)行歸納總結(jié),使學(xué)生深入理解、掌握所學(xué)的知識和計算思維方法。教師還要提出相關(guān)聯(lián)的問題,引導(dǎo)學(xué)生拓展遷移,對所學(xué)知識舉一反三。
對于數(shù)據(jù)查詢問題,每個小組派代表總結(jié)各自的分析方法、設(shè)計思路、算法的優(yōu)點(diǎn)和計算思維方法,教師對各個小組的成果進(jìn)行評價,并從整體上聯(lián)系相關(guān)學(xué)科知識(如對象數(shù)組、查找算法等)進(jìn)行總結(jié),對計算思維方法(如抽象、分解、自動化等)進(jìn)行點(diǎn)評和總結(jié)。同時,教師要引導(dǎo)學(xué)生提升對類、函數(shù)模板、類模板的認(rèn)識,讓學(xué)生體會計算機(jī)解決一類問題的方法。
在整個教學(xué)過程中,采用問題探究教學(xué)模式,在問題的求解過程中滲透計算思維的方法,培養(yǎng)學(xué)生良好的思維習(xí)慣,使學(xué)生掌握實(shí)際問題的求解過程和基本思路。
問題探究教學(xué)和計算思維二者緊密結(jié)合,相互促進(jìn),在問題探究過程中培養(yǎng)了學(xué)生計算思維能力,計算思維使問題探究教學(xué)進(jìn)一步提高和升華。這種教學(xué)方法充分調(diào)動了學(xué)生主動學(xué)習(xí)的積極性,增強(qiáng)了學(xué)生自主學(xué)習(xí)能力和小組協(xié)作能力,彌補(bǔ)了傳統(tǒng)課堂教學(xué)的不足,真正提高了學(xué)生解決實(shí)際問題的能力和計算思維能力。
[1]ACM/IEEE Computer Society Interim Review Task Force.Computer science curriculum 2008:An inte rimrevision of CS2001[EB/OL].[2010-06-28].http://www.acm.org/educa tion/curricula/.
[2]教育部高等學(xué)校計算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會.高等學(xué)校計算機(jī)科學(xué)與技術(shù)專業(yè)人才專業(yè)能力構(gòu)成與培養(yǎng)[M].北京:機(jī)械工業(yè)出版社,2010.
[3]董榮勝.《九校聯(lián)盟(C9)計算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明》呼喚教育的轉(zhuǎn)型[J].中國大學(xué)教學(xué),2010,(10):14-15.
[4]董榮勝.計算思維與計算機(jī)導(dǎo)論[J].計算機(jī)科學(xué),2009,(4):50-52.
[5]九校聯(lián)盟_C9_計算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明[J].中國大學(xué)教學(xué),2010,(9):4.
[6]王甲海,印鑒.人工智能教學(xué)與計算思維培養(yǎng)[J].計算機(jī)教育,2010,(19):68-70.
[7]常亮,徐周波,古天龍,董榮勝.離散數(shù)學(xué)教學(xué)中的計算思維培養(yǎng)[J].計算機(jī)教育,2011,(14):90-93.
[8]周以真.計算思維[J].中國計算機(jī)學(xué)會通訊,2007,(11):77-79.
[9]何克抗,吳娟.信息技術(shù)與課程整合的教學(xué)模式研究之三—“探究性”教學(xué)模式[J].現(xiàn)代教育技術(shù),2008,(9):5-10.