孙玉霞++杨朋英++熊旭辉++黄烜++刘红日
摘要:数据结构课程设计能够巩固所学的理论知识,激发学生的学习和探索热情,培养学生的分析解决问题能力、创新能力和团队精神。该文先阐述了目前课程设计中普遍存在的问题,然后结合我院实际教学,介绍了课程设计的实施方案和有关问题的相应对策,实践证明,教学效果良好。
关键词:数据结构;课程设计;创新能力;团队精神
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)32-0139-02
算法与数据结构课程设计是在理论课程之后的综合性实践教学环节,是理论教学的补充与延伸,是一门非常重要的开放性实验课程。该实践教学是软件设计的综合训练,包括如何分析实际问题、如何进行总体结构设计、如何进行用户界面设计等。要求学生在课程设计中逐步提高程序设计能力、调试能力,逐步培养算法分析能力、创新能力和团队协作精神,并初步培养科学的软件工作方法和撰写规范的软件文档的能力。
1 课程设计中存在的问题
课程设计的教学是整个数据结构教学环节中特别重要的一个环节,其重要性已得到了普遍的认可,但实际教学效果往往不太理想,主要存在以下几个方面的问题。
1.1 编程基础差、软件开发思想欠缺
C/C++语言程序设计是数据结构的先导课程。尽管之前学生已学过这些课程,但由于语言本身规则复杂,面向对象的思想更是不容易掌握,再加上学生没经过系统的软件开发训练,导致学生普遍存在编程基础差、调试能力弱、代码编写可读性差、拿到问题不事先做需求做规划就急于写代码等,这些都制约着学生完成任务的质量。
1.2 时间安排不合理
一般数据结构课程设计的时间安排在学期末的1-2周内,但是由于这个时候各门功课的复习及考试工作已经展开,学生为了备考,往往应付了事,能力差的学生为了考试不挂科,往往选择最基础的题目;能力强的为了考试考出好成绩,也会选择难度系数较低的题目,都是只求顺利过关,用在课程设计上的时间和精力非常有限,能够真正将心思花在课程设计上的学生更是少之又少,这样就根本谈不上创新能力和团队协作能力的培养。
1.3 选题缺乏统一标准
现有的课程设计教材很难适应所有的院校,而且选题难度区别不大,并未形成应有的层次。其中一些选题还能直接从网上或从资料上获得解答,导致学生中抄袭现象明显,课程设计并不能达到我们事先预期的教学效果。
1.4 教师的指导或多或少
整个课程设计中,教师的指导不可缺少但又不能面面俱到。而在现行的课程设计教学中,有的教师,什么都讲得清清楚楚却制约了学生的创新能力;有的教师公布选题后,由学生根据选题自己独立完成设计工作,对自己对学生完成设计的过程关注指导太少,这样学生遇到问题后不能及时解决,就会去拷贝一个,从而失去了做课程设计的意义。
1.5 课程设计报告缺乏统一规范
规范文档的撰写能力是课程设计需要培养的又一大能力。有些教师一开始不给学生规范的设计文本,学生交上来的报告五花八门,根本不像软件设计文档。
1.6 考核机制不完善
一直以来,课程设计报告被很多教师作为评定课程成绩的重要依据,而对学生完成课程设计的课程关注不多,这样就不能考察出学生的真正实践操作能力,从某种程度上讲,可以说是轻重倒置了,课程设计的教学效果自然不理想。
2 实施方案和问题对策
为了实现教学目标,我校制定了规范的课程设计流程,如下。(1)任课教师先布置课程选题,提出实现要求和完成任务流程,然后选取有针对性的问题,跟学生进行示范性、启迪性地剖析与讲解,要求学生必须按流程一步一步进行;(2)学生根据老师提供的选题,填好选题表并提交;(3)学生根据选题,写出需求分析——完成概要设计——详细设计——編码与测试;(4)分组答辩,采用组长主要负责制;(5)提交课程设计报告。实践表明,这样的教学方法有助于培养学生的独立思考能力、讲述交流能力,规范文档的撰写能力,提高学生的积极性、创造性与团队协作精神,教学效果不错。
2.1 调整课程设计时间
我院将课程设计时间推到期末考试之后的假期进行,这样学生就能够一门心思将精力扑在课程设计上,分组去选择难度较大的选题,使自我挑战成为一种可能,也才能够更好地培养团队合作精神。
2.2 分层次精心设计选题
为了防止学生互相抄袭程序,课程设计的选题按照老师提供题目,学生自由选择或者随机抽取的方式来进行。
在课程设计题目的拟定上,为了能够更好地激发学习较好、动手能力较强学生的学习兴趣,同时兼顾学习较差,动手能力较弱的学生,使各层次的学生都能得到提高和锻炼,将课题按照难易程度分成了三种级别(一星级,二星级,三星级)。其中,三星级难度相对较大的题目,可由课程学习成绩较好的学生选择。
2.3 培养学生团队合作精神
学生自主组建课程设计小组,然后共同协商选择合适的选题。由小组组长负责(建议优秀的学生主动担任组长,带动组内基础和动手能力较弱的学生),小组成员自行对模块进行划分和任务安排,要求每个成员都有自己需要独立完成的模块,填好选题表。在任务实施的各个重要环节,要求每个组员都要积极参加讨论,出谋划策,相互帮助,形成一个良好的团队氛围,最后齐心协力完成设计任务。当然小组之间也可以相互帮助,共同攻克难题,这样一个任务完成后,学生的团队合作精神在不知不觉中就培养起来了。
2.4 培养学生交流表达能力
在课程设计的最后阶段,我们要求学生分小组集中答辩。答辩的主要目的是训练学生的表达能力。各小组先由小组长指派一位同学对整个项目进行综合性讲解,包括项目研究意义、整体设计思想、主要功能模块以及各成员的分工,展示设计成果,回答老师提问;再由小组成员针对自己完成的模块进行讲解,重点要讲出自己是如何根据实际问题定义相应的数据结构并解决问题的。
2.5 培养撰写文档的能力
培养学生按要点写出规范文档是课程设计需要培养学生的又一大能力,教师不光是要给出规范文档的要求和范例,还要给学生讲清楚为什么要这样写。我院的文档要求主要包括以下几个方面:
(1)问题描述;(2)ADT抽象数据类型定义;(3)模块调用关系;(4)详细设计:结构的定义;算法的描述;(5)分析与讨论;(6)参考资料;(7)致谢
2.6 考核成绩的评定
课程设计的总评成绩应包括平时表现、课设检查(包括成果展示和答辩情况)和课设报告三部分,三部分所占总评的比例分别为20%,50%,30%。
平时表现的成绩从学生是否按时出勤、课设过程中是否存在玩游戏的情况、是否服从老师管理等方面酌情评定。课设检查的成绩根据学生完成课设的实际情况来考核。本次课程设计要求课设检查统一采取学生答辩的形式来进行,即要求学生在完成课设的题目后,演示并讲解自己的程序,且回答老师提出的问题。指导老师主要从:问题的理解及解决能力,设计过程中独立工作能力,设计说明书﹑程序清单﹑开发的程序质量与工作量,设计题目的难度、先进性和实用价值,创新能力等方面进行评价打分(难度系数为一星级分数60~75,难度系数为二星级分数75~85,难度系数为三星级分数85~95)。要严格控制90分以上的高分人数,我们鼓励原创、鼓励创新、鼓励优化算法、鼓励扩展知识体系,只有做到了这些中的某些点才能给出90分以上的高分。课设报告的成绩根据学生完成的报告文档质量进行打分。课设报告若出现雷同或抄袭现象,报告的考核成绩一律为0分。
3总结
数据结构课程设计不仅能巩固所学的理论知识,激发学生的学习和探索热情,培养学生的分析解决问题能力、创新能力、撰写规范文档的能力和团队精神。还能让学生在较短的时间内体验到软件开发的全过程。经过几年的摸索和实践,我院数据结构课程设计的教学效果越来越好了,当然,仍存在很多问题,在今后的教学中还要不断尝试、不断探索研究。