C语言程序设计课程中引导自主学习型教学方法探讨
2015-12-05胡玉娟
赵 凯,吴 迪,胡玉娟,张 娜
(合肥师范学院公共计算机教学部,安徽 合肥 230601)
1 高校C语言课程教学状况
C语言程序设计是普通高等学校理工科专业开设的面向过程设计的一门计算机语言课程。因为它是计算机专业入门的一门基础课程,对学生了解和深入学习计算机课程具有开门砖的作用,它的普及范围逐年加大。然而,因为学习人群的数目较多,相应的知识结构层次、兴趣爱好不同,使得课程教学面临授课吃力,教学效果不理想,学生的掌握程度大打折扣。另外一方面,这种问题负面影响深远,使得部分学生产生厌学情绪,不利于其他课程的学习。
因此,对该门课知识结构进行分析,抽象出学生学习的具体目标,并把相关的概念与实践结合起来,让学生被动接受的学习方式转变为主动自发的目标学习,是减轻学生和教师教学负担,提高本门课程教学效果的关键措施之一。
2 引导自主学习教学方法
2.1 引导自主学习的内涵
一位教育学家曾说过:“未来文盲不再是不识字的人,而是没有学会怎样学习的人。”为改变以往教育体制对学生学习能力与创造能力的束缚,使学生具有可持续发展能力,引入以学生为主体的自主性学习模式,是当前教学改革中的新型课题。所谓自主性学习是以掌握教材知识为媒体,以学生积极主动的探索获取知识的方法和能力为目的,与之相对应的教学模式则主要体现了“学生主体、教师主导”的关系原则。它要求教师在教学活动中由“教”转化为“导”,充分调动学生学习的积极性、自主性,建立起有利于学生自主学习意识和学习能力健康发展的教学氛围,使教学达到“在获得知识和技能的同时形成自主学习意识和学会学习”的目的[1]。
这种教学理念在程序设计课程中具有颇深的实践意义。结合多年编程实践与学生学习的薄弱环节总结,学生学习过程中存在的问题大都是:基础知识死记硬背,编程实践生搬硬套,遇到程序问题只看结果不看逻辑。这种习惯在程序设计课程学习过程中是一种常态和恶习,直接导致学习枯草,效率降低。转变这种认知结构,一方面需要教师对这门课程知识结构的精通,具有相关程序开发的实践经验。另一方面,在实际教学过程中,对所教课程目标重点进行合理划分,侧重教学方法的研究,真正使学生融入并体会编程实践,才能使得学生学习由被动接受转变为主动的学习[2]。
C语言程序设计课程的教学是以培养学生程序设计能力,教学设计应具有理论和实践相结合性。为了实现理论和实践教学的结合,教学过程教师讲授应紧密结合学生编程实践,对实践环节中的问题及时发现、总结和反馈。合肥师范学公共计算机教学部程序设计改革中充分重视理论与实践相结合这一特点。在教学实践过程中,教师讲授知识与学生编程实践均设在机房。教师讲授编程以经典案例为主,中间穿插学生实践和知识综合分析。教学过程采用多媒体课件、编程实践和重要知识点板书相结合的方式。同时,机房配备先进的凌波教学软件,使得教师能够使用软件中广播功能全范围内授课,学生可以对照自己的电脑显示,观看教师实际操作的每个步骤。课程讲授一段时间后,教师会根据相应的问题让学生演练,对不懂的地方留有一定的实践操作时间,增加学生实践操作的机会,进而提高其编程能力。该软件使得教师可以在教师端看到每个学生具体操作情况,对出现问题的同学可以下讲台进行讲解。这对于维护课堂纪律,更好的了解学生情况有很大帮助。这种理论与实践密切联系的教学方法,增强了师生互动,避免学生机械的听讲与记忆。
2.2 课程设计目标划分
C语言是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点。因此,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于系统、三维、二维图形和动画的编程[3]。
如果说基本知识的学习是程序设计课程的基石,那么编程实践是知识的升华和最终的目标,在程序设计课程中起到核心地位。知识的学习都应该以可以实践,可以操作为最终的出发点和终极的目标。作为一种程序设计语言,它的核心在于如何表达与抽象实际问题,并利用计算机工具解决。因为它的实践性较强,对其知识的讲解必然要结合实际的编程实践。
图1 C语言程序设计课程目标
整个教学活动首先划分为两个环节:基本知识学习和编程实践。为了便于学生理解,基本知识的学习目标划分应依据程序设计的语言特点。本文对该课程的学习过程形象化为一般人类语言的学习过程,即:简单的发音学习 单词学习 组词、短语学习 句法、造句学习。并且教学过程中穿插每个环节意义说明,让学生了解整个教学活动。C语言程序设计课程的教学目标演化为:数据的定义(发音)
数据的存储(变量、数组、指针)(单词) 构成表达式(组词、短语) 顺序、分支、循环结构程序设计(句法、造句) 模块化(函数)的过程(文章)。学生对程序设计整体学习流程和特点有了一定的了解,在学习过程中才能有的放矢,不至于不知所学。
对于所学基本知识的转化为实际的编程能力仍然有一定的距离,编程实践的目标划分应该结合具体的知识结构、特点划分。应用现代软件工程的中面向对象设计思想指导面向过程的程序设计具有一定的价值,有利于帮助学生养成良好的编程习惯,提高学生对具体问题的抽象、解决的能力,进而深入计算机程序设计语言的编程实践。在此过程应主要告知学生如何分析、抽象以及解决问题。实践活动组织应从数据分析开始:首先让学生讨论问题描述中数据特点,掌握这些数据表达的方法。其次如何让数据满足问题求解,讨论相应的求解方法,使用流程的形式描述。最后,落实编程,进行目标程序正确性测试等。程序设计课程整体的目标划分可见下图:
编程实践是学好程序设计这门课程的核心环节。为了让学生不怕编程,喜欢编程,会编程。应该加强对学生编程过程的演示与分析,通过学生的模仿、感知培养其编程乐趣,刺激学习动力。编程目标中的每一个环节都不可忽视,是一个有机的整体,对学生可进行针对性的练习。比如运行和调试环节,通过例子的调试告诉学生计算机程序按照什么顺序执行,中间执行的过程有哪些变化,如何对错误问题进行查找等,从而加强学生对程序的理解。这种实践意识有利于学生知识的掌握,激发学习程序设计的兴趣。
2.3 自主学习驱动
(1)评价驱动
伟大的科学家爱因斯坦说过:“兴趣是最好的老师。”这就是说一个人一旦对某事物有了浓厚的兴趣,就会主动去求知、去探索、去实践,并在求知、探索、实践中产生愉快的情绪和体验。因此,使得同学们对这门课程产生浓厚的兴趣是引导其自主学习的内在动力[2]。
学生对程序设计课程在目前和未来学习中的地位认识,是学好这门课程的驱动之一。为了有效的引导教学,有必要补充学生对算机科学研究的方向,未来应用领域等相关背景知识,使学生了解计算机语言在科学研究中的重要地位。日常生活工作中软件开发常识,应用领域的背景同样需要适当的贯穿。通过背景和知识面的了解,学生会更加理解这门课程在科学研究和将来生活中的地位,这对于激发学生的学习好奇心具有重要的意义。通过实践体会,学生对这门课程的研究问题的方法有了一定的了解,这对于他们日后生活技能的提高具有很好的指导作用。
适当的合理考核体系亦有助于激发学生自主学习的自觉性。为了避免传统被动的考核评价模式,加强学生主动参与课程实践,课程考核应着重体现在编程是否独立完成、是否参与问题讨论、实验报告撰写是否规范等目标上来。这种评价要与学生进行互动,对学习过程及时跟踪,让学生主动参与问题的讨论和解决。
(2)经典案例驱动
程序设计是一门实践性非常强的课程,学生对知识的掌握应达到综合应用的层面。庞乱而没有重点的学习会使得学生产生厌学情绪,严重影响教学效果,很难达到预定的教育目标。针对每个学期学生的特点,教师应对实际课程目标进行细分,精选案例[3,4,5]。在选择案例的时候,对于重复知识点的例题尽量避免,并保证案例具有一定的代表性,易懂性,达到激发学生主动学习的目的。
首先,以学生知识为背景,结合多应用性为原则,体现知识的体系化。因此,案例的选择应该结合学生的知识结构,兼顾课程目标,体现一定的趣味使学生易于接受。比如,在讲解循环程序设计的时候,举例大数学家高斯10岁,数学教师要学生求出1,2,3,…,99,100全部相加的结果的题目。案例以学生熟悉的知识为背景,吸引学生的兴趣,引导学生分析问题中具有的循环条件是哪些,运用计算机应该怎么去求解等问题。结合这个典型的案例,教师亦可引出较为复杂问题的求解,比如求100以内素数之和,偶数之和等等问题。以经典案例为驱动,可以避免教学过程中重复知识点的讲解,同时能加深学生对重点知识的把握。
其次,根据学生的理解情况,与学生互动精讲案例。案例分析以问题的提出、分析、设计、实现、总结与扩展为主线。在讲解案例过程中,思路要清晰,知识重点要突出。比如上述案例的主要知识点应该是for循环程序设计,在讲解过程中要针对该问题讲清楚如何分析问题的,for循环有哪些特点,程序流程如何,循环次数如何界定等等问题。最后仍需要归纳总结这种例题特点是什么,应用场合是什么。并对稍微复杂的一些问题,留有部分时间让学生参与讨论、编程实践,也可以让同学们课下有兴趣的交流。
通过这种典型问题的求解,从主要知识点的讲解到具体实现,再到知识点归纳。强化了学生对重要知识点的掌握和举一反三的能力,对于增强师生交流,激发学生学习热情都能起到良好的效果。
3 结束语
高校C语言程序设计是程序设计课程的基础,着重讲解程序设计的概念、方法和思路,培养学生的基本编程能力、以及逻辑思维和抽象能力。根据当前教学过程中存在的问题,本文从课程设计目标进行划分,提炼出课程教学中的核心问题,从兴趣驱动,案例教学等多方面探讨了如何启发和引导学生自主学习,以期望培养出社会需要的程序设计人才,更好的为社会服务。教育活动是一种复杂的过程,具体的教学方法也有不少需要改进的地方,期待相关教育工作者集思广益,研究制定更为完善的教育教学方法。
[1]肖旻.程序设计教学中自主学习能力培养的研究与实践[J]南京工程学院学报2003(1):35-38.
[2]金宝根 潘张鑫.自主学习教学模式在VB程序设计教学中的研究与构建 [J]课程教材改革2013(7):107-108
[3]彭颖,苏德富,苏国华.案例引导---任务驱动教学法在程序设计课程教学中的应用 高教论坛 [J]2011(10):35-67.
[4]何首武.问题引导教学模式在C程序设计课程中的应用 [J]大众科技2010(3):139-122.
[5]贺文华 程序设计教学中引导探究的实践与总结 [J]娄底师专学报1996(4):77-82.