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