摘要:針對目前計算機基礎通識教育中計算思維教學面臨的挑戰(zhàn),在教學內(nèi)容設計方面對計算思維教學改革進行探討,提出教學內(nèi)容設計的原則和適合新生的教學內(nèi)容,同時闡述在“錢學森創(chuàng)新拓展班”中的實施過程和效果。
關鍵詞:計算機基礎;通識教育;計算思維;教學內(nèi)容設計;錢學森創(chuàng)新拓展班
在信息時代,沒有計算支持的科研是不可想象的,因此,各專業(yè)學生必須學習利用計算進行問題求解的技能。如何培養(yǎng)非計算機專業(yè)學生的計算機使用技能和計算機問題求解能力,給計算科學的教育帶來了新的挑戰(zhàn)。周以真教授2006年提出了計算思維概念,為計算科學教育規(guī)劃了遠景,周教授認為計算思維是“基于計算機科學的解決問題、設計系統(tǒng)和理解人類行為的能力”,是每個人必須掌握的基本分析思維技能,而不僅僅是計算機科學家所必需的。
近年來,國內(nèi)外計算機教育界就如何進行計算思維教學進行了很多探索,特別是在對非計算機專業(yè)學生的計算思維能力培養(yǎng)方面。國內(nèi)教育界同行在計算思維的認識、教學內(nèi)容設計、教學實踐等方面進行了多次研討,形成了以計算思維為統(tǒng)領,開展大學計算機基礎通識教育改革的共識㈣?;谠摴沧R,各所大學開始了計算思維的教學改革,取得了初步成果。
然而,由于對計算思維內(nèi)涵和內(nèi)容的解讀和側重點上的差異,各大學在計算思維教學內(nèi)容選取和教學實施形式上有很大的不同,在計算思維教學內(nèi)容的選取、配套實驗環(huán)節(jié)設計上還未形成很好的體系。近幾年,國防科學技術大學依托“大學計算機基礎”課程進行非計算機專業(yè)計算思維教學改革,在計算思維教學內(nèi)容、實驗內(nèi)容、教學方法與手段等方面形成了一整套體系。
1.計算思維內(nèi)涵
對計算思維內(nèi)涵的解讀有很多。這些觀點包括ACM/IEEE提出的計算作為一門學科所具有的30個核心技術;周以真教授提出計算思維就是自動化抽象的過程;De Souza等認為計算思維是從自然語言描述開始,不斷對其進行精化,最后得到可計算模型或代碼;Kuster等理解的計算思維內(nèi)涵是數(shù)據(jù)分析、算法設計與實現(xiàn),以及數(shù)學建模等技術的一個綜合體。Engelbart認為計算思維的內(nèi)涵分為三個層次:使用計算機的基本能力、理解計算機系統(tǒng)的熟練能力和計算思維能力。Peter Denning提出了計算的幾大原則,從知識體系的角度對計算思維的內(nèi)涵進行了解釋。
對計算思維內(nèi)涵的不同認識,極大地影響著教學內(nèi)容的設計與實施。我們認同的計算思維的內(nèi)涵是:計算思維是一種解決問題的思維方法,這種方法將問題轉換為某個計算裝置上的信息處理過程,并尋求一種算法上的解決辦法。
對該內(nèi)涵中涉及的幾個關鍵詞的理解如下:
1)“思維方法”,指在解決問題的過程中,能利用計算機科學中的抽象、自動化、數(shù)據(jù)分析、數(shù)據(jù)建模等手段,對問題進行深刻的認識和轉化。
2)“計算裝置”,這個裝置可以是人腦、機械裝置和計算機系統(tǒng),但是最終會落實到計算機系統(tǒng)上,因此,對計算裝置的工作原理需要有較好的認識和理解,并能在理解計算裝置的過程中體會到計算思維的作用,以及計算思維對問題求解帶來的非傳統(tǒng)的解決方法。
3)“信息處理過程”,即需要理解什么是信息。對信息處理來說,一切皆是符號,對符號的不同理解和操作帶來不同的結果,即從信息論的高度來認識計算裝置所作的各種處理,以及問題求解即是一個信息轉換的過程。并且信息處理的過程還涉及信息處理系統(tǒng)的構建,能幫助學生建立系統(tǒng)觀。
4)“算法”,需要理解什么是算法、常用的算法有什么、常用的設計算法的策略有什么、如何設計算法解決一類問題等相關知識點。
2.計算思維教學內(nèi)容設計原則
基于對計算思維內(nèi)涵的理解,我們將教學中要解決的問題分解成幾個部分(如表1第1列所示),對這幾個問題的回答,就成為我們設計教學內(nèi)容的指導原則(如表1第2列所示)。
表1給出了計算思維教學內(nèi)容設計的指導原則,下面對這些原則進行詳細的解讀。
首先,培養(yǎng)思維方法更強調思維過程,思維結果則變?yōu)榇我蛩?。例如,目前教學內(nèi)容中對圖靈機的講授偏重于結構、規(guī)則表、狀態(tài)轉換等知識點,對它如何產(chǎn)生、為什么是這種結構、與馮·諾依曼體系結構之間的關系等問題涉及較少。
其次,計算思維雖然是新概念,但其涵蓋了對計算裝置的理解,因此,需要兼顧原有計算機系統(tǒng)知識點,并引入新的知識點來講授計算機問題求解技能。同時考慮授課對象的特點,雖然新生在入學時已選定了專業(yè),但是他們的知識背景來源于日常生活以及初高中各門課程。因此,在教學內(nèi)容設計時要從新生的知識背景去尋找體現(xiàn)計算思維的知識點,進行類比以幫助更好地理解和掌握計算思維。
第三,重點關注計算機問題求解能力培養(yǎng)。根據(jù)對計算思維內(nèi)涵的認識,問題求解就是一種信息處理過程,在這個過程中,可以直接利用現(xiàn)有工具和方法,也可創(chuàng)造新的方法。因此,在設計教學內(nèi)容時,需要兼顧如何利用現(xiàn)有工具和如何創(chuàng)造新工具進行問題求解這兩個方面。對前者,需要培養(yǎng)根據(jù)已有工具對問題進行分析、抽象和建模的能力,最終建立現(xiàn)有工具能處理的模型。對后者,需要培養(yǎng)利用所學的基本算法、建模方法創(chuàng)造算法或系統(tǒng)解決一類問題的能力。
第四,針對人類學習、掌握和精通新知識的過程,選取了德雷福斯技能獲取模型作為能力培養(yǎng)的指導。該模型將人對某種技能的掌握過程分為5個階段:新手、高級新手、勝任者、精通者和專家。其中新手這個角色正是“大學計算機基礎”課程計算思維的授課對象。在該模型中,對新手的培養(yǎng)原則是“新手需要規(guī)則”。即在設計教學內(nèi)容時,需要為計算思維的初學者建立何時應用何種計算思維技能的規(guī)則、何種類型的問題通常使用何種技能來解決等規(guī)則。使得初學者在進行計算問題求解時能在這些規(guī)則的指導下,逐步地解決問題,培養(yǎng)自信和計算的樂趣。
最后,計算思維的培養(yǎng)應達到什么效果。我們認為經(jīng)過課程學習和針對性培養(yǎng),學生應能理解計算思維的概念、內(nèi)涵以及計算思維對各行業(yè)帶來的影響,初步掌握常用計算機問題求解策略,能下意識地運用計算思維利用現(xiàn)有工具或創(chuàng)造工具解決問題。例如,手機中通訊錄的組織,如學生能意識到是根據(jù)符號的字典序排列,并能利用該排序將同一單位(類型)的通訊對象組織在一起,即為“下意識”地使用計算思維。
總之,我們在設計教學內(nèi)容時遵循的原則可歸納為:兼顧現(xiàn)有知識點,進行針對性拔高;引人新知識點,專注能力培養(yǎng)。
3.計算思維教學內(nèi)容示例
我們遵循上述原則,對“大學計算機基礎”課程進行設計,課程總學時為36,各知識點的學時分配、教學內(nèi)容和配套實驗活動如表2所示。
3.1兼顧現(xiàn)有知識點,進行針對性拔高
我們選取能夠體現(xiàn)計算思維的計算機系統(tǒng)的知識點進行升華,將該知識點的具體技術作為自學內(nèi)容。例如,二進制與香農(nóng)定理有很強的關聯(lián),因此,內(nèi)容選取上,從香農(nóng)定理開始,以信息的度量、信息的表示、信息的處理為主線,自然地引出二進制及其在軟硬件上的信息表示與處理。同時,我們安排了相應實驗,即利用繼電器重現(xiàn)香農(nóng)利用電路進行布爾運算的工作。
再如,從信息的表示角度可將信息看做是符號串,即一切皆是符號。以此為出發(fā)點,引出什么是計算的問題,通過對該問題的解答——即計算是信息的轉換——串聯(lián)起信息符號的解釋規(guī)則、圖靈機、馮·諾依曼體系結構等知識點。在這些知識點的介紹上,偏重于圖靈機等計算模型的產(chǎn)生過程,由其產(chǎn)生過程再現(xiàn)計算模型對人類計算活動的抽象過程,體現(xiàn)了計算思維中的抽象。通過馮·諾依曼體系結構與人根據(jù)命令自動完成任務的類比,引導學生思考如何才能讓機器進行自動計算,體現(xiàn)計算思維中自動化的思維。
對知識點的其他方面,如軟件系統(tǒng)、網(wǎng)絡系統(tǒng)等,也進行了升華,突出其中的并發(fā)、分層、虛擬化等計算思維關鍵思想,弱化知識點具體技術的介紹,如在學生理解馮·諾依曼體系結構特點和原理后,可將計算機工作原理作為自學內(nèi)容。
3.2引入新知識點,專注能力培養(yǎng)
新的知識點和能力培養(yǎng)包括兩個方面的內(nèi)容,一是如何利用現(xiàn)有工具解決問題,二是如何創(chuàng)造工具解決問題。這兩者都離不開問題建模,即將現(xiàn)實生活中的問題建模成計算機便于處理的模型。這樣的模型主要是數(shù)據(jù)模型,如數(shù)據(jù)庫中的E-R圖、面向對象建模、隊列、棧、樹和圖等。在數(shù)據(jù)建模的配套實踐環(huán)節(jié),安排了E-R圖建模與Excel、Access結合的問題求解實驗,Z3求解器的問題建模、物理學模擬器的問題建模等。
對后者,除了數(shù)據(jù)建模外,還需要引入操作建模的內(nèi)容,即在所建模型上的相應操作,其本質是結合數(shù)據(jù)結構的算法設計與實現(xiàn)。在算法設計方面,選取常用的算法,如搜索、排序、樹和圖的算法等,并以這些算法為案例進行內(nèi)容設計。如結合學生的知識背景,介紹如何用歸納法設計算法,使學生在創(chuàng)造工具解決問題時,能有規(guī)則可遵循。歸納法設計算法雖然不能解決所有的算法設計問題,但是可應用于絕大部分算法設計問題,并且其設計出來的算法基本是遞歸算法,所以歸納法可與常用算法設計策略相結合,串聯(lián)起相關知識點。
在算法的實現(xiàn)方面,選擇精簡后的函數(shù)式程序設計語言Haskell作為實現(xiàn)載體。Haskell語言簡潔,其數(shù)據(jù)結構和操作函數(shù)較為完善,采用自然的遞歸函數(shù)書寫方式(函數(shù)式程序設計相對于命令式程序設計(Raptor等)對計算機系統(tǒng)知識要求較低,關心要做什么而不是怎么做),這些優(yōu)點便于無程序設計背景的學生快速掌握該語言,對所學算法知識進行實踐和體驗。
4.實施與效果
我們在國防科學技術大學“錢學森創(chuàng)新拓展班”進行了基于設計的“大學計算機基礎”課程教學實踐。從每年入學新生中選拔30名學生組成“錢學森創(chuàng)新拓展班”,學生來自全校多個專業(yè)。在該班進行的教學改革,將會逐步推廣到全校其他專業(yè)的教學上。
在教學實踐中,我們嚴格按照安排的學時展開課堂教學,同時,每周安排2次實驗,每次2小時,由授課老師和輔導老師全程跟蹤指導,全部課程在9周內(nèi)完成。與前2年的教學效果相比,學生對計算機基礎知識思想方法層次的理解更深,以此帶動了學習計算科學的興趣。突出體現(xiàn)在以下兩方面:
1)學生在學習了圖靈機等計算模型和計算裝置的產(chǎn)生過程后,分析和思考問題的層次更高,相比以前重點關注計算機基礎知識的講授和實驗,學生通過學習新的教學內(nèi)容,不但更好地掌握了基礎知識,還能深刻理解其本質,在思維方式上有所收獲。
2)在函數(shù)式程序設計學習方面,相比于以前的Raptor工具,學生表現(xiàn)出更強的適應能力,效果很好。Raptor工具本質上還是一種命令式程序設計泛型,關心的是“怎么做”。從學生反饋,可知,在初高中學過函數(shù)后,函數(shù)式程序設計的概念很容易理解,并且編程時不需過多考慮計算機系統(tǒng)的細節(jié),更多地關注“做什么”。
5.結語
我們在計算思維教學內(nèi)容設計的原則、內(nèi)容選取、實施與效果等方面進行了一些探索和實踐。設計的教學內(nèi)容更能適應新生現(xiàn)有的知識水平,教學效果很好。但實踐中也發(fā)現(xiàn)了一些不足,如在計算思維實踐語言的選取上,我們發(fā)現(xiàn)還沒有一種語言能完全體現(xiàn)計算思維的思維特性和思維術語。函數(shù)式程序設計雖然能部分解決該問題,但還是貼近于實現(xiàn),抽象層次不夠。今后,我們?nèi)孕柙谟嬎闼季S教學上不斷探索,尋求更好的培養(yǎng)方式,設計出更能體現(xiàn)計算思維的實踐配套工具和語言,以達到更好的培養(yǎng)效果。
(編輯:彭遠紅)