《离散数学》既是现代数学的分支,也是计算机及其相关专业的核心基础课程,以研究离散量的结构及其关系为主要目标。它不仅是《数据结构》、《编译原理》、《操作系统》、《数据库系统》等专业核心课的数学基础,而且在培养学生严谨的分析推理能力、逻辑思维能力方面发挥重要作用,为以后从事计算机科学研究和软件按开发,打下良好的基础。
我们学校的人才培养目标为应用型本科,与研究型重点大学的本科生不同,我们学校的本科生对深奥而枯燥的理论并无太浓厚的兴趣,相反思维活跃、性情开朗活泼、动手能力强。因此对实践性的课程有着浓厚的兴趣:比如软件类的程序设计、网页设计,硬件类的电子设计,学生能够直观的看到自己的工作成果,越做越带劲。
但《离散数学》是纯理论性的,内容繁杂、抽象程度高,学生无法直观的看到学习成果,也缺乏趣味性。因此不少学生会提出疑问:学习《离散数学》有什么用?
实际上,离散数学的很多知识,都能直接应用在计算机体系结构、硬件电路设计、程序设计、软件工程方法、数据库设计、计算机网络等诸多方面。然而现行的很多《离散数学》教材并没有直接提及这些应用,导致很多情况下的教学是纯理论性的,学生缺乏学习兴趣。本人在《离散数学》教学过程中也遇到同样的问题,因此在总结多年《离散数学》教学经验的基础上,提出以应用为导向的教学方案。下面从教学内容和教学方法两个方面做一些探讨:
1、教学内容向实际应用靠拢
在教学内容上,除了讲授书本的理论知识之外,还要穿插一些与实际应用结合的例子。比如,在命题逻辑中,命题连接词:否定﹁、合取∧、析取∨,与程序设计中的逻辑运算符:非 !、与 &&、或 ||,有很大的共性。命题逻辑运算符遵循德摩根律:。
﹁ (P ∨ Q)<=> ﹁ P ∧﹁ Q
﹁ (P ∧ Q)<=> ﹁ P ∨﹁ Q
学生在此之前已经学过程序设计,正好可以温故而知新,以 C 语言为例,若要判断输入的字符是数字,可以用以下代码:
(1) if(ch>=’0’&&ch<=’9’)
{ ...... }
若要判断输入的字符不是数字,可以用以下代码:
(2) if(!(ch>=’0’&&ch<=’9’))
{ ...... }
也可以用以下代码:
(3) if(ch<’0’||ch>’9’)
{ ...... }
可以明显的看出:
第 1 段代码相当于 P ∧ Q
第 2 段代码相当于﹁ (P ∧ Q)
第 3 段代码相当于﹁ P ∨﹁ Q
正好可以对照前面的德摩根律。如果上述几部分内容结合起来讲解,不但让学生能够将新的知识和已有的知识融会贯通,而且让学生明白这些知识用在什么地方。
命题逻辑运算,不但应用到诸如程序设计等软件领域,而且应用到电路设计等硬件领域。例如合取运算符∧,相当于两个开关电路的串联,只有两个开关电路都闭合的情况下,整个电路才能导通,这也对应着,只有 P 和 Q 都为真的情况下,P ∧ Q 的值才是真。相对应的是,析取运算符∨,相当于两个开关电路的并联,只要有一个开关电路闭合了,整个电路就可以导通,这也对应着,只要 P 或 Q 当中有一个为真,P ∨ Q 的值就是真。融会贯通的讲解上述内容,可以使学生理解“命题逻辑”这部分知识在计算机软件和硬件领域的应用,还可以触类旁通的掌握程序设计、算法分析、数字逻辑、数字电路等相关的专业知识。
2、教学方法围绕实际应用展开
“图论”这一部分内容复杂,如果一开始就罗列图的各方面概念,讲述各种定理,只会让学生望而却步。考虑到部分学生喜欢旅游,部分学生迷于游戏,可以从旅行问题和游戏中的迷宫问题来入手。事先借助“百度地图”之类的电子地图,划定一个景点,让学生探索、讨论旅游线路,寻找最佳的旅行路径;也可以借助游戏中的迷宫,让学生进行类似的探讨;还可以介绍当前比较流行的“电子导航”,并指出目前电子导航存在的缺陷,比如没有考虑拥堵问题。然后再讲解图的基本概念和相关的理论知识,这样就能让学生带着学习目标,欣然的接受“图论”。
讲解完“图论”的理论部分之后,又回到前面引入的旅行问题和迷宫问题,让学生思考如何用学到的图论知识解决这些问题。然后介绍一些简单的图算法,让学生自己编写一些简单的电子地图、导航系统、迷宫程序,这样就能让学生直观的看到自己的学习成果,提高学习兴趣。并且将这些作为平时成绩的考核,对学生起到激励、督促的作用。
总之,以应用为导向的《离散数学》教学方案,在激发学生的学习兴趣、巩固学习效果方面,起到很大的作用。传统的纯数学方式的理论教学,已不能适应当前学科的发展,尤其对于应用型本科人才的培养,更是如此。以上是个人对《离散数学》教学经验的总结,不足之处还望同行指教。