1 離散數學教學現狀分析
離散數學課程是計算科學與技術專業的一門必修課程之一[1]. 該課程以研究離散量的結構和相互間的關系為主要目標。 課程內容包含計算機科學技術和工程實踐中需要的數學基礎和理論方法,在計算機很多課程中都有著廣泛的應用,例如程序設計語言、算法分析與設計、人工智能及其應用、數據庫原理、計算機組成原理和計算機網絡等課程[2]. 通過該課程的學習,學生不僅能夠掌握如何對給定問題建立抽象模型的方法,培養學生的抽象思維和邏輯推理能力,而且為學生在學習計算機的其他課程奠定必要的數學基礎。 該課程具有內容多、定義多,符號多、理論性強和高度抽象等特點,學生在學習過程中普遍認為該課程是一門難學的課程。 主要原因有以下幾個方面[3]:
(1)離散數學主要包括四部分內容:數理邏輯篇、集合論篇、代數結構篇、圖論篇。 這4部分內容彼此獨立,自成體系。 學生在學習過程中很難發現他們之間的聯系,從而不明確學習該課程的目的。
(2)離散數學的一個重要特征是形式化和符號化。 這種形式化模型中包含大量的字母、符號、公式、圖形等。 而在教學過程中,該課程的課時普遍較少,課堂上往往要講授很多定義、定理和證明,學生在短時間內無法理解這些抽象概念,只能死記硬背,認識不到這些抽象模型的實質含義。
(3)由于課程內容的形式化模型較多,理論性強,學生在學習時往往將其作為一門數學課程學習,不清楚其與計算機科學之間的聯系,對這門課程在計算機專業中的地位和作用認識不夠。 而大部分內容沒有實驗環節,學生看不到這些形式模型的實際應用效果,因此不能體會該課程在計算機科學中的具體應用,缺乏相應的學習興趣。
(4)在實際教學過程中,大多數教師按照傳統的教學方法進行教學。 首先介紹符號、定義、定理、證明等理論基礎,然后利用例題加深學生對基礎知識的理解,最后布置課后作業進行課外強化。 然而這種教學方式對培養學生的計算思維能力存在很大弊端,其沒有結合計算機專業注重應用能力培養的特點。 從而學生在學習過程中不能很好地將理論知識和計算機的實際應用聯系起來。
盡管離散數學中的內容獨立性強,但從抽象角度分析,這些內容之間存在一定的聯系。 這些內容的教學目的是一致的,即訓練學生的抽象思維能力,利用離散結構構建問題的抽象模型,并在此基礎上建立解決問題的算法。 為克服傳統教學中遇到的問題,很多高等院校已經在離散數學教學中引入一些實驗教學,但是這些實驗課時較少,且大多側重于基礎理論的驗證性。 同時各個教學內容之間缺少相互聯系[4-5]. 本文將對離散數學的內容體系進行分析,以任務驅動教學法為基礎,探討離散數學中實驗教學的實驗設計方法。
2 離散數學的內容體系
離散數學的教學內容中每一部分各自成體系,學生在學習過程中很難發現各個部分之間的聯系,進而學生不清楚學習該課程的目的。 雖然離散數學包含的內容多,但其各個知識點都蘊含抽象這個計算思維的核心思想。 我們可以將離散數學各個部分的基本定義、性質和定理抽象出來,可以觀察到其各個部分之間的內在聯系和區別。 如圖1所示,其給出離散數學整個教學內容的知識網絡,體現出數理邏輯、集合論、代數系統和圖論4個部分之間的內在聯系。 實際上,集合論、數理邏輯和圖論在抽象角度上都可以看成是一種具體的代數系統。 基于這個思想,在每一章內容的課程引入和教學內容過程中,都要將該知識網絡呈現給學生,使得學生時刻牢記其中的聯系,這樣有利于學生更好地體會各個內容之間的聯系,從而能夠對教學內容中的由字母、符號、公式、圖形等組成的形式化概念有更加深刻的體會,更加有利于培養學生對問題的抽象思維能力,進一步提高計算思維能力。
3 實驗教學設計
在傳統的離散數學教學中很少設置實踐課程,學生對理論知識的理解只存在抽象階段,很難將理論知識與實際應用聯系起來,從而學生在學習過程中很難體會到該課程與計算機科學之間的聯系,特別是與實踐應用的聯系。 由此,為增加學生的實際應用能力,必須改變傳統的教學模式。 在理論講授之后,適當地增加實踐教學內容,更加有利于學生對理論知識的掌握和認識。 在實踐教學過程中可以基于任務驅動的教學模式,以問題為載體,培養學生發現問題、分析問題和解決問題的能力。 根據理論課程的教學內容,將知識點融入實踐教學中,設計不同的實驗任務,然后將這些實驗任務分配給學生,讓學生自己進行資料的收集、問題的分析以及信息的處理,使學生能夠實際感受和體驗到知識產生的過程,這一過程正是自動化思想的體現。 在離散數學的教學過程中增加實驗教學環節,將理論知識與計算機程序設計課程有機集合,進而建立一個較完善離散數學實踐課程體系,有利于培養學生的綜合應用能力,將所學知識綜合起來找到解決問題的方法。
任務驅動教學模式改變傳統的教與學的結構,使學生成為學習的主體。 將理論課程上的知識點融入到一個總體任務或多個子任務中。 每節課上課時,教師首先要把這堂課的任務布置給學生。 學生通過對任務進行分析、討論,明確任務所涉及到的知識點,然后讓學生進行自主探索、相互學習,利用有利的學習資源,找到解決問題的方法,進而完成指定的任務。
在設置實驗教學過程中,一方面要加強學生對理論知識的掌握,設計一些基礎知識的驗證性實驗課。 另一方面,為培養學生的創新能力,需要拓展理論課堂教學,作為理論課教學的補充和加強。 因此,需要從基礎性實驗和綜合實驗兩個方面開展實踐教學。 為加強學生對基本定義、基本性質及其計算方法的掌握,可以將這些知識點融入到基礎性實驗中,使學生加深對抽象概念的理解和認識。 在基礎性實驗教學過程中,可以采用學生個人獨立完成的形式,教師給每個學生分配一個任務,學生在教師指導下,在規定的時間節點內提交任務,完成相關的實驗。 基礎實驗部分主要是理論知識的驗證性實驗。 上機實驗應側重基本知識和基本理論的掌握,以及相應編程思想的掌握和運用,讓學生在C、Java 或其他語言環境下完成這些實驗,做到理論與應用相結合。 選取部分點設計的基礎性實驗如表1所示:
綜合性實驗一般需要多人共同完成,因此可以采用小組合作的方式進行。 教師通過創設一定的情境將任務呈現給小組學生,小組學生根據自身的學習特點和對知識的掌握程度進行合理分工,小組學生通過團結合作,對任務進行分析、資料收集、實驗的實施等過程,最終在規定時間節點提交任務。 綜合性實驗對學生的綜合素質要求很高,且其實驗結果需要一定的時間進行實驗、分析和評價,因此綜合性實驗未必需要在課堂上完成,可以留在學生的課后拓展實驗。 在實驗過程中,學生始終處于學習的主體地位,通過學生的自主學習和積極探究,提高學生對學習的興趣,增加自主學習的能力和知識的綜合運用能力。 在設計綜合實驗時,需要注意以下幾點:
首先,綜合實驗是基礎性理論知識的拓展。 例如:如果理論課教學的內容是一般性的抽象概念,那么在實驗教學中應安排一些具體的對象,以加深對抽象概念的認識和理解[6].
其次,為加強學生的創新意識與創新能力,綜合性實驗應圍繞離散數學在計算機科學中的應用來設計實驗,提高計算機專業學生的數學素質和能力。 將離散數學中的各分支相結合,適當地安排一些創新實驗項目[7].
最后,積極鼓勵學生使用多種程序設計語言完成實驗,這樣有利于加強學生對各種程序設計語言的理解。 同時,將高度抽象的離散數學理論與編程等結合起來,能夠極大地提高學生學習離散數學的積極性,增強解決實際問題的信心。 表2中給出一些綜合性實驗的內容。
通過對離散數學的課程教學中融入實驗教學,很大程度上能夠提高學生對教學內容的理解,同時也提高學生利用所學到的程序設計語言、數據結構和算法分析等內容解決實際問題的能力。 目前,與實驗教學相關的教材和指導書已經出版,如由傅彥編寫,高等教育出版社出版的《離散數學實驗與習題解析》,是國家級精品科學《離散數學》主講教材《離散數學及其應用》的配套實驗與習題指導叢書。 這些教材的出現表明在離散數學中開設實驗課程已經得到一定的重視,并在教學中取得很好的教學效果。
4 總結
本文主要基于任務驅動教學方法,對傳統的離散數學教學中存在的問題進行分析,梳理離散數學中的各個章節的內在聯系,將實踐教學環節融入到離散數學的教學過程中。 其目的是提高學生對離散數學課程的認識,對離散數學科學在計算機科學中的地位有更加深刻的了解,為以后的學習和科學研究打下一定的理論基礎。