摘要编程实验对于深化学生对数据科学课程知识点的
理解意义重大。传统的编程实验没有按照模块化设计,存在代码体量大、知识点考查针对性不强的问题。一方面,这导致学生在面对较大代码量的编程作业时难以入手,不同知识点也没有得到有针对性的训练;
另一方面,教师难以精确评价学生的知识点掌握情况。运用模块化设计方法来设计编程实验,能够有效解决这些问题,提升教学效果。关键词
模块化设计;编程实验;
填空式编程Application of Modular Design Method in Programming Experiments in the Course of Introduction to Data Science //LI Xinyi,ZHAO Xiang,TANG Jiuyang,GUO Deke,LUO Lailong Abstract Programming experiments are essential for students to understand the various knowledge units in data science courses.Conventional programming experiments,however,do not apply a modular design,and hence are often large in code size and un-clear in the knowledge units being tested.This brings obstacles for students to complete the programming assignment,and makes it difficult to train their understanding of different knowledge u-nits.On the other hand,teachers find it hard to grade the level of understanding of the knowledge units.Applying a modular design
method to design the experiments can help overcome the chal-lenges and improve the teaching effect.Key
words
modular
design;programming
experiments;
blank-filling programming
1前言
数据科学是利用数学、统计学、概率论等工具对数据形式的信息进行收集管理、分析处理以及统计推断的一门应用科学。数据科学导论是学习数据科学的基础先导课程,主要介绍数据科学问题从提出到解决的整个生命周期,包括数据获取、数据预处理、数据分析模型以及结果可视化等内容。在该门课程中,编程实验占据举足轻重的地位。实验作业给学生提供了动手操作的机会,
达到使学生协作交流、动手实践的目的,有助于帮助学生深刻理解知识概念,实现从知识到能力的转化。
传统的实验作业存在体量过大、学生上手难、技能点多、难以精确训练和评价的问题,这些问题阻碍了课程实践目标的实现。最新提出的模块化设计方法对编程实践作业进行了重新设计,并运用于数据科学导论课的编程实验中,模块化教学
取得了良好的教学效果。
The Science Education Article Collects
No.9,2021Sum No.525
2021年第9期总第525期
模块化设计方法在数据科学导论编程实验中的运用
李欣奕
赵
翔
唐九阳郭得科
罗来龙
(国防科技大学系统工程学院
湖南·
长沙410073)
中图分类号:G642.423
文献标识码:A
DOI:10.16871/jki.kjwhc.2021.03.052
基金项目:本文系教育部新工科研究与实践项目:全链条一体化大数据专业协同育人实践创新平台建设(课题编号:E-DSJ20201105);教育部高等教育司产学合作协同育人项目:数据科学导论课程线上线下结合教学法探究(课题编号:201901137030);国防科技大学研究生课程思政第二批重点建设项目:研究生科研素养与学术规范的阶段性研究成果。
作者简介:李欣奕(1990—),男,博士,国防科技大学系统工程学院讲师,主要研究方向为信息检索和自然语言处理等。
117
教改教法
2编程实验设计的相关方法
编程实验作业在数据科学类的课程体系中占有举足轻重的地位,是强化学生实践能力的重要手段,学者们从不同角度对其方法和应用进行了研究。以代码量为目标的实践作业设计方法[1],从教学设计、实验内容规划、多元评价等方面描述了达成饱满代码量的途径。为了更好地促进学生参与,云计算平台通过虚拟机模板给学生提供了一个访问更加友好的试验平台,以增强学生参与实验的主观能动性,并减少学生抄袭的现象[2]。开源协作平台也被引入课程实践教学[3],用于解决传统实验教学中教师分配任务耗时和学生提交作业步骤烦琐的问题。教师可以使用开源Github 平台,利用云服务中的开源协同开发功能来支撑实践教学,提升教学效率。
近年来,创新型实践平台逐渐普及。Educoder 作为一种实践平台,在课堂教学中得到了广泛应用[4],其通过关卡式的实验设计激发学生“学习闯关”的兴趣,使学生的作业完成度大大提高,学生挑战成功率达到95%以上。此外,实验案例分解和重构的方法也被用于提高学生兴趣[5],其通过分解大型软件工程项目,形成相对独立的部分并应用于Android 开发环境中,能更有效地融合教学和实际编程效果,起到了良好的教学效果。为了有效掌握教学效果,可以采用预设代码的方式,更加灵活地对代码进行评测,灵活应用各种代码评测方法,降低教师进行学生评价的工作量[6]。
3传统编程实验方法存在的问题
在数据科学导论课程中,传统的编程实践训练往往通
过教师布置描述性题目、学生自由写代码、教师进行人工评判的三个步骤开展。这种模式存在两个主要问题:一是学生需要针对任务撰写完整的代码,但相当一部分代码仅仅是程序的架构性需要,与课程主要知识和技能无关,容易造成重复劳动、实践训练针对性不强的问题。特别是对于学习时间紧张的学生而言,会显著降低其完成实践训练的积极性。二是难以对关键知识点进行量化细粒度的评价。由于学生撰写的大段完整代码之间可能部分存在耦合性强的问题,教师难以针对主要知识点分别进行细致的检查和评分,导致评分精度不高,给学生的问题反馈指向不明确。为了解决这两个问题,迫切需要运用新的模块化设计方法对实验进行重新设计和优化。
4模块化设计方法的运用
模块化设计旨在对编程实践作业进行框架性调整和代码设计创新。具体思路为:在框架上进行拆分设计,给出结构性和框架性代码,让学生只填写关键代码,其中关键代码和学生须掌握的知识点相对应。通过这种预先给出其他代码,而将关键代码设计为填空答题部分的方式,实现了编程作业从问答式到填空式的转化。填空式编程降低了编程难度,激发了学生兴趣,缓解了学生的畏难情绪,同时实现了对关键知识点的考查。
在进行填空式编程设计时,须对照课程大纲中的核心知识点进行构建,再基于完整实验代码进行划分。
直接给出框架性、环境配置等非关键代码部分,采用某种标识符标出函数实现、业务逻辑等关键部分代码,
通过一种较明显的方图1框架性代码设计实例
118
教改教法
式提示学生对其进行补全或替换。由于填空编程有一定的自由度,教师须标注大致的代码量(行数),让学生对代码的复杂性做到心中有数,避免使用过于简单或过于复杂的代码填空。
如图1所示,在实现“截断精确度”的评价指标函数时,采用框架式设计方式,在预先搭好代码框架的情况下,只让学生替换“None”部分标注的关键代码。这样不仅降低了编程难度,也实现了对关键知识点的考查。学生若要正确完成编码,必须准确理解相关概念的公式,同时要能够完成实现函数的关键逻辑。在代码实现部分之后,教师还给出了测试案例,学生只须运行测试就能即时校验代码的正确性。
实践作业的整体规划应该将模块化设计理念贯穿于整个编程框架设计中,涵盖所有的关键知识点。为了保证学生完成作业时思路清晰,教师应给出编程作业的整体架构和模块,按照模块前后的依赖关系进行步骤划分。即对编程任务进行分解,在每一个步骤中都给出问题的关键描述和提示,并明确各步骤的分
数。
如图2所示,将作业从整体上划分后形成各个关键步骤,在每个步骤中给出任务描述和提示,明确分数。学生分步骤完成编程任务,最终完成整个编程实验训练,教师可以根据各个部分的评分细则进行精确打分和评价。
5结论
在两个班次的教学过程中,采用模块化方法重新设计编程实验,效果明显,克服了传统编程实验的弊病。一方面,模块化设计显著激发了学生独立完成实验的主观能动性,在课业较为繁重的情况下,学生更愿意完成设计精准、内容丰富的实验作业。且抄袭现象相较于传统编程作业来说明显偏少,实验的课后反馈和互动较多。另一方面,各个模块的精确化评分说明以及测试案例的设置,让教师能够更加高效地对学生的实验结果进行打分和评价,并能够给学生更加快速和准确的反馈,显著提升了工作效率和教学效果。
参考文献
[1]卢玲,陈媛,曾庆森.程序设计类课程如何达成饱满的代码量
[J].计算机教育,2018(1):33-35.
[2]杨雄.云计算平台下“算法与数据结构”过程化实践教学改革
[J].中国轻工教育,2019(3):46-51.
[3]曾少宁,李慧,袁秀莲.基于GitHub平台的问题驱动式编程实
验教学方法[J].计算机教育,2017(9):158-163.
[4]刘联海.网络编程技术实验教学改革[J].福建电脑,2020,36
(7):152-154.
[5]吴杰,梁妍.基于实验案例分解和重构的Android网络编程教
学改革探索[J].信息技术与信息化,2016(5):103-104,105. [6]陈高云,张海清,王嘉昀.面向编程类实验教学的在线代码评测
方法研究[J].计算机教育,2016(1):157-159.
编辑
李前锋图2编程作业步骤划分示例
119
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论