杨晓谙
摘要:针对高校非计算机C语言教学中存在的一些问题,分析了非计算机专业学生的特点,以及非计算机专业C语言课程的教学目标,从教学方式、教学手段、教学内容、考核方式等方面阐述了非计算机专业C语言课程的教学改革。
关键词:非计算机专业;C语言;逻辑思维;教学改革
中图分类号:G64 文献标识码:A 文章编号:1009-3044(2017)27-0138-02
随着信息技术的不断发展,计算机学科已经逐渐地渗透到了越来越多的传统学科当中,因此大部分的高等院校都在非计算机专业当中开设了计算机课程教育体系,而《C语言程序设计基础》课程作为计算机学科中语言类的基础课程,已经成为了各高校理工类专业的课程体系中不可缺少的一部分。
然而由于C语言过于抽象、语法规则多、难以理解等特点,加之非计算机专业的学生,计算机专业知识缺乏,逻辑思维能力较弱,难以形成编程思路,而许多教师在教学过程中,对于所有专业的学生一视同仁,按照教材照本宣科,于是就会出现非计算机专业的学生普遍学习C语言较困难,学习兴趣不高,随着教学深入有些同学甚至放弃这门课程的情况,导致教学效果很不理想。
笔者在长期的教学实践过程中,分析非计算机专业学生的特点,结合实际的教学情况,对非计算机专业的C语言的教学改革进行了一些探讨。
1 非计算机专业C语言课程存在的问题
1.1 非计算机专业学生特点
和计算机专业的学生不同,作为一门公共基础课,非计算机专业的学生会认为C语言同他们的专业关系不大,学不学无所谓,即使对编程语言有些兴趣的同学也会觉得,C语言是一门过时的语言,学了没什么用,还不如学些当前流行的面向对象的语言。由于认识上的误区,使得学生在心理上抗拒该课程的学习,缺乏学习主动力[1]。
其次由于大部分学生计算机基础的知识比较薄弱,而利用C语言编程又需要较强的逻辑思维能力,因此对于非计算机专业的学生来说,刚开始学习时,确实具有一定的难度,往往在遇到问题时无从下手,随着学习内容的深入,会觉得内容越来越难,到最后出现完全听不懂的情况。
1.2 教学过程中的问题
许多教师在C语言的教学过程中往往会把重点放在学生不感兴趣的语法规则的讲授上,重理论而轻实践,重程序设计技巧的讲解而忽略了编程思路的训练,导致学生普遍反映,上课讲的内容能听懂,老师写的程序也能明白,可真的到了自己动手编程的时候,就无从下手,导致最后,学生只能记住大量的概念和语法规则,却没有能力用计算机的思维综合解决实际的问题。
1.3 本校现状
程序设计类课程属于计算机基础课程体系,但是学习的内容和要求是相对的,对不同的人群应该有不同的要求[2]。本校计算机专业的C语言已经作为校精品课程,形成了一套完整的教学体系,而这一套的教学体系也一直都被非计算机专业的C语言课程所使用着,但是在长期实践的过程中,笔者发现对于不同的专业,在教学内容,教学方式,教学目标方面都应该有不同的要求,因此需要制定出一套面向非计算机专业的C语言课程的教学方案。
2 教学改革的几点建议
2.1 明确学习目的,改善教学方式
良好的开始是成功的关键,开课之处,教师不要急于讲解课程内容,而是要让学生明白,虽然C语言在今后的工作生活中可能都不会用到,但是学习 C 语言对于任何专业的学生都有莫大的好处,可以锻炼逻辑思维能力,模拟计算机的思维方式使大脑更为灵活,对以后的专业课的学习有很好的辅助作用, 逐步培养出信息时代人才最需要具备的“信息素质”[3],从而让学生一开始就建立起明确的学习目标。
同时作为教师自身也应该明确,C语言教学的目的是掌握高级语言编程的基本概念,建立起计算思维能力,学会利用逻辑思维的方法解决实际问题,而非C语言本身,因此教师在教学过程中要着重于程序设计的基本思想和方法的训练,而对于语法上的细节则应做相应的淡化,将复杂的语法知识,融汇到实际的程序设计个案当中去。
2.2 教学内容体现非专业特点
典型的C 语言教材内容丰富,知识点繁多,在章节的安排上往往是先介绍数据类型,运算符和表达式,之后开始编程。如果全盘按照教材的顺序和内容进行教学,往往效果较差。这就要求教师根据实际情况安排教学计划,在教学过程中对教材内容进行取舍,对部分教学章节的顺序进行调整。
首先在章节内容的安排上,筆者认为,开始时无需让学生面对大量的数据类型,运算符和表达式,只需先介绍最基本的int 类型,输入输出的“%d”格式以及“+、-、*、/”和赋值运算就足够,然后教学生们尝试着编写些简单的程序,让他们建立起一定的成就感和自信心。而其他内容完全可以在今后的章节中慢慢渗透。
其次在教学内容方面,既然C语言教学的目的是为了培养学生的逻辑思维能力,那么对于一些不常用却又容易弄混的部分可以做些适当的删减,比如自增自减运算多次出现在一个表达式的情况。再如在讲解循环语句时,如果详细讲解while、for、do-while三种语句,反而会扰乱学生的理解,不如以while语句为主,通过单一语句形式的讲解,清楚循环的本质和要点。而对于指针部分,只需让学生了解指针的概念即可,至于利用指针编程部分,个人认为可以不做要求。至于后面的结构体和枚举等复杂的数据类型,笔者认为也可酌情删减。
2.3 将多种教学手段贯穿教学过程
本校非计算机专业C语言课程,作为一门公共基础课,由于课时少、学生基础差、多数上大课等条件的局限,无法照搬计算机专业的那一套课程资料,但是可以根据实际需要,利用现有资源,将多种教学手段贯穿教学过程。
(1) 传统板书和程序窗口的合理使用
近年来PPT等多媒体教学手段已被广泛运用,这些现代化的教学手段可以形象生动的模拟一些抽象的基本概念和程序的运行过程,然而在讲解一个实际的程序设计的过程时,如果依然用PPT直接的显示出完整的流程图和写好的程序,反而让学生没有思考的过程,被动的就接受了最后的结果,不利于思维能力的培养。endprint
笔者认为,这时可以利用传统板书,慢慢地在黑板上一点点画出流程图,在画的过程中让学生跟随教师的思路一起思考,之后利用程序窗口,一个字母一个字母的敲入代码完成程序的编写。在此过程中还可以有意识的设计一些错误,可以是语法上的错误也可以是逻辑上的错误,让学生进行讨论,发现并改正这些错误。从设置错误、发现错误及改正错误这样的一个过程,提高学生主动思考问题、发现问题和解决问题的能力,让学生在错误中学习,在错误中成长。
(2) 案例教学法实施理论教学
如前所诉,C语言教材开篇都是些数据类型等一些基本概念的介绍,每章的开始也都是也基本语法的介绍,而既然非计算机专业C语言课程的特点是重算法而轻语法,重思维能力而轻基本概念,那么教学的过程中,可以部分脱离教材,利用案例教学法进行理论教学的实施。
案例教学是一种经典的教学方法,它采用互动模式,以案例分析为基础,一般要求涉及丰富的知识点,具有针对性、系统性、可实践性和启发性[4]。教师在课前认真分析知识点,精心组织案例,特别是可以设计一些具有使用价值或与专业相关的案例,并在课前布置给学生,让学生自己查找资料,试图解决,并每人提交一份初步的解决方案。在课上,首先用自然语言提出问题以及解决问题的基本步骤,之后展示学生提交的方案,让学生共同参与,一起写出程序,调试正确,将问题解决。利用这种方式,不但让学生一起经历了提出问题、分析问题、解决问题的过程,学到了知识点。并且在最后,一个问题还很可能会出现多种解决方案,可以用多种编程方式实现,拓展了学生的思维。
(3) 项目驱动法开展实践教学
在理论课上,通过一个或多个小案例学到了知识点和分析解决问题的方法,那么在实验课上,就需要对这些知识进行综合的应用。那么就可以为每一个模块设计一些综合的项目,比如“程序設计三种基本结构”这一章,可以布置学生们设计一个模拟小学生四则运算测试的小游戏。在章节开始之前将任务布置给学生,明确项目的要求和步骤,要求学生在课前就可以开始思考,在课程进行过程中指导学生将项目层层分解,逐步完成,最后在章节结束之后上交。
针对非计算机专业学生能力和基础良莠不齐的特点。有些同学接受能力强,有较好的逻辑思维能力,甚至有部分的编程基础,而有些同学基础较差,能力也相对较弱。教师在教学过程中要及时了解每个同学的特点,将学生进行分组,优秀的同学作为组长,带动能力较差的同学,共同完成任务。在发挥教师辅导作用的同时,也积极发挥学生之间的配合能力,鼓励学生间相帮助,共同发现问题解决问题[5]。
当然,为了防止出现项目最后完全由优秀学生完成的情况,可以在项目上交时随机抽取部分学生进行答辩,这样可以让能力较差的学生至少能够清楚程序的基本思路。
(4) 利用现有资源,搭建自主学习平台
本校计算机专业的C语言课程,已经建立了一套完整的课程体系,如网络教学平台,教学视频等,可以借助这些资源,让学生登录平台,获取教学资料,提出学习过程中遇到的疑问,获取解决方法,教师也可以通过平台及时发现教学当中的问题,调整教学方案。在课外或课前预习阶段,可以让学生下载教学视频,自主学习相关知识。
另外也可以建立C语言课程QQ群或微信群,实现师生之间和学生之间的随时互动。
2.4 科学合理的考核方式
C语言是一门实践性很强的课程,如果只靠传统以期末最后一次理论考试来确定成绩的方式,将无法考核出学生的真实水平,建议将考核的过程贯穿整个学期。期末的理论考试成绩可以占总成绩的50%,另外的40%来自上机实验时完成的项目及其答辩成绩,10%是上课考勤和其他作业。总成绩中加强了实践环节所占的比例,从而可以引起学生和老师对实践环节的重视度[6]。
3 结论
C语言课程是一门晦涩难懂的公共基础课程,但它又是所有理工科类学生学习许多其他课程基础。这就需要我们充分分析非计算机专业学生的特点,在教学过程中不断地改进教学方法和教学手段,培养起学生的学习兴趣、调动起学生的积极性,从而提高教学效果与教学质量。
参考文献:
[1] 李顺勤,何骄.基于“C 语言程序设计”课程“三改”的探讨[J].高教学刊,2015(24).
[2] 谭浩强.研究计算思维,坚持面向应用[J].计算机教育,2012(21):45-49,56.
[3] 张素芹,吴连生.独立学院“C语言程序设计”教学改革实践[J].计算机教育,2010(14):21-23
[4] 熊启军,宁彬,等.C语言程序设计课程案例式教学研究及实践[J].计算机时代,2013(1):55-56.
[5] 郝惠馨,李秀坤,夏清泉. C 语言程序设计实验教学探索[J].计算机教育,2010(17) .
[6] 熊方敏,许烁娜. C语言课程教学探讨[J]. 计算机教育,2010(13):105-106.endprint