APP下载

“数据结构”课程教学改革初探

2019-03-27高艳霞田继鹏王春霞

纺织服装教育 2019年5期
关键词:平时成绩数据结构程序设计

高艳霞,田继鹏,王春霞

(中原工学院 计算机学院,河南 郑州 450007)

一、 “数据结构”课程的重要性

“数据结构”是计算机科学与技术、网络工程、软件工程等计算机相关专业的一门核心专业基础必修课,是计算机类专业硕士研究生入学考试科目,也是各大软件公司招聘时经常考察的内容。“数据结构”课程在计算机学科的专业教学体系中占有重要的地位,起着承上启下的作用,其先修课程有“离散数学”“线性代数”“高级语言程序设计”,同时它又是“算法设计与分析”“操作系统”“数据库系统概论”等课程的先修课。数据结构不仅是一般程序设计的基础,而且是设计和实现操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。本课程系统介绍软件设计中常用的逻辑结构、存储结构和基本操作,以及常用的查找和排序方法。课程的学习目标是,通过学习使学生掌握计算机加工的数据对象的特性,以便在实际应用中选择适当的逻辑结构、存储结构及相应算法,并掌握算法的时间分析和空间分析方法,为应用软件的研制打下坚实的理论基础。但是在实际教学过程中,“数据结构”课程的教学效果不尽如人意,存在诸多亟待解决的问题。

二、 “数据结构”课程教学存在的问题

我们在多年的教学实践中发现,部分学生对“数据结构”课程存在畏难情绪,感觉课程内容抽象枯燥,难以理解,课堂上教师讲的理论大多听得懂,但是上机实践时却难以下手。这影响了学生学习的主动性和积极性,课程学完以后学生的逻辑思维能力及解决实际问题的能力没有得到明显提高,教学效果不太理想。

1. 学生的程序设计语言基础较差

大部分学校的程序设计语言课程开设在第一学期,而“数据结构”开设在第三或第四学期,相隔时间较长,基础好的学生可以很快过渡到数据结构的学习,而一些学生当时学习程序设计语言课程时就较差,时间长了更是忘得差不多了,学习数据结构时就会感觉很吃力。比如数据结构中经常用到的指针、函数、结构体、数组等内容,在程序设计语言中也是难点,尤其是指针,很多学生学完程序设计语言后对指针仍是一头雾水或一知半解,而指针几乎贯穿了整个数据结构内容。这些学生在学习数据结构时将会有很大的障碍,尤其在实践环节,很难用所学的理论知识解决实际问题[1]。

2. 存在重理论、轻实践的现象

以我校(中原工学院)为例,“数据结构”课程共60学时,其中10学时为实验教学。为照顾考研的学生,一般考研大纲要求的内容都会在课堂上讲解,课程内容多,任务重,理论知识强调得多。虽然实验任务会至少提前1周发布出来,但是每次实验时间只有90分钟,一个大班按60人算,教师很难顾及到每一名学生,没有时间检查每个学生的完成情况。因此,出现部分学生应付实践环节、实验报告抄袭的情况,实验教学效果整体不理想。

3. 理论教学过程中缺乏有效互动

“数据结构”课程知识点多、理论性强,教师主要采用“灌输式”教学方式。学生在课堂上因缺少互动容易走神,听课打不起精神,教师往往自我感觉很精彩的一堂课,学生却收效不大。长此以往,学生逐渐失去听课的兴趣,出现学生课堂上看手机、睡觉甚至逃课的现象。

4. 课程考核方式陈旧

目前“数据结构”课程的考核方式主要是闭卷笔试。对于期末考试,教师当然都希望学生能考出好的成绩,同时由于很多学校规定了不及格率上限,一旦不及格率超过上限,则需要写出情况说明,甚至对成绩进行技术处理。因此教师在试卷命题时常会放低要求,挑选一些学生较易完成的试题,有的还会在期末进行总复习,甚至“划重点”。这样尽管一些学生平时学习不认真,但在考前突击一下,考试及格是没有问题的。然而,学生学完、考完后真正掌握了多少知识就另当别论了。

三、 “数据结构”课程教学改革措施

1. 增加复习环节,确保顺利过渡

为使学生能够从程序设计语言顺利过渡到数据结构的学习,在开课前可以对学生的程序设计语言掌握情况进行摸底考试,主要检测学生对数据结构中涉及的程序设计语言的知识点的掌握情况。这样,教师在“数据结构”的第一堂课上,可以针对学生在程序设计语言方面的薄弱环节进行复习巩固。如笔者通常会在第一节课上根据学生的情况,有选择地把C语言中的指针、数组、结构体、函数调用及参数传递等学生掌握不理想的知识点复习一遍,使学生巩固大一学过的知识,并告知学生这些内容将在数据结构中频繁用到,希望学生扎实掌握、打牢基础。

2. 上好第一堂课,激发学生学习兴趣

俗话说“好的开端是成功的一半”,上好第一堂课是培养学生对本门课程产生学习兴趣的重要一环。第一堂课的前一半时间可以用来复习程序设计语言知识,后一半时间可以讲一些案例,从而引入”数据结构”课程,如可以针对线性结构、树形结构、图状结构[2]各找一个案例,而这些案例最好是学生感兴趣的,能够激起学生对这门课程进一步探索的欲望。比如笔者通常选择电话号码查找、人机对弈、课表安排等学生感兴趣的问题,从问题提出到数据结构选择,最终问题求解,带着学生一步一步分析实际问题的求解过程,并让学生参与其中,使学生充分感受数据结构在解题中的重要作用。在讲到人机对弈案例时结合人工智能的发展,尤其是近期几次广受关注的人机大战,学生兴致很浓,这样就可以让学生投入其中并积极地思考问题,从而对课程产生浓厚的学习兴趣。然后,就可以引出“数据结构”这门课所要研究的主要内容——非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作,并告诉学生“数据结构”课程在计算机学科中的地位和作用。同时,还要让学生明确课程的特点、教学目标,以及课程的学习要求、考核办法,并给出学习本课程的建议。

3. 分层设计实验题目,加强实验监督考核

首先要重视“数据结构”课内实验,教师分层设计难度系数不等的题目,让不同层次的学生都有跳一跳可以完成的题目。教师提前2周发布实验题目,鼓励大家提前完成。同时要加强实验监督、考核,每次实验必须由教师验收程序,针对完成质量和数量给予平时成绩。对于实验抄袭者或2次不完成实验任务者,教师单独谈话予以警告,并扣除实验的平时成绩。

有条件的学校,可以运用一些网络辅助学习平台,教师设计好题目,让学生在规定的时间内提交。平台不仅可以检查正误,还可以查重、统计,这样可以节省教师的时间,实验课上可以用来个别答疑。在这样的平台上还可以布置一些要求学生课下完成的题目和开放练习题,根据完成质量和数量,增加平时成绩奖励分,并每周在首页公布班级排名,这样可以激励学生相互比拼,增加课下实践时间,形成良性的竞争氛围。

4. 增加课堂提问和讨论环节

为使学生温故而知新,在每节课的前5分钟,教师准备2~3个问题,对上一节课的主要内容进行提问,并计入平时成绩。课堂上,教师要掌控教学节奏,看到学生出现懈怠时,可适时提醒或提问,以保证学生的听课效率。根据“数据结构”课程的内容,可以设计一些课堂讨论或请学生上台讲课的方式。比如讲到“队列”时,可以采用讨论的形式,引导学生列举生活中需要排队的情况,讨论“队列”的规则以及出队、入队的操作,并进一步讨论与一般线性表的区别和联系,这样学生在讨论中就明白了“队列”的逻辑特征及操作限制。再比如在讲到“最小生成树”时,可以提前布置2组学生分别自学普里姆算法和克鲁斯卡尔算法,并让学生在课堂上讲解,在讲解的过程中同组内的学生可以相互补充,最后教师对他们的讲解进行点评。这样的安排可能会多花一点时间,但是提高了学生的学习积极性,锻炼了学生的自学能力和分析问题、解决问题的能力。

5. 改革考核方式,形成有效的激励机制

很多学校对考试课有严格的限制,规定了期末成绩和平时成绩的占比,比如我校规定考试课的平时成绩占比不能大于30%。这种规定避免了平时成绩的评定自由度过大而给一些教师提供“放水”机会,但同时也存在一定的弊端。一些平时各项表现都很优异的学生可能最终成绩却不高,而一些平时表现一般的学生,期末突击一下也能取得好成绩,这样就会影响学生的学习积极性,所以要加大平时成绩占比。另外考试形式要多样化,可以采用机试加笔试的形式,比如可以采用平时成绩(40%)+笔试(40%)+机试(20%)。教师在命题时严格按照“数据结构”课程应该掌握的知识点命题,这样学生就很难靠最后突击取得好成绩,真正体现一分耕耘一分收获。

四、 结语

“数据结构”作为计算机相关专业的核心基础课,如何提高教学质量和教学效果,使学生真正学有所得,是笔者从事本课程教学近20年一直在思考的问题。通过上述一些改革措施的实施,已经取得了一些效果。但改革永远在路上,笔者将坚持教学改革探索,不断提高课程教学质量。

猜你喜欢

平时成绩数据结构程序设计
数据结构线上线下混合教学模式探讨
关于工科专业课平时成绩的思考
基于Visual Studio Code的C语言程序设计实践教学探索
高校体育专业术科课程平时成绩评定方法的探究
从细节入手,谈PLC程序设计技巧
让平时成绩回归本真
高职高专院校C语言程序设计教学改革探索
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
播音与主持艺术专业的平时成绩评定与构成——以河南工业大学为例
高职高专数据结构教学改革探讨