摘要:本文剖析了艺术专业C语言课程教学中存在的难点问题,并介绍了为解决这些问题所做出的一些教学设计和教学方法上的尝试,主要以增加学生内驱力为导向。从实践数据看,新的方法取得了较好的效果。
关键词:C语言;内驱力;艺术专业
一、课程作用
计算机应用及人工智能技术的发展,正在使很多行业发生颠覆性的变化,进而促进了专业培养方案的修订。我校艺术学院遵循行业和市场发展规律,不断增加计算机类课程数量,形成了包含大学计算机基础、程序设计语言、人工智能、软件应用等多门课程的计算机通识教育体系,全面培养学生的计算思维能力和计算机应用能力。
C语言作为功能强大的经典编程语言之一,兼具低级语言和高级语言的优点,能帮助学生进一步理解计算机硬件结构,尤其是存储系统结构;它提供多种数据构造和灵活丰富的控制语句,能实现各种算法,也能为python等语言编写库文件,为学生的“奇思妙想”提供强有力支持;它面向过程,语法严谨,有利于充分锻炼学生的逻辑思维能力。
作为艺术学院的程序设计入门课,课程在知识方面的目标主要是让学生接触到程序设计的基本概念和方法,为后续的网页设计和Unity3D等课程打下基础。除此之外,在能力方面,要求培养学生主动用程序去解决问题的意识,进一步掌握从各种问题中“抽丝剥茧”,把握主干流程的方法。
二、难点问题
C语言的学习对很多专业的学生来说都很困难,艺术学院的学生尤甚,其难点主要体现在以下几个方面:
1.学习动力不足,未学先怕。艺术学院的学生数学基础相对薄弱,对于工科课程存在天然的距离感。他们对于计算机程序缺乏了解,觉得自己逻辑思维不行,学不会。部分学生不能充分理解课程存在的意义,觉得与专业关联不大,学习积极性较差。
2.语法细节多,学生难以保持良好的学习状态。一方面,琐碎繁杂的细节容易造成理论课堂的枯燥乏味,初学者应接不暇,顾此失彼,逐渐对学习丧失兴趣。另一方面,上机实践时程序错误多、调试排错难,打击了学生的学习信心。
3.课时偏少,导致实践课多以模仿为主,学习难以深入。编程课是实践性非常强的科目,要要进行大量的上机练习,但非计算机专业的学生,课时安排较少,多数时间用于验证教材案例,同期相关联的其它课程也不多,很少进行扩展内容教学,难以在有限的教学时间内让学生透彻理解语法和算法。
4.实际应用相对较少,难以体现课程价值。与其它高级语言相比,C语言更靠近硬件底层,学生能编写出来的“生动有趣”的内容较少,付出的劳动不能立即“变现”,影响了学生的学习积极性,使其不愿花费课后的时间去主动学习。
为解决以上问题,课程组在教学设计和方法上,作了针对性的调整。
三、教学设计
课程选用高教出版社何钦铭主编的《C 语言程序设计》及其配套的实验与习题指导作为教材。根据艺术生的实际水平和专业需求,将主要知识点划分为5个模块,共48个学时,如表1所示。
在教学过程中,以几个贯穿多个章节的主要案例,如表2所示,来带动相关知识点的学习,不断加深学生对基本概念的理解,同时逐步完善语法细节。一个星号的案例做提示讲解和作业分析,两个星号的案例不在课堂讲解,完全由学生自行完成。
课程考核弱化期末考试成绩,强化平时考核。平时成绩占比不低于百分之五十,其主要组成部分为日常测成绩、小组成绩和实践成绩。
四、教学方法
美国认知教育心理学家奥苏贝尔认为,学习动机对于机械学习来说是非常重要的。编程语言中有各种符号指代,需要大量的练习,部分机械学习内容难以避免,在这种情况下,只有充分激发学生内驱力,才能将被动学的模式变为主动学。赫尔的内驱力理论认为,学习效果不光与内驱力状态有关,还與习惯强度有关。所以教学过程中不仅要着力提高学生的学习热情和学习效率,还要提供足够的练习机会,加强其习惯强度。在教学实践中,我们选用了以下的教学手段和方法。
1.原型法教学,层层深化。借鉴信息系统开发中的原型法概念,摒弃语法大而全的传统教法,从第一堂课开始,就让学生能写出一个完整的程序,揭开编程的“神秘”面纱,打消学习的顾虑。在后续教学中,每一个章节,都深化或完善前期的内容,始终保持以“能运行起来”为核心。在此基础上,为代码添砖加瓦。从深度方向上,逐渐为代码增加功能,完善程序的通用性、健壮性,建立更良好的用户接口。从广度方向上,引导学生思考,这件事件还能怎么解决,这个方法还能用来解决什么。
以“成绩分析”这个程序为例,在整个教学过程会出现六次。在第一节课出现时,仅能输入一个整数成绩,将数字增加5分并回显,在演示过程中,弱化main函数的意义,着重讲解变量和运算符的概念,让学生熟练掌握输入和输出整数的方法,能自己写出代码来。课后练习扩展到其它种类数据的输入输出方法。第二次出现于控制结构模块,要能判断成绩是否达标,以此讲解分支结构控制方法,课后扩展到处理非法成绩。第三次出现时,要求输入多位同学的成绩,据此讲解循环结构控制方法,课后扩展到使用多种方法控制循环。第四次出现时,将成绩判断部分打包成函数,再次回顾主函数和输入输出函数的语法。第五次出现于库函数模块,要求能利用math.h库,完成一些方差等统计分析功能。第六次出现时,要求建立结构体,每位同学可以输入多门课成绩。
这个例子贯穿整个教学环节,最终形成一段较复杂,功能相对完善的代码。这个逐步完善的过程,让学生可以更清楚地了解各语句的作用,他们是否有替代品,为什么是最优选择。每次仅关注一个新知识点,同时不断强化前期内容,也有效降低了学习难度。
2.分组学习,共同进步。从目前的班级规模来看,用传统的讲授法,教师不可能做到因材施教、面面俱到。我们使用同伴教学法来促进学生的自主思考,增加团队合作意识,也能更及时准确地收到信息回馈,有的放矢地解决个性化问题。根据座位布局,每四人分为一组,组长负责组内答疑和向教师提问,人选由教师和学生共同确定。在课程进行到第三周时,教师综合日常成绩,差额提出组长人选,学生在人选范围内推举组长,这样可避免教师将交流和表达能力比较弱的学生指定为组长。每组组员随机分配,以免特别熟悉的同学主动扎堆,组长碍于情面,放任惰性强的学生。小组座位相对固定,每节课给出小组学习时间,讨论课堂重点,完成教师布置的小任务。每四周进行一次小组测试,从每组随机抽取一位同学的答题成绩做为整个小组的成绩,计入课程最终的总评成绩,以此激励大家互相督促。
3.充分利用手机、平板等工具。受限于硬件条件和同伴教学的设计,课程无法全程在机房进行,但在教室里光听不练,也影响学生对语法的理解,不能及时找准没有听懂的问题点。得益于手机等移动式智能设备的普及,我们用手机和平板解决了这个矛盾。在小组讨论出阶段性结果时,可以利用c4droid之类的手机app来验证想法。同时,利用超星等网教平台,将一些设计性比较强的作业设置为学生互相评分并写评语,得分最高的在学习群内展示。这种方式利用了学生的好胜心来进一步提高学习内驱力。
4.重点分解,碎片化学习。由于课时紧、内容多,引入课外学习成为必然选择。在预习部分,可选择一些优秀的网课小视频,通常不超过十分钟,整合推荐给学生,使其能充分利用较短的零散时间,集中精神专攻一个知识点,日积月累,形成规模。课中借助网课平台,进行多种形式的小测验。课后主要利用PTA网站,提供习题集和自动批阅的手段。这一部分的学习效果,以平时成绩中的日常测来检验,包括入门测、课间测和出门测,每节课时间累计不超过二十分钟。
五、结语
我们在同年级的两个班分别应用两种方式教学。一个班采用传统的方式,理论课主要由教师讲,实践课学生按教材练。一个班综合采用本文提到的几种教学方法。为了检验新方法的教学效果,期末采用了两种方法来进行测试,一种是传统的闭卷笔试,一种是含5道编程题的上机测试。采用了新方法的班级,卷面平均成绩比采用传统方法的班级高出3.7分,标准差减小1.1,上机成绩高出24分。从测试成绩上看,新的方法优于传统方法,尤其在实践方面,效果提升明显。
整套教学环节的执行节奏很快,教师和学生都要付出相当多的时间和精力才能完成任務。从匿名收集的学生评教数据来看,总体接受度较高。接近一半的学生留下了评语,认为课程学习得虽然辛苦,但是收获很大,每天都能看到自己的进步,每节课都在“痛并快乐着”。部分学生表示对编程很感兴趣,希望有进一步的学习机会。
对于初次接触编程的艺术学院学生来说,这套学习方案可以起到较好的承前启后的作用。既巩固了大学计算机基础课中的硬件和算法部分的知识,也为网页设计、动画制作课程中程序设计的部分奠定了良好的基础。同时,让学生对数据挖掘、计算机绘图有了初步的认识,提升了他们学习和使用计算机的兴趣和信心。
参考文献:
[1]穆爱霞.国外访学时所接触到的“同伴教学”的实证研究.物理通报,2020(11)
[2]薛小锋.翻转课堂在 C 语言程序设计教学中的研究与实践.信息与电脑,2020(17)
[3]符强,任风华.非计算机专业C语言教学方法研究.教育教学论坛,2020(14)
作者简介:王婷,1979.8,女,汉族,籍贯:湖北,学历:硕士研究生,就职单位+职称:湖北经济学院讲师,研究方向为:基于网络的计算机应用技术。