柴玉梅
摘要:離散數(shù)學(xué)作為計(jì)算機(jī)專業(yè)的基礎(chǔ)理論核心課程,在計(jì)算機(jī)科學(xué)中具有極其重要的地位。但離散難教、離散難學(xué)也是師生共同的心聲。針對(duì)計(jì)算機(jī)專業(yè)的大一學(xué)生,提出一種案例教學(xué)法,將離散數(shù)學(xué)與程序設(shè)計(jì)完美結(jié)合,使學(xué)生初步認(rèn)識(shí)到學(xué)習(xí)離散數(shù)學(xué)的重要性,增強(qiáng)學(xué)習(xí)興趣,提高教學(xué)效率。
關(guān)鍵詞:離散數(shù)學(xué);程序設(shè)計(jì);教學(xué)改革;三人表決器
中圖分類號(hào):G642? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)26-0129-02
Abstract: As the core course of basic theory of computer science, discrete mathematics plays an important role in computer science. But it is difficult to teach and also difficult to learn, which is the common acknowledgement of teachers and students. Focused on the freshmen of computer majors, a case teaching method is proposed in this paper. The program combines discrete mathematics and programming perfectly so that students can realize the importance of learning discrete mathematics. As a result, it will enhance the students learning interest and improve teaching efficiency.
Key words: discrete mathematics; programming; teaching reform; three-person voting machine
1 引言
離散數(shù)學(xué)是計(jì)算機(jī)科學(xué)中基礎(chǔ)理論的核心課程。它是研究離散量的結(jié)構(gòu)及相互關(guān)系的數(shù)學(xué)學(xué)科。該課程為數(shù)據(jù)結(jié)構(gòu)、編譯原理、操作系統(tǒng)、數(shù)據(jù)庫(kù)原理和人工智能等后續(xù)課程的學(xué)習(xí)打下堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ),同時(shí)也有利于提高學(xué)生的抽象思維、邏輯思維和計(jì)算思維能力[1]。但離散數(shù)學(xué)概念繁多、理論性強(qiáng)、抽象度高的特點(diǎn)使學(xué)生感覺(jué)該課抽象、難懂、沒(méi)用[2-3]。結(jié)合學(xué)生的學(xué)情,探討一種針對(duì)大一學(xué)生的、與程序設(shè)計(jì)相結(jié)合的離散數(shù)學(xué)教學(xué)改革方案。
2 我校離散數(shù)學(xué)教學(xué)現(xiàn)狀
離散數(shù)學(xué)是我校計(jì)算機(jī)專業(yè)的學(xué)位課之一,開(kāi)設(shè)在大一下學(xué)期,教學(xué)計(jì)劃為48學(xué)時(shí),教學(xué)內(nèi)容包括三部分:數(shù)理邏輯、關(guān)系、圖論。長(zhǎng)期以來(lái),離散數(shù)學(xué)一直采用“定義—定理—證明—習(xí)題”的教學(xué)模式,致使學(xué)生感覺(jué)該課晦澀難懂、枯燥無(wú)味。學(xué)生常常為應(yīng)付學(xué)分不得已而學(xué)之,造成“學(xué)生痛、教師傷”的尷尬局面。
此外,對(duì)于只接觸了高級(jí)語(yǔ)言程序設(shè)計(jì)一門專業(yè)課的大一學(xué)生,往往還看不出離散數(shù)學(xué)與計(jì)算機(jī)學(xué)科的直接聯(lián)系及其在計(jì)算機(jī)領(lǐng)域中的實(shí)際應(yīng)用,“離散數(shù)學(xué)無(wú)用論”在學(xué)生中呼聲很高。
針對(duì)此情形,筆者曾試圖將離散數(shù)學(xué)在計(jì)算機(jī)中的實(shí)際應(yīng)用介紹給學(xué)生。比如等價(jià)類用于軟件測(cè)試;等價(jià)關(guān)系用于粗糙集;Huffman編碼用于文件壓縮等。但這些知識(shí)對(duì)于大一的學(xué)生而言還是比較遙遠(yuǎn)與抽象的,對(duì)增強(qiáng)學(xué)生的學(xué)習(xí)興趣效果也不甚明顯。
近年來(lái),筆者在多年教學(xué)經(jīng)驗(yàn)的基礎(chǔ)上,立足我校學(xué)生的實(shí)際情況(只學(xué)習(xí)過(guò)程序設(shè)計(jì)語(yǔ)言),結(jié)合教學(xué)內(nèi)容設(shè)計(jì)實(shí)驗(yàn)案例,可讓學(xué)生更容易體會(huì)到離散數(shù)學(xué)在計(jì)算機(jī)領(lǐng)域,特別是程序設(shè)計(jì)中的應(yīng)用價(jià)值。下面結(jié)合三人表決器的實(shí)驗(yàn)案例加以具體介紹。
3融入程序設(shè)計(jì)的離散數(shù)學(xué)教學(xué)案例設(shè)計(jì)
以課后作業(yè)的方式將任務(wù)布置給學(xué)生:設(shè)計(jì)并編程實(shí)現(xiàn)一個(gè)3人表決器。設(shè)三個(gè)裁判分別為A、B、C,有兩個(gè)及以上裁判同意,則通過(guò)表決;否則,未通過(guò)表決。同意與否通過(guò)鍵盤輸入,可以用0、1或T、F 表示。再進(jìn)一步,如果A是主裁判,有一票否決權(quán)。又該如何設(shè)計(jì)?
通過(guò)此案例,旨在讓學(xué)生體會(huì)離散數(shù)學(xué)在程序設(shè)計(jì)中發(fā)揮著重要作用。
3.1簡(jiǎn)化程序設(shè)計(jì)
從學(xué)生的作業(yè)中發(fā)現(xiàn)如圖1所示的程序片段來(lái)實(shí)現(xiàn)A沒(méi)有一票否決權(quán)。
就要求實(shí)現(xiàn)的功能而言,此程序沒(méi)有問(wèn)題。但能不能簡(jiǎn)化判斷條件呢?以圖1中的①②為例,如果寫成命題公式,①可以表示為:[A∧B∧C] ,②可以表示為:[A∧B∧?C] 。①與②綜合在一起即為[(A∧B∧C)∨(A∧B∧?C)],對(duì)該式可以用分配律進(jìn)一步化簡(jiǎn)為[(A∧B)]。按照這個(gè)思路,上述8個(gè)判斷條件可以簡(jiǎn)化為[(A∧B)∨(A∧C)∨(B∧C)]。據(jù)此,上述程序片段就可以優(yōu)化為圖2所示的代碼。
3.2開(kāi)辟程序設(shè)計(jì)新思路
在實(shí)現(xiàn)A具有一票否決權(quán)的表決器時(shí),學(xué)生的通常做法是:當(dāng)A未行使一票否決權(quán)時(shí),通過(guò)循環(huán)語(yǔ)句,對(duì)表決結(jié)果進(jìn)行累加求和,當(dāng)結(jié)果大于等于2時(shí),通過(guò)表決;否則未通過(guò)。經(jīng)過(guò)筆者提示,有學(xué)生用真值表進(jìn)行分析。如圖3所示。
真值表的前四行轉(zhuǎn)化成程序設(shè)計(jì)語(yǔ)言很簡(jiǎn)單,不贅述。當(dāng)A未行使一票否決權(quán)時(shí),該生分析了圖3中的第5行,發(fā)現(xiàn)只有當(dāng)B與C同時(shí)為0時(shí),結(jié)果為0,于是寫出了圖4所示的程序片段。
程序片段3與程序片段4是否等價(jià)呢?很容易通過(guò)德摩根律證明。程序片段3中的條件(b==0 && c==0)的否定為?。╞==0 && c==0),與?。╞==0) || ?。╟==0)等價(jià),進(jìn)而與(b==1 || c==1)等價(jià),即為程序片段4的表達(dá)方式。
3.3驗(yàn)證程序設(shè)計(jì)的縝密性
值得一提的是,有位馮同學(xué)寫了如圖6所示的程序片段來(lái)實(shí)現(xiàn)A具有一票否決權(quán)的表決器,但不確定自己的判定是否縝密。實(shí)際上,通過(guò)構(gòu)造[A∧(B∨C)]的真值表,發(fā)現(xiàn)它與圖3是一致的,故可以肯定圖6的程序片段是完全正確的。
3.4實(shí)施效果
作業(yè)講解交流后,收到了學(xué)生的一些反饋信息,現(xiàn)摘錄部分與大家共享?!巴ㄟ^(guò)這次作業(yè)才發(fā)現(xiàn)離散和編程的關(guān)聯(lián)這么大,以前一直認(rèn)為這兩門課程沒(méi)有什么聯(lián)系?!薄半x散可以用編程表示,編程體現(xiàn)著離散,這次作業(yè)展示,讓我看到了大家的代碼,異曲同工,又體現(xiàn)著個(gè)人的特點(diǎn)”?!拔易铋_(kāi)始只知道離散數(shù)學(xué)是計(jì)算機(jī)科學(xué)的基礎(chǔ)。但對(duì)于離散和計(jì)算機(jī)專業(yè)之間有怎樣的關(guān)系,我還是不清楚。如何把離散數(shù)學(xué)與編程聯(lián)系起來(lái),我還是不太明白。通過(guò)這次交流,我才明白離散數(shù)學(xué)能夠指導(dǎo)編程去解決實(shí)際問(wèn)題?!边€有的學(xué)生表示,今后會(huì)投入更多的精力到離散數(shù)學(xué)的學(xué)習(xí)中,用離散的知識(shí)充實(shí)編程的內(nèi)容。
學(xué)生的積極反饋信息表明此方案收到了預(yù)期的效果,也激勵(lì)筆者今后挖掘更多、更好的教學(xué)案例來(lái)滿足學(xué)生的這種求知欲。
4 結(jié)束語(yǔ)
通過(guò)上述3人表決器教學(xué)案例的實(shí)施效果,不難看出:將程序設(shè)計(jì)與離散數(shù)學(xué)理論相結(jié)合的教改方法,使大一學(xué)生對(duì)離散數(shù)學(xué)與計(jì)算機(jī)專業(yè)的相關(guān)性有了一定的認(rèn)識(shí),激發(fā)了學(xué)生的學(xué)習(xí)興趣,取得了初步的預(yù)期效果。因此,筆者將繼續(xù)深入研究離散數(shù)學(xué)各部分內(nèi)容與程序設(shè)計(jì)整合模塊的設(shè)計(jì)項(xiàng)目,以提升學(xué)生分析問(wèn)題和解決問(wèn)題的能力,滿足應(yīng)用型人才培養(yǎng)的需求。
參考文獻(xiàn):
[1] 左孝凌, 李為鑑, 劉永才.離散數(shù)學(xué)[M].上海:上??茖W(xué)技術(shù)文獻(xiàn)出版社,1981.
[2] 潘志剛,葉綠,向堅(jiān).基于實(shí)踐能力培養(yǎng)的離散數(shù)學(xué)教學(xué)改革探索[J].浙江科技學(xué)院學(xué)報(bào),2009,21(4):373-376.
[3] 劉明.結(jié)合科研實(shí)際的離散數(shù)學(xué)教學(xué)方法探索[J].科教導(dǎo)刊(下旬),2018(2):107-108.
[4] 張劍妹,李艷玲,吳海霞.結(jié)合計(jì)算機(jī)應(yīng)用的離散數(shù)學(xué)教學(xué)研究[J].數(shù)學(xué)學(xué)習(xí)與研究,2014(1):2-4.
[5] 林睦綱,鄭光勇,陳堅(jiān)禎.應(yīng)用型本科院校離散數(shù)學(xué)教學(xué)改革與探索[J].衡陽(yáng)師范學(xué)院學(xué)報(bào),2017,38(6):124-127.
【通聯(lián)編輯:王力】