張勝男,牛連強,楊德國,陳 欣
(1.沈陽工業(yè)大學(xué) 軟件學(xué)院,遼寧 沈陽 110870;2.沈陽工業(yè)大學(xué) 理學(xué)院,遼寧 沈陽 110870)
離散數(shù)學(xué)是研究離散量的結(jié)構(gòu)及其相互關(guān)系的一門學(xué)科,是由邏輯學(xué)、集合論、關(guān)系理論、圖論、抽象代數(shù)、布爾代數(shù)甚至算法設(shè)計、組合分析、離散概率和計算模型等匯集起來的一門綜合學(xué)科。由于數(shù)字電子計算機是一個離散結(jié)構(gòu),只能處理離散(化)的數(shù)量關(guān)系和數(shù)學(xué)模型,這正是離散數(shù)學(xué)的主要研究內(nèi)容。為此,《中國計算機科學(xué)與技術(shù)學(xué)科教程2002》將其界定為計算機科學(xué)與技術(shù)專業(yè)的核心基礎(chǔ)課程,美國IEEE&ACM也確定其為計算機專業(yè)的核心課程[1-2]。
應(yīng)該說,計算機及其相關(guān)專業(yè)的絕大部分課程,都直接以離散數(shù)學(xué)作為理論基礎(chǔ),也可以說是離散數(shù)學(xué)的直接運用,或者說需要依靠離散數(shù)學(xué)課程的觀點、方法和邏輯思維能力解決具體問題。因此,離散數(shù)學(xué)課程的教學(xué)目的就是要建立邏輯(數(shù)學(xué))推理能力,了解重要的離散對象、結(jié)構(gòu)與方法,能夠綜合運用合適工具(技術(shù))構(gòu)建復(fù)雜工程問題的模型及解決方法,并能分析、說明模型乃至解決方法的正確性和有效性。
從應(yīng)用型的人才培養(yǎng)視角,僅就理論基礎(chǔ)(知識)而論,目前并沒有明確的、統(tǒng)一的共識,普遍接受的觀點是重在“用”而非“研究”。對于不同的學(xué)校不同的培養(yǎng)定位不同的學(xué)生層次,容易接受的看法有二:其一是“堅實”,指有足夠了解,能夠分辨理論模型的優(yōu)劣,能夠在若干模型或方法中平衡、選擇并綜合運用,對理論的產(chǎn)生、進展、論證甚至更深的發(fā)展不必做過多了解[3];其二是“夠用”,指在同類方法中有選擇性地掌握主要方法,有針對性地構(gòu)造示例,解決對應(yīng)的問題[4]。對于大多數(shù)以應(yīng)用技術(shù)型而非技能型人才為培養(yǎng)目標(biāo)的學(xué)校,更傾向于選擇前者。
由于缺乏理論指導(dǎo)以及充分的討論、理解,即便在以應(yīng)用型為培養(yǎng)目標(biāo)的學(xué)校、專業(yè)內(nèi)部,也沒有完全達成共識,這導(dǎo)致同一門課的任課教師之間也不易統(tǒng)一觀點,包括教材選擇、教學(xué)方法、實驗、討論等幾乎所有方面。對于大多數(shù)地方高等工科院校,“具備堅實的理論基礎(chǔ)”是專業(yè)確定的應(yīng)用技術(shù)型人才培養(yǎng)目標(biāo),上述所有問題的答案都需要根據(jù)學(xué)生的具體情況和專業(yè)的人才培養(yǎng)目標(biāo)定位給出。
離散數(shù)學(xué)是公認(rèn)的理論性強及內(nèi)容多,這從文獻[5]可得到論證。因此,如何把握課程的核心主題,謹(jǐn)慎選擇工程應(yīng)用理論和應(yīng)用案例,理清各種理論的掌握程度和適合學(xué)生的自然條件基礎(chǔ)就成為課程的教學(xué)內(nèi)容改革的關(guān)鍵。
為了體現(xiàn)應(yīng)用,說明課程內(nèi)容并非僅是理論并吸引學(xué)生興趣,部分教師提倡在課程中引入程序設(shè)計內(nèi)容,比如集合運算、算法驗證等[6]。當(dāng)這種要求過多時,在一定程度上是與課程主題有偏離的。
通常,離散數(shù)學(xué)課在一、二學(xué)期開設(shè)。對于普通院校的學(xué)生,即便是程序設(shè)計技術(shù)掌握較好者,在大學(xué)里一般也僅學(xué)過C 語言程序設(shè)計課程(或一門其他語言)。鼓勵學(xué)生通過編程理解離散數(shù)學(xué)的部分內(nèi)容是有益的,對編程訓(xùn)練也有幫助。不過,這種做法常常流于“驗證”,缺少對“想”的訓(xùn)練,尤其容易使學(xué)生陷入程序設(shè)計的細(xì)節(jié)中,這不免有些“跑偏”。歸根到底,理論性強的課程其核心作用之一是促進思維的訓(xùn)練和形成,通過對一般原理的掌握建立抽象、分析、說理(論證)的能力,編程雖然有助于理解問題,但無法替代抽象思維過程。
從專業(yè)的角度看,離散數(shù)學(xué)比高等數(shù)學(xué)、線性代數(shù)等數(shù)學(xué)類課程更符合學(xué)科和專業(yè)內(nèi)涵,對領(lǐng)域內(nèi)的問題抽象更直接。引導(dǎo)學(xué)生針對實際問題選擇、抽象和運用模型是訓(xùn)練其解決復(fù)雜工程問題的前提,這比訓(xùn)練其通過編程計算出兩個集合的交集更重要。
興趣是取得成功的基礎(chǔ),不同的興趣會得到不同的結(jié)果。通過編程驗證了兩個命題的不可兼析取的結(jié)果固然能增強學(xué)生的興趣和自信心。但能通過思考理解并正確解釋,建立其與C 語言中的異或操作、通過XOR 操作支持的動畫之間的聯(lián)系,會使學(xué)生得到更高層次的興趣。通過編程驗證了Kruskal 算法的工作機理雖有幫助,但能不借助工具分析并肯定其正確性,甚至從Kruskal 算法依據(jù)邊計算最小生成樹的角度出發(fā),進而思考是否可從點的角度生成最小生成樹,可以使學(xué)生產(chǎn)生更濃烈的興趣。即便通過教師啟發(fā),引導(dǎo)其設(shè)計出這樣的算法,對創(chuàng)新訓(xùn)練也更有益處。
從本質(zhì)上說,課程的興趣引導(dǎo)來源于兩個層面:其一是驗證一些簡單運算,其二是對模型的理解和應(yīng)用。在有限的時間內(nèi),究竟引導(dǎo)學(xué)生獲得怎樣的興趣是需要教師認(rèn)真討論和斟酌的。從知識的內(nèi)容方面講,并非理論課程都要通過編程提高興趣,正如高等數(shù)學(xué)、線性代數(shù)或概率與數(shù)理統(tǒng)計等課程一樣,對頭腦的思維訓(xùn)練和編程訓(xùn)練的目標(biāo)、作用和結(jié)果均不相同,興趣點的偏移會使一門課程的核心目標(biāo)大打折扣。
選取相關(guān)領(lǐng)域中有代表性的工程應(yīng)用實踐問題作為示例、習(xí)題或思考題,消除學(xué)生總認(rèn)為學(xué)理論與實際脫節(jié)的誤解,激發(fā)其學(xué)習(xí)課程的興趣,提高解決實際問題的能力是培養(yǎng)應(yīng)用型學(xué)生需要注重的,而問題應(yīng)該是稍完整的、需要結(jié)合理論解決的,通常并非是對書中介紹方法本身的驗證。例如:
(1)在命題邏輯中,如何將自然語言翻譯成符號邏輯表達式,以及生成精確、無二義性的規(guī)范說明?
(2)在謂詞邏輯中,如何利用一階邏輯描述一個機器人的狀態(tài)與工作方式?
(3)利用一個小集合消除另一個圖(集合)的邊界、填補圖(集合)的孔洞應(yīng)如何處理?
(4)為了分析自己的朋友之間的關(guān)系,采用什么模型?能從中分析出什么結(jié)果?
這樣的示例舉不勝舉,其共同特點是:有較強的應(yīng)用背景,問題的解決不是對課本知識的簡單驗證,需要將問題抽象成稍微完整的模型,選擇適當(dāng)?shù)墓ぞ?,得到結(jié)果的好壞也需要適當(dāng)分析。
對于一個應(yīng)用問題,在有限時間內(nèi)引導(dǎo)學(xué)生能夠選擇和運用正確的模型和理論,甚至利用合適的方法和工具描述模型、算法,本質(zhì)上優(yōu)于采用程序?qū)唵芜\算的驗證。
當(dāng)然,在有限的學(xué)時內(nèi),對于新的成果、大量的相關(guān)問題及其解決方案不可能全部囊括,僅是一斑。對于很多問題,可以列出供參考的論文等素材,引導(dǎo)學(xué)生自己探索??紤]學(xué)生的實際情況,這些內(nèi)容只是作為課堂的延伸和拓展,以輔助學(xué)習(xí)和思考為主、研究為輔。因此,教師指定的材料不是專門的理論研究而是程度較淺的應(yīng)用型文章、教學(xué)論文乃至?xí)?/p>
教材是教與學(xué)的第一手資料,是決定課程教學(xué)成功與否的重要教學(xué)元素。就離散數(shù)學(xué)課程而言,有一些相當(dāng)成功的教材,如Kenneth H.Rosen 的《Discrete mathematics and its applications》[5]、左孝凌的《離散數(shù)學(xué)》和屈婉玲、耿素云的《離散數(shù)學(xué)》等。在筆者近30 年的教學(xué)實踐中,采用這些教材取得過一定成功,但也存在著諸多問題,且隨著高等教育大眾化的進程,暴露出的問題愈加明顯。概括地說,這些教材大而全,更關(guān)注理論與知識體系的完整性,而作為教師,選擇時應(yīng)充分考慮學(xué)習(xí)對象本身的情況和層次、學(xué)時的減少以及工程教學(xué)目的的變化等實實在在的因素。這些問題在湖南大學(xué)的張洪圣等教師編寫的教材中已經(jīng)部分提及。舉例說,普通工科高校在我國高校中占大多數(shù),但這些學(xué)校的學(xué)生與985、211 高校存在著很大差異,以學(xué)術(shù)研究為目標(biāo)的教材和教學(xué)內(nèi)容上的趨同不僅達不到“拔高”的目標(biāo),反而使學(xué)生過早喪失學(xué)習(xí)興趣,形成一系列不良的連鎖反應(yīng)。又如,在僅有48~64 學(xué)時的教學(xué)時間里,難以期望把類似離散概率、組合設(shè)計、形式語言、自動機等內(nèi)容都灌輸給普通院校的學(xué)生[6],這也是一些專家提倡有的放矢地編寫教材的原因[1]。
對于一般普通工科高校的計算機、軟件工程及其相關(guān)專業(yè)的教學(xué),編寫通俗、易于理解、易于自學(xué)、有一定工程應(yīng)用背景和實際問題引導(dǎo)的教材是合適的[7]。
教材不應(yīng)追求體系的完整、內(nèi)容的全面和對理論的深入探討,可以舍棄中學(xué)學(xué)過的簡單組合計數(shù)等問題,也不宜用過多篇幅討論前文提到的離散概率、組合設(shè)計、形式語言等內(nèi)容,甚至可以直接舍棄。某些數(shù)據(jù)結(jié)構(gòu)等課程中涵蓋并重點討論的算法可以簡要說明其功能,以免使內(nèi)容過于膨脹,也可以盡量避免與后續(xù)課程重復(fù)。
目前教材的內(nèi)容編排次序主要有兩種,分別是從集合論引入和從命題邏輯引入,本文建議以邏輯學(xué)而不是集合論為出發(fā)點,用命題邏輯和一階邏輯主導(dǎo)解決后續(xù)所有問題的思維,以便強化分析、解決問題的邏輯性和抽象表達能力。
在以集合論為出發(fā)點時,由于沒有符號邏輯基礎(chǔ),既難以對問題進行嚴(yán)密的邏輯分析和表達,也容易與后續(xù)內(nèi)容重復(fù)。
例如,考慮定理“對任意的集合A,有??A,即空集是任意集合的子集”。由于空集沒有任何元素,通常用反證法證明:
若??A為假,則為真。因為
事實上,要證明??A成立,只要說明為真,可以依據(jù)命題邏輯中條件聯(lián)結(jié)詞的性質(zhì)直接證明:
于是,??A成立。
這里明確使用了“條件句在前提為假則命題為真”的原理。在沒有命題邏輯準(zhǔn)備時,嚴(yán)格的邏輯推演難以進行,也無法給出直接證法。課程中的大量問題都是對一個概念是否成立的判定,而這又取決于判定描述此概念的條件命題是否為真,直接證法更有利于理解在條件為假時一個概念是滿足的。
此外,集合運算存在大量的性質(zhì)都可以由命題聯(lián)結(jié)詞的性質(zhì)直接得到,從集合論入手不僅與內(nèi)容命題邏輯重復(fù),上述推理形式難以嚴(yán)格表達,部分性質(zhì)還需要花更多的時間才能理解。
離散數(shù)學(xué)也是數(shù)學(xué),內(nèi)容抽象,其核心結(jié)論都建立在概念基礎(chǔ)上。因此,需要通過信息相關(guān)領(lǐng)域?qū)嵗?、問題引導(dǎo)、分析、評價、辨析等步驟,將概念講解透徹,避免讀者需要花過長的時間思考或借助參考書才能讀懂。
為了在有限的課時內(nèi)突出應(yīng)用性,需要總結(jié)、概括和突出解決各類問題的核心內(nèi)容,說明此類問題的實質(zhì)和解決方法的關(guān)鍵思想,而不是拘泥和追求一個具體題目的解法。否則,仍可能導(dǎo)致學(xué)生過于關(guān)注某個細(xì)節(jié)問題。
另一個值得注重的問題是精煉結(jié)果。離散數(shù)學(xué)中存在很多定理,過多羅列已有結(jié)果令人眼花繚亂,還會誤導(dǎo)學(xué)生機械記憶而不是由基本概念出發(fā)主動思考、探究和發(fā)現(xiàn)結(jié)果。同時,盡管多做習(xí)題有助于問題的理解,但需要消耗大量的時間和精力,過多的習(xí)題也容易使人恐懼并產(chǎn)生排斥心理。為此,應(yīng)盡量精簡定理與習(xí)題。
值得說明的是,一般認(rèn)為,作為教材,通常應(yīng)有一定的“余量”。對于一般工科學(xué)生采用的教材而言,建議這種“余量”不宜過大,要適度,少而精,防止篇幅膨脹,可給學(xué)生以信心。同時,可采用文獻[5]作為參考書目(該書被全球600 多所大學(xué)采用,內(nèi)容十分豐富),以引導(dǎo)學(xué)有余力的學(xué)生對知識做進一步的拓展。
面向應(yīng)用的理論課程教學(xué)改革難度較大,課程內(nèi)容調(diào)整是基礎(chǔ),其取決于學(xué)生的實際情況、教學(xué)上的要求以及人才培養(yǎng)工程化、應(yīng)用化的實際需求等諸多因素。由于課程性質(zhì)不同,每一門課程有自己的目標(biāo)和任務(wù),需要對激發(fā)學(xué)生的興趣點準(zhǔn)確把握,并采取與之相適應(yīng)的教學(xué)內(nèi)容和教學(xué)方式。對于離散數(shù)學(xué)課,興趣點的偏離既可能淡化課程的主題和目標(biāo),也有可能承擔(dān)了并非本課應(yīng)該承擔(dān)的任務(wù),從而影響對于問題抽象、建模和邏輯推理能力的訓(xùn)練。此外,在把更多的時間、思考、總結(jié)、發(fā)現(xiàn)任務(wù)交給學(xué)生時,教材也要有助于學(xué)生自主學(xué)習(xí)。教材既不能包羅萬象、求深求全,也不能只是“干巴巴”的綱,更不應(yīng)連一節(jié)中有幾個重要概念、主要方法之類的總結(jié)都由教材代替,否則,學(xué)生仍是一臺簡單理解和記憶知識的機器,解決復(fù)雜工程問題的能力很難培養(yǎng)出來。