蔣運(yùn)承,詹捷宇,馬文俊
(華南師范大學(xué) 計(jì)算機(jī)學(xué)院,廣東 廣州 510631)
離散數(shù)學(xué)[1]是計(jì)算機(jī)專業(yè)(計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)工程等)本科生必修的基礎(chǔ)課程之一,為多門后續(xù)課程(如數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計(jì)與分析、編譯原理、數(shù)據(jù)庫原理、人工智能等)提供數(shù)學(xué)基礎(chǔ),可見離散數(shù)學(xué)對計(jì)算機(jī)專業(yè)本科生來說是一門非常重要、非常基礎(chǔ)的課程。然而,作為一門較為理論的課程,離散數(shù)學(xué)同其他理論性課程一樣,在教學(xué)過程中遇到一個非常麻煩的問題:部分學(xué)生沒有太大的興趣。筆者基于近年來離散數(shù)學(xué)相關(guān)課程(包括離散數(shù)學(xué)、數(shù)理邏輯、計(jì)算理論等)方面的教學(xué)經(jīng)歷(包括本科生和研究生)對上述問題形成的原因進(jìn)行了一些分析和總結(jié)。
從教師的角度來看,部分教師的教學(xué)方法和手段以及教學(xué)理念可能存在一些問題。關(guān)于教學(xué)方法和手段,由于授課時間很緊,而課程內(nèi)容多,課堂上不可能講授所有的內(nèi)容,因此教師在授課時只能講授一些基本內(nèi)容,剩下的內(nèi)容留給學(xué)生課后自學(xué)或作為作業(yè)。關(guān)于教學(xué)理念,教師往往強(qiáng)調(diào)的是離散數(shù)學(xué)作為一門理論性課程,是為今后學(xué)習(xí)其他課程打基礎(chǔ),掌握好教材內(nèi)容最為關(guān)鍵,至于離散數(shù)學(xué)具體有什么用、如何將離散數(shù)學(xué)與實(shí)際生活結(jié)合起來,授課時涉及甚少。
從學(xué)生的角度來看,部分學(xué)生在腦海中或許存在這樣一個觀念:學(xué)習(xí)離散數(shù)學(xué)用處不大,至少對就業(yè)沒有直接用處。這種觀念的形成也是基于一些現(xiàn)實(shí)的情況,如相比計(jì)算機(jī)應(yīng)用方向,理論計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生(特別是研究生)招收數(shù)量較少,理論計(jì)算機(jī)科學(xué)方向的畢業(yè)生就業(yè)的難度較大。在這種觀念的影響下,學(xué)生很難投入熱情學(xué)習(xí)離散數(shù)學(xué),并且離散數(shù)學(xué)部分內(nèi)容較為抽象、枯燥,導(dǎo)致學(xué)生沒有學(xué)習(xí)離散數(shù)學(xué)的激情。
造成這種現(xiàn)象,責(zé)任并不全在教師和學(xué)生。目前高校的離散數(shù)學(xué)教材設(shè)計(jì)、教學(xué)計(jì)劃、考試安排具有較為固定的模式,作為任課教師,必須按照既定計(jì)劃授課,否則無法完成教學(xué)任務(wù),靈活性較差。作為學(xué)生,考試內(nèi)容是固定的,他們必須按照計(jì)劃掌握教學(xué)大綱上的每個知識點(diǎn),否則很難通過考試。
計(jì)算思維[2-3]建立在計(jì)算過程的能力和限制之上,由人由機(jī)器執(zhí)行。它是每個人的基本技能,不僅僅屬于計(jì)算機(jī)科學(xué)家,解析能力的培養(yǎng)應(yīng)當(dāng)是每個學(xué)生不僅掌握閱讀、寫作和算術(shù),還要學(xué)會計(jì)算思維。計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念求解問題、設(shè)計(jì)系統(tǒng)和理解人類的行為,涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動。
計(jì)算機(jī)科學(xué)是計(jì)算的學(xué)問——什么是可計(jì)算的,怎樣去計(jì)算[4]。計(jì)算思維直面機(jī)器智能的不解之謎:什么人類比計(jì)算機(jī)做得好?什么計(jì)算機(jī)比人類做得好?最基本的問題是什么是可計(jì)算的,因此計(jì)算思維具有如下特性[2]:概念化,不是程序化。像計(jì)算機(jī)科學(xué)家那樣思維意味著遠(yuǎn)不止進(jìn)行計(jì)算機(jī)編程,還能夠進(jìn)行多個層次上的抽象思維。
是根本的,不是刻板的技能。根本技能是每一個人為了在現(xiàn)代社會中發(fā)揮職能所必須具備的,而刻板技能意味著機(jī)械的重復(fù)。
是人的,不是計(jì)算機(jī)的思維方式。計(jì)算思維是人類求解問題的一條途徑,但決非要使人類像計(jì)算機(jī)那樣思考。
數(shù)學(xué)和工程思維的互補(bǔ)與融合。計(jì)算機(jī)科學(xué)在本質(zhì)上源自數(shù)學(xué)思維,又從本質(zhì)上源自工程思維。
是思想,不是人造物。以物理形式到處呈現(xiàn)并時時刻刻觸及人的生活的不只是我們生產(chǎn)的軟件、硬件等人造物,更重要的是被用以接近和求解問題、管理日常生活、與他人交流和互動的計(jì)算概念。
面向所有的人,所有地方。當(dāng)計(jì)算思維真正融入人類活動的整體以致不再表現(xiàn)為一種顯式之哲學(xué)的時候,它就將成為一種現(xiàn)實(shí)。
可以看出,計(jì)算思維的重要性在于它關(guān)系到對計(jì)算機(jī)科學(xué)的轉(zhuǎn)型與發(fā)展之基本認(rèn)識[5]。對高校計(jì)算機(jī)專業(yè)教學(xué)工作者來說,計(jì)算思維可以提供一個全新的教學(xué)視角[6]:一個與目前計(jì)算機(jī)專業(yè)課程教學(xué)有本質(zhì)不同的教學(xué)模式,以克服當(dāng)前高校計(jì)算機(jī)專業(yè)教學(xué)中面臨的各種難以解決的問題,這也說明培養(yǎng)和提高學(xué)生計(jì)算思維的能力是時代賦予的不可推卸的責(zé)任。
離散數(shù)學(xué)是一門理論性課程,不能被學(xué)生直接應(yīng)用于軟件開發(fā)(或編程),如何說服學(xué)生認(rèn)可學(xué)習(xí)離散數(shù)學(xué),或許是離散數(shù)學(xué)課程教學(xué)工作者不可回避的重要問題,解決這個問題首先要有一個正確的教學(xué)理念。
目前學(xué)生在學(xué)習(xí)離散數(shù)學(xué)時很難發(fā)現(xiàn)它的有用之處,主要原因是高校一般在大一下學(xué)期或大二上學(xué)期開設(shè)離散數(shù)學(xué)課程,而大一下學(xué)期或大二上學(xué)期的學(xué)生對計(jì)算機(jī)的認(rèn)識主要停留在操作和簡單編程層面,即對于計(jì)算機(jī)編程,主要學(xué)習(xí)初級的編程語言,如C語言、Visual Basic、Python等,即使學(xué)習(xí)了C++或Java等主流編程語言,也沒有進(jìn)行大型軟件開發(fā)的實(shí)踐,這樣學(xué)生在離散數(shù)學(xué)和編程語言(特別是軟件開發(fā)實(shí)踐)之間確實(shí)找不出關(guān)聯(lián)。學(xué)生學(xué)習(xí)編程語言,可以用它編寫自己感興趣的程序,有立竿見影的效果,非常有成就感,自然學(xué)習(xí)興趣濃厚,但對于離散數(shù)學(xué),特別是數(shù)理邏輯、代數(shù)結(jié)構(gòu)、集合論等內(nèi)容,學(xué)生學(xué)習(xí)的是抽象的符號和定理,再加上離散數(shù)學(xué)的一些內(nèi)容(如數(shù)理邏輯中的可靠性和完備性、代數(shù)結(jié)構(gòu)中群和環(huán)的性質(zhì)等)相對抽象、枯燥,部分學(xué)生因?yàn)殡y以理解而沒有興趣。因此,要從計(jì)算思維的層面培養(yǎng)學(xué)生、講授離散數(shù)學(xué)課程,讓學(xué)生認(rèn)可學(xué)習(xí)離散數(shù)學(xué),并且非學(xué)好不可,從而激發(fā)學(xué)生學(xué)習(xí)離散數(shù)學(xué)的興趣和激情。
目前離散數(shù)學(xué)課程的教材一般包括4部分經(jīng)典內(nèi)容:數(shù)理邏輯、集合論、代數(shù)結(jié)構(gòu)和圖論,有些教材還把數(shù)論、組合數(shù)學(xué)甚至概率論等內(nèi)容也納入教材。離散數(shù)學(xué)教材內(nèi)容的選擇除了必須包含數(shù)理邏輯、集合論、代數(shù)結(jié)構(gòu)和圖論以外,還可以考慮適當(dāng)增加部分計(jì)算理論的內(nèi)容,至于數(shù)論、組合數(shù)學(xué)和概率論,因?yàn)橐话愕母咝6奸_設(shè)了相應(yīng)的選修課,所以建議不納入離散數(shù)學(xué)教材。由于教材內(nèi)容很多,主要講解一些基本概念和性質(zhì),因此還可以引入一些簡單的實(shí)例進(jìn)行輔助說明,但受課堂教學(xué)時間限制,教材上不可能大篇幅地闡述應(yīng)用實(shí)例,為了激發(fā)學(xué)生的學(xué)習(xí)興趣,有必要編寫一本離散數(shù)學(xué)課外讀物教材,專門詳細(xì)闡述離散數(shù)學(xué)每個內(nèi)容的實(shí)際應(yīng)用,如數(shù)理邏輯與人工智能、群論與軟件工程、集合論與信息檢索、圖論與社交網(wǎng)絡(luò)等,也就是說,離散數(shù)學(xué)授課需要兩本教材:離散數(shù)學(xué)教材和離散數(shù)學(xué)課外讀物教材。
由于同一本教材要面對不同層次的學(xué)生,因而對每一部分(數(shù)理邏輯、集合論、代數(shù)結(jié)構(gòu)、圖論、計(jì)算理論、實(shí)際應(yīng)用課外讀物)都要精心組織,除了必講內(nèi)容外,還要有一些選講內(nèi)容,由任課教師根據(jù)實(shí)際情況靈活授課。內(nèi)容選取上,課外讀物教材的內(nèi)容相對容易組織,對每個知識點(diǎn)可以選取幾個不同難度的實(shí)例,難度大的實(shí)例可以作為選講內(nèi)容,如對于數(shù)理邏輯,可以選取定理自動證明、電路設(shè)計(jì)、智能決策、模型檢測、軟件測試等實(shí)際應(yīng)用;對于圖論,可以選取TSP(旅行商、貨郎擔(dān))問題、最優(yōu)路徑、社交網(wǎng)絡(luò)、圖數(shù)據(jù)等實(shí)際應(yīng)用。離散數(shù)學(xué)授課教材主要包括5個部分:數(shù)理邏輯、集合論、代數(shù)結(jié)構(gòu)、圖論和計(jì)算理論,每個部分都要圍繞它的核心內(nèi)容展開。數(shù)理邏輯的核心內(nèi)容是可靠性和完備性,集合論的核心內(nèi)容是自然數(shù)、基數(shù)和序數(shù),代數(shù)結(jié)構(gòu)的核心內(nèi)容是群和環(huán)的性質(zhì),圖論的核心內(nèi)容是各種圖的性質(zhì),計(jì)算理論的核心內(nèi)容是可計(jì)算性(可判定性)。
以數(shù)理邏輯和計(jì)算理論為例,教材內(nèi)容要講清楚數(shù)理邏輯中的可靠性和完備性,需要引入數(shù)理邏輯的一些基本概念和預(yù)備知識,一般都是圍繞命題邏輯和謂詞邏輯展開,甚至還包括邏輯程序設(shè)計(jì)、模態(tài)邏輯、時態(tài)邏輯等方面的基本知識,由于內(nèi)容很多,因此很少詳細(xì)講解數(shù)理邏輯的應(yīng)用。如果按照現(xiàn)在的教學(xué)模式,這樣的教材確實(shí)是好教材,因?yàn)槟転閷W(xué)生提供豐富的數(shù)理邏輯方面的基礎(chǔ)知識。從筆者自身體會來說,數(shù)理邏輯的學(xué)習(xí)對筆者開展的項(xiàng)目研究(智能軟件理論與技術(shù)、語義計(jì)算、數(shù)據(jù)科學(xué)等)具有極大的好處,可以說,沒有好的數(shù)理邏輯基礎(chǔ),現(xiàn)在的研究工作便很難深入進(jìn)行,但這種體會是從事項(xiàng)目研究后才有的,如何讓大一或大二的學(xué)生認(rèn)識到數(shù)理邏輯確實(shí)有用是需要考慮的問題。
首先,應(yīng)讓學(xué)生閱讀離散數(shù)學(xué)課外讀物教材(含多個通俗易懂的數(shù)理邏輯方面的實(shí)際應(yīng)用案例);其次,要有適應(yīng)計(jì)算思維的教材。這樣的教材除了包含傳統(tǒng)數(shù)理邏輯課程教材的內(nèi)容外,還應(yīng)該講解數(shù)理邏輯中一些簡單的實(shí)際應(yīng)用。一種比較原始的想法是可以將目前許多人工智能課程中的內(nèi)容,如知識表示、歸結(jié)原理、定理證明、專家系統(tǒng)等,以一種易于理解的方式融入數(shù)理邏輯教材;也可以將其他相關(guān)內(nèi)容,如程序驗(yàn)證、模型檢測、軟件測試等,融入數(shù)理邏輯教材。具體的融合方式以人工智能方面的內(nèi)容為例,在講解每個數(shù)理邏輯知識點(diǎn)后,可以把相關(guān)的實(shí)際應(yīng)用放在后面介紹,如在講完合取范式和析取范式后可以引入歸結(jié)原理的介紹,并給出實(shí)際應(yīng)用(如平面幾何的定理證明)。值得注意的是,所有實(shí)際應(yīng)用應(yīng)該能串聯(lián)成一個整體,也就是說,通過教材上的實(shí)例,學(xué)生能了解數(shù)理邏輯在人工智能領(lǐng)域中是如何具體得到應(yīng)用的。
計(jì)算理論方面,要講清楚計(jì)算理論的核心內(nèi)容可計(jì)算性(可判定性),也需要引入計(jì)算理論的一些基本概念,包括有限自動機(jī)、正則語言、下推自動機(jī)、上下文無關(guān)語言、圖靈機(jī)等,進(jìn)而講述圖靈可計(jì)算(可判定)。這些內(nèi)容有一定的難度,由于授課內(nèi)容有限,教材主要闡述基本概念和性質(zhì),很難詳細(xì)講解這些內(nèi)容背后的應(yīng)用。跟組織數(shù)理邏輯的內(nèi)容相似,在講解每個計(jì)算理論知識點(diǎn)后,可以把相關(guān)的實(shí)際應(yīng)用放在后面介紹,如講解完有限自動機(jī)后可以適當(dāng)介紹自動機(jī)在服務(wù)計(jì)算、行為描述、密碼學(xué)與信息安全、模式識別等方面的簡單應(yīng)用;闡述完下推自動機(jī)后可以給出它在程序編譯等方面的實(shí)際應(yīng)用。
這樣的教材最明顯的好處就是讓學(xué)生知道離散數(shù)學(xué)是有用的,同時也大大擴(kuò)充學(xué)生的知識面。計(jì)算思維能力的培養(yǎng),首先需要廣闊的知識面。如果大一學(xué)生能了解一些人工智能領(lǐng)域的知識,如知識表示與推理、機(jī)器學(xué)習(xí)、深度學(xué)習(xí),他們可能會將遇到的問題進(jìn)行抽象建模并進(jìn)行智能化處理(從算法設(shè)計(jì)到軟件實(shí)現(xiàn)),或者研發(fā)一些智能化的游戲小程序等。
首先是課堂教學(xué)。課堂教學(xué)采用多媒體和黑板相結(jié)合的手段,離散數(shù)學(xué)的內(nèi)容很多,特別是增加實(shí)際應(yīng)用知識后,如何在有限的時間里講授較多知識是授課教師需要面對的問題。
大學(xué)生具備了一定的自學(xué)和實(shí)踐能力,因此可以采用啟發(fā)式的教學(xué)方法,也就是說,在課堂上簡明扼要地講授離散數(shù)學(xué)每個知識點(diǎn)的基本概念,重點(diǎn)講授重要結(jié)論(定理)的證明思路,并且針對一個知識點(diǎn)要詳細(xì)講授結(jié)論的證明過程,最后給學(xué)生介紹該知識點(diǎn)的應(yīng)用。值得注意的地方是重要結(jié)論的證明思路和證明過程一定要講透徹,因?yàn)檫@部分內(nèi)容對學(xué)生來說很難、很抽象,部分學(xué)生自學(xué)有相當(dāng)?shù)碾y度,并且沒有太大的興趣。至于知識點(diǎn)的應(yīng)用,應(yīng)該以啟發(fā)為主,大概介紹該實(shí)際應(yīng)用的背景和現(xiàn)狀以及大體的應(yīng)用思路,因?yàn)閷W(xué)生一般對應(yīng)用感興趣,可以讓學(xué)生課后完成。例如,當(dāng)講述一階邏輯可以用來做知識表示時,首先可以向?qū)W生簡單介紹傳統(tǒng)知識表示的方法(如框架、語義網(wǎng)絡(luò)、規(guī)則、概念圖、劇本等)以及當(dāng)前新的知識表示方法(如描述邏輯、本體、知識圖譜等),然后以引導(dǎo)的方式為學(xué)生介紹一階邏輯如何具體應(yīng)用于知識表示,并給出一些實(shí)際生活中的實(shí)例。值得一提的是,可以適當(dāng)采用一些最新的教學(xué)模式組織教學(xué)(翻轉(zhuǎn)課堂式教學(xué)),如將有難度的知識點(diǎn)錄制成視頻,形成在線課程(或慕課),學(xué)生可以在課前事先自學(xué),課堂上教師適當(dāng)講解并進(jìn)行討論。
啟發(fā)式教學(xué)或翻轉(zhuǎn)課堂式教學(xué)確實(shí)可以培養(yǎng)和提高學(xué)生計(jì)算思維的能力,因?yàn)橛?jì)算思維本身是思想,不是人造物。也就是說,在課堂上給學(xué)生重點(diǎn)講授的是學(xué)習(xí)方法、關(guān)鍵結(jié)論,而不是所有知識點(diǎn),特別是當(dāng)實(shí)際應(yīng)用知識被介紹后(如人工智能、信息安全、信息檢索、模式識別等),學(xué)生可以了解計(jì)算機(jī)是如何“思考”的;有了學(xué)習(xí)方法(思想)后,學(xué)生可以在課后自學(xué)感興趣的知識點(diǎn)。
其次是課后教學(xué)。由于離散數(shù)學(xué)是理論性課程,因此目前大部分課后教學(xué)一般是通過布置習(xí)題作業(yè)實(shí)現(xiàn),并且每個學(xué)生做的作業(yè)是相同的。這樣做至少可以讓學(xué)生在課后鞏固課堂上所學(xué)的知識點(diǎn),但現(xiàn)實(shí)情況也有不好的一面,存在部分學(xué)生抄襲的現(xiàn)象,而主要原因還是這些學(xué)生對離散數(shù)學(xué)興趣不大,不愿意在課程上花時間。
計(jì)算思維采用抽象和分解來迎戰(zhàn)龐雜的任務(wù)或者設(shè)計(jì)巨大復(fù)雜的系統(tǒng),是數(shù)學(xué)和工程思維的互補(bǔ)與融合。很明顯,為了培養(yǎng)學(xué)生計(jì)算思維的能力,課后除了為學(xué)生布置一定的傳統(tǒng)習(xí)題(特別是證明題)以外,還應(yīng)該讓學(xué)生組成3~5人的小團(tuán)隊(duì),以團(tuán)隊(duì)的形式進(jìn)行一些應(yīng)用性習(xí)題的練習(xí),如在數(shù)理邏輯方面,課后可以要求學(xué)生利用一階邏輯來形式化表示一些平面幾何定理,并用計(jì)算機(jī)自動證明一些定理;還可以要求學(xué)生掌握一些自動推理工具,結(jié)合專家系統(tǒng)應(yīng)用,了解如何利用一階邏輯構(gòu)建知識庫,并利用推理工具進(jìn)行自動推理;對于基礎(chǔ)好的學(xué)生,可以讓他們課后開發(fā)一個自動推理工具,實(shí)現(xiàn)教材上的一些理論(如合取范式、析取方式、子句、置換、合一等),因?yàn)閷?shí)現(xiàn)這些推理工具可以用C語言編程,基礎(chǔ)好的學(xué)生是完全有可能做到的。圖論方面可以要求學(xué)生編程實(shí)現(xiàn)TSP、最優(yōu)路徑、社交網(wǎng)絡(luò)等實(shí)際問題。
最后,需要強(qiáng)調(diào)的是教師課后仍然還有任務(wù),除了上面提到的錄制講解知識點(diǎn)的小視頻以外,還要在在線課程網(wǎng)站上跟學(xué)生互動,一方面幫助學(xué)生解決課后遇到的各種問題(包括理論問題和技術(shù)問題),另一方面還要主動為學(xué)生提供一些跟授課進(jìn)度相同的實(shí)際問題,組織學(xué)生網(wǎng)上討論交流。
計(jì)算思維是每個大學(xué)生需要具備的基本技能,培養(yǎng)學(xué)生計(jì)算思維的能力是時代賦予高校計(jì)算機(jī)課程教學(xué)工作者不可推卸的責(zé)任。要培養(yǎng)學(xué)生計(jì)算思維的能力,方法之一就是要對目前計(jì)算機(jī)專業(yè)課程的教學(xué)內(nèi)容進(jìn)行整理,并采用與計(jì)算思維相適應(yīng)的教學(xué)模式。我們針對離散數(shù)學(xué)課程教學(xué)中存在的問題,從計(jì)算思維的角度提出了一種新的教學(xué)模式,包括教學(xué)理念、教材編寫和教學(xué)過程。由于計(jì)算思維是一門新興的研究課題,如何從計(jì)算思維的角度進(jìn)行教學(xué)是一個值得深入探討的重大課題。