高职院校C语言教学方法探索
2013-11-02沈俊慧
沈俊慧
(福建船政交通职业学院 信息工程系, 福建 福州 350007)
高职院校C语言教学方法探索
沈俊慧
(福建船政交通职业学院 信息工程系, 福建 福州 350007)
从高职院校学生的特点和传统教学模式存在的缺点出发,探讨C语言程序设计课程的教学改革与实践,针对不同教学内容尝试不同教学方法。对于课程的核心知识点,如循环结构、数组、指针、结构体、C文件函数,可以采用适合高职教育特色的任务驱动教学法和项目教学法,这两种教学方法有利于培养学生的动手能力与解决实际问题能力。
C语言;高职教育;任务驱动教学法;项目教学法
0 引言
作为职业教育的高等阶段,高职院校兼具高等教育和职业教育双重属性,与传统的学院式教育模式不同,它以就业导向为模式,教育目的从“偏重文化技术和理论知识”转向“重视就业技能和发展能力”;教学内容从“校内课程为主,重视学科性”转向“重视专业领域建设,注重校内学习与工作实践结合性,就业导向重于书本知识”,最终培养出具有一定理论知识和较强实践能力,面向基层、面向生产、面向服务和管理第一线职业岗位的实用型、技能型专门人才。因此,高职院校课程设置要凸显实践性,教学也要以实践为主。C语言因其简洁紧凑、使用灵活方便、表达能力强、功能丰富、目标程序执行效率高、适用范围大、可移植性好的特点,近年来得到迅速推广与应用,成为许多高校特别是高职院校的计算机专业基础课程。由于高职学生生源成分不一,学习热情难以持久,畏难情绪容易滋生,加之大部分教师按传统模式教学,上课缺乏激情如同念经,导致学生渐渐失去学习兴趣,最终消极对待,难以实现开设C语言课程的目标。近年来,笔者从高职院校学生特点入手,在教学内容与教学方法等方面进行大胆探索,尝试采用任务驱动教学和项目教学等方法,积极投身教学实践,取得了较好的教学效果。
1 高职院校C语言课程教学现状
1.1 学生特点
高职院校学生主要存在生源成分不一,学习热情难以持久,畏难情绪容易滋生等特点。不同生源的学生,他们的计算机素养水平参差不齐,各有特点。来自普通高中的学生,在高考的压力下,高中的计算机课程形同虚设,学生的计算机基础知识薄弱,这部分学生习惯传统教育模式,较难进入程序设计状态;但他们的英语水平总体会高于职专学生,在C语言编译调试中显示出他们的优势。来自职专的学生,在三年的中专学习中已涉及到语言编程,有一定的语言基础,动手能力优于普高学生,但他们的英语水平相对较弱,这一点正好与普高的学生相反。教学过程中,笔者发现高职学生大部分虽有学习意愿,但学习热情难以持久。在学习初期热情高涨,随着学习的不断深入,当涉及到C语言的数组、函数、指针、文件后,由于概念多、难点多、规则复杂、不易调试,渐渐失去学习兴趣,产生畏难情绪,甚至主观认为学习C语言没有用处,不会也不愿花时间钻研和深入学习,很少能享受到解决学习难题后的乐趣,自我放弃,直接影响学习效果。
1.2 C语言课程教学现状
“C语言程序设计”课程是高职院校计算机相关专业进入大学校门后接触的第一门专业基础课,教学计划将此课程安排在第一学期,理论与实践的课时各占50%。实际排课采用2节多媒体教室+4节机房。若采用课堂教学、课后安排上机的传统教学模式,在实际教学过程中,笔者感觉到学生在多媒体教室上课时,一时难以消化大量的知识点;在机房上课时又不知如何打发时间,上机只能做些验证性实验,缺乏独立编写程序解决问题的能力。目前,大部分教师还是按传统模式教学,上课缺乏激情如同念经,导致学生渐渐失去学习兴趣,最终消极对待,难以实现开设C语言课程的目标。传统教学模式是一种以教师为中心学生被动接受的教学模式,该模式有其优缺点。优点是有利于教师主导作用的发挥,有利于教师对课堂教学的组织、管理与控制。但它存在一个很大的问题,就是忽略学生的主动创造性,不能把学生的认知主体作用很好地体现出来,很大程度限制了学生思维模式的拓展,部分学生习惯于线性思维方式。而C语言强调的却是结构化的模块思想,是一门实践性很强的课程,且高职教育是以就业导向为模式,重在培养学生实践能力。因此传统教学模式很难调动学生编程的积极性,不适用于C语言的实际教学。
2 任务驱动教学法和项目教学法尝试
近年来,笔者结合本人的教学实践,从高职教育的特点出发,尝试实施不同的教学方法。对于学生必须掌握的知识点,教师在课堂上讲解,分发足量的习题让学生上机实验。对于课程的核心知识点,可以灵活采用多种教学方法,如任务驱动法、项目教学法、讨论教学法,这样更能激发学生的学习兴趣,让学生在“做中学”,改变以往单一线性思维,培养学生以C语言的方式思考问题,提高读写程序和调试程序的能力。课程的主要教学内容及教学目的、教学方法如表1所示。下文重点论述任务驱动法和项目教学法的实施过程。
表1
2.1 任务驱动教学法与实施举例
教学过程中所涉及到的任务驱动教学法是基于建构主义学习理论的教学方法,指教师将教学内容设计成一个或多个任务,以某个实例为先导提出问题,引导学生主动思考、积极探究、相互协作,目的在于培养学生分析问题和解决问题的能力,培养学生独立探索知识和团队协作能力。具体实施环节包括创设情境、确定问题(任务)、自主学习、协作学习、效果评价。例如:在讲授循环嵌套结构时,引导学生回想使用过的计算机软件的界面图形,C语言具有这种功能,并且安排一个任务,“从键盘输入一个整数值,如n=6,输出如下图1所示矩形。”引导学生思考这个任务是打印字符,而字符的输出函数printf和从键盘获得变量值的输入函数scanf之前已经掌握,现在遇到的问题,重点在于如何控制输出字符的列数与行数跟键盘输入值一样。提示学生之前用while、do-while或for循环语句求n!的例子,n的值也是从键盘获得。进而让学生进行讨论交流且动手尝试能否用原有知识编写程序,完成任务。结果大多数学生只能控制列数,行数不能控制。由此,引入循环嵌套的知识点。后期为巩固学生的学习效果,让学生产生知识迁移,可以提出几个相近任务让学生在“做中学”如打印直角三角形、平行四边形、菱形等几何图形。
实践证明,任务驱动教学法通过创设与当前学习主题相关、尽可能真实的学习情境,引导学生带着真实的“任务”进入学习情境,唤起学生原有认知结构的相关知识、经验;选择与当前学习主题密切相关的问题(任务),让学生面临一个需要立即去解决的现实问题;教师向学生提供解决该问题的有关线索,学生通过解决问题进行探索性学习,建构新知识。因此,这种有效的学习方法,能够提高学生学习的效率和兴趣,培养学生分析问题、解决问题的能力,提高学生自主学习及与他人协作的能力。
2.2 项目教学法与实施举例
教学过程中所涉及到的项目教学法是指通过实施一个完整的项目而进行的教学活动,其目的是围绕项目组织和开展教学,使学生直接全程参与,体验、感悟、论证、探究,充分发掘学生的创造潜能,提高学生解决实际问题的综合素质与能力。它是一种以学习者为中心的教学方式,学生是信息加工的主体,不再是传统教学中被动的知识接受者,它的出发点和着眼点在于通过对问题的解决,来提高学生处理复杂问题的能力。
根据高职教育的特点,教育的关键是对学生职业技能的培养,使学生就业后具备就业岗位所需的综合素质和职业能力。以学生为中心的项目教学法,能够面向职业岗位整体工作过程的需要,整合多门课程的相关知识,通过职业和工作过程系统化的培养,来掌握融合于各项实践行动中的知识、技术和技能,同时,也培养学生的互相协作的团队精神。例如在学习结构体、链表、C文件函数时为提高学生的实际编程能力,就可以采用该教学方法。在初步讲解结构体、结构体数组、链表建立、插入和删除、各种C文件函数后,学生并不能真正理解与掌握C语言的精髓,只是感觉到C语言很复杂很难理解,丧失学习兴趣,更谈不上实际应用。在实际教学中,笔者设计9个项目,包括宾馆客房登记与查询系统、学院图书查询系统、企业员工查询系统、学生学籍及成绩查询系统等。例如《宾馆客房登记与查询系统》项目要求学生按照软件工程开发方法,编写一个程序,通过此程序能够查询所有客房的当前状态(如各种价位的空房数量、房号;正在维修房号;入住的客人信息与房号)、入住登记、修改客房的性质(客房转为普通行政管理房间或行政管理房间转为客房)。项目实施过程包括6大任务,环境搭建、分析需求、处理房间基本信息、实现系统菜单项、实现信息查询与修改、调试系统。该项目所涉及到的知识点除C语言基础知识,关键是数组、函数、指针、结构体、链表、文件操作等重点内容的应用。在初期提出项目要求和备选项目之后,让学生自行组队,随机选择项目,笔者就不再参与项目的分析、实施和完成工作。学生要根据自己的技能积累、知识储备,进行项目的需求分析、模块设计、模块编程、系统联调,完成一个可以解决实际问题的软件系统。项目完成之后,笔者组织学生进行评审,组长展示项目结果,最后根据完成情况进行项目评价。在此期间,学生不再面对抽象、无趣的基础概念和复杂算法,每个小组成员根据自身知识水平,参与动手操作和学习,完成小组分配工作,把书本知识融入项目当中。
实践证明,学生在做完一个项目后,整个C语言知识水平得到质的提升,经常有学生跟笔者说,在实施项目的过程中,上课所讲的知识点全部应用到,以往觉得空洞、抽象的知识,得到重新理解、掌握、应用,知道C程序设计语言到底有哪些功能了,真正实现C程序设计语言的教学目标。
在实施过程中,还应重视学生的个性特点,引导学生发挥各自的特长,充分发展学生的个性,让每个学生都尝试成功。比如,就上面所提到的,不同生源的学生,学习C语言各有优势和劣势。来自普高的学生,计算机知识基础薄弱,应鼓励他们向来自职专的同学探讨解决问题的思考方式;同时,发挥自己的英语特长,在C语言编译过程中,帮助职专生源的同学,翻译英文的提示语句。还有个别学生的自学能力和自控能力都比较差,容易产生依赖思想,学习进展缓慢,时间一长极易丧失学习的积极性和主动性,从而影响整个班级的学风,因而组队时,要求强弱搭配,小组分工时,功能简单的模块分给知识水平差些的成员,以免让这部分学生有畏难情绪,抵触程序编写。
3 总结
高职新生习惯于高中时的教学模式和学习方式,教师应该根据教学内容采用多种教学方法,让学习的难度分散,让每位学生经过努力都有达到目标的希望,促进学生在进步中享受成功的喜悦。基于建构主义学习理论的任务驱动教学法,可以引导学生循序渐进地自主学习和探究知识点,项目教学法可以以就业为导向,提高高职学生解决实际问题的能力,两种教学方法让学生通过不断的实践、讨论来构建自己的知识体系结构,能有效提高学生主动探究、分析问题、解决问题以及团队协作的能力,非常适合初次学习计算机语言的学生。
[1] 什么是高等职业教育?[EB/OL].(2011-04-07)[2013-05-26].http://www.80edu.com/html/gaozhao/gzyx/8264.html.
[2] 肖晓霞,罗铁清.建构主义学习理论在C语言教学中的应用研究[J].湖南师范大学教育科学学报,2012(6):100-102.
[3] 尹维伟.项目教学法在职业院校计算机教学中的应用研究[D].辽宁:辽宁师范大学计算机与信息技术学院,2010.
[4] 钱丽丹.项目化教学在C语言程序设计课程中的应用[J].软件导刊,2013(1):188-189.
[5] 张蕾.基于项目化教学的“C语言程序设计”课程改革[J].计算机教育,2013(1):17-20.
[6] 方少卿.《C语言程序设计》课程教学探索[J].安庆师范学院学报:自然科学版,2013(2):112-115.
2013-06-25
沈俊慧(1977-),女,福建诏安人,讲师,硕士研究生,主要从事计算机网络技术与程序开发研究。
G712
A
1671-6876(2013)03-0259-03
[责任编辑李强]