APP下载

应用型本科院校数据结构课程实践教学改革初探

2023-07-26梁宝兰徐翔吴舜歆

电脑知识与技术 2023年16期
关键词:图形化数据结构学情

梁宝兰, 徐翔, 吴舜歆

(电子科技大学中山学院,广东 中山 528400)

0 引言

数据结构是计算机各专业的专业核心课程,它在各门专业课中,起到了承上启下、联系左右的作用,是计算机学科知识结构的核心和技术体系的基石。但是数据结构课程概念多、算法灵活和抽象性强,造成一些学生在学习过程中对概念理解不透彻、形象化不够以及编程训练不足,难以学以致用等问题。对于基础相对薄弱的独立学院的学生来说,必须保持良好的学习习惯,付出更多的实践时间与努力,才能克服课程自身困难,达到良好的学习效果。学习兴趣是良好学习习惯养成的内在的驱动,有效监督则是外在的保障。因此,在数据结构的实践教学过程中,如何提高学生的学习兴趣,如何了解学生学情并给予精准的指导与帮扶,成为提高该课程教学质量的关键问题。

1 传统数据结构实践教学中存在的问题

1.1 实践所需的理论知识内容多且难

数据结构课程的教学内容较多,主要包括线性表、栈、队列、字符串、数组与广义表、树结构、图结构、查找和排序。同时数据结构本身建立在抽象的数据模型基础上,抽象性、理论性和逻辑性都极为强,即使有现代化的教学工具辅助也无法将课件中的理论知识很直观地全部表现出来,对于基础相对薄弱的应用型本科院校学生来讲,需要付出更多的时间与努力来理解与消化课程内容,才能真正运用课程中所学知识进行实践练习,因此在课程的理论教学与实践教学之间的学时分配时,往往是倾向于理论教学,实践教学学时捉襟见肘,因此需要调动学生的学习积极性,在充分利用课堂外的学习时间夯实理论基础的同时,加强实践训练,提高分析和解决实际问题的能力。

1.2 部分学生编程基础薄弱,面对复杂问题容易感到挫败

学生在学习数据结构课程前,虽然已经学习了程序设计基础课程,具备一定的编程基础,但绝大多数学生均为初学者,尚未形成良好的程序设计思维,平常所阅读与编写的程序只是入门级的程序,短小易调试,且往往不涉及指针、结构体、文件读写等在程序设计基础课程中相对较难的内容。而在数据结构课程学习时,学生需要理解抽象的算法,更要利用这些算法解决实际的复杂问题,实践的难度相比之前有了阶跃式的提高,在尚未具有良好的集成开发工具的调试技巧与能力的情况下,无论是阅读或者是编写都受到了较大的束缚,导致部分学生产生学习挫败感,从而失去学习信心与耐心。因此针对复杂问题,教师需要指引学生对问题进行合理的步骤分解,制定递进式的程序设计目标,从简到难迭代编写程序,让学生在各阶段目标达成的过程中提升成就感。

1.3 传统的编程实践训练任务相对比较枯燥,难以激发学生学习兴趣

学生在学习数据结构课程之前,所做实践项目往往是Windows 控制台空项目,缺乏用户界面,程序的运行通过控制台窗口进行数据输入与结果输出,学生难以直观地发现输入与输出之间因果联系;枯燥乏味的人机交互方式与执行结果展示方式也难以让学生在实践中收获解决问题后的成就感与满足感。因此,需要改变Windows 控制台空项目的传统编程实践训练,适当引入图形化的编程,增强程序运行结果的直观性与趣味性,丰富人机交互方式,提升学生的编程体验,从而提高学习兴趣。

1.4 数据结构编程作业难于批改,学生学情难于掌握

适当合理的作业有利于学生温故知新、查漏补缺,提高学习成效。但相对于一本院校的学生,独立学院中部分学生的学习习惯不良、学习积极性与自控力较弱,在作业不能得到及时检查与点评的情况下,容易出现学习松懈情况。但由于数据结构编程实践作业因代码偏长、学生逻辑思路多样等原因,批改起来十分困难。在学生人多作业多的情况下,仅依靠人工批改的方式,任课教师很难做到关注每位学生的每份作业,不能充分掌握学生的学情。因此需要智能化的作业批改模式,既能分担教师批改作业的工作量,也能客观定量分析学生的学情,让教师根据学情分析情况有针对性地对每位同学提供相应的教学关注与辅导。

2 采用图形化编程任务自动评测编程任务结合的实践教学模式

2.1 基于Educoder平台的自动评测实践任务

Educoder 平台是一个“学、测、练、研”四位于一体,支持计算机、软件工程、大数据、云计算等专业课建设的工程教育平台。

Educoder 平台所提供的自动评测功能,可通过设定的多组测试用例检验学生所撰写代码是否符合编程任务要求,如果所有测试用例均可通过即为通关,若有错也会给出不同测试用例,根据学生所撰写代码的输出结果,帮助学生反推所撰写代码中的逻辑问题,并加以改正。教师可通过平台中所收集的学生实践任务通关情况、历史代码提交情况、在线编程实践等学习轨迹等数据,充分掌握学生的整体学情及每位同学的学习画像,针对普遍的学习薄弱环节可及时进行教学调整,针对个别的学习习惯不良的同学也可以及时进行督促与指导。

笔者根据数据结构课程主要内容,设计了包括“实践准备”“线性表”“栈与队列”“图”“查找”“排序”等七个实训项目,其中代码量级别代表完成该任务大于需要的代码行数,每单位代表约40行代码。

笔者在过去两年的数据结构实践教学过程中,学生利用Educoder平台完成了上述的实训任务,从系统的学情数据结合课程的问卷调查结果中,可以反映出学生的编程实践的积极性和实际编程时间,均比传统教学有所提高,教师也在经历首次建课的繁重工作后,享受了重复利用课程的便利,同时也大大减轻作业批改的工作量。这些优点均与课程建设之初的设想完全一致,但在实际的实践教学过程中发现,若学生的编程基础尚薄弱,程序调试技巧尚不成熟的时候,完全使用Educoder 平台进行实践练习,会产生一些副作用。副作用一:学生过于依赖Educoder的编程环境,而忽视使用集成开发环境,特别当出现逻辑错误时,不善于使用集成开发环境所提供的调试功能快速定位错误,而是在Educoder平台上耗费较多的时间与精力。副作用二:严格的评测标准让部分粗心大意的学生因为对譬如输出格式、边界情况等的考虑不周导致评测频频不通过,学生的编程自信大受打击,反而会失去学习的兴趣与动力。

2.2 基于EasyX的图形化编程实践训练

EasyX 是针对C/C++的图形库,提供了用于简单易用的图形常用函数库,适合具有简单的C/C++编程基础的人员快速上手图形、动画和游戏编程。基于EasyX的图形化编程实践任务对学生的编程基础要求不高,可以利用鼠标进行类似用户界面的人机交互,且实践任务完成的作品所呈现的效果相比控制台窗口的字符输出更有视觉冲击力,比如学生普遍认为虽然都是仅需要一条简单的语句,但是在绘图窗口中绘制出基本图形比在控制台窗口上输出一行文字更直观、生动、有趣,也更有成就感。

笔者围绕数据结构的主要内容,设计了难度适中且颇具趣味性的基于EasyX的图形化编程训练任务,以制作动画的方式,让学生在充分理解相关结构与算法等理论知识的同时,加强了编程解决复杂问题的能力。

基于EasyX 的编程实践训练虽然不能进行自动评测,但是可以让学生使用集成编程工具,熟练编程调试技巧;同时不会设定标准答案,对一些小错误更具包容性,更能调动学生的创造力;也可以适应不同层次同学的实际情况,让学生选择不同难度的动画呈现方式,这些恰好可以弥补完全使用Educoder平台开展实践训练所产生的副作用。以动画作品作为编程实践训练作业的交付品,不仅方便教师了解并点评学生作业,更方便了优秀的展示、学习与模仿。两种实践任务相辅相成,取长补短,最大限度地激发学生自觉性、成就感、创造力,从而营造良好的学习氛围。

3 改革成效

3.1 基于课程问卷调查的比较

近几年,笔者利用课程问卷调查的方式,调查了学生对数据结构课程的学习情况,学生普遍认同该课程的实践教学改革成效。从表1与表2中可见,完成所有基于Educoder平台的编程实践练习任务和基于EasyX的图形化编程任务大约需要学生编写3 500行的有效代码,平均每周大约需要编写200行,一周累计编程时间约8小时。本课程的课程问卷调查反映出,在学生所编写的代码总量上,有89.5%的同学超过2 000行,55.3%的同学超过3 000行,17.4%的同学超过了4 000行;在平均每周的编程时间上,89.1%的同学平均超过6小时,55.2%的同学超过8小时,5.1%的同学超过12小时;87.5%的同学认为基于EasyX的图形化编程任务非常有趣;有85.4%的同学认为课程的总编程任务量适中,有97.8%的同学认为自己修习本课程后编程能力有较大或非常大的提升。上述数据可见,学生普遍认同本课程的编程任务设置,且能较自觉有效地去完成,达到了本课程改革的预期成效。

表1 近四年笔者所教授数据结构班级考试成绩

表2 2020年秋季课改班与非课改班总评成绩对比

3.2 课程改革前后学生成绩比较

笔者在所教授的2019年秋季的数据结构班级上,开始在该课程的实践教学中,设计并使用基于EasyX的图形化编程任务,在2020年秋季,开始使用基于Educoder平台自动评测实践任务。近四年,笔者所教授的所有数据结构班级最终成绩统计数据如表1所示。

从表1可以发现,在数据结构的实践教学中,2020年和2021 年秋季班同时使用了基于Educoder 平台的自动评测编程任务及基于Easyx 的图形化编程任务后,学生的卷面平均分、综合平均分、及格率、优秀率等均有了较大的提升,特别是优秀率,更几乎有翻倍的提升,表明了教学成效有明显的提升。

从表2 与表3 中可以发现,近两年课改班与非课改班的成绩统计数据对比中,课改班的综合及格率与优秀率较明显地高于非课改班,也表明了课程教学改革的成效。

表3 2021年秋季课改班与非课改班总评成绩对比

4 结束语

数据结构实验教学能让学生将抽象的理论用具体代码描述,实现提供指导,通过良好的实验设计,学生可以通过编写代码实现具体算法的方式将理论知识融会贯通,为后续的专业学习、升学和工作打下良好的基础。笔者在多年的数据结构课程教学过程,不断总结教学经验,针对课程自身特点与学生的情况,探索出了采用图形化编程任务自动评测编程任务结合的实践教学模式,并经过两年的实践试用,初见成效,未来将以学生需求为导向,进一步完善课程的实践任务,推广该教学模式,提高该课程的教学成效,同时也为其他程序设计类课程提供教学模式的参考。

猜你喜欢

图形化数据结构学情
针对学情,实干巧干
立足学情以点带面
LKJ自动化测试系统图形化技术研究
例说依据学情开展课堂教学的必要性
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
运用图形化听写式复习,构建高效地理课堂
图形化地区电网无功优化软件开发与应用
TRIZ理论在“数据结构”多媒体教学中的应用
《数据结构》教学方法创新探讨
图形化仪表控制系统上位机软件的设计与开发