基于程序设计能力培养的数据结构课程教学改革与实践
2020-11-10宛楠,张义,杨利
宛 楠,张 义,杨 利
(1.皖南医学院 医学信息学院,安徽 芜湖241002;2.皖南医学院 健康大数据挖掘与应用研究中心,安徽 芜湖241002; 3.安徽工程大学,安徽 芜湖241000)
1 引 言
程序设计是计算机类专业学生必备的基础能力,也是检验计算机相关专业毕业生质量的重要标准之一[1]。计算机专业的毕业生应具备扎实的程序设计基础,并能解决实际问题,才能达到专业技术岗位的要求,因此如何有效提高计算机类专业学生程序设计能力,培养满足社会需求的计算机专业人才是目前高校计算机专业教学改革的重点和难点。数据结构是一门处于计算机学科核心地位的技术基础和主干必修课,着重于培养学生复杂算法的设计能力、逻辑思维能力,是计算机专业创新应用型人才培养方案中一门重要的专业课程[2]。学生通过学习《数据结构与算法》课程,旨在掌握软件开发过程中合理组织数据,选择最优数据结构以及有效甚至高效的算法设计技能,从而达到提高软件整体质量的目的。
传统的数据结构课程教学模式单一,学生难以理解相关知识点,代码实现困难,教学效果不理想,学生的编程能力薄弱,有的学生理论上理解算法思想,也无法正确实现。本文针对传统数据结构教学中存在的问题,结合教学实践,提出有效的教学方法和教学策略,着重于对学生的程序设计能力的培养,将算法思想引入到实际的应用开发中,旨在提高学生的学习兴趣,促使学生的数据抽象能力、逻辑思考能力、编程能力全面得到提升。
2 基于程序设计能力培养的数据结构课程教学改革措施
为了全面提升学生整体程序设计能力水平,数据结构课程的理论教学和实践教学应该更加紧密地构成一个整体,互相融合、相辅相成,从而帮助学生奠定扎实的理论基础,着力培养学生的动手实践能力、创新能力以及团队合作能力。
2.1 先导课程衔接
计算机编程语言是数据结构课程的先导课程,是学习数据结构与算法课程的语言基础[3]。数据结构课程中的算法实现需要首先掌握C 语言中的数组、函数、指针、结构体等语法知识。如果学生的程序设计基础薄弱,会直接影响数据结构的教学效果,因此数据结构教学的理论课,应以复习C语言相关知识为主,帮助学生回顾程序设计基础知识,消除语法障碍,之后的学习方可集中精力关注对算法的理解。第一堂实验课,教师也可相应地布置一些指针和结构体的程序设计实验,在辅导过程中总结常见错误,分析算法实现中出错的原因,让学生熟练掌握C语言里的重要知识点。教师可以使用微信公众号等方式推送相关学习内容,布置相关的课堂练习,帮助学生在课下复习和掌握C 语言的各个知识点,为数据结构学习打好语言基础,帮助学生在数据结构实验课中能够独立自主地编写调试程序。
2.2 线上辅助教学
为了将教育信息化思想融入到日常教学活动中,进一步提高学生的创新能力和实践能力,有条件的学校应该根据数据结构课程的特点,开发网络课程教学平台,辅助课程的理论和实验教学。另外直接采用网络上的免费教学平台辅助课程教学也不失为一个较好的选择,如“itbegin”的院校通。数据结构的课程教学平台可以提供给学生学习视频和资料,也可在线布置作业和发布实验内容。教师可通过网络教学平台有效管控整个教学过程,适时掌握学生的学习情况,及时对教学侧重点进行调整。网络教学平台还提供师生交流和讨论的版块,实现学生之间和师生之间的实时交流,及时答疑解惑,帮助学生解决学习中遇到的困难,有效巩固课程知识。
当前很多高校都搭建了自己的OJ(Online judge在线判题)平台,用户可以在线提交源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。OJ 系统最初使用于ACM竞赛的自动判题和排名,里面的题库丰富,也包含了很多涉及到数据结构和算法的相关题目。老师可以从众多的题目中选择合适的授课案例,用贴近实际应用的案例激发学生的学习兴趣。学生也可以在各个OJ网站上注册账户,在平台上选择题目并且编写程序。学生提交程序后,系统很快能给出评判结果,学生可以根据错误提示反复修改和提交程序,直到结果完全正确为止。OJ平台已事先设计好测试数据,学生所编写的程序要在OJ平台上评判通过,并且所有的测试数据都获得正确的执行结果,就要求学生的编程基础足够扎实,考虑问题足够全面,逻辑思维更加严谨。在线题库和评判系统用于数据结构的辅助教学,将有效地帮助学生更加全面和扎实地掌握和巩固教学内容。
2.3 项目驱动式实验教学
实践教学是课堂教学的重要环节,学生实践能力和创新能力的培养很大程度上取决于实践环节的开展[4]。数据结构的实验内容应该包括验证性实验和设计性实验,其中验证性实验主要验证课堂理论教学内容,包括基本数据结构和基本算法的实现,如顺序表、链表、栈、队列、数组、递归、树和二叉树、图、查找、排序等基本算法,教学目的是让学生掌握数据结构基本概念以及算法[5]。
在完成验证性实验的基础上开展设计性实验,设计性实验往往是与实际应用结合较为紧密的问题,实验要求学生能够运用所学知识,进行数据结构的设计和算法的实现。设计性实验的教育目的是培养学生的综合应用能力、分析和解决问题的能力、创新能力[5]。设计性实验可采用基于问题的项目驱动式教学方法,教师提供一定数量的选题,明确任务需求。学生则结合默契度和对选题的兴趣分成小组,3-5 人一组,大家围绕任务分工合作,共同完成实验。设计性实验内容安排如表1所示。
表1 数据结构设计性实验内容安排表
3 基于程序设计能力培养的课程教学改革实践
笔者在C语言程序设计和数据结构与算法设计的课程教学实践中,采用了itbegin 在线编程学习平台来辅助实验教学,取得了较好的教学效果。itbegin是一个免费的编程教学云课堂,教师通过itbegin院校通创建课程并导入学生名单,学生即可登陆it-begin平台进入课程学习,学生可以选择相关知识点进行复习和编码练习,并可以与教师实时互动。itbegin 的在线布置、提交、批改作业功能为教师提供了极大便利。
教师在实验课前将实验内容添加至教材管理模块,并在作业管理模块中发布实验内容。通过分析实验报告,将本次实验中具有代表性的问题和需要注意的细节,在理论课上进行点评,同学就可以及时在新的实验任务发布之前完成本次实验的所有修改和调试工作,及时进行总结和归纳。
3.1 问卷调查
课程结束后,对学生进行问卷调查,结果显示93.4%的同学认为itbegin 平台对数据结构学习大有裨益,89.88%的同学认为通过使用itbegin 平台可以有效地提高程序设计能力。相较于传统教学模式,同学们普遍认为基于程序设计能力培养的课程教学取得了较好的教学效果,提高了他们的编程能力和自主学习能力,增强了师生之间的交流。实践表明基于程序设计能力培养的课程教学对于促进学生自学能力、协作能力、编程能力的提升具有积极作用。
3.2 实验完成率
连续2 年统计了学生的实验到课率、实验报告提交率、实验完成率和实验平均分,结果如表2 所示。从中可以看出,采用itbegin 平台辅助实验教学以后,2018年的4项统计结果均比2017年有了明显提高。
表2 2017-2018年度数据结构实验教学情况分析
4 结 语
数据结构教学中注重程序设计能力的培养,将网络教学平台和在线题库引入数据结构的实践教学,能更好地培养学生的团队合作精神,促进良性竞争,营造良好的学习氛围。通过必要的实践训练,能有效地提高学生的分析问题、解决问题的能力,从而全面提高学生的编程能力、自主学习能力和创新能力。