朱欣颖,张鸿辉
“C语言程序设计”是高校中理工科专业开设的基础课程[1],对训练学生的逻辑分析能力和实践能力有着至关重要的作用.C语言是一种面向过程的程序设计语言,具有很强的抽象性[2].它提供强大的函数库,对于复杂的算法可以简化设计流程,编译运行效率高.同时,C语言可移植性好,安全系数高,在单片机和嵌入式开发等工程中已得到较为广泛的应用.因此,“C语言程序设计”逐渐成为理工科专业的必修基础课程.
教学中,在课程目标定位上力求培养学生学以致用、独立编程的能力.但是,C语言语法较多,知识点琐碎,内容抽象,学生学起来难度大[3].笔者根据C语言课程教学实际,对该课程教学改革进行了有益的分析与探索.
C语言语法、语义较多,概念抽象,运用灵活,没有固定的模式和编程套路.目前,在教学中常采用课堂知识点讲授法、程序实例演示分析法[4]、编程实验相结合的教学方法,按照教材中的章节和相应的程序实例来完成教学任务.课堂讲授中,采用多媒体讲解理论知识,由于内容抽象,难点多,很多学生难以掌握课堂的知识点.上机练习中,学生独立编写程序的能力明显不足.因此怎样提高学生学习C语言兴趣,培养一定的程序设计能力是高校C语言教学中一直探讨的问题.目前,在教学实践过程中存在的主要问题有:(一)学生基础知识不同.C语言课程与计算机专业课程体系关系密切.对于计算机比较熟悉的同学,他们对C语言知识的理解比较透彻;然而,对于那些很少接触计算机的学生来说知识点难以掌握,为了通过考试,他们背会概念与语法,这样的学习方式对掌握C语言不会有任何的效果.(二)传统的教学模式使学生逐渐丧失学习兴趣[5].教学中,教师采用先概念后程序实例分析的传统教学模式.C语言的知识抽象、枯燥,在传统的教学模式下,教学手段单一,学生很容易失去学习兴趣,给学习效果带来不良的影响.(三)实践环节没有得到足够的重视.C语言的学习宗旨是让学生灵活掌握并且能够解决实际问题.在C语言上机教学中,学生基本上是按照老师的设计思路来完成程序设计的,缺乏主观能动性和创新性,没有体现以学生为本的教学目标,制约了学生独立设计程序能力的培养.(四)考试形式的单一性.很多高校采用传统纸质试卷闭卷考试的方式[6],忽视C语言是一门实践性较强的课程.没有程序运行的环境,对检测学生学习的效果带来一定的负面影响.因此,C语言的教学过程需要改革创新.
在C语言教学中,教师应该不断提高自己的教学质量,合理优化重组教学内容,提高教学效果.C语言课程的教学内容有繁多的语法规则、程序结构、抽象的函数等[7].在学习C语言时,多数学生会感觉知识点杂,概念容易混淆,失去学习C语言的兴趣.这是大多数教师会遇到的难题.为了解决这一问题,在教学中,教师应依据专业培养目标,本着突出实用的宗旨,对教学内容进行合理分类与总结.对重点知识要集中精力细致讲解,难点知识要分散,以求知识的牢固掌握.根据C语言教材的主要内容,对知识点采用模块化分类,可以分为:程序三大基本结构、语法语义规则、函数、指针等模块.三大基本结构是最基础的知识,任何程序实例都包含程序结构化的思想.C语言的语句语法规则繁多,学习起来难度较大,可以以有趣简单的程序实例来讲解语法语义的知识点.当学生有基础的应用能力后,引入函数思想,让学生可以利用函数等知识解决实际问题.课程中,C语言每一个模块都应以相应的程序实例作为支撑点,选用的程序实例要有代表性,几乎能够涉及全部知识点.程序实例可以调动学生学习的积极性,使C语言课程不再枯燥无味,同时,学生还可以通过程序实例来获取编程经验.
要解决C语言教学中存在的弊端,就要不断地革新教学方法,摒弃过时守旧的教学模式.传统的教学方法中,教师是课堂的主体,忽略了学生的主观能动性与C语言的实用性.课堂上教师应该坚持学以致用的原则,以学生为课堂的主体,教师为导向,充分利用计算机和投影仪等教辅设备,在授课现场调试和运行程序实例,使学生在实训环境中掌握理论知识点和编程方法.
2.2.1 案例教学法
案例教学法中教师先讲解本节课需要掌握的知识点,然后下达任务.学生从实际问题出发,探讨问题解决的方法,并分析这一方法是否合理.案例具有一定的针对性和目标性,学生与老师一起利用现有的知识对问题进行分析与处理.这一过程中调动学生的学习兴趣及热情,学习由被动转化为主动,使学生加深对C语言基本知识点的理解与掌握.另外,案例教学法更注重学生解决问题能力的培养,达到理论应用于实践的目的.
2.2.2 程序实践教学法
程序实践侧重于对知识的测试与巩固.在课程教学中,每位同学独立操作一台计算机,在真实的C语言运行环境下,通过上机实训加深知识的掌握,培养学生的独立设计、调试程序能力.在上机实验中,根据实验的要求,学生自己设计程序流程,教师提供技术支持,充分发散学生的设计思维,真正的掌握程序的编写.上机实训是C语言的重要环节,应加大上机学时,培养学生实践动手能力.
2.2.3 小组讨论教学法
合作是大学生必须具备的基本素质,也是企业用人单位非常看重的能力素养.在合作学习中,小组讨论是教学环境最宽松地互动学习方式,因此学生参与度也最高.随着课程进程地推移,学生将逐渐掌握解决问题所必要的基本知识,然而能力是多维的,教学不仅仅是让学生记住那些基本的公式、定律,从建构主义的角度来看,是需要学习者主动构建知识的作用和意义.小组讨论恰恰给他们提供了使用基础知识的组合来解决具体问题的情境.小组讨论还可以促使学生更合理地找到自己的角色定位,比如有的学生擅长问题建模,有的学生善于程序代码的编写,而有的学生更善于用例测试从而增强程序的鲁棒性.
2.3.1 考试的意义与传统评价方法的弊端
“改变过分强调评价的甄别与选拔的功能,发挥评价促进学生发展、教师提高和改进教学实践的功能.”学习者的能力素质是多维的,传统的用一张试卷去给学生贴上优良中差的标签是粗暴且不理性的做法,考试或测试的真正目的应该是帮助学生认识自我、建立自信、发现和发展学生多方面的潜能,促进学生在原有水平上的发展.
目前高校的课程考试评价方法略有改进,通用做法是加权求和,即把整个教学工作分成若干块,每块根据实际情况分别给予不同的权重,最后加权求和.比如考试试卷占60%,平时理论和实验课的出勤占20%,作业占20%,则最后给学生的分数评价S=0.6×Spaper+0.2×Sattendence+0.2×Shomework.这样的考试评价标准虽然避免了一张考卷定优劣的做法,但对于学生能力而言,仍然没有做到多元化体现,这种做法体现的是教学活动的分割,仍然摆脱不了对学生的单一化评价.
2.3.2 基于模糊计算策略的考试评价方案
模糊计算的优势是更能平滑而真实地表征学习者各方面的能力素质,从而让学生更了解自己.比如给学习者设定5个能力维度:学习参与度;问题建模能力;程序调试能力;程序测试能力;作品分数;则学习者的属性集为向量A={a1,a2,a3,a4,a5}.另外构建一个4个档次的评价集V={v1,v2,v3,v4}.从模糊数学的角度计算,则需要为每个属性值从多种角度打分,比如作品分数可以邀请若干个小组的组长为每位同学进行评分,学习的参与度可以从理论课出勤情况、实验课出勤情况、小组讨论参与情况、作业完成情况等方面进行打分.无论哪个属性,在每次打分时的档次都需参照评价集的4个档次.这样将形成一个模糊评价集的矩阵.矩阵P={pij∈P|pij为属性集A中的属性Ai在评价集V中第j个档次的评分,1=<i<=5,1<=j<=4}.有了评价矩阵,就可以根据教学的实际情况给出此学生的最终模糊性评价了.假设此处为属性集设置相应的权值为Q,Q={0.3,0.1,0.1,0.1,0.4},则最终该生的综合评价S=Q×P,其中矢量S的元素Sj=(q1^p1j)∧(q2^p2j)…^(qn^pnj).这样,最后对学生的评价是多维度的向量,学生们收到的评价不再是优良中差的单一而又绝对化的标签,利于他们发现自己的优势和长处,并且避免了“差生”的心理定式所带来的影响.
C语言的学习在理工科学生的学习中占有举足轻重的地位,它不仅仅是一门编程语言,更是学生们接受程序化思维、培养严谨的逻辑、锻炼团队合作素养的非常关键的课程,是通向高等科学知识和深入研究的桥梁.作为一名高校教师,不仅需要扎实的专业课基础知识,而且需要具备正确的教育理念、合理的教学方法.面对这门培养逻辑思维能力和动手编程能力的课程,教师们应在建构主义的大旗下,改革教学中生搬硬套死记硬背的做法,多采用讨论、合作、任务式的教学法,让学生构建起自己的知识体系,逐渐完善自己,指引他们向更高的学习目标迈进.
参考文献:
[1]王圆妹.非计算机专业C语言教学改革的探讨[J].长江大学学报:自然科学版,2009,6(2):385-386.
[2]谭浩强.C程序设计教程[M].北京:清华大学出版社,2008:3-16.
[3]蔡晓丽,王维丽.计算机C语言课程改革探索[J].常州工学院学报,2006,19(4):82-85.
[4]陈刚,朱晓燕.江汉大学“C语言程序设计”课程教学改革[J].计算机光盘软件与应用,2012,7(7):245-246.
[5]李红.浅谈C语言项目教学中案例选取的原则[J].科技经济市场,2014,8(8):160-161.
[6]景泉.C语言程序设计课程改革分析与探索[J].价值工程,2014(15):282-283.
[7]葛洪伟.C语言课程教学中的分层教学法[J].无锡教育学院学报,2002,22(2):46-47.