徐周波,古天龍,常 亮
(桂林電子科技大學計算機與信息安全學院,廣西桂林541004)
2015年我國成為《華盛頓協(xié)議》正式會員,工程教育認證為廣大工科院校開展工程應用型人才培養(yǎng)給予了方向性指導,強調工程應用型人才必須具備對復雜工程問題的建模、設計、分析和求解的能力。隨著經濟發(fā)展方式的轉變、產業(yè)結構的轉型以及加快推進創(chuàng)新型國家的建設,2017年教育部啟動了“新工科”發(fā)展研究工作,提出著眼于未來新技術與新產業(yè)的人才需求,培養(yǎng)具有可持續(xù)競爭力的創(chuàng)新人才。課程是高校實施教育的核心,課程教學效果的好壞直接影響著人才培養(yǎng)的質量。近年來,我國一直以課程改革的方式來提高整體教育質量。2013年在深圳會議發(fā)表的“計算思維教學改革宣言”意味著新一輪大學計算機課程改革的核心導向為計算思維能力的培養(yǎng)[1]。計算思維是指運用計算機科學的基本概念來求解問題、設計系統(tǒng)和理解人類行為,包括一系列廣泛的計算機科學的思維方法[2]。在課程教學實施中培養(yǎng)學生計算思維能力、創(chuàng)新能力以及快速學習新事物能力是促進學生能力提升的有效途徑,也是近年來課程改革關注的焦點[3-4]。
作為計算機類專業(yè)核心基礎課程的離散數學不僅是計算機后續(xù)專業(yè)課程(如數據結構、操作系統(tǒng)、數據庫系統(tǒng)原理、人工智能、數字邏輯等)的重要基礎,也是培養(yǎng)學生計算思維能力的重要基礎課程。但在實際教學中,任課教師更多地關注學科知識的傳授,缺乏從專業(yè)課程體系角度和計算思維能力培養(yǎng)的角度來講授課程,致使學生錯誤地認為離散數學課程是一門純粹的數學課程,枯燥抽象,難以引起學習興趣;此外,學生即使掌握了基本概念和定理,但仍缺乏知識遷移能力,難以運用知識解決問題。
離散數學是研究計算機科學的數學理論基礎,是研究離散量及其相互關系的一門學科,包括集合論、數理邏輯、抽象代數和圖論四部分教學內容。離散數學課程在ACM和IEEE-CS制定的計算機科學教程以及我國高等學校計算機科學與技術教學指導委員會的計算機專業(yè)規(guī)范中均處于核心地位。
在課堂教學中需要使學生理解離散數學課程的重要地位,在引入離散數學教學內容之前,首先要讓學生明確學習離散數學課程的目的,即培養(yǎng)運用離散數學中的基本概念、思想和方法去構建問題的抽象模型并在此基礎上培養(yǎng)設計、分析和解決問題的能力,以及創(chuàng)新能力和快速學習新事物的能力。數字電子計算機本身是一個離散結構,只能處理離散的或離散化了的數量關系。因此,無論是計算機科學本身,還是與計算機密切相關的現代科學研究領域,都面臨著如何對離散結構建立模型或者將已用連續(xù)數量關系建立起來的模型離散化,再由計算機加以處理和實現的問題。而離散數學正是其不可缺少的理論工具,需要在課程教學過程中引入案例讓學生逐步體驗領會并學會應用。
其次要讓學生明確離散數學與專業(yè)課程體系中其他課程之間的關系,如圖1所示。如命題公式可與數據結構中的二叉樹相聯系;關系可與數據庫系統(tǒng)原理課程中的元組、表、關系代數運算等聯系在一起;抽象代數可與幺元和程序設計中賦予變量的缺省值聯系在一起;有向圖的連通性可與操作系統(tǒng)中的進程死鎖聯系在一起。使學生在學習學科知識的同時領會其在其他專業(yè)課程中的應用,激發(fā)學生對知識遷移的感性認知,促進學生計算思維能力的培養(yǎng),進而提升學生對離散數學課程的重視度和學習興趣。
作為計算機類專業(yè)核心基礎課程的離散數學,其課程教學不只是簡單地傳授給學生學科知識,更重要的是培養(yǎng)學生運用所學理論去構建問題的抽象模型并在此基礎上設計、分析和解決問題以及快速學習新事物的能力。然而,目前國內各高校普遍存在壓縮課時的現象,教學內容和教學學時的矛盾致使教師普遍在課堂教學中進行“滿堂灌”,而無暇顧及課程目標中的能力培養(yǎng),課程目標成為抽象的口號,學生學習課程之后也難以將離散數學的知識遷移到具體應用中。案例教學是一種傳統(tǒng)教學模式,通過合理有效的案例能有效減輕學生對抽象內容的認知負荷,但因其漸進式的案例分析,提高學生解決新問題的能力及知識遷移能力的效果較差。逆向教學則將學生從單純的知識接收者轉變?yōu)樘骄空撸寣W生在探究的過程中學會獨立思考[5]。因此,將案例教學法與逆向教學法相結合,有利于培養(yǎng)學生的問題求解能力和知識遷移能力。
在離散數學課程教學過程中引入逆向案例教學法,基于“提出問題—分析問題—引入概念—抽象建模—設計分析—程序設計”的教學設計思路,設計合理的涵蓋課程教學內容的教學案例。在學生分析思考如何求解問題的同時,引入所需知識點;在解決問題的過程中領會相應知識點在實際應用和后續(xù)課程中的作用,從而提升學生運用理論知識對問題進行抽象建模、設計、分析和求解的能力,通過算法設計分析,進一步提出解決方案的改進,提升學生的動手能力和知識遷移能力。
由于離散數學課程一般開設在大學第二和第三學期,為此在教學案例設計時需考慮學生已有的知識體系和接受能力,保留一定的拓展空間,使其適應于不同水平的學生。以圖論部分為例,在表1中,我們以“能力培養(yǎng)”為出發(fā)點,通過提出問題、分析問題、問題抽象建模、問題的算法設計與分析等逐步引入教學大綱中的知識點,并按逆向案例教學法從簡單到復雜設計每一個案例。培養(yǎng)一名計算機專業(yè)學生,除了培養(yǎng)其強大的“內功”之外,還必須培養(yǎng)能發(fā)揮其內功的“外功”,即既需培養(yǎng)學生具備扎實的學科基礎理論知識,又需培養(yǎng)學生具有使用現代工具解決問題的能力。因此,在每一個案例的建模求解之后,安排學生在課后去編程實現,這不僅提高了學生的計算思維能力和程序設計能力,而且也加深了學生對知識的理解,有利于提高學生的自學能力。但在離散數學課程中使用一種特定的編程語言容易干擾并分散學生對于算法問題求解核心部分的注意力。為此,選擇已被廣泛普及應用于計算機教學的Raptor(therapid algorithmicprototypingtoolfororderedreasoning,用于有序推理的快速算法原型工具)來編程實現每一個案例的算法。Raptor是一種基于流程圖的程序開發(fā)環(huán)境,通過繪制算法流程圖而不是某一具體的計算機語言來實現算法,此工具還可以將繪制的流程圖直接翻譯成具體的一種計算機語言,如C++語言、C#和Ada,便于學生對具體計算機語言的后續(xù)學習。通過此部分的實踐,不僅可以讓學生體會到算法設計對問題求解有效性的評估,而且引導學生完成了“分析問題—抽象建?!惴ㄔO計、分析—程序設計”的完整流程,培養(yǎng)了學生的計算思維能力和學習新事物的能力。
基于逆向案例教學設計思路,在課堂教學過程中按簡單到復雜將各個案例逐個引入,通過提出問題、分析問題、問題抽象建模、問題的算法設計與分析等方式逐步引入教學大綱中的知識點。例如,為引入圖論的基本概念和基本定理,從哥尼斯堡七橋問題著手提出問題,并讓學生試著解決問題。只在地圖上尋找答案可能會遺漏某些可行的方案,以此為開端,引入圖論的方法來求解該問題。首先對問題進行分析,將陸地和島嶼看成圖中的頂點,將橋看成連接圖中頂點的邊,以此引入圖論中的一些基本概念和方法。然后建立原問題的抽象模型——歐拉圖的判定,即將哥尼斯堡七橋問題轉化為在圖中尋找一條歐拉回路的問題。通過引入歐拉圖的判定定理,學生很快就能給出哥尼斯堡七橋問題無解的結論。通過對原問題的抽象表示并應用圖論中的理論進行設計、分析,讓學生切實領會理論的指導意義。通過對歐拉圖的學習,學生可以在課外完成“街道清掃”“巡邏維護”等路線設計問題,舉一反三,鞏固知識,進一步提高知識遷移能力。
大學本科階段越來越注重素質教育及創(chuàng)新能力的培養(yǎng),離散數學在培養(yǎng)學生的創(chuàng)新能力和提高學生的科研素質方面都有著重要作用。教師在傳授課本知識的同時,引入科研成果,拓寬教材中的知識點的應用延伸,可以進一步培養(yǎng)學生的探究學習能力,培養(yǎng)學生基本科研興趣和創(chuàng)新能力。
例如,在命題邏輯中,命題公式類型的講解一方面可以引入人工智能中歷史悠久的可滿足性問題(SAT)和約束可滿足問題(constraint satisfyproblem,CSP),列舉典型的SAT和CSP案例,如地圖著色問題、機器人穿衣問題、無線電鏈路頻率分配問題等,給出SAT和CSP的算法框架,并提供一些參考文獻供學生課后學習,拓寬學生視野。另一方面可以從算法自動執(zhí)行的角度來分析命題公式類型的判定算法,算法的好壞通常由時間和空間復雜度來衡量。從存儲空間角度來看,若用完全二叉樹或二維數組來存儲命題公式A=x1·x2,則存在大量重復的0和1,如圖2(a)、3(b)所示。利用圖的同構性,將完全二叉樹中所有同構的圖(子圖)合并,并利用命題公式基本定律,去掉無關命題變元,得到新的結構,稱之為二叉決策圖(binarydecision diagram,BDD)[6],如圖2(c)所示??梢?,利用離散數學中的理論知識得出的BDD結構具有更好的存儲效率。后續(xù)結合電路設計實際案例來詳述BDD在簡化和驗證電路設計中的優(yōu)越性以及在介紹經典的最短路徑算法Dijkstra后,引領學生思考可否“并行”求解多條最短路徑問題,并給出基于BDD的“并行”求解多條最短路徑算法。通過將科研反哺于教學,不僅能夠培養(yǎng)學生的邏輯思維能力、分析能力和創(chuàng)新能力,而且還易于讓學生意識并體會到知識的鞏固、提升在科研領域和生活實際中產生的重大影響。
圖2 對于命題公式A=x1·x2的存儲表示
面對當前和未來戰(zhàn)略新興產業(yè)的人才需求,離散數學作為計算機專業(yè)的核心基礎課程,在課程教學上更應側重學生的計算思維能力培養(yǎng)和可持續(xù)發(fā)展學習能力的培養(yǎng)。通過逆向案例教學法,從專業(yè)課程體系的角度和計算思維能力培養(yǎng)角度設計教學案例,在傳承課本知識的同時,注重科研反哺教學,這不僅有利于學生感性認知離散數學課程的核心地位,提升學生的學習興趣,為學生繼續(xù)后續(xù)課程學習以及從事科學研究和進行工程應用開發(fā)奠定堅實的理論基礎,也有利于培養(yǎng)學生知識遷移能力、創(chuàng)新能力和解決實際問題的能力。