应用型本科院校计算机程序设计课程的教学改革与实践

2020-03-20 21:37崔容容唐琳任艳焱
赤峰学院学报·自然科学版 2020年2期
关键词:C语言实践教学改革

崔容容 唐琳 任艳焱

摘要:随着信息技术的发展,学习编程语言的重要性日益加大,C语言作为众多编程语言之首,是赤峰学院理工楼应用型人才培养的计算机基础课程,本文结合C语言程序设计课程教学实际,提出现有模式下亟待解决的问题,在教学、考核等方面加以改革实践,以“学习兴趣小组”为载体,激发学生的学习兴趣,培养学生的编程技能,思维模式,增加学习主动性,自主探究能力,提出套路教学法,进一步训练学生解决问题的能力.

关键词:C语言;教学改革;实践

中图分类号:G642  文献标识码:A  文章编号:1673-260X(2020)02-0102-03

随着信息技术的不断发展,与现代计算机共同诞生、并肩发展的程序设计语言作为人机交互的重要工具,在经历了“机器语言、汇编语言、高级语言、第四代语言”四个发展阶段后,早已经形成了庞大的语言家族体系,编程语言已不再是计算机类专业人士的独宠.对于理工类大学生而言,必备的一项技能就是需要掌握一门高级编程语言.时至今日,高考试题中也已经涵盖了算法流程的知识内容,甚至小学生、初中生都在学习编程.而国际信息学奥林匹克竞赛(简称:IOI)更是面向中学生的一年一度的信息学科竞赛,该项比赛内容为通过设计计算机程序来解决实际算法问题,参赛选手从各国相应计算机竞赛中选拔.中国青少年计算机程序设计竞赛(简称:NOI,后更名为全国青少年信息学奥林匹克竞赛系列活动)由中国计算机学会于1984年创办,旨在向中学生普及计算机科学知识,给学校的信息技术教育课程提供动力和新的思路,给那些有才华的学生提供相互交流和学习的机会,通过竞赛和相关的活动培养和选拔优秀计算机人才[1].学习计算机语言,不仅可以培养学生的科学精神,锻炼学生的思维方法,养成严谨踏实的学习研究作风,更能够训练学生分析问题、解决问题的能力,由此看来,计算机程序设计语言,不仅是人机交互的工具,更是帮助我们解决问题的工具,而学习程序设计语言,不管是从时代发展需要的角度还是从自身能力提高的角度,都显得极为重要.

C语言自1972年诞生至今,一直占据编程语言的前列,主要原因在于它的稳定性,以及与底层结构运算、硬件信息交互方便.例如与C++相比它能够避免因为过多引入子集而给开发人员带来的额外负担,大多数高校均把C语言程序设计作为计算机基础课程、理工类通识课程,它已经成为学生学习编程的第一门计算机高级语言.通过对它的学习让学生形成编程的思路和基本常理,以便解决实际的问题.赤峰学院作为地方应用型本科高校,也为计算机及理工类专业学生开设“C语言程序设计”这一课程,随着新时代科技的变迁以及学校转型发展的需要,以往的教学方法和手段,对于培养应用型人才来说显得有些捉襟见肘.本文从C语言程序与设计课程的实际教学情况入手,总结多年C语言授课经验,深入分析教学中的不足,就“如何通过C语言的教学来培养学生的专业认同感,帮助学生树立良好的编程思想和计算思维,训练学生解决问题的能力”这一问题进行了探讨与实践.

1 C语言程序与设计教学现状

C语言程序设计课程是计算机及其相关专业开设的必修课程,是学习高级程序设计语言的首选.但在教学过程中却发现学生学不懂、弄不透、死記硬背、编程能力弱等问题.为此,以我校计算机科学与技术专业为例,归纳以下几点问题:

1.1 思维方式转变难

大一的学生对于计算机的认识大多停留于上网冲浪、资料查询和游戏,对于专业知识知之甚少,C语言作为学生迈入大学的第一门计算机语言课程,同期只开设了计算机应用基础课程,虽然能够简单了解计算机的组成和不同进制之间的转化,但并不透彻,没有计算机组成原理和操作系统等专业基础课程的知识积累很难理解内存、存储地址、指针等概念,对于后续指针章节的理解更是难上加难.同时C语言语法较灵活,规则较多,学生在初始编程时会出现很多语法错误,一定程度上也打击了学生的积极性,很多学生表示C语言听不懂,无法理解用生涩的语言符号解决实际问题,甚至有些同学在几次课后就产生了排斥的心理.

1.2 知识点多、课时少

C语言主要讲授编程书写规则、分支结构、循环结构、函数、数据类型和表达式、数组、指针、结构、函数与程序结构、指针进阶、文件等方面的知识点,由于课时限制只能讲解概念和一些简单应用,给后续课程中涉及的知识造成影响,例如数组问题没有掌握好会影响到数据结构中解决哈希表的问题.同时现在老师基本采用多媒体教学,方便、快捷的同时也忽略了信息大量的灌入给学生的理解和应用带来的负担,学生很难在众多信息中提取重点和难点,实践课时少,很多同学能读懂程序,但自己编写的时候脑子一片空白.随着智能手机的普及,学生习惯于应用单手在屏幕上打字,很少应用键盘输入,输入中文很快,但键入英文的速度慢,对于长一些的程序一节课下来有些同学甚至无法录入完成,更谈不上调试.

1.3 教学方法单一、案例陈旧

目前,C语言程序设计课程教学内容陈旧,仍然以全面的语法讲解为主,课程教学内容往往不能满足实际需要.虽然采用讲练结合的授课方式,但案例基本采用课本的实例,课堂气氛沉闷,教师和学生没有交流沟通,忽视了学生自身编程思维的培养,学生很难提起兴趣,同时在讲授期间没有顾忌到知识点的延伸性不够,学生感觉不到它的用途,甚至觉得学而无用.课堂教学中重语法,轻算法,无法培养学生的思维意识和创新能力.

2 教学方法的探索与研究

2.1 加入SPOC的教学模式

目前MOOC平台基本包括了计算机专业的所以基础课程和专业课程,为了便于管理,可采用SPOC的模式对MOOC的学习加以控制,可有效改善学生在MOOC学习中缺乏自学约束的缺点.制作小片段的教学视频,时间一般控制在10-15分钟之间,小片段的教学视频有利于学生保存,实现教学资源的便捷传输,同时符合学生的学习规律和认知特点.教师可在课前发布视频资料,让学生简单了解本次课内容,结合线下教学让学生弄懂弄会每个知识点,课后安排作业,检查学生的学习情况,对于知识掌握好的学生可以增加习题难度,做到因材施教.这种方法可有效改善解决课时少的问题.教师可采用任务驱动的教学方式,推荐优秀的MOOC资源给学生,培养学生良好的自习意识,使学生的学习兴趣得以激发.

2.2 建立新型的教学模式

教师在平时教学中调整教学方法,以学生感兴趣的小程序(贪吃蛇、俄罗斯方块等)带动学生的积极性,看懂代码,再加以改进创新,有意识地加强培养学生运用知识分析与处理实际问题的能力.教学方法上课采用问题教学法、案例驱动法、课堂讨论法等等.对学生而言,则要求其将学习精力转移到对知识的系统理解和运用上.结合教学现状,从学生学习实际情况出发,教师应有机融合MOOC教学特点,致力于构建C语言程序教学模式.同时建立小组合作的方式,可以根据学生的情况进行分组,也可以自由结组,分工协作,教师可提供一些测评方式,确定每组的学习水平,划分不同难度的习题或项目,鼓励学生挑战难一些的等级,建立奖励机制,在期末成绩中给予体现,有利于培养提高学生的学习兴趣和合作、竞争意识,同时逐渐建立模块化编程的思维方式.学习过程中出现的问题例如怎样提高多重循环的效率、如何避免数组元素的访问越界等问题引导小组进行讨论,并将讨论结果融入项目设计中去.减少验证性实验的比例,逐步增加设计性和总和综合性实力的比例,培养学生的兴趣,增加主动学习的动力,达到事半功倍的效果.与高年级的学长建立梯队,帮助低年级学生巩固知识,教授技能,指导学习的方向,“階梯型”知识传递的过程中,竞赛的“种子”选手逐渐选拔出来.结合智能手机在学习生活中的优势,微信公众号作为微信特色功能模块是时下流行的信息传播媒介,也是大学生群体课余时间重要的浏览和阅读平台,课程团队可申请公众号,把相关的信息及资源、资料上传至其中,学生可以不受时间和地点的限制,随时随地查阅.

2.3 改变考核方式

C语言程序设计课程的考核方式是平时成绩和期末卷面考试成绩的总和.平时成绩只占了总成绩的20%,学生为了应付考试一般会在考试前期进行突击复习,死记硬背,忽略了对知识点的理解,这样出来的成绩失去了真实的意义.鉴于这种问题我们采用了阶段考试的模式,在每章结束后进行上机考试,弱化期末卷面成绩,鼓励学生自主复习、整理知识点让学生在整个学习过程中一直出于紧张的状态,跟上整体进度.在满足课程教学大纲要求的前提下,命题应以考查学生的思考能力和对所学知识的实际应用能力为主.考试内容不仅要包括书本基本内容,还要有教师补充的学科前沿信息及科研信息,以及指定教学参考书和MOOC的相关内容.全面考核学生分析与解决实际问题的素质和能力,这样测试出来的成绩才更有效.

2.4 改变实验教学模式

科学的实验课时分配在教学任务中至关重要,学生在学习理论知识的同时,还要融会贯通.对程序设计教学加以改进,强调动手实践、上机编程;以任务驱动方式,通过实例讲授程序设计的基本概念和基本方法.针对问题进行分析,构建数学模型,提出算法并编程实现,同时要求养成良好的编程习惯,在此过程中培养学生的思维能力和动手能力,鼓励学生探索、研究和创新.C语言程序设计是一门操作性非常强的课程.教学中,教师要培养学生的动手能力.依据学生学习规律将实验划分验证性、设计性、创新性、综合性四个类别.在验证实验中,教师引导学生掌握程序调试、错误分析、错误排除等方法及技能,让学生对实验结果有直观的认识,或者通过编译、执行已有程序来验证相关操作,使学生能够“边学习算法边实践编程”,通过编程实践来验证理论算法,进而进一步理解、掌握相关算法知识.在设计实验中,教师应引导提示解决问题,激发学生的编程思维,使之自行设计程序、自行调试程序,锻炼学生的编程技能和算法知识,鼓励学生用不同的算法去解决实际问题,通过算法多样化训练学生的计算思维.创新实验从需求分析、算法设计、算法实现、程序实际应用、分析总结等方面出发,利用验证及设计实验中知识的积累,应用递进式教学方法,学生自由组队,完成方案设计、设计、实现的全过程,拓展学生的实验能力.在综合实验中,有条件的学校可以与企业合作,聘请企业工程师承担部分实践教学任务结合真实案例,加以指导,让学生了解程序设计的意义和未来可能的应用领域,激发学生学习兴趣,扩展学生视野,搭建校外实训平台,把低年级的学生送到基地实训,让学生知道季候学习的努力方向及忧患意识.

为了解决安排统一上机时间与机房课程、学生课程冲突的实际情况,可联系实验室对没课的机房开放,这样既保证实验室的利用率,也满足了学生随时上机练习的意愿.

3 套路教学法

C语言课程往往针对大一新生讲授,对于刚刚开始大学生活的大一新生来说,一切都显得那么新鲜,上课时他们用那一颗颗充满好奇心的眼神望着老师,渴望着知识,下课后他们心里又会泛起一丝丝迷惘和不解,此时的他们,“内力深厚”,怀揣着满腔的知识,可却丝毫不懂如何运用,面对实际问题,解决方法往往显得稚嫩.幸好,这时,他们上了一门课,叫作“C语言程序设计”.

C语言程序设计的教学目的,是让学生在掌握一定编程语言基本知识的基础上,能够解决实际的问题.然后学生上课时,就是用C语言来解决课本上的题目都比较吃力,更别说解决生活中个的问题了.学生面对理论知识时往往靠死记硬背,遇到实际问题却不会分析、无力解决,针对这个C语言教学中的最大矛盾和问题,我进行了一系列教学上的反思和总结,发现了一个全新的教学方法——套路教学法.

套路教学法,是训练学生解决问题能力的一种教学方法,即为学生总结出一个“套路”——解决问题的模型,针对一个具体问题,按照这个固定的模型让学生去分析,从而得出解决思路,最终编程验证.当学生使用套路模型具备了基本的解决问题的能力后,他们又可以打破模型,构建适合于自己的问题模型,从而达到“青出于蓝而胜于蓝”的教学目标,学生也具备了举一反三的基本素养.

下面,我们举例说明,计算1+2+3+……+100.

这个问题是C语言里循环学习的第一题,大家往往通过这个题目让学生认识循环.按照套路教学法的思想,我们首先构建“套路”——解题模型,见图1所示.

具体解决问题时的步骤如下:

①确立数据结构:也就是本题中需要定义哪些变量,依据题意,需要定义存放求和结果的变量sum,类型定为int,还需定义循环变量i;

②设计程序结构:本题需要采用循环结构,循环三要素分别为:初值i=1,终值i=100,增值i++,循环条件为:i<=100;

③设计核心功能:核心算法采用迭代算法,即sum=sum+i,经过多次反复操作,能够得到最终结果.

每次解题时,要求学生按照如上套路进行.

4 结语

本文针对C语言程序设计课程教学中,学生学习积极性不高、实验教学深度不足、实验内容陈旧和考核方式有待创新等问题,通过改进考核方式、改善实验内容、增加教学课时等方面,激发学生学习的积极主动性,促使学生掌握C语言的基本知识、掌握语法规则和设计思想,通过实施套路教学法,提高学生的实际编程能力、分析和解决问题的能力,关于套路教学法深一层的理论研究将列为我们下一步的工作计划.

参考文献:

〔1〕NOI全国青少年信息学奥林匹克竞赛官网.http://www.noi.cn/.

〔2〕谭浩强.C语言程序设计教程[M].北京:清华大学出版社, 2014.

〔3〕顾容,张蜜,杨青青等.基于SPOC翻转课堂的探讨:实证与反思[J].高教探索,2017(1):27-32.

〔4〕安健,李远,康小林,张小彬.基于SPOC的物联网感知与标识专题实验教学新模式研究与探索[J].高校实验室工作研究,2018(4):4-7

〔5〕康苇苇.基于计算思维的C语言教学模式分析与案例设计[D].重庆:重庆师范大学,2015.

〔6〕庄宏,陈忠,唐文献,等.CDIO项目式教学研究与设计——以面向工程教育专业认证的“工程图学”课程为例[J].大学教育,2019(3):18-21.

〔7〕郭银章,王丽芳.基于项目任务驱动的C语言程序设计课程 教学改革与实践[J].计算机教育,2017(2):41-44.

猜你喜欢
C语言实践教学改革
“C语言程序设计”课程混合教学探索
基于C语言的计算机软件编程技术探究
中职C语言单片机课堂教学中的趣味性探讨
计算机原理中C语言的应用价值
初中政治教学中强化新八德教育探讨
体验式学习在数学教学中的应用研究
生物专业师范生教学实习的问题与对策研究
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究
校企协同实施高职专业课程改革的实践研究