培养能力为主线的C语言程序设计教学研究
2011-12-31陈莲君朱晴婷
计算机教育 2011年14期
摘要:通过对C语言程序设计教学体系与教学模式的研究,提出以培养学生逻辑思维能力、分析问题能力、解决问题能力作为主线,从教学内容和教学方法上入手改革教学体系;同时以发挥学生的学习主观能动性和创造性为目标,阐述WebQuest教学模式的相关理论,并以C语言程序设计课程网络平台建设实践为案例,给出了构建网络探究教学平台的思路和方法。
关键词:C语言程序设计;能力;教学体系;WebQuest教学模式
目前,在高校传统C语言教学中,所采用的教材大多是按C语言的知识结构组织内容的,一方面存在难点集中、跨度大的问题,要求学生记忆大量的语法规则、语句格式等,容易使学生产生畏难情绪;另一方面没有软件工程思想的体现,脱离实际应用,不利于学生能力的培养。采用的教学模式主要以教师讲授为主,忽视了学生是课堂教学的主体,培养出来的学生缺乏自主探索知识的能力,缺乏运用知识解决实际问题的能力。对学生的学习评价方式单一,大多以卷面笔试成绩为依据,很难客观体现学生的实际应用能力。针对这些问题,笔者提出建立以培养能力为主线的教学体系;依靠网络信息技术和多媒体等新兴技术构建基于WebQuest教学模式的网络探究教学平台,提高学生实际编程能力。
1建立培养能力为主线的教学体系
在C语言教学中,应该将培养学生逻辑思维能力、分析问题能力、解决问题能力作为主线,在培养能力的过程当中逐步引入语言知识,提高语言应用能力。因此,需打破原有的以语言知识为主线、先理论后实践的教学体系。
1.1教学内容整合,分散难点和重点
对 C 语言程序设计内容进行重新整合,整合的原则是要有助于尽早在学生头脑中建立面向编程的思维模式。我们根据学生的认知规律,以程序设计为主线,语言知识为辅,从应用出发,以进阶式教学方式,分散难点和重点,把具体教学内容重新组合成如图1所示的三大部分。
其整合的要点主要有:
1) 把数据类型、运算符、表达式等这些又多又抽象的语言知识分散到各个模块。
在介绍知识点时不强调知识的全面性,而是在程序设计中从使用语言单位出发,强调以用为主,从程序设计的运用来理解、领悟语法及其格式。例如,简单C程序的例程中只是简单的整型数据,对其他数据类型先不介绍,而当学生对整型类型有了一定的认识之后,再介绍其他数据类型[1]。
2) 分解语句、函数、指针、文件等内容。
例如,在简单程序设计阶段就对函数的定义和调用进行学习,一方面使培养学生模块化设计思想贯穿于整个教学阶段,另一方面也对函数这个教学难点进行了分散,使学生通过长时间的训练达到熟练掌握函数的目的。
3) 引入软件工程思想与软件测试技术,培养学生软件工程素质。
例如,第一模块中的软件开发方法中就以简单程序为例体验了从问题分析、算法设计、编码到测试的软件开发的过程,让学生尽早地知晓软件工程的基本思想。并分析每个例程的测试用例的设计方法,有助于学生重视测试环节。
1.2案例教学引出语法知识
案例教学法是基于建构主义理论的一种教与学的模式,是一种综合性的教学方法[2]。在课堂教学中要强调学以致用,以提高学生的探究兴趣为原则,其教学过程设计如图2所示:
在我们设计的各个教学内容模块的教学过程中,以程序设计作为贯穿各模块的主线,采用逐步引导的方式,精选出既能体现关键语法知识点,又有实用性和趣味性的程序实例,以实例驱动的方式进行讲解,从问题的提出、分析、算法的设计到最终编码测试,让学生了解程序开发的全过程。教师在案例的分析与要点的讲解过程中导入知识点,再对知识点展开讲解语法。
为了解决学生对所学知识缺乏必要的感性认识的问题,我们采用“体验式学习”方法,通过必要的实验让学生“做中学、学中做”,教师提出与案例相似的实验题,由学生当主角,让学生自己解决问题,使所学理论知识在实验中得到验证和应用,使学生对学习任务和目标有感性的认识和理性的理解,同时又锻炼了他们综合运用知识的能力[3]。
1.3精心设计案例,使例程前后衔接由简到繁
例程的设计要注意以下两点:
一是要有明确的针对性目标,能凸显关键知识点,并且符合学生的特点,难易适中,结合实际。
二是要有连续性、渐进性和层次性,使例程承前启后,由简到繁。
例如,以一个整数的倒序数的构造为案例,在简单顺序结构的程序设计阶段,例程只要求用主函数实现对一个三位整数构造其倒序数,目的是加强学生对“/”与“%”运算符的理解;接着在整型有参函数定义的开始阶段,例程中三位数的倒序数构造是由一个自定义函数实现,目的是初步建立模块化设计思想及掌握函数的声明、定义及调用方法;在随后的循环结构的程序设计阶段,例程中实现的是一个任意位数的整数构造倒序数的功能,目的是训练学生do-while循环结构语句的使用方法,采用自定义函数实现。然后再要求求出该数的位数,进一步强调return语句只能返回一个值,同时引出问题思考,被调函数向主调函数返回两个以上的值的解决途径是什么。在后续指针变量部分仍然可使用该案例,实现自定义函数传回倒序数和位数两个值的目标。
2基于WebQuest的教学模式改革
纵观软件业界,优秀的编程人员不是老师“教”出来的,而是通过不断地自我学习、自我探索成长起来的。而自主探究式学习,正是WebQuest 的魅力所在。所以依靠网络信息技术和多媒体等新兴技术构建基于WebQuest教学模式的网络探究学习平台,从而提高学生的实际编程能力。
2.1WebQuest概述
WebQuest 是由美国圣地亚哥州立大学教育技术系的伯尼•道奇(Bernie Dodge)和汤姆•马奇(Tom March)博士创建的一种课程计划,是以建构主义理论和认知学习理论为基础理论的面向探究的网络教学模式。WebQuest主要的教学方法是在网络环境下,由教师设定一个与学习课程相关的、具有一定吸引力的主题,并依据脚手架策略将其分解后与网络导航资源一起提供给学习者;学习者按照设定的情境和框架,对主题进行多角度探讨,最后通过讨论合作、互相交流完成与主题相关的学习[4]。在依据该模式所进行的教学活动中,由教师引导,以一定任务驱动学生进行自主探究式学习,使学生的系统知识学习与创新精神、创新能力培养结合起来。
C语言本身的特点与WebQuest 理念不谋而合。C 语言具有高度的灵活性,运算符丰富,语法限制不太严格,允许程序员有较大的自由度,相对于其他程序语言来说,对程序员要求更高。因此,应用者必须具有开放性、创造性思维和自我学习的能力。
当下,现代信息技术进步促使各高校校园网技术日益成熟,设备不断更新,网络技术和资源为WebQuest 实验教学模式提供了物理环境。
由此可见,“C语言程序设计”课程教学引入WebQuest 教学模式是可行的。
2.2网络学习模式的出现
在以教师为中心的传统教学模式中,教学过程中教师的组织和主导地位是绝对,一切由教师牵着鼻子走,学生容易养成“知识等老师教、思路由老师引、方法照老师做”的依赖心理,因此难以调动学习的积极性和主动性;学习的时间和空间是固定的,教师把全部精力放到备好课讲好课上面,但教师输出的知识和教学方式未必是所有学生感兴趣的,教学效果总是提不上去。
基于WebQuest教学平台的教学模式中,教师不再是课堂里唱“独角戏”,而成为教学活动的导演、设计者,教师变为学习环境的营造者、学生学习的促进者、学习过程中的指导者、学习效果的评价者和学习潜能的挖掘者,教学互动平台搭建了将教师、学生、教材、情境包容于一体的合作性探究学习“舞台”,学生成为学习的“主角”。
基于互动教学平台的教与学,不再局限于课堂上的短短几十分钟,同学之间、师生之间可以即时沟通、探讨以及协作,在交流和协作中获得知识。
3基于WebQuest的C语言教学平台的构建
WebQuest 的教学模式是:教师先创设某个特定的情境,将学习者引入其中,然后下达给学习者某个具体的任务,要求其独立或者协作完成。在完成任务的过程中,各种网络资源是学习者们的主要信息来源和制定解决方案的依据。
WebQuest理念下的C语言教学互动平台结构如图3所示。
3.1课程资源设计
C语言程序设计课程不仅要培养学生运用语言工具进行程序设计,更要训练学生用计算机处理问题的思维方式,是一门实践性很强的课程。教师的主要任务就是部署关于此课程知识点、关键点、难点和重点、电子课件、实验等资源和知识库,并传达此课程最终要完成的目标。该课程最终要完成的目标是:学生以2~3人为小组组成项目组,完成一个小型应用程序开发。
学生在接到关于本课程的任务和目标时,对该课程是没有具体的概念和理解的,因此,需要教师指导搭建脚手架一步步来完成最终的任务,学生通过脚手架提供支持和帮助资源,不断提高自己的水平和知识层次,最终达到统领全局,此外,支架式教学对学生在自主学习中遇到的关键点和难点都有指点和解决策略提示,有助于引导学生自我探究的过程。例如,在程序设计课程中,为使学生能完成开发小型应用程序的任务,首先必须使他们对C语言的语法要素、数据类型、语句、函数、输入输出等有充分的理解,教学平台提供相应案例库、完成程序开发所包含的子任务、开发工具(如VC++)、软件开发与软件测试的知识和技能等。
3.2互动交流设计
C语言程序设计是动手实践能力很强的课程,由于课堂教学时间有限,若学生在课后实验过程中遇到的问题不能及时得到解决,学生的学习热情就会减退,甚至失去学习信心。基于互联网的WebQuest教学平台,可以使师生不再受制于时空限制,只要网络可达就可以随时随地进行学习和交流,教学互动系统特此设计了师生交流互动模块,实现小组成员之间,师生之间自由的交流和学习,实现了课堂教学的延伸。通过体验和互动交流使学生能学习他人的长处和优势,养成多角度、全面考虑问题的习惯,培养学生协作能力和团队精神。
3.3在线测试与评价设计
C语言教学互动平台中的在线测试系统是学生自我评测的一个平台,并通过相互学习和对比不断进行自我超越。另一方面,学生的每一次努力都希望得到及时的反馈,互动平台中的学习管理系统,是师生进行互动的一个关键环节,是老师检查学生学习行为的途径,通过系统的作业提交和在线评价模块,教师对学生的作业作品与学习行为进行及时评价和记录。
3.4共享协作设计
课程学习的最终任务是以小组形式来完成,因此在学习中需要进行资源的共享协作,新的设计方法和思路以及优秀学生作品可以随时放入平台进行共享,对于遇到的困惑和难题也同样进行相互协作解决问题。由于课程任务是一个系统性的任务,包括系统分析、系统设计、系统实施、系统测试等模块,该教学平台的资源协作系统为支持大家分工协作。
4结语
笔者根据多年的课堂教学实践经验,提出了C语言程序设计课程教学体系改革思路,并依托学校的课程中心网站平台建设了课程教学互动网站,并实践于本校C语言程序设计课程教学,已初见成效。
参考文献:
[1]