蘇 慶,林華智,黎展毅
(1.廣東工業(yè)大學(xué) 計算機(jī)學(xué)院,廣東 廣州 510006;2.廣東工業(yè)大學(xué) 材料與能源學(xué)院,廣東 廣州 510006)
離散數(shù)學(xué)[1]是計算機(jī)學(xué)科,尤其是軟件設(shè)計開發(fā)類專業(yè)的重要專業(yè)基礎(chǔ)課。該課程不僅能奠定學(xué)生在專業(yè)學(xué)習(xí)中的理論基礎(chǔ),還對后續(xù)各門課程的學(xué)習(xí)形成輻射和交叉,在軟件類專業(yè)系列課程中具有舉足輕重的地位。離散數(shù)學(xué)以高等數(shù)學(xué)、線性代數(shù)等為先修課,其主要內(nèi)容包括關(guān)系論、數(shù)理邏輯、圖論、抽象代數(shù)等[2],這些內(nèi)容是后續(xù)主干專業(yè)課程,如數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計與分析、編譯原理等的重要支撐。圖1所示為離散數(shù)學(xué)專業(yè)基礎(chǔ)課與計算機(jī)專業(yè)基礎(chǔ)課程群[3]中各門后續(xù)軟件類專業(yè)課程的關(guān)系。
新工科建設(shè)[4]形勢對各軟件專業(yè)類課程包括離散數(shù)學(xué)提出明確且清晰的要求和目標(biāo),既要令學(xué)生掌握主要的方法論理論基礎(chǔ),又要著重培養(yǎng)學(xué)生將各種方法論應(yīng)用于解決實際問題的能力。因此,在離散數(shù)學(xué)專業(yè)基礎(chǔ)課的教學(xué)過程中,不能過分強(qiáng)調(diào)講解與學(xué)習(xí)公式定理本身的推導(dǎo)方法和技巧,也要注重學(xué)生掌握基礎(chǔ)方法理論后的運(yùn)用,包括從實際問題到數(shù)學(xué)模型建模的抽象過程以及求得問題解之后的編程實施。
圖1 離散數(shù)學(xué)專業(yè)基礎(chǔ)課與后續(xù)軟件類專業(yè)課程的關(guān)系
離散數(shù)學(xué)課程的內(nèi)容偏于抽象數(shù)學(xué)理論,在學(xué)習(xí)過程中,學(xué)生感覺較為枯燥和困難,教師則往往疲于講解數(shù)學(xué)理論的推導(dǎo)和證明,忽視運(yùn)用數(shù)學(xué)知識解決實際問題的能力培養(yǎng)。
計算機(jī)軟件類專業(yè)的學(xué)生學(xué)習(xí)離散數(shù)學(xué)基礎(chǔ)課是為了將其作為學(xué)習(xí)后續(xù)專業(yè)課的起點和工具,而非僅止于理論知識學(xué)習(xí)或研究。從目前的教學(xué)現(xiàn)狀看,該課程與后續(xù)專業(yè)課程脫節(jié),未起到基礎(chǔ)支撐作用,學(xué)生在學(xué)習(xí)過程中甚至學(xué)完本門課程后不能“即學(xué)即用”“以用固學(xué)”,未能體會到離散數(shù)學(xué)理論知識的重要性。一方面,這些內(nèi)容較為抽象,側(cè)重于數(shù)學(xué)理論,而且在大三或者大四的各門相關(guān)后續(xù)專業(yè)課程中才會被陸續(xù)使用到;另一方面,目前對于專業(yè)教師的授課分工也相對固定,講授離散數(shù)學(xué)專業(yè)基礎(chǔ)課的教師可能沒有承擔(dān)過數(shù)據(jù)庫、人工智能、計算機(jī)網(wǎng)絡(luò)等專業(yè)課的教學(xué)任務(wù),在授課過程中未能切合實際地將離散數(shù)學(xué)課程中的內(nèi)容與后續(xù)專業(yè)課程中的相關(guān)知識點進(jìn)行聯(lián)動講授以及應(yīng)用。
在當(dāng)前的教學(xué)實踐中,離散數(shù)學(xué)專業(yè)基礎(chǔ)課往往被視為“純”數(shù)學(xué)課程,只安排理論講授課時,基本不安排與實踐應(yīng)用相關(guān)的實驗、課程設(shè)計等,造成理論學(xué)習(xí)與實踐應(yīng)用的脫節(jié),學(xué)生理解數(shù)學(xué)基礎(chǔ)理論困難,也正因?qū)@些基礎(chǔ)知識掌握得不牢固,不能熟練運(yùn)用于實際問題的解決,極大地影響教學(xué)效果,更加不利于達(dá)到新工科形勢下的以實踐能力為導(dǎo)向的人才培養(yǎng)目標(biāo)。
編程能力是衡量計算機(jī)軟件類專業(yè)學(xué)生素質(zhì)的重要指標(biāo)之一,需要在大一和大二低年級階段通過高強(qiáng)度持續(xù)訓(xùn)練來提高。在后續(xù)課程中,幾乎所有的學(xué)習(xí)成果包括畢業(yè)設(shè)計都要以計算機(jī)軟件的形式實現(xiàn)。目前,在大多數(shù)工科院校的教學(xué)計劃中,離散數(shù)學(xué)專業(yè)基礎(chǔ)課基本不安排上機(jī)編程訓(xùn)練環(huán)節(jié),使得學(xué)生未能通過編程訓(xùn)練的方式鞏固理論知識以及持續(xù)提高編程能力,因而在學(xué)習(xí)后續(xù)課程過程中,出現(xiàn)“眼高手低”“能設(shè)計大概的解決思路,實施起來卻細(xì)節(jié)問題不斷”的問題。
要改革當(dāng)前形離散數(shù)學(xué)課程與后續(xù)專業(yè)課程教學(xué)完全分離的模式,對每個與后續(xù)課程有銜接的知識點的教學(xué)過程進(jìn)行優(yōu)化設(shè)計,教師就既要完整清晰地講授當(dāng)前知識點本身的內(nèi)容,又要重點突出銜接后續(xù)相關(guān)課程的應(yīng)用點,保持與后續(xù)課程的連貫性。
離散數(shù)學(xué)課程的四大部分內(nèi)容本身就呈現(xiàn)離散、可以互不為前提地進(jìn)行獨(dú)立學(xué)習(xí)的特點,不存在最重要或者相對次要的內(nèi)容,因而要特別要求學(xué)生對各部分必須均衡掌握,并給出清晰的學(xué)習(xí)路線。離散數(shù)學(xué)課程內(nèi)容與計算機(jī)軟件設(shè)計類主干專業(yè)課程部分重要知識點具有相當(dāng)強(qiáng)的相關(guān)性,如離散數(shù)學(xué)課程中的關(guān)系論內(nèi)容與數(shù)據(jù)庫中的關(guān)系數(shù)據(jù)庫理論和數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)關(guān)系及表示相關(guān);數(shù)理邏輯內(nèi)容與數(shù)據(jù)庫中的謂詞優(yōu)化技術(shù)、編譯原理自動機(jī)理論和語法制導(dǎo)翻譯以及人工智能中的消解原理、機(jī)器學(xué)習(xí)相關(guān);圖論內(nèi)容與數(shù)據(jù)結(jié)構(gòu)中的哈夫曼編碼、操作系統(tǒng)中的進(jìn)程調(diào)度機(jī)制、軟件工程中的軟件生命周期、計算機(jī)網(wǎng)絡(luò)中的網(wǎng)絡(luò)類型定義、算法分析與設(shè)計中的變治法以及貪婪技術(shù)相關(guān);抽象代數(shù)內(nèi)容與編譯原理中的代碼生成與優(yōu)化技術(shù)和人工智能中的遺傳算法以及模擬退火算法相關(guān)。
圖2所示為離散數(shù)學(xué)課程中關(guān)系論內(nèi)容與數(shù)據(jù)庫課程中關(guān)系數(shù)據(jù)庫內(nèi)容之間的關(guān)聯(lián)性舉例。教師在講授離散數(shù)學(xué)課程中“關(guān)系”的定義時,應(yīng)當(dāng)注意從關(guān)系的定義拓展至關(guān)系數(shù)據(jù)庫的定義,它們共同的基礎(chǔ)是卡氏積定義,互相銜接的內(nèi)容是二元關(guān)系和多元關(guān)系,令學(xué)生立即體驗到關(guān)系論是與后續(xù)課程數(shù)據(jù)庫直接相關(guān)的,提高學(xué)生對該知識點的重要性把握以及學(xué)習(xí)興趣。
圖2 關(guān)系論與關(guān)系數(shù)據(jù)庫的聯(lián)系
另外,注意促進(jìn)離散數(shù)學(xué)課程任課教師與后續(xù)專業(yè)主干課任課教師的互動交流,從后者的教學(xué)實踐中獲得反饋,針對專業(yè)課內(nèi)容中學(xué)生由于基礎(chǔ)不牢固導(dǎo)致學(xué)習(xí)困難的知識點,反推至相關(guān)基礎(chǔ)知識點在基礎(chǔ)課中的教學(xué)情況,改進(jìn)教學(xué)。在條件具備的情況下,應(yīng)當(dāng)推動專業(yè)任課教師的崗位輪動,更好地讓教師把握基礎(chǔ)課與后續(xù)課程的聯(lián)動關(guān)系,共同改善基礎(chǔ)課和后續(xù)專業(yè)課的教學(xué)效果。
離散數(shù)學(xué)輔助學(xué)習(xí)平臺[5]可以幫助學(xué)生更牢固地掌握離散數(shù)學(xué)理論知識,如廣東工業(yè)大學(xué)計算機(jī)學(xué)院研發(fā)的編程實驗可視化網(wǎng)絡(luò)平臺AnyviewC[6]。以AnyviewC為依托,學(xué)校課程組建立離散數(shù)學(xué)課程上機(jī)作業(yè)題庫,包括基礎(chǔ)課各大部分內(nèi)容,題目內(nèi)容均為重點概念、數(shù)學(xué)理論的編程實現(xiàn)。該題庫一方面可以促進(jìn)學(xué)生對離散數(shù)學(xué)理論知識的理解和運(yùn)用;另一方面可以與C語言程序設(shè)計和數(shù)據(jù)結(jié)構(gòu)前后銜接,持續(xù)鍛煉學(xué)生的編程能力,為后續(xù)軟件設(shè)計類專業(yè)課程打下牢固的基礎(chǔ)。
在AnyviewC的教師端,教師可以實時查看所帶班級的整體做題情況,也可以查看個別學(xué)生當(dāng)前的做題情況,在必要時,可以對學(xué)生程序進(jìn)行跟蹤調(diào)試、評分以及給予評語評價。AnyviewC的學(xué)生端提供豐富的程序調(diào)試方式,包括單行運(yùn)行(不進(jìn)入函數(shù))、單行運(yùn)行(進(jìn)入函數(shù))、單步運(yùn)行、運(yùn)行測試等;提供函數(shù)運(yùn)行過程中實行參數(shù)和局部變量的實時可視化圖形表示,包括一般變量、指針型變量分別在棧和堆中的圖形化直觀表示,如圖3所示。
圖3 AnyviewC學(xué)生端的局部變量可視化表示
AnyviewC作業(yè)平臺執(zhí)行嚴(yán)格的題目測試標(biāo)準(zhǔn),每次程序運(yùn)行所使用的測試數(shù)據(jù)(用例)都是隨機(jī)生成的,最大限度地杜絕學(xué)生使用硬編碼試圖通過題目測試的可能,而且對每一道題目,AnyviewC會嚴(yán)格比對學(xué)生程序的結(jié)果與系統(tǒng)程序運(yùn)行的結(jié)果。只有學(xué)生程序?qū)λ袦y試數(shù)據(jù)都得到與系統(tǒng)程序完全一致的輸出,方可視為通過該題目的測試。
本離散數(shù)學(xué)上機(jī)編程題庫一直處于邊使用邊完善的狀態(tài),具有以下特點。
(1)題庫內(nèi)容包括關(guān)系論、數(shù)理邏輯、圖論和抽象代數(shù)四大部分,包括各個重要定義、理論和方法。該題庫已經(jīng)在廣東工業(yè)大學(xué)校內(nèi)計算機(jī)學(xué)院、信息工程學(xué)院、自動化學(xué)院、物理與光電學(xué)院、國際教育學(xué)院等工科學(xué)院以及部分地方工科院校等較大范圍使用,師生反饋效果良好。
(2)優(yōu)化設(shè)計各種難度的題目,豐富題目類型。將題庫中的題目難度進(jìn)行細(xì)分設(shè)計,引導(dǎo)學(xué)生由易到難、逐步掌握理論知識并用于實際問題求解。題目類型不僅包含函數(shù)級編程題,還會逐步增加程序填空題、改錯題等類型。上述優(yōu)化都將會遵循學(xué)習(xí)規(guī)律,增強(qiáng)學(xué)生的學(xué)習(xí)興趣,有利于學(xué)生形成自主學(xué)習(xí)的良好習(xí)慣。
(3)保持嚴(yán)格的題目測試標(biāo)準(zhǔn)。所有題目的測試數(shù)據(jù)均在程序運(yùn)行過程中實時隨機(jī)生成,降低學(xué)生的作弊可能。另外,在題目的測試過程中,學(xué)生答案程序必須對所有測試數(shù)據(jù)輸入都得到完全正確的輸出,方可視為通過該題目,力圖使學(xué)生養(yǎng)成嚴(yán)謹(jǐn)求學(xué)的習(xí)慣。
此外,AnyviewC編程實驗可視化網(wǎng)絡(luò)平臺的可視化能力將會得到進(jìn)一步的提升,如針對離散集合測試數(shù)據(jù)的特點,改進(jìn)AnyviewC編程實驗可視化網(wǎng)絡(luò)平臺對這類數(shù)據(jù)關(guān)系的實時可視化表達(dá),將程序運(yùn)行過程白盒化[7],進(jìn)一步提高程序調(diào)試的效率。
在離散數(shù)學(xué)專業(yè)基礎(chǔ)課每一部分內(nèi)容的講授后,安排與實踐應(yīng)用相結(jié)合的設(shè)計性實驗,并且在整門課程的后半段視學(xué)生水平和課時數(shù)安排綜合多部分聯(lián)合應(yīng)用的稍大規(guī)模實驗。這些實驗的目的是一方面對學(xué)生已學(xué)理論知識進(jìn)行鞏固,另一方面逐步提高學(xué)生將理論知識應(yīng)用于解決較復(fù)雜問題的水平。
表1列出了離散數(shù)學(xué)課程的部分設(shè)計性實驗安排,這些設(shè)計性實驗難易度不一,鑒于課時規(guī)模,即使不可能全部在單一學(xué)年內(nèi)使用,也可以每年輪換并且逐步優(yōu)化,降低學(xué)生積累抄襲的可能性,進(jìn)一步提升教學(xué)效果。
實施書面考試、上機(jī)作業(yè)和實驗評價相結(jié)合的多元考核方式,令學(xué)生重視實踐環(huán)節(jié),進(jìn)一步提升教學(xué)效果。對于計算機(jī)軟件類專業(yè)的學(xué)生來說,其專業(yè)能力的高低主要體現(xiàn)于軟件設(shè)計成果的好壞,因此平時的編程實驗表現(xiàn)應(yīng)當(dāng)在期末成績中占有較大的比重。在改革過程中,分兩部逐步實施多元考核。
表1 分設(shè)計性實驗安排
(1)平時成績的核定以上機(jī)作業(yè)和設(shè)計性實驗完成情況為主要依據(jù)。一方面,對于個別學(xué)生,充分使用AnyviewC網(wǎng)上作業(yè)系統(tǒng)的教師點評功能,增加抽查互動環(huán)節(jié)并提高互動效率;另一方面,對全部學(xué)生的做題情況進(jìn)行分析統(tǒng)計,評估整體學(xué)習(xí)進(jìn)度以及重點、難點攻關(guān)情況。
(2)將平時成績占期末總評成績的比重至少提高至50%,在條件允許時,期末考試采用上機(jī)考試的形式。在確保題目難度和覆蓋面一致的情況下,對考試題目進(jìn)行隨機(jī)抽取,動態(tài)生成考試試卷。
上述改革措施在廣東工業(yè)大學(xué)計算機(jī)學(xué)院連續(xù)實施4個學(xué)年,改革方案的實施也獲得國家留學(xué)基金委及廣東省科研和教學(xué)改革項目的支持,取得較為明顯的教學(xué)成果,使得部分學(xué)生扭轉(zhuǎn)了離散數(shù)學(xué)課程與實踐應(yīng)用聯(lián)系不大的錯誤認(rèn)識,整體提升了計算機(jī)軟件專業(yè)的教學(xué)質(zhì)量,響應(yīng)了新工科的建設(shè)要求。
在離散數(shù)學(xué)課程教學(xué)中強(qiáng)調(diào)該基礎(chǔ)課程與后續(xù)課程的聯(lián)系之后,學(xué)生在學(xué)習(xí)過程中對課程內(nèi)容的興趣度增大,并且對該基礎(chǔ)課程的重要性有了進(jìn)一步的認(rèn)識。從考試成績看,平均分和最高分段人數(shù)都有所提升,同時不及格人數(shù)有所下降。更為重要的是,不少學(xué)生的數(shù)學(xué)思維能力得到較好的訓(xùn)練,奠定了在各級ACM競賽、機(jī)器人競賽中獲得良好成績的堅實基礎(chǔ)。
在計算機(jī)軟件專業(yè)中,編程能力始終是衡量學(xué)生專業(yè)素質(zhì)高低的重要考量指標(biāo)。在計算機(jī)軟件主干課程設(shè)置中,離散數(shù)學(xué)課程位于程序設(shè)計語言課程之后、數(shù)據(jù)結(jié)構(gòu)課程之前。在離散數(shù)學(xué)中設(shè)置上機(jī)編程實踐環(huán)節(jié),可以使學(xué)生充分鞏固程序設(shè)計基本功,為數(shù)據(jù)結(jié)構(gòu)課程的學(xué)習(xí)打下堅實的基礎(chǔ)。據(jù)數(shù)據(jù)結(jié)構(gòu)的專業(yè)教師反饋,由于近兩年學(xué)生的編程基礎(chǔ)較為牢固,因此在數(shù)據(jù)結(jié)構(gòu)課程的初始階段無需再耗時復(fù)習(xí)程序設(shè)計課程的內(nèi)容,課程內(nèi)容的編排得到了進(jìn)一步優(yōu)化。
以廣東工業(yè)大學(xué)為例,該校是目前廣東省本科招生規(guī)模最大的本科高等院校,既肩負(fù)保證高考錄取率的任務(wù),又承擔(dān)著向社會各行各業(yè)輸送具備相當(dāng)實踐應(yīng)用能力、可快速上手工作的畢業(yè)生的任務(wù)。在學(xué)校的計算機(jī)、自動化、信息、數(shù)學(xué)、物理、機(jī)電等學(xué)院中,每年需要學(xué)習(xí)軟件類專業(yè)課程的學(xué)生超過4 000人,這就要求在工科院校的教學(xué)過程中要精講多練,多培養(yǎng)學(xué)生運(yùn)用理論知識解決實際問題的能力。
實現(xiàn)離散數(shù)學(xué)基礎(chǔ)課與后續(xù)課程的組合銜接優(yōu)化,其意義并不限于計算機(jī)大類專業(yè)的本科教學(xué)質(zhì)量提升,還在于可以提供電子電氣信息大類與計算機(jī)技術(shù)相關(guān)專業(yè)基礎(chǔ)課程及實驗的教學(xué)改革借鑒,更可以為理工科更大范圍的程序設(shè)計公共課提供優(yōu)質(zhì)教學(xué)實驗資源共享。在接下來的階段,需要進(jìn)一步完善和豐富教學(xué)手段,鞏固改革成果,將改革的經(jīng)驗逐步推廣至兄弟院校。