文化程度低可以学好c语言程序设计,论后现代课程观对C语言程序设计教学的启示...

摘要:本文总结了笔者多年来从事C语言教学的经验,对教育大众化背景下的C语言教学所遇到的问题进行了反思。在总结教学经验并借鉴后现代课程观的基础上,提出C语言程序设计课程改革的多项措施。

关键词:C语言;程序设计;课程论;后现代;对话

中图分类号:G 文献标识码:B

文章编号:1672-5913(2007)07-0018-05

1 二十年教学之总结

笔者从事程序设计语言教学20余年,从早期讲授解释性BASIC,中间穿插讲授Pascal、汇编、HTML,直到近十年主讲C和C++。在多年的教学中,逐渐形成以现代教学论为指导的教学范式,现分三个方面予以总结。

1.1 突出程序设计语言的基本结构

教学首要的问题是如何处理教材、恰当选择教学内容。C语言的教学要突出的是:基本语法规则,C程序的基本结构及算法设计以及上机操作的基本方法。在教学中以阅读、编写、调试C程序为主线,对某些次要的语法细节和数学问题的算法则不必繁琐讲解。有些教材对数学问题有偏爱,常拿数学问题作为例程或习题,如“已知三角形的三条边求其面积”、“求两个数的最大公约数、最小公倍数”等等。这些问题求解涉及数学公式或数论知识,对于数学程度较弱的学生,增加了学习上的困难。考虑到学生的差异性,一开始上课时还是举些贴近实际的问题效果较好。

1.2 范例导向的教学方法

C语言教学有两种方法,一种是以语法体系为中心,首先介绍语法规则,然后举例说明。这是多数教材和教师采用的方法。另一种是以问题为中心,围绕精心选择的“范例”展开教学。笔者的具体作法是:(1)提出问题;(2)板书程序(或投影),要求学生做好笔记并思考;(3)分析程序,讲解其中的语法规则及算法;(4)上机实验,内容为例程、教师布置习题或自选题。例程的选择要“少而精”,选择和实际应用密切相关的问题才能引起学生的兴趣。每次课(2节)讲3~4个例程,一学期将积累40多个例程。如果学生能将这些例程融会贯通,C语言程序设计可以说已经入门。

1.3 操作―强化的教学策略

程序设计是实践性很强的学科,需要通过实验操作来培养动手能力、实践能力。有的教师说:“这个问题我已经讲过,学生怎么还不会呢?”问题是学习并非简单的刺激―反应式(桑代克的学习理论),并非教师告诉学生是什么、怎么做,学生就能学会。真正的学习要经过操作―强化过程(斯金纳的学习理论),通过操作结果的反馈――正确结果的强化与对错误结果的反思,学生才能真正理解掌握。比如初学者使用标准输入函数scanf()时常常搞不清它是在什么时候执行的,有些学生会写错它在程序中的位置。上机实验后才恍然大悟。“空讲无效,多讲无益”,认识到这一点很重要,教师要下决心精简讲课时间,增加实验课时间,两者比例1:1较合适。最好每讲2节课紧跟2节实验。

以上“三招”在教学中比较灵,教师自感得心应手,学生反映也好。为此,笔者于1998年、2002年两次获院优秀教学奖。

2 教育“大众化”后的教学困惑

随着计算机教育的发展,“C语言程序设计”从20年前仅由研究生、访问学者学习的高级课程,成为基础课程,很多非计算机专业(包括文科专业)也加入到学习C语言的行列。高校扩招以来,教学对象的变化使C语言教学遇到前所未有的问题,一部分学生跟不上教学进度,达不到规定的教学要求,考试不及格的比例之高难以想象。笔者也尝试降低某些较难章节的教学要求,但因为基础较好的同学有较高的要求,以及学位考试和部分学生考研的需要,也不能一味降低教学要求。教学面临两难的抉择。建立在现代教育观、现代课程观基础之上的教学受到教学现实的强烈冲击,不能不引起笔者深刻的反思。2006~2007年度笔者获得到华东师范大学访学的机会。通过广泛的学术交流及文献资料阅读,开阔了视野,对C语言教学有了新的认识。

3 现代课程观批判

现代课程论的奠基之作是拉尔夫・泰勒(Ralph Tyler)的《课程与教学的基本原理》(1949),简称为“泰勒原理”,其要点有4条:(1)确定教育目标;(2)选择能达到教育目标的经验;(3)有效组织教育经验;(4)通过教育评价检验教育目标是否实现。“泰勒原理”源于20世纪工业化时代工厂模式。学生犹如流水线的产品,按照相同的标准、用相同工艺塑造,最后检验产品质量。合格的出厂(毕业),不合格的返工(补考)。

现代课程模式的最大弊端是简单,既忽视了学生差异,也忽视了社会对人才的多元化要求。学生之间的天赋、特长、能力、基础、兴趣、就业意愿、理想与抱负各不相同。无视这种差别,以相同的标准、相同的方法教育学生,并期望都达到预设的人才目标,无异于希腊神话中的“普洛克路斯忒斯之床”,按床的长短(统一标准),把腿长的斩短,腿短的拉长。这是多么可笑的事情。教学困惑的根源也出于此。

4 后现代课程观的启示

随着科学技术的进步、“信息化”、“经济全球化”的到来,社会步入后工业时代。人们开始认识到世界是何等复杂而又丰富多彩,进而向“自然是自足而简单”(牛顿语)的现代主义思维范式发起挑战。于是,重视“差异”、崇尚“个性”与“多元”的后现代主义泛文化思潮开始兴起,并日益渗透到政治、经济、文化、教育等各个领域。在这样的文化背景下,后现代教育思想应运而生,并在对现代教育观弊端的批判以及对教育重大问题的重新诠释下发展。后现代课程观流派纷呈,William E. Doll的4R课程观有其代表性。4R指丰富性(rich)、回归性(recursive)、关联性(relational)和严密性(vigorous)。下面通过对4R的解读探索其对C语言程序设计课程改革与教学的启示。

丰富性:指课程的“复杂性”和“多元化”。多尔解释复杂性时说:“教师和课程设计者要接受复杂性,生活本身就是复杂的,我们要利用这一复杂性,而不是否定差异,变化和困难。”[1]

应对学生“差异性”的多元化策略,就是“退一步海阔天空”。为什么不可以根据学生的实际情况因材施教,对不同学生提出不同的教学要求,辅之以不同的教学方式,制定出多元化的质量评价标准(要在试卷中体现出来)。比如成人教育中,一部分非理科的中小学教师学习C语言,只是作为计算机文化的一部分来学习(俄罗斯学者称程序设计是语言、数学之外第三文化),他们只要能够理解程序的概念和执行过程,编写某些简单典型问题的程序,达到一个最低要求就可认定合格。何必一定要再学那些与他们日后工作毫无关系,只在计算机专业后续课中才需要的那些内容?

现在来分析C语言的复杂性及教学内容的螺旋式编排。作为主流的高级程序设计语言之一,C语言主要供计算机专业人员用来设计操作系统(如Unix、Windows NT)、大型数据库系统、实时控制系统等。它实际上是比较复杂、也比较难掌握的语言。决非有些人想象的那样,通过“短期突击”,做十几道题就 可以掌握,甚至可以通过相应的水平考试。这是不现实的想法。真正掌握C语言需要较长时间的学习和实践。现在C语言作为普及性的课程,甚至是程序设计入门的课程,应如何组织教学内容才便于学生接受?据笔者在上海书城福州路店的实际统计,约150余种C语言教材,绝大部分都是语法体系为本的线性编排方式。初学者面对的将不只是C语言的语法规则、语法表达,还要面对例程所涉及的数学问题、程序算法问题,困难程度可想而知。后现代课程观认为人们的认识必须从简单到复杂才能达成,因而主张教材按照“螺旋式上升”排列。这就启示我们,将C语言的教学内容按三个循环来排列。首先是一个简单问题的学习循环,用贴近学生实际生活的问题程序,如行李托运费问题、打印九九表、求学生成绩平均分、最高分等,展示C语言的主要语法规则和语法表达。然后进入以算法和结构化设计方法为中心的第二循环。着重典型的算法分析(如穷举、排序、查找、递归、迭代、子符串处理方法等)和用函数实现的结构化程序设计方法。最后进入高级问题编程专题的第三循环。包括:(1)综合实例分析,如通讯录、学生成绩分析系统等;(2)C语言和其他学科交叉接口的编程问题,如链表、哈夫曼最优编码、CGI程序、外设驱动程序等。这些专题可以根据实际情况选用。教学内容螺旋式排列可以帮助学生循序渐进地提高,也有利于不同程度、需求的学生灵活选择学习循环层次和学习内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值