基于分组合作的程序设计类课程实验教学

2021-11-28 03:24熊启军程格平谷琼
电脑知识与技术 2021年28期
关键词:分组合作程序设计实验教学

熊启军 程格平 谷琼

摘要:针对程序设计类课程实验教学的现状,提出了分组合作实验教学模式。通过与项目式实验教学模式的比较,阐述了其优势、具体实施步骤和方法。实践证明分组合作实验教学模式可有效提高学生学习的参与度、积极性,从而显著提高实验效率和成绩。

关键词:分组合作;程序设计;实验教学

中图分类号:G642        文献标识码:A

文章编号:1009-3044(2021)28-0250-03

开放科学(资源服务)标识码(OSID):

1 引言

目前,各级各类高校日益重视实验实践教学,从校院两级管理机构的主导措施来看,主要有增大校内实验室硬件建设投入、增加实验学时、增多实验类型(验证型、设计型、综合型、创新型等)、增强实验项目的趣味性和实用性、改革实验考核和评价方式、与企业合建校外实训实习基地、引进企业实际案例、培养和引进双师型教师等[1];从教师的日常教学角度来看,更多的则是改革教学模式,如普遍采用案例式、演示式、启发式、项目式、平台式、竞赛式、导师制等[2][3]。

虽然学校、教师都在不断完善和实施多种实验教学改革措施,即求变;但部分学生、特别是地方院校的学生似乎“任凭风吹雨打我自岿然不动”,即不变,导致教学效果“理想很丰满、现实更骨感”。因为都明白:前者只是外因、只起辅助作用,后者才是内因、起决定作用。

对于特别强调计算思维和动手能力的程序设计类课程来说,在完成实验作业时,部分学生要么毫无头绪、要么错误连篇、要么百度、要么拷贝……极易滋生和蔓延拖沓、抄袭、堕落、放弃等现象。问题的症结在于学生缺乏学习的主动性、积极性,如何解决这一难题则是提高教学质量的关键。

2分组合作实验教学模式

“项目式”是一些设计类、实践类课程常采用的教学或考核方式,其主旨上是引进公司项目开发流程和管理策略、实行角色分工以及各司其职、通过团队协作最终完成项目设计与开发,呈现出通过分组来实现项目式教学。该模式在实际实施过程中,存在两个明显缺陷:一是因角色分工而职责固定,不能达到全面训练和锻炼学生能力的效果;二是团队内只有部分成员在踏踏实实地进行设计与开发,个别人则滥竽充数或充当添头,根本没有实质性参与、根本达不到团队合作的效果和目的。

“分组合作”虽与“团队项目式教学”有些相近,但更存在不同。

“分组合作”,首先是分组。以一个寝室作为一个实验组,一个寝室内通常有4~6名学生,他们朝夕相处,在生活习惯、个人爱好等方面一般具有共性,且寝室为沟通交流提供了更为便捷的场所;或者志趣相投的4~6名学生组成一组,这样的自愿组合为问题的深入探讨提供了强大的基础和凝聚力。

其次是轮流主持。即组内每次实验研讨的主持人实行轮流坐庄,“庄主”负责主持、记录每人的发言(纸质记载和手机录音录像)。研讨只涉及算法设计、疑难讨论,不涉及具体编码,每人都必须发言、极力避免一言堂或大包大揽、以及出工不出力等现象。

第三是独立编码。即根据上一步研讨得出的算法,组员各自独立完成实验题的编码、调试,出现个人不能解决的问题,可以再次组织讨论和寻求帮助。

第四是答辩和评价。各组派主持人阐述本组解题算法、特点、优势或创新,全组成员回答其他小组的提问和质疑、甚至刁钻或拓展性的问题等。在阐述、回答、辩论、评比过程中,教师可以适时地进行点评、启发、拓展等,这就是实验翻转。

第五是撰写实验报告。根据个人、组内和组间的发言、教师的意见等,撰写个人的实验报告。实验报告的重点是实验项目解决方案及其优缺点、程序调试心得、启发、感悟等。

第六是教师评分。教师根据阐述、问答、辩论、评比、实验报告等对各小组及其组员进行综合评分、评语,从而调控分组合作教学的全过程。

“分組合作”常态化、贯穿于实验教学过程之中,它虽存在分组、但更强调合作,组内成员全程参与实验设计、讨论,最重要的是实行轮流主持,从而提高实验参与率;组间通过分享实验成果、评比、相互借鉴和吸收,从而提高实验质量。

3 分组合作的实例

3.1 实验题设计

分组合作实验模式以志同道合的学生分组、恰如其分的实验题设计为基础而展开。譬如,在学习了《C语言程序设计》中的数组、函数之后,围绕运用数组和自定义函数求最值,设计了如下实验题:

(1)求最大值的下标;

(2)求最大、最小值的下标;

(3)歌咏比赛中若干评委给一名歌手打分,求歌手的最后得分。评分方式是:去掉一个最高分和一个最低分后的平均值就是该选手的最后得分;

(4)求最大、次大值的下标;

(5)求最大值出现的位置及次数(若存在多个最大值,它们必然相等);

(6)实现类似于考试成绩排名的输出效果(成绩相同则名次相同);

(7)实现数字黑洞[4](查阅资料了解什么是数字黑洞);

(8)在一个整型数组中,求和最大的连续子序列[5](求得和及其起始位置)。例如:在{-2,11,-4,13,-5,-2,3}中,和最大的连续子序列是{11,-4,13},和是20,起止位置分别是1和3。

3.2小组讨论

学生在小组讨论时,主要围绕函数参数的选取、算法设计及其效率、测试数据的设计、算法有无Bug、算法改进等方面进行讨论。

3.2.1讨论实验题特点

一组内的同学围坐在一起进行讨论:对这些题目进行归类分析,可以确认它们涉及的知识点、性质、难度。下面是某一小组经讨论后确认的实验题特点,如表1所示。

由此可见,这批题目按照由易到难、由简入繁、逐步加深、拓展应用的思路进行设计。这种循序渐进的设计思路有利于发现知识点的雏形、有利于巩固基本原理、有利于扩展知识应用范围、有利于开拓解题思路、有利于引导创新思维等。

3.2.2討论模块化

结构化程序设计的基本原则是“模块化”。模块化通过函数来实现,重点考虑模块的划分、从而体现函数的重用性,尽量不要将函数需要的数据固化在代码之中;还需考虑函数内的高内聚、函数间的低耦合。

3.2.3讨论函数原型设计

如何设计函数的参数个数和类型是初学者使用函数面临的重点、难点,因为函数的参数个数和类型这两个问题相互交织、相互影响。函数的参数个数取决于题目的已知条件和求解结果(返回值)的个数;函数的参数传递可分为传值和传址,什么情况下使用普通值作为参数、什么情况下使用指针作参数,是初学者常常困惑的问题。上述这批题目都需要使用指针作为函数参数、且指针型参数可能有多个。如第一题的函数原型可以设计成下面几种形式:

intcalMax(int array[],int n);

intcalMax(int *array,int n);

voidcalMax(int *array,intn,int *pMaxNo);

通过实验可以回顾和巩固课堂知识、总结规律。譬如,对于函数形参设置的规律性结论:若需要通过函数运算得到多个返回值,则应该通过函数参数来解决、且对应参数必须使用指针型的;凡是涉及到数组的问题,相关自定义函数至少包括两个参数:一是数组的首地址(指针),二是数组的元素个数。

3.2.4讨论算法及其效率

在程序设计之中,对于简单的问题应讲究效率第一、清晰第二,对于复杂的问题应遵循清晰第一、效率第二的原则。

譬如,实验题中的(2)、(4),应该使用一个循环中包含if-else的嵌套来实现,而不是使用两个独立的循环或者单分支的if来分别求解。

3.2.5讨论测试数据

对于任意一个程序,仅仅使用一组测试数据不足以检验其正确性。

譬如,实验题中的(4),在测试时至少包含四组数据:递增序列、递减序列、杂乱序列、重复序列,否则很难发现代码中可能存在的Bug。

在选择测试数据时,数据相差太大、毫无规律将会给人工判断结果、辨别程序的正确性带来困难和不便、从而花费较多的人工时间。因此,测试数据的选择应该遵循简单但不失一般性的原则。

3.2.6 讨论Bug

程序是否存在Bug,虽不是《C语言程序设计》要重点关注的问题,但毫不关心则有可能导致错误的算法、程序代码、实验结果。

譬如,对于实验题中的(4),若采用常规的算法来实现,在测试数据的第一个值就是最大值时将会得到错误的次大值,随之而来的则是算法的改进;仔细研究还会发现若测试数据中存在多个相等的最大值,哪个才是次大值呢?不同的同学可能存在不同的观点和结论。所以,提出了(5)题。

4 实验效果

在我院计算机类2018级两个平行班(各70人)分别实施普通教学和分组合作教学,选取上面的实验题作为测试数据,得到如图1、图2所示结果。

1班没有开展讨论和交流、学生完全自主完成实验题,因而对于难度较大的题目,程序代码正确率不高、而雷同率颇高;2班开展分组合作教学,程序代码的正确率、质量显著提高。由此可见,分组合作教学能显著提高实验成绩。

5结语

实施分组合作教学,重点是将全员讨论、集思广益落到实处。因为只有群策群力、“一个都不能少”才能促进和提高学生学习的主动性、积极性,否则任何改革都是纸上谈兵、缘木求鱼。分组合作实验教学下一步研究的重点是围绕知识点设计高质量的实验题。

参考文献

[1] 张士辉,朱冬光,王国英.计算机网络相关专业校企合作创新人才培养模式研究[J].实验技术与管理,2017,34(2):189-193.

[2] 邓雪妍.三结合课堂教学方法研究[J].中国大学教学,2011(7):62-63.

[3] 武春岭,童世华,何欢,赵鹏举.高职“产学制、项目制、导师制”创新型人才培养模式研究[J].中国职业技术教育,2017(7):58-61.

[4] 数学黑洞[EB/OL].https://baike.so.com/doc/6032390-6245392.html.

[5] 沙丁鱼的沙堡. 最大连续子序列求和(5种)[EB/OL].https://blog.csdn.net/qq_41879767/article/details/82791028,20180920.

【通联编辑:王力】

猜你喜欢
分组合作程序设计实验教学
基于Visual Studio Code的C语言程序设计实践教学探索
电容器的实验教学
从细节入手,谈PLC程序设计技巧
浅谈初中物理高效课堂教学
几何体在高中数学实验教学中的应用
高职高专院校C语言程序设计教学改革探索
分组合作学习在初中英语教学中的应用
浅析分组合作学习在小学数学教学中的运用
分组合作学习在小学语文高效课堂教学中的应用探索
PLC梯形图程序设计技巧及应用