论文部分内容阅读
摘要:《数据结构与算法》是高等学校计算机科学与技术专业及软件工程等专业的重要课程,实验教学是该课程教学过程的重要环节。本文从实践出发,阐述了《数据结构与算法》课程综合性、设计性实验项目的目的、选题、内容及实施,并对这类实验的实践成果进行了总结。
关键词:数据结构与算法;综合性实验;设计性实验
一、引言
在计算机科学与技术、软件工程等专业中,《数据结构与算法》课程具有较强的实践性,因此实验教学是该课程教学过程中的一个非常重要的环节。在以往的实验教学中,学生都是按照已经设计好的实验要求和步骤进行着验证性的实验,学生一般是被动地接受或机械式地编程,以完成实验讲义中的验证或孤立的单元实验。这种实验教学模式使得学生缺乏主动性和独立思考问题的能力,不利于他们综合素质的提高和自主创新能力的培养。为了克服这些不足,使学生真正能把理论知识灵活运用到实践当中,我们开设了《数据结构与算法》课程综合性、设计性实验项目并立项进行实践研究,通过两三年的实践,取得了一些经验和成果,学生的实践能力也有了较大提高。
二、综合性、设计性实验项目的实践环节
1.实验项目的选择。
通过《数据结构与算法》课程的学习和前期验证性实践环节,学生已初步具备了进行综合性、设计性实验的能力。为进一步提高学生的设计能力和编程能力,我们设计了4个综合性、设计性实验项目供学生选择:
①校园导游系统的设计(设计性);
②书管理系统的设计(综合性);
③哈夫曼编码/译码器(综合性);
④散列表的设计与实现(设计性)。
2.实验项目的内容。
校园导游系统的设计
问题描述:
设计一个校园导游程序,为来访的客人提供信息查询服务。
基本要求:
①设计你所在的学校的校园平面图,所含景点不少于15个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息,以边表示路径,存放路径长度等相关信息;
②为来访客人提供图中任意景点相关信息查询;
③为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短路径(静态或动态表示出来)。
图书管理系统的设计
问题描述:
设计一个图书管理系统完成图书管理基本业务。
基本要求:
①每种书的登记内容包括书号、书名、著作者和库存量;
②对书号建立索引表(线性表或树表)以提高查找效率;
③系统主要功能如下:
采编入库:新购一种书,确定书号后,登记到图书账目表中,如果表中已有,则只将库存量增加;
借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;
归还:注销对借阅者的登记,改变该书的现存量。
用户管理。
数据存储(要求用文件实现数据存储)。
哈夫曼编码/译码器
问题描述:
设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(压缩文件,后缀名.cod);反过来,可将一个压缩文件译码还原为一个文本文件(.txt)。
基本要求:
①随机抽取20个文本文件作为统计样本,统计这些文本文件中各字符的平均出现次数,作为权值,建立哈夫曼树及各个字符的哈夫曼编码;
②将用户输入或选择的待压缩文本文件利用①建立的编码表进行编码,生成压缩文件(后缀名.cod);
③输入一个待解压的压缩文件名称,并利用相应的编码表进行译码;
④显示指定的压缩文件和文本文件;
⑤(选作) 把哈夫曼编码用二进制位紧缩到一个变量中,利用位运算实现真正的数据压缩,并求压缩比。
散列表的设计与实现
问题描述:
设计散列表实现电话号码查找系统。
基本要求:
①随机生成1万个记录,每个记录有下列数据项:电话号码、用户名、地址,每个数据项的内容都是随机生成的;
②分别以电话号码和用户名为关键字建立散列表(自行选择或构造合适的散列函数);
③采用双散列法解决冲突;
④查找并显示给定电话号码的记录;
⑤查找并显示给定用户名的记录。
3.预期目标。
进一步巩固和加深对《数据结构与算法》课程中基本知识的理解,熟悉各种逻辑结构及存储结构;
了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
培养学生从事软件开发的编程及创新能力;
提高学生综合运用所学的理论知识解决问题的能力;
训练用系统的观点和软件进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
4.实验项目的组织与实施。
针对综合性设计性实验项目,安排学生自选项目并进行项目设计和开发,每个项目20学时,按照下面的项目开发设计步骤,最后完成课题的总体设计与实现。
项目分析
根据实验项目内容的要求,充分地分析和理解问题,明确问题要求做什么、解决什么问题、实现什么功能。
概要设计
对项目内容描述中涉及的操作对象,设计相应的数据结构,并按照以数据结构为中心的原则对模块进行划分,定义主程序模块和逻辑结构。逻辑设计的结果是每种数据结构的定义(包括数据结构的描述和每个基本操作的功能说明)。
详细设计
为各个数据结构设计相应的存储结构并写出各模块的算法。设计是编程中重要的一环,在“详细设计”过程中,引导学生结合总体设计制订合理的程序结构和算法,理顺各个模块之间的相互关系,将详细设计的结果用结构图及流程图清晰地描述出来,在本过程中,教师要尽可能帮助学生养成自己解决问题的习惯。
编程
将详细设计的结果进一步求精为程序设计语言程序。在该环节中,教师应指导学生按照规范的程序编写方法去编程,并指导学生按照大型软件中常用的调试方法对程序进行跟踪及改进。
结果分析
在编程过程中及结束后,形成学生、课题小组组长、指导教师三位一体的项目质量监控体系,做到对各个阶段的结果都能进行实时的检测,如有不足之处,小组内成员和学生自行研讨出合理的整改方案并对课题实施进行改进,直至达到功能要求。
5.项目总结。
主要包括学生实验项目总结心得、实验报告撰写,学生成绩的评定。
实验项目总结心得
在实验临将近结束时让学生共同讨论实验结果的正确性,讨论实验设计步骤的合理性,总结经验,进一步改善项目实施的方案及步骤。笔者认为,实验后的总结非常重要,是从理论到实践,再由实践到理论认识的进一步升华,也是使学生提高实验兴趣、锻炼并增解决实际问题的重要过程和手段。
实验报告撰写
学生实验报告一般应包含的内容是:实验题目、实验环境、实验目的、实验任务、数据结构描述、算法流程图表示、实验总结。
学生成绩的评定
教师根据学生的实验设计报告、学生的实际操作能力(程序检查)及学生的创新能力等几个方面综合评定,给出综合成绩。
三、实践的成果
1.对学生的影响。
经过近两年的实验教学实践,有超过70%的学生认为此次实验收获很大,大约80%的学生对这类实验取得的成果表示满意。从总体效果来看,学生通过综合性、设计性实验,提高了设计及编程能力。大部分学生认为《数据结构与算法》综合性、设计性实验项目的开展改变了以往传统的实践教学模式,内容新颖,提高了他们的编程兴趣和热情,对他们帮助很大。
2.对教师的促进。
《数据结构与算法》综合性、设计性实验的指导教师由计算机科学技术学院《数据结构与算法》课程的主讲教师和专业实验室的教师共同承担,我们认为,开展综合性设计性实验项目整合了多个知识环节,既能够帮助学生掌握知识的系统性和衔接性,理清程序设计的思路,促进知识的融会贯通;同时也给主讲教师带来新的挑战,能使教师总结在理论教学中的不足,进一步加强教学方法和内容的改革。
参考文献:
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2006.
[2]唐册善.数据结构—C语言描述[M].北京:高等教育出版社,2003.
编辑/刘文捷
关键词:数据结构与算法;综合性实验;设计性实验
一、引言
在计算机科学与技术、软件工程等专业中,《数据结构与算法》课程具有较强的实践性,因此实验教学是该课程教学过程中的一个非常重要的环节。在以往的实验教学中,学生都是按照已经设计好的实验要求和步骤进行着验证性的实验,学生一般是被动地接受或机械式地编程,以完成实验讲义中的验证或孤立的单元实验。这种实验教学模式使得学生缺乏主动性和独立思考问题的能力,不利于他们综合素质的提高和自主创新能力的培养。为了克服这些不足,使学生真正能把理论知识灵活运用到实践当中,我们开设了《数据结构与算法》课程综合性、设计性实验项目并立项进行实践研究,通过两三年的实践,取得了一些经验和成果,学生的实践能力也有了较大提高。
二、综合性、设计性实验项目的实践环节
1.实验项目的选择。
通过《数据结构与算法》课程的学习和前期验证性实践环节,学生已初步具备了进行综合性、设计性实验的能力。为进一步提高学生的设计能力和编程能力,我们设计了4个综合性、设计性实验项目供学生选择:
①校园导游系统的设计(设计性);
②书管理系统的设计(综合性);
③哈夫曼编码/译码器(综合性);
④散列表的设计与实现(设计性)。
2.实验项目的内容。
校园导游系统的设计
问题描述:
设计一个校园导游程序,为来访的客人提供信息查询服务。
基本要求:
①设计你所在的学校的校园平面图,所含景点不少于15个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息,以边表示路径,存放路径长度等相关信息;
②为来访客人提供图中任意景点相关信息查询;
③为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短路径(静态或动态表示出来)。
图书管理系统的设计
问题描述:
设计一个图书管理系统完成图书管理基本业务。
基本要求:
①每种书的登记内容包括书号、书名、著作者和库存量;
②对书号建立索引表(线性表或树表)以提高查找效率;
③系统主要功能如下:
采编入库:新购一种书,确定书号后,登记到图书账目表中,如果表中已有,则只将库存量增加;
借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;
归还:注销对借阅者的登记,改变该书的现存量。
用户管理。
数据存储(要求用文件实现数据存储)。
哈夫曼编码/译码器
问题描述:
设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(压缩文件,后缀名.cod);反过来,可将一个压缩文件译码还原为一个文本文件(.txt)。
基本要求:
①随机抽取20个文本文件作为统计样本,统计这些文本文件中各字符的平均出现次数,作为权值,建立哈夫曼树及各个字符的哈夫曼编码;
②将用户输入或选择的待压缩文本文件利用①建立的编码表进行编码,生成压缩文件(后缀名.cod);
③输入一个待解压的压缩文件名称,并利用相应的编码表进行译码;
④显示指定的压缩文件和文本文件;
⑤(选作) 把哈夫曼编码用二进制位紧缩到一个变量中,利用位运算实现真正的数据压缩,并求压缩比。
散列表的设计与实现
问题描述:
设计散列表实现电话号码查找系统。
基本要求:
①随机生成1万个记录,每个记录有下列数据项:电话号码、用户名、地址,每个数据项的内容都是随机生成的;
②分别以电话号码和用户名为关键字建立散列表(自行选择或构造合适的散列函数);
③采用双散列法解决冲突;
④查找并显示给定电话号码的记录;
⑤查找并显示给定用户名的记录。
3.预期目标。
进一步巩固和加深对《数据结构与算法》课程中基本知识的理解,熟悉各种逻辑结构及存储结构;
了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
培养学生从事软件开发的编程及创新能力;
提高学生综合运用所学的理论知识解决问题的能力;
训练用系统的观点和软件进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
4.实验项目的组织与实施。
针对综合性设计性实验项目,安排学生自选项目并进行项目设计和开发,每个项目20学时,按照下面的项目开发设计步骤,最后完成课题的总体设计与实现。
项目分析
根据实验项目内容的要求,充分地分析和理解问题,明确问题要求做什么、解决什么问题、实现什么功能。
概要设计
对项目内容描述中涉及的操作对象,设计相应的数据结构,并按照以数据结构为中心的原则对模块进行划分,定义主程序模块和逻辑结构。逻辑设计的结果是每种数据结构的定义(包括数据结构的描述和每个基本操作的功能说明)。
详细设计
为各个数据结构设计相应的存储结构并写出各模块的算法。设计是编程中重要的一环,在“详细设计”过程中,引导学生结合总体设计制订合理的程序结构和算法,理顺各个模块之间的相互关系,将详细设计的结果用结构图及流程图清晰地描述出来,在本过程中,教师要尽可能帮助学生养成自己解决问题的习惯。
编程
将详细设计的结果进一步求精为程序设计语言程序。在该环节中,教师应指导学生按照规范的程序编写方法去编程,并指导学生按照大型软件中常用的调试方法对程序进行跟踪及改进。
结果分析
在编程过程中及结束后,形成学生、课题小组组长、指导教师三位一体的项目质量监控体系,做到对各个阶段的结果都能进行实时的检测,如有不足之处,小组内成员和学生自行研讨出合理的整改方案并对课题实施进行改进,直至达到功能要求。
5.项目总结。
主要包括学生实验项目总结心得、实验报告撰写,学生成绩的评定。
实验项目总结心得
在实验临将近结束时让学生共同讨论实验结果的正确性,讨论实验设计步骤的合理性,总结经验,进一步改善项目实施的方案及步骤。笔者认为,实验后的总结非常重要,是从理论到实践,再由实践到理论认识的进一步升华,也是使学生提高实验兴趣、锻炼并增解决实际问题的重要过程和手段。
实验报告撰写
学生实验报告一般应包含的内容是:实验题目、实验环境、实验目的、实验任务、数据结构描述、算法流程图表示、实验总结。
学生成绩的评定
教师根据学生的实验设计报告、学生的实际操作能力(程序检查)及学生的创新能力等几个方面综合评定,给出综合成绩。
三、实践的成果
1.对学生的影响。
经过近两年的实验教学实践,有超过70%的学生认为此次实验收获很大,大约80%的学生对这类实验取得的成果表示满意。从总体效果来看,学生通过综合性、设计性实验,提高了设计及编程能力。大部分学生认为《数据结构与算法》综合性、设计性实验项目的开展改变了以往传统的实践教学模式,内容新颖,提高了他们的编程兴趣和热情,对他们帮助很大。
2.对教师的促进。
《数据结构与算法》综合性、设计性实验的指导教师由计算机科学技术学院《数据结构与算法》课程的主讲教师和专业实验室的教师共同承担,我们认为,开展综合性设计性实验项目整合了多个知识环节,既能够帮助学生掌握知识的系统性和衔接性,理清程序设计的思路,促进知识的融会贯通;同时也给主讲教师带来新的挑战,能使教师总结在理论教学中的不足,进一步加强教学方法和内容的改革。
参考文献:
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2006.
[2]唐册善.数据结构—C语言描述[M].北京:高等教育出版社,2003.
编辑/刘文捷