陳杰華
摘要:計(jì)算思維強(qiáng)調(diào)問(wèn)題求解的操作過(guò)程和機(jī)器實(shí)現(xiàn),它的三大特征是形式規(guī)整、問(wèn)題求解和人機(jī)共存。本文提出在課程中強(qiáng)化計(jì)算思維訓(xùn)練兩種途徑:(1)以上機(jī)實(shí)驗(yàn)為重點(diǎn)的計(jì)算思維訓(xùn)練;(2)通過(guò)算法多樣化訓(xùn)練計(jì)算思維。從而達(dá)到程序設(shè)計(jì)課程的終極目標(biāo):培養(yǎng)學(xué)生的研究創(chuàng)新能力,提高學(xué)生的信息素養(yǎng)。
關(guān)鍵詞:算法;問(wèn)題求解;計(jì)算思維;創(chuàng)新思維
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
1引言
數(shù)學(xué)思維強(qiáng)調(diào)數(shù)與形的邏輯關(guān)系、演算推理能力和嚴(yán)謹(jǐn)態(tài)度,計(jì)算思維強(qiáng)調(diào)問(wèn)題求解的的操作過(guò)程和機(jī)器實(shí)現(xiàn)。在《中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系2008》中,提出對(duì)大學(xué)生計(jì)算機(jī)應(yīng)用能力的三大要求是:操作使用能力、應(yīng)用開(kāi)發(fā)能力和研究創(chuàng)新能力。尤其是對(duì)于“程序設(shè)計(jì)基礎(chǔ)”課程而言,將學(xué)習(xí)目標(biāo)確定成:(1)學(xué)習(xí)問(wèn)題求解的思路和方法,即算法。(2)理解計(jì)算機(jī)是如何具體實(shí)現(xiàn)算法的,即如何才能有效的利用計(jì)算機(jī)編程。課程學(xué)習(xí)的重點(diǎn)不只是編寫(xiě)程序,而是算法思想與問(wèn)題求解的思路。總之,就是要培養(yǎng)學(xué)生使用計(jì)算機(jī)編程,并最終形成計(jì)算思維。
2算法與計(jì)算思維
2.1算法
根據(jù)圖靈獎(jiǎng)得主D.E.Knuth的定義:一個(gè)算法就是一個(gè)有窮規(guī)則的集合,其中規(guī)則規(guī)定一個(gè)解決某一特定類(lèi)型問(wèn)題的操作序列。學(xué)生在學(xué)習(xí)程序設(shè)計(jì)課程時(shí),將通過(guò)算法設(shè)計(jì)并由計(jì)算機(jī)語(yǔ)言實(shí)現(xiàn)來(lái)體驗(yàn)問(wèn)題求解的思維訓(xùn)練。算法的操作時(shí)序性確保問(wèn)題求解過(guò)程是按步驟進(jìn)行的,這種執(zhí)行規(guī)則非常簡(jiǎn)單機(jī)械。所以,教學(xué)過(guò)程中要使學(xué)生經(jīng)歷算法化過(guò)程并體驗(yàn)計(jì)算思維,它有利于培養(yǎng)學(xué)生的理性思維和行事邏輯能力。
2.2計(jì)算思維
美國(guó)卡內(nèi)基?梅隆大學(xué)的周以真(J.M.Wing)教授在計(jì)算機(jī)權(quán)威期刊《Communications of the ACM》雜志上指出:計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)、人類(lèi)行為理解等的一系列思維活動(dòng)。就問(wèn)題求解(problem solving)而言計(jì)算思維與數(shù)學(xué)思維相似,它建立在計(jì)算過(guò)程的具體實(shí)現(xiàn)和約束之上,通過(guò)程序來(lái)控制機(jī)器的全部操作。
計(jì)算思維的本質(zhì)是抽象和自動(dòng)化。計(jì)算思維中的抽象體現(xiàn)在完全使用符號(hào)系統(tǒng),甚至形式化語(yǔ)言。一個(gè)程序由標(biāo)識(shí)符、常數(shù)、變量、數(shù)組名、函數(shù)名、語(yǔ)句、程序段等構(gòu)成,其中的數(shù)據(jù)類(lèi)型只是一個(gè)抽象特例。與數(shù)學(xué)思維相比,計(jì)算思維中的抽象顯得更豐富也更復(fù)雜。計(jì)算思維中的自動(dòng)化體現(xiàn)在算法實(shí)現(xiàn)最終是“機(jī)械式”的按步驟自動(dòng)執(zhí)行,這是馮?諾伊曼機(jī)器的本質(zhì)特征(即存儲(chǔ)程序原理)。要實(shí)現(xiàn)這一特征,就需要進(jìn)行精確的算法描述和嚴(yán)格的符號(hào)表示。計(jì)算思維包括如下三大特征。
(1) 計(jì)算思維是一種形式規(guī)整的思維。算法確定性是算法和程序的基本要求,它的實(shí)現(xiàn)一定會(huì)使用基于數(shù)學(xué)語(yǔ)言的符號(hào)系統(tǒng),即使用一種有限的確定性符號(hào)系統(tǒng)來(lái)描述問(wèn)題和問(wèn)題求解過(guò)程。算法確定性表明算法的每一步操作必須是確切定義的,沒(méi)有任何二義。所以,計(jì)算思維體現(xiàn)的正是嚴(yán)謹(jǐn)?shù)?、形式的、?guī)整的邏輯思維。
計(jì)算思維使用形式化語(yǔ)言來(lái)準(zhǔn)確描述問(wèn)題求解過(guò)程。自然語(yǔ)言中往往因文化習(xí)慣的差異,會(huì)出現(xiàn)許多二義性。例如句子“車(chē)撞死人”,可以理解為車(chē)將人撞死,也可理解為車(chē)撞的是死人。在計(jì)算思維學(xué)習(xí)中,需要將計(jì)算任務(wù)用確定化的、形式化的、唯一化的語(yǔ)言進(jìn)行描述。程序設(shè)計(jì)語(yǔ)言作為一種確定性符號(hào)系統(tǒng),就可以進(jìn)行形式化思維訓(xùn)練。例如,學(xué)生在編程時(shí)產(chǎn)生的符號(hào)錯(cuò)誤,都會(huì)在編譯和運(yùn)行時(shí)表示出來(lái),而學(xué)生通過(guò)檢錯(cuò)和糾錯(cuò)的過(guò)程,可以培養(yǎng)學(xué)生嚴(yán)謹(jǐn)規(guī)范的行為習(xí)慣和科學(xué)的實(shí)證精神。實(shí)際上,如果一個(gè)學(xué)生具有條理化的、反思性的思維習(xí)慣,則表示該學(xué)生的問(wèn)題求解技能很強(qiáng)。
(2) 計(jì)算思維是一種問(wèn)題求解的思維。它將問(wèn)題求解的過(guò)程用“程序化”或“機(jī)械化”的方式表示出來(lái)。問(wèn)題求解過(guò)程分為五個(gè)步驟:呈現(xiàn)問(wèn)題、分析問(wèn)題、聯(lián)系、行為選擇和反思檢驗(yàn)。學(xué)生在面對(duì)計(jì)算機(jī)問(wèn)題時(shí),可依據(jù)已有的知識(shí),提出問(wèn)題求解方案,并用算法進(jìn)行描述,最終由機(jī)器執(zhí)行程序來(lái)檢驗(yàn)問(wèn)題求解的效果。例如火車(chē)分段計(jì)費(fèi)問(wèn)題就是我們?cè)谌粘I钪懈惺艿降膯?wèn)題,學(xué)生可根據(jù)自己對(duì)火車(chē)收費(fèi)的理解,寫(xiě)出數(shù)學(xué)式,然后用多分支結(jié)構(gòu)算法進(jìn)行描述,最后上機(jī)實(shí)現(xiàn)。
(3) 計(jì)算思維是一種人機(jī)共存的思維。算法可分為三種形式:①生活算法:即完成某一項(xiàng)工作的方法和步驟,例如一天的學(xué)習(xí)計(jì)劃;②數(shù)學(xué)算法:即對(duì)一類(lèi)計(jì)算問(wèn)題的機(jī)械的、統(tǒng)一的求解方法,例如一個(gè)多項(xiàng)式的因式分解;③計(jì)算機(jī)算法:即問(wèn)題求解的精確描述,它具有明顯的自動(dòng)化特征,如數(shù)據(jù)計(jì)算準(zhǔn)度高并具有嚴(yán)格的操作時(shí)序,這是與計(jì)算機(jī)系統(tǒng)本身緊密相關(guān)的,所以用計(jì)算機(jī)實(shí)現(xiàn)問(wèn)題求解,需要充分利用計(jì)算機(jī)的速度和存儲(chǔ)優(yōu)勢(shì),盡量發(fā)揮計(jì)算機(jī)與計(jì)算思維的威力。例如“百雞問(wèn)題”,數(shù)學(xué)方法是用兩個(gè)三元不定方程進(jìn)行求解,計(jì)算機(jī)算法則充分利用計(jì)算機(jī)的速度優(yōu)勢(shì),使用窮舉算法進(jìn)行簡(jiǎn)單重復(fù)操作進(jìn)行求解。兩者的不同,可以使學(xué)生體驗(yàn)到人機(jī)不同的信息處理特質(zhì)。
3嘗試以上機(jī)實(shí)驗(yàn)為重點(diǎn)的計(jì)算思維教學(xué)模式
在程序設(shè)計(jì)課程教學(xué)過(guò)程中,筆者改變偏重理論和課堂教學(xué)的傳統(tǒng)模式,嘗試以上機(jī)實(shí)驗(yàn)為重點(diǎn)的計(jì)算思維教學(xué)模式,讓同學(xué)們能夠“在編程過(guò)程中學(xué)習(xí)知識(shí)、在學(xué)習(xí)過(guò)程中拓展思維”。具體實(shí)踐包括以下三個(gè)方面。
3.1提高上機(jī)實(shí)驗(yàn)的地位
程序設(shè)計(jì)是一門(mén)實(shí)踐性學(xué)科,過(guò)去沿用“先講解程序,后上機(jī)實(shí)驗(yàn)”的教學(xué)策略,這種教學(xué)策略只能增加學(xué)生的感性認(rèn)識(shí)和上機(jī)實(shí)驗(yàn)?zāi)芰?并不能提高學(xué)生的計(jì)算思維能力。筆者認(rèn)為讓學(xué)生按部就班完成前人設(shè)計(jì)好的算法,不是上機(jī)實(shí)驗(yàn)的真正目的。上機(jī)實(shí)驗(yàn)應(yīng)該是培養(yǎng)學(xué)生計(jì)算思維能力的重要手段,是程序設(shè)計(jì)課程教學(xué)的核心。
3.2實(shí)驗(yàn)內(nèi)容要能培養(yǎng)學(xué)生的創(chuàng)新思維
要培養(yǎng)學(xué)生的創(chuàng)新思維,教師首先要不斷學(xué)習(xí)并創(chuàng)作適合同學(xué)們知識(shí)結(jié)構(gòu)和心理特點(diǎn)的實(shí)驗(yàn)內(nèi)容。好的實(shí)驗(yàn)內(nèi)容,能夠?yàn)閷W(xué)生的創(chuàng)新思維留出適當(dāng)?shù)目臻g。在教學(xué)過(guò)程中,要強(qiáng)調(diào)并培養(yǎng)學(xué)生對(duì)于計(jì)算過(guò)程的嚴(yán)謹(jǐn)性,編寫(xiě)程序是要強(qiáng)調(diào)從需求定義開(kāi)始,然后進(jìn)行算法優(yōu)化與選擇,最后通過(guò)上機(jī)實(shí)驗(yàn)。當(dāng)出現(xiàn)程序錯(cuò)誤時(shí)不要放棄,而是努力排除錯(cuò)誤,這樣能夠強(qiáng)化學(xué)生的計(jì)算思維訓(xùn)練。同學(xué)們一定會(huì)因?yàn)樘岢鲂滤惴ê团懦e(cuò)誤感到滿足,這樣可以使同學(xué)們積極思維,大膽創(chuàng)新。
3.3增強(qiáng)實(shí)驗(yàn)內(nèi)容的趣味性和綜合性
通過(guò)計(jì)算任務(wù)的趣味性、綜合性等來(lái)增強(qiáng)實(shí)驗(yàn)內(nèi)容的難度,從而強(qiáng)化計(jì)算思維訓(xùn)練。大學(xué)生一般對(duì)新鮮事物好學(xué)、好問(wèn)并富于幻想,初遇計(jì)算任務(wù)時(shí)往往興致盎然,幻想編寫(xiě)程序。但在傳統(tǒng)教學(xué)中,缺少趣味性和綜合性,進(jìn)而導(dǎo)致同學(xué)們沒(méi)有學(xué)習(xí)興趣,所以,設(shè)計(jì)實(shí)驗(yàn)內(nèi)容盡量生活化、趣味化。例如在分支程序結(jié)構(gòu)中,安排火車(chē)計(jì)費(fèi)程序進(jìn)行計(jì)算思維訓(xùn)練。
4通過(guò)算法多樣化訓(xùn)練計(jì)算思維
4.1提倡算法多樣化的目標(biāo)
程序設(shè)計(jì)教學(xué)的教育價(jià)值在于突出計(jì)算思維,在倡導(dǎo)算法多樣化的過(guò)程中,培養(yǎng)學(xué)生的創(chuàng)新意識(shí)、探索精神和問(wèn)題求解能力。在教學(xué)過(guò)程中,應(yīng)該尊重學(xué)生的個(gè)體差異,關(guān)注學(xué)生思維能力培養(yǎng)。課程目標(biāo)不僅僅是培養(yǎng)學(xué)生的操作技能,還要通過(guò)強(qiáng)調(diào)算法多樣性來(lái)培養(yǎng)學(xué)生的計(jì)算思維能力。
4.2尊重學(xué)生不同的認(rèn)知方式
算法多樣化的本質(zhì)是尊重學(xué)生不同的認(rèn)知方式,在教學(xué)過(guò)程中由于學(xué)生認(rèn)知方式的差異,必然會(huì)導(dǎo)致算法多樣化。教師應(yīng)該尊重每位學(xué)生的個(gè)體特征,鼓勵(lì)學(xué)生從不同角度認(rèn)識(shí)問(wèn)題,用不同方式表達(dá)算法,用不同方法實(shí)現(xiàn)問(wèn)題求解。同時(shí)教師給予適當(dāng)?shù)脑u(píng)價(jià),就是尊重學(xué)生不同的認(rèn)知方式。
4.3增強(qiáng)計(jì)算任務(wù)的多樣性和重構(gòu)性
在教學(xué)過(guò)程中,教師要重視并培養(yǎng)學(xué)生計(jì)算思維的多樣性和重構(gòu)性。多樣性可以盡量激發(fā)學(xué)生的思維活動(dòng),重構(gòu)性通過(guò)變化也能夠強(qiáng)化計(jì)算思維訓(xùn)練。實(shí)際上,不同學(xué)生會(huì)使用不同的學(xué)習(xí)方法和思維方式。對(duì)一個(gè)學(xué)生來(lái)說(shuō)是好的計(jì)算方法,對(duì)別的學(xué)生不一定適合。另外,各種計(jì)算方法都有它的局限性,其實(shí)程序只需要保證正確并具有可讀性。所以,在設(shè)計(jì)實(shí)驗(yàn)內(nèi)容時(shí),鼓勵(lì)同學(xué)們編寫(xiě)各種程序來(lái)實(shí)現(xiàn)同一個(gè)計(jì)算任務(wù),鼓勵(lì)改寫(xiě)別人編寫(xiě)的程序,從而培養(yǎng)同學(xué)們計(jì)算思維的多樣性和重構(gòu)性。
4.4充分利用算法的簡(jiǎn)化和優(yōu)化過(guò)程
在教學(xué)過(guò)程中教師,不但要倡導(dǎo)算法多樣化,還要引導(dǎo)學(xué)生對(duì)算法進(jìn)行反思和進(jìn)一步探索,從而達(dá)到簡(jiǎn)化并優(yōu)化算法的目標(biāo)。將一個(gè)計(jì)算任務(wù)用多種思路、多種算法進(jìn)行求解,可以發(fā)展學(xué)生計(jì)算思維的靈活性。算法多樣化讓學(xué)生可以用自己喜歡或能夠理解的算法,通過(guò)交流、評(píng)價(jià)得到計(jì)算結(jié)果。
5結(jié)論
進(jìn)行計(jì)算思維訓(xùn)練對(duì)計(jì)算機(jī)學(xué)科人才培養(yǎng)是極為重要的,因?yàn)樗粌H使學(xué)生理解計(jì)算機(jī)的實(shí)現(xiàn)機(jī)制和約束,有利于學(xué)生進(jìn)行發(fā)明和創(chuàng)新,更重要的是有利于提高學(xué)生的信息素養(yǎng),也就是處理計(jì)算機(jī)問(wèn)題時(shí)應(yīng)有的思維方法、表達(dá)形式和行為習(xí)慣。信息素養(yǎng)要求學(xué)生能夠?qū)τ讷@取的各種信息通過(guò)自己的思維進(jìn)行深層次的加工和處理,從而產(chǎn)生新的信息。當(dāng)然,僅通過(guò)一門(mén)課程學(xué)習(xí)就形成信息素養(yǎng)是不可能的,但應(yīng)該使學(xué)生懂得計(jì)算思維對(duì)軟件設(shè)計(jì)是非常重要的。
參考文獻(xiàn):
[1] 中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育改革課題研究組. 中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系2008[M]. 北京:清華大學(xué)出版社,2008.
[2]J.M.Wing. Computational Thinking[J]. Communications of the ACM,2006(49):33-35.
[3] 王榮良. 信息技術(shù)課程中算法學(xué)習(xí)的價(jià)值探索[J]. 中國(guó)電化教育,2008(8):78-81.
[4] 董榮勝. 計(jì)算機(jī)科學(xué)導(dǎo)論—思想與方法[M]. 北京:高等教育出版社,2007.
[5] 吳鶴齡,崔林. ACM圖靈獎(jiǎng)—計(jì)算機(jī)發(fā)展史的縮影[M]. 北京:高等教育出版社,2008.