参考书:1.蔡英、刘均梅编著,离散数学学习指导书,西安电子科技大学出版社,2005。 2.左孝凌等编著,离散数学,上海科技出版社,1982。 3.耿素云、屈婉玲、王捍贫编著,离散数学教程,北京大学出版社,2003。 八、课程中英文简介 离散数学是现代数学的一个重要分支,是以研究离散量的结构和相互间的关系为主要目 标,其研究对象是有限个或可数个元素。离散数学)内容主要包括:命题逻辑,谓词逻辑 集合、映射与运算,二元关系,图论,以及几类特殊的图,通过该课程可以培养学生的抽象 思维和缜密的概括能力,为从事计算机的应用提供必要的描述工具和理论基础,为后续课程 的学习打下良好的基础。 Discrete mathematics is an important branch of modem mathematics.Its main goal is to study the structure of discrete variables and the relationship among them.The contents include propositional logic.predicate logic.set.mapping and operation.binary relationships.and some special classes of graph theory.graph.After studying this course.it will improve abstract thinking and outining ability,provided theoretical basis for describing the tools for the application in the computer. 《面向对象技术(C++)》 课程编号 0BH04902 学分 3.5 总学时 56 实验/上机学时 实验:20学时 课程名称 面向对象技术(C+) 英文名称 Object-Oriented Technologies(C++) 课程类别 必修 适用专业 计算机大类,信息与计算科学专业 执笔人 丁漾,马旭平 审核人 计算机学院审核小组 先修课程 程序设计基础(C语言),C语言程序设计A 一、课程的地位与作用 本课程是大类基础课,是多门后续课程及实践环节的先修课程,在大类平台的建设和发 展中占有重要的基础地位 通过本课程的学习,可以为学生进一步学习《数据结构与算法(C)》等后续专业课程打 下坚实的面向对象程序设计基础。本课程的任务是使学生理解面向对象的思想理念,建立面 向对象编程的思维方式,深刻领会面向对象程序设计的风格和特征,掌握使用C+进行软件 开发的方法。具体包括类和对象的概念、封装、运算符重载、继承和派生、多态与虚函数以 及C+语言面向对象程序设计的思想等内容。 13
13 参考书:1. 蔡英、刘均梅编著,离散数学学习指导书,西安电子科技大学出版社,2005。 2. 左孝凌等编著,离散数学,上海科技出版社,1982。 3. 耿素云、屈婉玲、王捍贫编著,离散数学教程,北京大学出版社,2003。 八、课程中英文简介 离散数学是现代数学的一个重要分支,是以研究离散量的结构和相互间的关系为主要目 标,其研究对象是有限个或可数个元素。离散数学(1)内容主要包括:命题逻辑,谓词逻辑, 集合、映射与运算,二元关系,图论,以及几类特殊的图,通过该课程可以培养学生的抽象 思维和缜密的概括能力,为从事计算机的应用提供必要的描述工具和理论基础,为后续课程 的学习打下良好的基础。 Discrete mathematics is an important branch of modern mathematics. Its main goal is to study the structure of discrete variables and the relationship among them. The contents include: propositional logic, predicate logic, set, mapping and operation, binary relationships, and some special classes of graph theory, graph. After studying this course, it will improve abstract thinking and outlining ability, provided theoretical basis for describing the tools for the application in the computer. 《面向对象技术(C++)》 课程编号 0BH04902 学 分 3.5 总 学 时 56 实验/上机学时 实验:20 学时 课程名称 面向对象技术(C++) 英文名称 Object-Oriented Technologies(C++) 课程类别 必修 适用专业 计算机大类,信息与计算科学专业 执 笔 人 丁濛,马旭平 审 核 人 计算机学院审核小组 先修课程 程序设计基础(C 语言),C 语言程序设计 A 一、课程的地位与作用 本课程是大类基础课,是多门后续课程及实践环节的先修课程,在大类平台的建设和发 展中占有重要的基础地位。 通过本课程的学习,可以为学生进一步学习《数据结构与算法(C)》等后续专业课程打 下坚实的面向对象程序设计基础。本课程的任务是使学生理解面向对象的思想理念,建立面 向对象编程的思维方式,深刻领会面向对象程序设计的风格和特征,掌握使用 C++进行软件 开发的方法。具体包括类和对象的概念、封装、运算符重载、继承和派生、多态与虚函数以 及 C++语言面向对象程序设计的思想等内容
二、课程对应的毕业要求 针对计算机科学与技术专业: 1.1能够将数学与物理知识、方法与思想,用于计算机工程过程中所需要的抽象思维和 逻辑分析: 2.2能够将离散数学、程序设计、面向对象技术、数据结构与算法、软件工程等计算机 软件基础原理,用于复杂计算机工程问题的识别与表达,以获得有效结论: 5.1能够针对复杂计算机工程问题,开发、选择与使用恰当的技术、资源、现代工程工 具和信息技术工具,用于解决复杂计算机工程问题,并能够理解其局限性。 针对软件工程专业: 1.1能够将数学、自然科学的方法与思想,用于软件工程过程中所需要的抽象思维和逻 辑分析: 2.2能够将离散数学、程序设计、面向对象技术、数据结构与算法、软件工程等计算机 软件方面的基础原理,用于复杂软件工程问题的识别与表达,以获得有效结论: 4.】能够基于软件工程的相关技术,就复杂软件工程问题中涉及的局部性问题进行研 究,并设计相关的实验方案,对实验结果与数据进行分析,并对实验数据进行合理的解释: 5.1能够开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,用于解 决复杂软件工程问题,并能够理解其局限性: 针对网络工程专业: 1】能够将数学与物理知识、方法与思想,用于网络工程过程中所需要的抽象思维和罗 辑分析: 2.2能够将离散数学、程序设计、面向对象技术、数据结构与算法、软件工程等计算机 软件基础原理,用于复杂网络工程问题的识别与表达,以获得有效结论: 5.1开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,用于解决复 杂网络工程问题,并能够理解其局限性: 针对信息与计算科学专业: 1.知识与技能:具有扎实的数学基础,掌握信息与计算科学的基本理论和基本方法, 具备熟练应用计算机(包括语言、工具及专用软件)的技能进行算法设计和数值分析的能力, 具备计算机应用系统的开发和维护的能力,能够运用数学方法和自然科学知识建立数学模 型,利用计算机科学技术解决复杂工程问题。 2.间题分析:通过数学类专业课程和计算机课程的学习,具备严密的逻辑思维能力, 能够运用所学的数学理论、数值计算方法和计算机软件开发技能,识别、表达、并通过文献 研究、分析复杂工程问题,以获得有效结论。 3.开发与研究能力:受到科学研究的初步训练,了解信息与计算科学理论、技术与应 用的新发展,具有较强的知识更新、技术跟踪与创新能力。能够基于信息科学与计算科学理 论并采用科学方法对复杂问题进行研究,包括数学建模、数值策划、分析与解释数据,通过
14 二、课程对应的毕业要求 针对计算机科学与技术专业: 1.1 能够将数学与物理知识、方法与思想,用于计算机工程过程中所需要的抽象思维和 逻辑分析; 2.2 能够将离散数学、程序设计、面向对象技术、数据结构与算法、软件工程等计算机 软件基础原理,用于复杂计算机工程问题的识别与表达,以获得有效结论; 5.1 能够针对复杂计算机工程问题,开发、选择与使用恰当的技术、资源、现代工程工 具和信息技术工具,用于解决复杂计算机工程问题,并能够理解其局限性。 针对软件工程专业: 1.1 能够将数学、自然科学的方法与思想,用于软件工程过程中所需要的抽象思维和逻 辑分析; 2.2 能够将离散数学、程序设计、面向对象技术、数据结构与算法、软件工程等计算机 软件方面的基础原理,用于复杂软件工程问题的识别与表达,以获得有效结论; 4.1 能够基于软件工程的相关技术,就复杂软件工程问题中涉及的局部性问题进行研 究,并设计相关的实验方案,对实验结果与数据进行分析,并对实验数据进行合理的解释; 5.1 能够开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,用于解 决复杂软件工程问题,并能够理解其局限性; 针对网络工程专业: 1.1 能够将数学与物理知识、方法与思想,用于网络工程过程中所需要的抽象思维和逻 辑分析; 2.2 能够将离散数学、程序设计、面向对象技术、数据结构与算法、软件工程等计算机 软件基础原理,用于复杂网络工程问题的识别与表达,以获得有效结论; 5.1 开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,用于解决复 杂网络工程问题,并能够理解其局限性; 针对信息与计算科学专业: 1. 知识与技能:具有扎实的数学基础,掌握信息与计算科学的基本理论和基本方法, 具备熟练应用计算机(包括语言、工具及专用软件)的技能进行算法设计和数值分析的能力, 具备计算机应用系统的开发和维护的能力,能够运用数学方法和自然科学知识建立数学模 型,利用计算机科学技术解决复杂工程问题。 2. 问题分析:通过数学类专业课程和计算机课程的学习,具备严密的逻辑思维能力, 能够运用所学的数学理论、数值计算方法和计算机软件开发技能,识别、表达、并通过文献 研究、分析复杂工程问题,以获得有效结论。 3. 开发与研究能力:受到科学研究的初步训练,了解信息与计算科学理论、技术与应 用的新发展,具有较强的知识更新、技术跟踪与创新能力。能够基于信息科学与计算科学理 论并采用科学方法对复杂问题进行研究,包括数学建模、数值策划、分析与解释数据,通过
信息综合得到合理有效的结论。能够在复杂的信息技术设计、软件开发环节中考虑社会、健 康、安全、法律、文化以及环境等因素。 4.使用现代工具:能够针对复杂实际问题,利用数值计算、统计分析、和软件工程以 及信息技术工具,进行预测与模拟,并能够理解其局限性。 6.环境和可持续发展:针对复杂工程问题,能够理解和评价工程实际对自然环境、社 会环境以及可持续发展的影响。 8.个人和团队:能够在多学科背景下的团队中承担个体、团队成员以及负责人的角色。 9.沟通:能够就数学、计算机科学技术、统计学相关问题与业界同行及社会公众进行 有效沟通和交流,包括撰写报告和设计文稿、陈述发言、清晰表达或回应指令,并具备一定 的国际视野,能够在跨文化背景下进行沟通与交流。 1山.终身学习:具有自主学习和终身学习的意识,有不断学习和适应发展的能力。 三、课程教学目标 课程教学目标针对计算机大类: 1,锻炼学生的抽象归纳能力,让学生深刻理解面向对象思想,并明确面向对象思想不 是计算机科学所特有的,而是一种一直以来人类认识和改造世界的通用思想,从而使学生能 主动以面向对象的思想来分析问题和解决问题,培养其在以后的程序设计中或软件开发中主 动以面向对象思想来进行思考的习惯。对应毕业要求1.1、2.2、4.1。 2.学生应能深刻理解计算机程序的本质以及程序设计基本思想,具有熟练使用C+语 言编写一定规模的命令行或GU程序的能力。对应毕业要求2.2。 3.熟练掌握C+语言的语法以及类、继承、多态和模板的概念与用法:训练学生养成 良好的编程规范,使其具各比较强的编程实现能力,从而可以针对复杂计算机网络软件工 程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,用于解决复 杂计算机网铭\软件工程问题,并能够理解其局限性。对应毕业要求5.1。 针对信息与计算科学专业: 1.锻炼学生的抽象归纳能力,让学生深刻理解面向对象思想,并明确面向对象思想不 是计算机科学所特有的,而是一种一直以来人类认识和改造世界的通用思想,从而使学生能 主动以面向对象的思想来分析问题和解决问题,培养其在以后的程序设计中或软件开发中主 动以面向对象思想来进行思考的习惯。对应毕业要求,1、2、3、6、11。 2.学生应能深刻理解计算机程序的本质以及程序设计基本思想,具有熟练使用C+语 言编写一定规模的命令行或GU1程序的能力。对应毕业要求,3、4。 3.熟练掌握C+语言的语法以及类、继承、多态和模板的概念与用法:训练学生养成 良好的编程规范,使其具备比较强的编程实现能力:针对复杂问题,开发、选择与使用恰当 的技术、资源、现代工程工具和信息技术工具来解决问题,并能够理解其局限性。对应毕业 要求4、6、11。 4.学生应具备良好的沟通能力,可以与他人进行有效沟通和交流,包括撰写报告和设
15 信息综合得到合理有效的结论。能够在复杂的信息技术设计、软件开发环节中考虑社会、健 康、安全、法律、文化以及环境等因素。 4. 使用现代工具:能够针对复杂实际问题,利用数值计算、统计分析、和软件工程以 及信息技术工具,进行预测与模拟,并能够理解其局限性。 6. 环境和可持续发展:针对复杂工程问题,能够理解和评价工程实际对自然环境、社 会环境以及可持续发展的影响。 8. 个人和团队:能够在多学科背景下的团队中承担个体、团队成员以及负责人的角色。 9. 沟通:能够就数学、计算机科学技术、统计学相关问题与业界同行及社会公众进行 有效沟通和交流,包括撰写报告和设计文稿、陈述发言、清晰表达或回应指令,并具备一定 的国际视野,能够在跨文化背景下进行沟通与交流。 11. 终身学习:具有自主学习和终身学习的意识,有不断学习和适应发展的能力。 三、课程教学目标 课程教学目标针对计算机大类: 1. 锻炼学生的抽象归纳能力,让学生深刻理解面向对象思想,并明确面向对象思想不 是计算机科学所特有的,而是一种一直以来人类认识和改造世界的通用思想,从而使学生能 主动以面向对象的思想来分析问题和解决问题,培养其在以后的程序设计中或软件开发中主 动以面向对象思想来进行思考的习惯。对应毕业要求 1.1、2.2、4.1。 2. 学生应能深刻理解计算机程序的本质以及程序设计基本思想,具有熟练使用 C++语 言编写一定规模的命令行或 GUI 程序的能力。对应毕业要求 2.2。 3. 熟练掌握 C++语言的语法以及类、继承、多态和模板的概念与用法;训练学生养成 良好的编程规范,使其具备比较强的编程实现能力,从而可以针对复杂计算机\网络\软件工 程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,用于解决复 杂计算机\网络\软件工程问题,并能够理解其局限性。对应毕业要求 5.1。 针对信息与计算科学专业: 1. 锻炼学生的抽象归纳能力,让学生深刻理解面向对象思想,并明确面向对象思想不 是计算机科学所特有的,而是一种一直以来人类认识和改造世界的通用思想,从而使学生能 主动以面向对象的思想来分析问题和解决问题,培养其在以后的程序设计中或软件开发中主 动以面向对象思想来进行思考的习惯。对应毕业要求,1、2、3、6、11。 2. 学生应能深刻理解计算机程序的本质以及程序设计基本思想,具有熟练使用 C++语 言编写一定规模的命令行或 GUI 程序的能力。对应毕业要求,3、4。 3. 熟练掌握 C++语言的语法以及类、继承、多态和模板的概念与用法;训练学生养成 良好的编程规范,使其具备比较强的编程实现能力;针对复杂问题,开发、选择与使用恰当 的技术、资源、现代工程工具和信息技术工具来解决问题,并能够理解其局限性。对应毕业 要求 4、6、11。 4. 学生应具备良好的沟通能力,可以与他人进行有效沟通和交流,包括撰写报告和设
计文稿、陈述发言、清晰表达或回应指令:能够在多学科背景下的团队中承担个体、团队成 员以及负责人的角色。对应毕业要求,8、9。 四、课程教学内容提要与基本要求 理论部分 序号 教学内容提要 基本要求 学时 1)理解面向对象的基本概念: 2)掌握面向对象方法学要点: 第1章C+的初步知识 3)掌握面向对象的基本机制: 1.1从C到C+ 4)了解面向对象程序设计的基本步骤: 1,2最简单的C+程序 主要掌握的基本内容有:C+的输入输 1 13C++对C的扩充 出、用const定义常变量、函数原型声明、 14C++程序的编写和实现 函数的重载、函数模块、有默认参数的 1.5关于C+上机实践 函数、变量的引用、内置函数、作用域 运算符、字符串变量、动态分配/撤销内 存的运算符new和delete. 1)学会面向对象程序的设计方法、类的 声明和对象的定义 第2章类和对象 2)掌握面向对象程序设计的特点、面向 对象的软件开发方法: 2.1结构体与类、类的本质、封装性和 信息隐蔽 3)理解类和对象的作用、类和对象的关 系、声明类类型、定义对象的方法、类 22类的声明和对象的定义 和结构体类型的异同、类的成员函数、 2.3类的成员函数 2.4对象成员的引用 成员函数的性质、在类外定义成员函数、 成员函数的存储方式、对象成员的引用: 2.5类和对象的简单应用举例 4)理解通过对象名和成员运算符访问对 10 2.6构造函数和析构函数及其调用时机 象中的成员、通过指向对象的指针访问 2.7对象数组和指针 对象中的成员、通过对象的引用来访问 2.8动态建立和刑除对象 对象中的成员、类和对象的简单应用、 29对象的赋值与复制 2.10静态成员 类的封装性和信息隐蔽、公用接口与私 有实现的分离、类声明和成员函数定义 2.11友元 的分离,以及面向对象程序设计中的 些重要名词概念。掌握对象成员的初始 化方法、构造函数的作用与重载、指向 对象成员的指针与his指针:
16 计文稿、陈述发言、清晰表达或回应指令;能够在多学科背景下的团队中承担个体、团队成 员以及负责人的角色。对应毕业要求,8、9。 四、课程教学内容提要与基本要求 理论部分 序号 教学内容提要 基本要求 学时 1 第 1 章 C++的初步知识 1.1 从 C 到 C++ 1.2 最简单的 C++程序 1.3 C++对 C 的扩充 1.4 C++程序的编写和实现 1.5 关于 C++上机实践 1)理解面向对象的基本概念; 2)掌握面向对象方法学要点; 3)掌握面向对象的基本机制; 4)了解面向对象程序设计的基本步骤; 主要掌握的基本内容有:C++的输入输 出、用 const 定义常变量、函数原型声明、 函数的重载、函数模块、有默认参数的 函数、变量的引用、内置函数、作用域 运算符、字符串变量、动态分配/撤销内 存的运算符 new 和 delete。 4 2 第 2 章 类和对象 2.1 结构体与类、类的本质、封装性和 信息隐蔽 2.2 类的声明和对象的定义 2.3 类的成员函数 2.4 对象成员的引用 2.5 类和对象的简单应用举例 2.6 构造函数和析构函数及其调用时机 2.7 对象数组和指针 2.8 动态建立和删除对象 2.9 对象的赋值与复制 2.10 静态成员 2.11 友元 1) 学会面向对象程序的设计方法、类的 声明和对象的定义; 2) 掌握面向对象程序设计的特点、面向 对象的软件开发方法; 3) 理解类和对象的作用、类和对象的关 系、声明类类型、定义对象的方法、类 和结构体类型的异同、类的成员函数、 成员函数的性质、在类外定义成员函数、 成员函数的存储方式、对象成员的引用; 4) 理解通过对象名和成员运算符访问对 象中的成员、通过指向对象的指针访问 对象中的成员、通过对象的引用来访问 对象中的成员、类和对象的简单应用、 类的封装性和信息隐蔽、公用接口与私 有实现的分离、类声明和成员函数定义 的分离,以及面向对象程序设计中的一 些重要名词概念。掌握对象成员的初始 化方法、构造函数的作用与重载、指向 对象成员的指针与 this 指针; 10
理论部分 序号 教学内容提要 基本要求 学时 5)了解常对象、对象的常引用、对象的 赋值与复制: 6)理解静态数据成员与静态成员函数、 友元函数与友元类。 第3章运算符重载 )掌握运算符重载的基本概念、运算符 3.1什么是运算符重载 重载的方法、重载运算符的规则: 32运算符重载的方法 33重载运算符的规则 2)掌握运算符重载函数作为类成员函数 3 和友元函数、重载双目运算符、重载单 3.4运算符重载函数作为类成员函数和 6 目运算符、重载流插入运算符和流提取 友元函数 运算符 35重载流插入运算符和流提取运算符 3)了解不同类型数据间的转换方法。 3.6不同类型数据间的转换 第4章继承与派生 4.1继承与派生的概念 )掌握继承与派生的概念、派生类的声 4.2派生类的声明方式 明方式、派生类的构成、派生类成员的 4.3派生类的构成 访问属性、派生类的构造函数和析构函 数: 4.4派生类成员的访问属性 4 2)理解多重继承的概念,掌握虚基类的 4.5派生类的构造函数和析构函数 6 4.6多重继承 使用方法: 3)掌握基类与派生类的转换规则: 4.7基类与派生类的转换 4.8继承与组合 4)理解继承与组合、继承在软件开发中 的重要意义, 4.9继承在软件开发中的重要意义 第5章多态性与虚函数 5.1多态性的概念 )理解多态性的概念 52一个典型的例子 2)理解虚函数概念与作用: 5.3虚函数 3)掌握虚函数的使用方法。 5.4纯虚函数与抽象类 )理解泛型的概念,即将数据类型也看 第6章模板函数与模板类 成一种变量: 6.1泛型的概 2)掌握模板函数的声明和使用方法: 6 6.2模板函数 3)掌握简单模板类的声明与使用: 6.3模板类 4)明确编译器对模板类或模板函数的 处理实质
17 理论部分 序号 教学内容提要 基本要求 学时 5) 了解常对象、对象的常引用、对象的 赋值与复制; 6) 理解静态数据成员与静态成员函数、 友元函数与友元类。 3 第 3 章 运算符重载 3.1 什么是运算符重载 3.2 运算符重载的方法 3.3 重载运算符的规则 3.4 运算符重载函数作为类成员函数和 友元函数 3.5 重载流插入运算符和流提取运算符 3.6 不同类型数据间的转换 1) 掌握运算符重载的基本概念、运算符 重载的方法、重载运算符的规则; 2) 掌握运算符重载函数作为类成员函数 和友元函数、重载双目运算符、重载单 目运算符、重载流插入运算符和流提取 运算符; 3) 了解不同类型数据间的转换方法。 6 4 第 4 章 继承与派生 4.1 继承与派生的概念 4.2 派生类的声明方式 4.3 派生类的构成 4.4 派生类成员的访问属性 4.5 派生类的构造函数和析构函数 4.6 多重继承 4.7 基类与派生类的转换 4.8 继承与组合 4.9 继承在软件开发中的重要意义 1) 掌握继承与派生的概念、派生类的声 明方式、派生类的构成、派生类成员的 访问属性、派生类的构造函数和析构函 数; 2) 理解多重继承的概念,掌握虚基类的 使用方法; 3) 掌握基类与派生类的转换规则; 4) 理解继承与组合、继承在软件开发中 的重要意义。 6 5 第 5 章 多态性与虚函数 5.1 多态性的概念 5.2 一个典型的例子 5.3 虚函数 5.4 纯虚函数与抽象类 1) 理解多态性的概念; 2) 理解虚函数概念与作用; 3) 掌握虚函数的使用方法。 4 6 第 6 章 模板函数与模板类 6.1 泛型的概念 6.2 模板函数 6.3 模板类 1) 理解泛型的概念,即将数据类型也看 成一种变量; 2) 掌握模板函数的声明和使用方法; 3) 掌握简单模板类的声明与使用; 4) 明确编译器对模板类或模板函数的 处理实质。 2