数据结构实验指导书的设计与实现

来源 :科学与财富 | 被引量 : 0次 | 上传用户:wangcongyu003
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文首先介绍了数据结构的作用和地位,以及开展数据结构实践课程的必要性。接着分析了这个实践课程,在实施过程中所面临的各种问题。笔者设计了一份数据结构实验指导书,希望能帮助学生解决碰到的各类问题。实践结果证明指导书确实起到了很好的正面效果。最后针对目前还存在的问题,笔者提出了一些可行的方案。
  数据结构课程是计算机相关专业的专业基础课程,它所讨论的知识和提倡的技术方法,无论是对后续课程的学习(比如:编译原理、操作系统、数据库系统等),还是对大型软件的设计与开发,都有着不可替代的作用。它是介于数学、计算机硬件和计算机软件三者之间一门核心课程。
  数据结构较系统地介绍了几种常用的数据结构以及相应的存储结构和实现算法,同时介绍常用的查找和排序技术,并做了一些性能分析和比较,内容非常丰富。另外数据结构课程内容抽象,理论性强,学习量大;所用到的技术多,而学生此时所掌握的专业性知识相对较少或程度较浅;课程本身隐含的技术和方法相对丰富,这些都加大了学生学习数据结构的难度。
  数据结构课程学习除了要求掌握书上的内容以外,还是一个复杂程序设计的训练过程,要求学生能编写高质量,易于交流以及符合软件工程规范的程序。因此设置数据结构课程实践环节十分重要。通过实验实践内容的训练,突出学生程序思维训练和加强上机调试程序的能力,提高学生组织数据及编写大型程序的能力。使学生能够深刻理解教学内容,提高数据抽象和算法设计的能力。并且可以在系统分析,结构设计,上机操作及程序调试等基本技能方面得到综合训练。合理的实验是原理与应用的结合,可以使得学生懂得如何把理论知识应用于解决实际问题,从而培养良好的动手能力。
  目前,数据结构教学存在各种各样的问题,大概可以归纳为以下几点:一、先导课程先天不足,数据结构的先导课程有程序设计语言,离散数学和计算机导论等;其中以程序设计语言与数据结构课程的联系最为密切。二、教材内容过于抽象,教学方法过于单一;学生普遍反映听得懂,但是不会自己动手写。在这种情况下开展数据结构实践更有实际必要。
  虽然实验的内容与教科书内容密切相关,解题所需要的各种技术也可以从教科书中找到,由于其出现的形式多种多样,需要仔细体会,反复实践后才能掌握。因此不少学生在课程实践时,会觉得无从入手。由于没有学习过软件工程,不懂软件开发应有的流程,往往边写边设计,造成不良的程序设计习惯。因为需求分析的不够明确,系统设计通常存在问题,往往做到大半甚至快完成时才发现,需求理解有误,浪费大量时间的反复修改。系统一旦运行能通过,个别测试数据得到正确的结果,绝大多数学生都会认为这个程序已经正确,编码可以结束,不会再去考虑程序的时间和空间效率,也不会再去检查代码是否存在冗余,有没有实施模块化的思想等等。这些都不利于培养学生数据抽象能力和形成良好的编程习惯,编写高质量的程序。
  为了解决学生在课程实践过程中碰到的各类问题,老师可以在实践开始前加强引导,举例进行分析设计。而一份设计合理的实验指导书可以起到事半功倍的作用。
  结合多年的教学经验及学生的实际情况,笔者设计了一份相对完整的实验指导书。指导书的内容共分为9个部分,分别是:该课程设计的目的,任务分析,结构和系统设计,调试分析,测试结果,小结,用户手册,附录及参考文献。
  第一部分内容及意义显而易见,不再展开。任务分析主要是包括无歧义的任务说明;系统需要实现的各项功能;系统的输入数据和输出数据;以及各种情况下的测试数据。通过这一部分的书写,可以让学生充分地分析和理解问题,明确题目要求做什么,限制条件是什么。也就是让学生非常清楚的知道要做什么,而不涉及怎么做。 第三部分的结构和系统设计是在学生清楚要做什么之后,确定要怎么做。它包括分析确定需要处理的确定数据的逻辑结构,选择合适的存储结构,设计的数据类型;以及设计与功能相对应的模块(给出定义,写出函数头),确定模块的调用关系。有了这一部分的内容后,程序框架基本完成,学生可以在框架下进行编码,相对容易实现。
  程序书写完毕后,调试也是学生需要特别注意的一个环节。调试分析包括碰到的各种调试问题,及相应的解决方案;算法的时间和空间复杂度的分析;老师提出的修改意见及修改结果(包括有没有当堂完成,测试结果正确与否等)等。这部分可以促使学生在编程结束时,对编程过程及结果有一个分析总结。老师有没有提出修改意见,也可以从侧面看出程序是否存在比较明显问题,或明显可以提高的地方。
  第五部分的测试结果包括全部合法输入、部分非法输入及全部非法輸入情况下, 相应的测试结果。由此判断程序是否正确及稳健。这可以促使学生去测试非正常情况下,程序有何反映,由此可以比较全面地验证程序是否正确及稳健。
  小结在编码调试及测试之后进行,主要包括设计是否合理?(从提高程序质量的角度考虑,比如:有无冗余代码等);调试有何经验体会;测试有无问题;程序有无可以改进的设想(具体分析,包括改进目标和改进手段等)。通过这一部分的书写,学生会去回顾整个分析设计的过程,看是否存在问题或可以改进的地方,为下一次的实践积累经验教训,进一步提高程序设计的综合能力。
  用户手册是要学生站在用户的角度来考虑问题,教用户如何正确使用自己编写的程序。编写的全部源代码放入附录。在设计和编写代码的过程中参考的各项资料全部出现在参考文献部分,以此让学生尊重他人的成果及增强版权意识。
  学生采用这一分课程实验指导书之后,不再感觉无从入手,明显能较顺畅地完成题目,编写的程序质量也比以前有很大程度的提高,更加注重代码的质量,会主动考虑算法的时空效率问题。
  虽然这份实验指导书的好处是显而易见的,但是还不能够解决所有问题。有些问题可以通过完善指导书来完成,有些则需要其它手段来辅助。比如,部分学生还是会撇开这份指导书,按照以前的习惯来完成。针对这一问题,下学期笔者准备在学生到机房开始上机前,要求检查指导书的前三部分的内容,否则推迟上机和验收的时间。另外,不少学生由于理论知识不扎实,不能很好的分析,需要处理的数据是什么逻辑结构,选择什么样的存储结构比较合理?会出现张冠李戴,把逻辑结构写在存储结构的位置,更甚至于编造出一种不存在的逻辑结构。针对这种现象,只能加强检查指导,及时指出问题,以此加强理论知识的掌握。 由于学生的编程水平相对比较弱,编写的代码会出现各种问题,一些在调试阶段被查出,另一些则被学生忽略甚至认为是正常的,比如:代码重复,没有模块化设计,数组初始化时对每个数据按个进行赋值等等。对于这个现象,虽然指导书中有所体现,但是不够直接,容易被学生忽视。以后,可以在小结部分增加一些代码常见问题,让学生选择是否存在,迫使学生去检查和正确认识不合理的代码。
  参考文献
  [1] 汪华登.《数据结构》实验教学的改革与实践[J].中国水运,2007,7(2):239-240.
  [2] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2004.
  [3] 张桂芬,李海滨.《数据结构》实验教学的改革与探索[M]. 高教论坛, 2008, 6月第3期:103-104
其他文献
水利工程与一般建筑工程不同,在水利灌浆施工中存在更多、更大的安全隐患,没有安全就没有效益,没有安全就没有社会信誉。而如何科学的、稳步的保证水利工程施工进行,是工程建
初中与小学的数学在理念上存在较大差异, 需要学生进行转变和适应.因此,教师在此阶段的教学中应从开放课堂、 引导发现, 积极参与、学会合作, 转变思维、主动探究, 多元联系
数形结合是高中数学教学中一个重要的思想方法, 其实质就是把 “数” 与 “形” 联系起来, 以形助数, 以数辅形,使复杂的问题简单化, 抽象的问题具体化, 达到揭示数学问题本
摘要:旅游发展与文物保护问题显得尤为突出,如何看待和处理好二者的关系,具有重要的现实意义。  关键词:文物保护 ;历史文物; 旅游开发  文物是人类社会活动中遗留下来的具有历史、艺术、和科学价值的遗物和遗迹,是人民群众智慧的结晶,是人类宝贵的文化财富,如何保护文物,是世界各国、各民族共同关心的问题,然而,现代群众性旅游活动的兴起与现代旅游业的发展,又为文物保护增添了新的难题,我国是一个具有5000
针对塔里木盆地麦盖提1区块地震资料采集单炮能量差异大、主频频率低,地震采集质量难以满足非构造圈闭地质综合解释的需要,通过地震采集激发技术攻关,研究出折射法微测井调查
百色市农村剩余劳动力丰富,百色市政府也出台一些政策促进农村富余劳动力转移就业,例如“下山进城入谷”工程的实施,一定程度上促进了富余劳动力外出转移,但农民离土离乡外出务工
摘要:影响水工金属结构防腐蚀质量是多主面的,在对工程质量的原则进行阐述后,本文重点从人员、设备、材料、施工方法、施工环境等五个方面介绍如何加强质量控制。  关键词:水工金属结构;质量控制;防腐蚀  “质量”是工程项目的永恒主题,水工金属结构防腐蚀质量,直接影响水工金属的使用寿命,其质量问题关系到防洪安全和水利安全,关系到国计民生。因此本着对国家和人民负责的态度,水工金属结构防腐施工要进行严格的质量
目前,随着社会技术不断发展,人们在生活中对各种建筑要求日益提高。屋面作为建筑结构中的重点,各个施工环节都受到人们的关注。彩板屋面作为当前的新型屋面结构,其良好的美观性和