离散数学是以离散(即非连续)对象的结构和关系为研究内容的数学若干分支的总称。
由于计算机科学与技术学科的根本问题是“能行”问题。而凡是与“能行性”有关的讨论大都与构造性数学有关,都是处理离散对象的。因此,“能行性”这个学科根本问题决定了计算机本身的结构和它能处理的对象都是离散型的,连续型问题也首先必须在转化为离散型问题以后才能被计算机处理。所以计算机科学与技术本质上是一门离散数学技术。
一名有过10多年开发经验的老程序员曾说过:“所有程序的本质就是逻辑。技术你已经较好地掌握了,但只有完成逻辑能力的提高,你才能成为一名职业程序员。打一个比方吧,你会十八般武艺,刀枪棍棒都很精通,但就是力气不够,所以永远都上不了战场,这个力气对程序员而言就是逻辑能力(其本质是一个人的数学修养,注意,不是数学知识)。”
数学可以锻炼我们的思维能力,可以帮助我们解决现实中的问题。
计算机科学与技术学科各专业的学生学习离散数学,一方面为学习各专业课程作必要的数学准备,另一方面,培养和训练他们掌握使用数学语言或符号系统处理问题的基本方法,提高学生的逻辑推理能力、抽象思维能力和形式化思维能力。计算机科学与技术学科植根于数学,从而数学是必须掌握的基础知识;另外如果我们已经拥有牢固的数学基础,则能大大提高我们本身的逻辑推理能力、抽象思维能力和形式化思维能力,从而今后在学习任何一门计算机科学与技术的专业课程时,都不会遇上任何思维理解上的困难。
从理论计算机科学(算法、可计算性、计算复杂性、程序正确性证明、自动编程等), 计算机软件(数据结构、操作系统、数据库、软件工程等),人工智能(自动推理、机器学习)和系统结构设计(网络通讯、分布式和并行计算系统)到计算机应用(模式识别,图像处理,信号处理,数据的压缩、编码和加密)无一不以离散数学为基础。它在计算科学中的地位如同微积分在物理学和工程技术中的地位一样。
离散数学课程是计算机专业的一门非常重要的基础核心课程,主要内容为:数理逻辑(命题演算、谓词演算)、集合论(集合、关系),组合数学初步(基本计数原理、排列组合)、代数系统(代数系统的基本概念、半群、群、格与布尔代数),图论初步(图的基本概念、图的连通性、特殊图:欧拉图与哈密顿图、树、平面图与两部图)。通过该门课程的学习,学生将掌握一些基本的能够描述离散对象的结构, 了解这些离散结构的特性、离散结构之间的关系,掌握一些基本的计数技巧,帮助学生掌握命题逻辑和谓词逻辑的概念、基本理论以及应用逻辑的理论建模,为进一步学习后续课程打下必要基础。