时间:2024-05-04
熊方
(吉利学院智能科技学院,四川成都 641423)
应用型本科是指以应用技术类型为办学定位的本科院校,重视实践教学、强化应用技术型人才培养。在教育教学改革的探索中注重实践环境的强化,实践教学是培养学生实践能力和创新能力的重要环节,也是提高学生社会职业素养和就业竞争力的重要途径[1]。在新的工科背景下,培养学生养成良好的学习习惯和思维方式,不仅需要学生全面分析问题和解决问题的能力,更需要学生创造潜能的更大激发。因此,C语言程序设计课程对传统单一、填鸭式、应试的教学方式改革势在必行。
课时量减少是普遍现象,C 语言程序设计以前是64个课时,现在48个课时,而C语言程序设计知识点多,而且学生需要边讲边练,课时量明显不足。
学生基础参差不齐,有的学生早就学会了C/C++、Java、Python,甚至还在做一些小项目,而有的同学完全没有学过编程语言。
一些同学学习C语言,仅限于理论和遵循老师的要求上机调试程序,对于课程的作用仅仅理解为编程基础课,而对于C语言的应用很少去探究。在应用型培养理念下,课程设置更重要的是培养学生熟练运用C语言程序设计,培养分析和解决实际问题的能力,为进一步学习其他专业课程打下坚实的基础,为今后从事软件开发工作打下坚实基础[2]。故本文从教学模式、教学方法、教学过程、教学资源、评价方式等方面入手,注重学生应用能力的培养,提高教学质量。
选择超星学习通、课堂派或有课等线上教学平台,除了将课程大纲、课件等教学资料放到线上,还可以将课前的预习要求、任务清单、课后复习发布到线上,学生按要求进行课前预习、课后复习。老师可以在线上发布作业,如清华大学出版社提供的清览题库自带编译器,老师可以在题库中选择题目,也可以自己建立习题发布,学生在线提交作业,系统还可以批阅客观题和编程题、统计成绩并进行数据分析。教师还可以将一些重难点知识录制短视频或搜索相关的网上视频放在课程线上平台,如选择结构的语句形式、循环结构的语句形式、if-else 嵌套应用中else 与if的匹配原则,循环语句的执行过程,冒泡排序、选择法排序、指针的应用等相关视频,方便学生课后反复观看。
线上与线下相结合,线下为主、线上为辅,该教学模式的优势是:
①弥补了课时量不足、线下上课进度较快的缺点,对于基础较差的同学,只要课前课后多花时间,做好课前预习、课后复习便能跟上老师的进度;
②线上资源丰富,通过老师的精心挑选和设计,建立一套适合学生学情的线上资源,切记不经挑选,什么资源都放在线上,学生反而很少去看;
③线上作业系统辅助老师批阅作业和成绩管理,让老师更加轻松应对学生的大量作业,并了解学生掌握知识的情况;
④通过一些小视频,帮助学生突破重难点知识[3]。
线下课程教学可以看到学生学习表情,可以当面指导学生上机,更有利于师生互动。但是做好线上线下混合教学模式的准备,更能灵活应对突发情况。
面对C语言课程知识点小又多、教学课时量有限的情况,引导学生利用课下时间归纳总结的教学方法较为高效,下面以两个典型案例进行介绍。
对于学生容易出错的语法格式,以归纳总结的方法让学生在表格中不断积累,如表1所示。
通过归纳总结,减少直至消除编程中的常见基本错误。
对于较多较烦琐的理论知识,通过引导学生归纳总结,既能使学生理解和消化知识点,提升学生学习能力,又能节约一部分学时。
如对于C 语言的数据类型、C 语言的运算符这两章,教师引导学生归纳总结知识点,可以是思维导图的形式,也可以是表格的形式。教师开始可能担心网上众多的图片和资源,学生不能很好地自我完成,但是学生交上来的电子版作业里面,很多作业都是学生自己完成,知识点总结非常细致到位,将学习落到了实处。老师在课堂上展示优秀的作业,对一些难点再进行分析补充,如数据的存放和溢出、运算符的使用注意事项。
这样的教学模式比填鸭式的一个接一个的知识点灌输式讲解,再给出老师自己总结的教学更有效,更能激发学生的学习潜能。
以应用为载体,让知识点的传授融入应用中,不仅能提升学生的学习兴趣,还能将知识点讲得更清楚。如讲解字符数组这个部分,以一个常见应用为例来引入教学,完成知识点讲解。
用户从键盘任意输入一个字符串,以回车结束,统计字符串中各个字母(不区分大小写)出现的次数。例如,输入字符串ADSFGLJHCMZUR789$%&rglkjzvyda(回车),得到如下统计结果:
第一步:算法分析
有26个字母,就定义一个长度为26的数组,用于存放统计结果,第0个元素存放字母A的统计结果,第1个元素存放字母B的统计结果。
字符在A~Z:对应的数组元素值加1
字符在a~z:对应的数组元素值也加1
问题是如何找到字母对应的数组元素下标,分析大写字母:
A(ASCII码65)→0
B(ASCII码66)→1
C(ASCII码67)→2
……
可见下标的值就等于该大写字母的ASCII码值减去65(大写字母A的ASCII值);
同理可得,如果是小写字母,统计数据的下标就等于该小写字母的ASCII 码值减去97(小写字母a 的ASCII值)。
第二步:相关知识点引入
整型数组的定义与初始化:int num[26]={0};//定义数组num,长度为26,初始化所有元素为0
字符数组的定义、字符串的输入、字符串结束标志位’’
大小写字母的判断:if(ch>=′A′&&ch<=′Z′)//判断是否是大写字母
整型数组的输出:使用循环语句,依次输出每个元素的值。
输出格式的控制:printf函数格式化输出
第三步:编程实现
C语言课程的学习不仅仅在于期末考试能否及格或者拿到高分,软件类竞赛证书也是学生学习优异的一个证明,在教学过程中有意识地把蓝桥杯C语言赛题引入教学中,促进学生深入学习。如蓝桥杯赛题幸运数,求两个数之间幸运数的个数,放在数组与循环结构程序设计中,会给同学们带来很多算法的启示,类似的素数的判断、素数生成器等典型程序设计也能写了。
为了更系统地整合课程、竞赛,增强学生的算法和编程能力,学校自主研发了基于WWW的服务器端软件系统的在线评测(OnlineJudge,简称OJ)平台[4]。OJ 平台网上也有不少,但有些需要收费,免费的题库又不够丰富,或者不适合课赛练习。自主开发的平台免费向学生开放,提供大量的基础编程练习题、算法训练题、蓝桥杯竞赛练习题、模拟题、竞赛历年真题;设置有低、中、高难度等级,学生可以先从简单开始练习,逐渐挑战高难度题目;可选择C/C++、Java、Python编程方式,其中C 语言采用GCC 5.4 编译器。然后可以看到每个题的被刷次数和通过率,也可以看到每个同学的刷题总数和通过率。老师通过OJ平台可以了解学生的刷题情况,对学生进行针对性的指导,也可以作为课程考核的加分项目。
教师充分利用OJ 平台发挥其作用,组织和鼓励学生运用C语言多实践,辅导学生参加各种编程竞赛比如ACM 大赛、蓝桥杯C/C++赛项,通过考试验证学生掌握知识的情况,通过竞赛激励学生不断钻研和提升。
原来的考核方式比较单一,平时成绩占30%,期末试卷成绩占70%。这种考核方式存在的问题是对过程性的考核力度不够,30%的平时成绩主要来自考勤和作业,导致有些学生平时不重视,不认真按照老师的要求学习和实践练习,除了考勤和作业,很少参与其他教学活动。只希望期末突击,靠老师的复习大纲针对性复习两周加上平时成绩勉强及格。懈怠了大半个学期,没有真正学到知识和达到培养目的[5]。由此,教师要加强对学习过程的考核,成绩按照以下构成:平时40%(考勤:10%,作业与课堂表现:15%,阶段测试:10%,OJ平台刷题:5%),期末成绩60%(试卷考试:30%,上机考试:30%)。具体操作如下:
①严格出勤,可通过在线教学平台完成,出勤情况计入考勤成绩。
②平时作业包括上机实验的严格批改,严禁抄袭,对作业打分,计入作业成绩。
③平时上课要经常进行小测验、提问、讨论,学生情况计入课堂表现成绩,鼓励学生积极参与课堂活动[5]。
④可进行3-5次阶段性考试,让学生重视每个阶段的学习,而不是最后抱佛脚,成绩计入阶段测试成绩。
⑤鼓励学生利用OJ 平台拓展知识,多刷题提升编程能力,根据OJ平台的记录折算成绩。
⑥期末试卷主要考核学生的C语言基础知识、语法、算法掌握情况。
⑦上机考试主要考核学生的编程能力。以前的考核在试卷上完成编程,无法编译和调试,通过上机实战,更能反映学生的编程能力以及发现问题、解决问题的能力。
两年来,在应用型本科、新工科建设背景下,课赛结合,以应用为导向,课程组对C 语言课程开展了一系列教学内容、教学模式、教学方法改革的探索和实践,提高了课程教学效果。就教学改革曾对学生进行问卷调查,结果表明课程改革受到了学生的好评和肯定,满意度达到95%。学生感受到老师的用心和热情,对课程也有了好感,普遍认为改革后调动了他们对课程学习的积极性和参与热情,有助于其知识与技能的获得,教学效果更好。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!