《算法与程序设计》教学大纲 °适用专业:信息与计算科学专业 ◎课程性质:专业基础课、必修课 课程内容构成 第一篇(C语言)程序设计基础 第二篇数据结构与非数值算法基础(含数据结构、算法设计与分析两个模块) 第三篇数值算法(计算方法)基础 开课计划 依序开设在一年级下期至二年级上、下学期,共开设3个学期 授课学时安排 (C语言)程序设计基础,51学时 数据结构与非数值算法基础,102学时 数值算法基础,51学时 °课程目标 本课程首先讲授一门高级语言(C语言),然后以此为基础给学生讲授数据结构、非数值 算法和数值算法等基础知识,使学生能立足于高级语言,充分理解并掌握程序设计基本方法、程 序设计中的各种常用的数据结构,能进行正确的算法分析与设计,了解并掌握常用的非数值算法 和数值算法,为逐步形成和提高学生的程序设计能力、开发计算机软件以及进一步学习后继课程 打下良好的基础。 °选用教材:参考每篇给出的“教材与参考书
《算法与程序设计》教学大纲 适用专业:信息与计算科学专业 课程性质:专业基础课、必修课 课程内容构成 第一篇 (C 语言)程序设计基础 第二篇 数据结构与非数值算法基础(含数据结构、算法设计与分析两个模块) 第三篇 数值算法(计算方法)基础 开课计划 依序开设在一年级下期至二年级上、下学期,共开设 3 个学期 授课学时安排 (C 语言)程序设计基础,51 学时 数据结构与非数值算法基础,102 学时 数值算法基础,51 学时 课程目标 本课程首先讲授一门高级语言(C 语言),然后以此为基础给学生讲授数据结构、非数值 算法和数值算法等基础知识,使学生能立足于高级语言,充分理解并掌握程序设计基本方法、程 序设计中的各种常用的数据结构,能进行正确的算法分析与设计,了解并掌握常用的非数值算法 和数值算法,为逐步形成和提高学生的程序设计能力、开发计算机软件以及进一步学习后继课程 打下良好的基础。 选用教材:参考每篇给出的“教材与参考书
各部分授课大纲 第一篇(G语言)程序设计基础 任务和目的 本篇主要以PC系列微机上使用的C语言为支撑介绍程序设计基础知识。通过学习,使学生 掌握C语言的基本语法和基本结构,掌握程序设计的基本知识和基本思想,能熟练运用C语言进 行程序设计,编写出简单的科学计算程序及非数值处理程序。 、授课内容 (一)绪论及C语言简介 软件产业的发展过程,C语言的基本特点。 (二)数据类型、运算符和表达式 基本数据类型、标识符、常量、变量,枚举类型、运算符和表达式、运算符的优先级 与结合性 (三)简单程序设计 程序的基本控制结构、C程序结构及特点、数据的输入输出,简单程序设计, Turbo c2.0 集成环境介绍 (四)数组 维数组,二维数组,三维数组。 (五)基本语句 赋值语句,条件语句和分支语句,循环语句。 (六)程序设计方法 尝试法及其程序模块结构,递推算法程序,迭代算法程序。 (七)函数 函数的定义及调用,函数的数据传递,函数的嵌套调用与递归调用,函数举例,变量 的作用域、类型及生命期,编译预处理
各部分授课大纲 第一篇 (C 语言)程序设计基础 一、任务和目的 本篇主要以 PC 系列微机上使用的 C 语言为支撑介绍程序设计基础知识。通过学习,使学生 掌握 C 语言的基本语法和基本结构,掌握程序设计的基本知识和基本思想,能熟练运用 C 语言进 行程序设计,编写出简单的科学计算程序及非数值处理程序。 二、授课内容 (一) 绪论及 C 语言简介 软件产业的发展过程,C 语言的基本特点。 (二)数据类型、运算符和表达式 基本数据类型、标识符、常量、变量,枚举类型、运算符和表达式、运算符的优先级 与结合性。 (三)简单程序设计 程序的基本控制结构、C 程序结构及特点、数据的输入输出,简单程序设计,Turbo C2.0 集成环境介绍。 (四)数组 一维数组,二维数组,三维数组。 (五)基本语句 赋值语句,条件语句和分支语句,循环语句。 (六)程序设计方法 尝试法及其程序模块结构,递推算法程序,迭代算法程序。 (七)函数 函数的定义及调用,函数的数据传递,函数的嵌套调用与递归调用,函数举例,变量 的作用域、类型及生命期,编译预处理
(八)指针 指针与地址,指针变量的使用,指针与数组,指针在函数中的使用,指针和字符串 指针数组与多级指针,指向函数的指针 (九)结构体与共用体 结构体,结构体数组,结构体类型的指针,共用体 (十)文件 文件定义,文件的打开与关闭,文件的顺序读写,文件的随机读写 三、与其它课程或篇章的联系 本篇是在《计算概论》课程基础之上的高级语言课程,是学习程序设计的基础,也是整 个计算学科的入门课程,其后继内容有数据结构与算法(数值及非数值)等。 四、基本要求 1.掌握C语言程序设计特点及方法 2.领会程序设计思想。 3.能运用C进行编程,解决实际问题 五、实践 本部分内容实践性较强,每个学生要完成总学时30左右(有教师指导)的上机实践,目的是加 深理解和巩固所学内容,同时锻炼学生使用计算机解决实际问题的编程方法和技巧。教材中共安 排了12个实验和9套习题,原则上每个学生均必须完成。此外,学生还可从课堂讲授或教材中 选一些例题或习题来编程上机调试 六、授课学时分配 本篇讲授51学时,教师可根据学生实际情况酌情略去部分内容。学时分配建议如下 序号 学时 (一)|绪论及C语言简介 (二)数据类型、运算符和表达式 (三)|简单程序设计 (五)|基本语句
(八)指针 指针与地址,指针变量的使用,指针与数组,指针在函数中的使用,指针和字符串, 指针数组与多级指针,指向函数的指针。 (九)结构体与共用体 结构体,结构体数组,结构体类型的指针,共用体。 (十)文件 文件定义,文件的打开与关闭,文件的顺序读写,文件的随机读写。 三、与其它课程或篇章的联系 本篇是在《计算概论》课程基础之上的高级语言课程,是学习程序设计的基础,也是整 个计算学科的入门课程,其后继内容有数据结构与算法(数值及非数值)等。 四、基本要求 1.掌握 C 语言程序设计特点及方法。 2.领会程序设计思想。 3.能运用 C 进行编程,解决实际问题。 五、实践 本部分内容实践性较强,每个学生要完成总学时 30 左右(有教师指导)的上机实践,目的是加 深理解和巩固所学内容,同时锻炼学生使用计算机解决实际问题的编程方法和技巧。教材中共安 排了 12 个实验和 9 套习题,原则上每个学生均必须完成。此外,学生还可从课堂讲授或教材中 选一些例题或习题来编程上机调试。 六、授课学时分配 本篇讲授 51 学时,教师可根据学生实际情况酌情略去部分内容。学时分配建议如下: 序 号 内 容 学时 (一) 绪论及 C 语言简介 1 (二) 数据类型、运算符和表达式 4 (三) 简单程序设计 6 (四) 数组 5 (五) 基本语句 8
(六)程序设计方法 (七)|函数 (八)|指针 (九)结构体与共用体 (十)|文件 七、教材与参考书 1.张世禄、潘大志、冯天敏编著,C语言程序设计,电子工业出版社 2005.07 2.耿国华、索琦编著,计算机基础与C语言程序设计,电子工业出版社 2002.2 3.谭浩强著,C程序设计(第二版),清华大学出版社,1999.12 4.钱能编著,C++程序设计教程,清华大学出版社,1999 5.李春葆编著,C程序设计教程(基于 isual c++平台),清华大学出 版社,2004 6. Brian w. Kerni ghan、 Dennis m. Ritchie著,徐宝文、李志译,C程序设计语言(第2 版),机械工业出版社,2004 第二篇数据结构与非数值算法基础 、任务和目的 本篇首先讲授用高级语言(C语言)描述的各种基本数据结构及其应用。通过学习,使 学生透彻地理解各类数据对象的特点,学会数据的组织方法和实现方法。然后在此基础上讲授算 法设计的基本策略及算法分析的基本方法,使学生掌握算法设计的常用方法及有关算法,熟悉它 们的典型实例及算法实现技巧,并掌握算法分析的主要方法,为独立地进行算法设计和对给定算 法进行复杂度分析奠定基础,也为进一步学习奠定基础。 、授课内容 (一)绪论 数据结构及其相关名词、术语的精确含义:算法的描述及分析;数据结构课程简介
(六) 程序设计方法 5 (七) 函数 8 (八) 指针 8 (九) 结构体与共用体 3 (十) 文件 3 合 计 51 七、教材与参考书 1. 张世禄、潘大志、冯天敏编著,C 语言程序设计,电子工业出版社, 2005.07 2. 耿国华、索琦编著,计算机基础与 C 语言程序设计,电子工业出版社, 2002.2 3.谭浩强著,C 程序设计(第二版),清华大学出版社,1999.12 4.钱能编著,C++程序设计教程,清华大学出版社,1999 5.李春葆编著,C 程序设计教程(基于 Visual C++平台),清华大学出 版社,2004 6.Brian W.Kernighan、Dennis M.Ritchie 著,徐宝文、李志译,C 程序设计语言(第 2 版),机械工业出版社,2004 第二篇 数据结构与非数值算法基础 一、任务和目的 本篇首先讲授用高级语言(C 语言)描述的各种基本数据结构及其应用。通过学习,使 学生透彻地理解各类数据对象的特点,学会数据的组织方法和实现方法。然后在此基础上讲授算 法设计的基本策略及算法分析的基本方法,使学生掌握算法设计的常用方法及有关算法,熟悉它 们的典型实例及算法实现技巧,并掌握算法分析的主要方法,为独立地进行算法设计和对给定算 法进行复杂度分析奠定基础,也为进一步学习奠定基础。 二、授课内容 (一)绪论 数据结构及其相关名词、术语的精确含义;算法的描述及分析;数据结构课程简介
(二)线性表 线性表的逻辑结构定义和各种存储结构的描述方法:线性表基本运算的各种实现:稀疏 多项式的表示和相加。 (三)栈和队列 栈和队列的结构特性:基本运算的实现:栈和队列的应用 (四)数组 数组的逻辑结构和存储方式:特殊矩阵和稀疏矩阵的压缩存储方法。 (五)树和二叉树 二叉树的定义、性质和存储结构:二叉树的遍历和线索化:树的定义、存储及应用 (六)图 图的定义、存储结构和遍历,最小生成树,拓扑排序,关键路径,最短路径。 (七)查找 顺序表、树表、哈希表的查找方法及效率分析。 (八)内部排序 插入排序、快速排序、选择排序、归并排序、堆和基数排序的特点、过程分析以及时间复杂度的 讨论。 (九)复杂度及其分析 算法的复杂度,算法分析,复杂度分析,展开法,母函数法。 (十)算法设计 回溯法,动态规划分法,贪婪法,分而治之法,分枝界限法,局部搜索法。 (十一)外部排序 外排序及广义斐波那契( FEIBONACCI)数 (十二)非递归化
(二)线性表 线性表的逻辑结构定义和各种存储结构的描述方法;线性表基本运算的各种实现;稀疏 多项式的表示和相加。 (三)栈和队列 栈和队列的结构特性;基本运算的实现;栈和队列的应用。 (四)数组 数组的逻辑结构和存储方式;特殊矩阵和稀疏矩阵的压缩存储方法。 (五)树和二叉树 二叉树的定义、性质和存储结构;二叉树的遍历和线索化;树的定义、存储及应用。 (六)图 图的定义、存储结构和遍历,最小生成树,拓扑排序,关键路径,最短路径。 (七)查找 顺序表、树表、哈希表的查找方法及效率分析。 (八)内部排序 插入排序、快速排序、选择排序、归并排序、堆和基数排序的特点、过程分析以及时间复杂度的 讨论。 (九)复杂度及其分析 算法的复杂度,算法分析,复杂度分析,展开法,母函数法。 (十)算法设计 回溯法,动态规划分法,贪婪法,分而治之法,分枝界限法,局部搜索法。 (十一)外部排序 外排序及广义斐波那契(FEIBONACCI)数。 (十二)非递归化