程序设计教学的指导思想
挽木琴由 分享更新时间:
投诉
程序设计教学的指导思想
姓名:陈阳单位:北京市陈经纶中学日期:2001年10月29日程序设计教学的指导思想北京市陈经纶中学信息技术教研组 陈阳内容摘要 通信技术、计算机技术和网络技术等高科技的发展有力地促进了信息技术的现代化进程,人类社会已逐步迈向信息化社会。在这种社会大背景下,面对二十一世纪教育乃至整个社会发展的需要,高中计算机课在教学内容、教学方法、教学原则和教学思想等方面急需改革。程序设计教学长期以来一直是高中计算机课教学的重点和难点之一,当然也是争论的焦点。程序设计教学之所以走过“过热──过冷──正常”的发展路程,与客观条件及主观认识的变化是密切相关的。为避免程序设计教学在今后的发展过程中产生新的大偏差,笔者从程序设计教学应有的指导思想角度谈了如下一些个人观点:程序设计教学要选择属于主流方向的程序设计语言;程序设计教学要渗透结构化程序设计的思想;程序设计教学要帮助学生树立面向工程的观点;程序设计教学要指导学生应用面向对象的技术。程序设计教学要以学生学习间接经验为主,但要注意间接经验和直接经验的结合;程序设计教学要注意发挥学生学习的主动性;程序设计教学应注重理论联系实际;程序设计教学要采取多种途径巩固所学知识。高中计算机课的程序设计教学搞了十几年,其所经历的发展道路是令人深思的。搞好程序设计教学工作涉及的因素很多,既要考虑计算机软件设计发展的方向和需要,又要考虑学校、教师和学生的实际情况,更应重视采用科学、合理、有效和先进的教学方法实施教学。关键词 教育 教学 教学规律 教学研究 教学方法 教学原则 教学指导思想 计算机教育 计算机课 信息技术教育 信息技术课 程序设计教学 程序设计课通信技术、计算机技术和网络技术等高科技的发展有力地促进了信息技术的现代化进程,人类社会已逐步迈向信息化社会。如果说十年前人们对信息技术一词还不知所云的话,那么今天通过各种媒体的宣传与介绍人们对于IT(Information Technology)一词已经耳熟能详了。在这种社会大背景下,面对二十一世纪教育乃至整个社会发展的需要,高中计算机课在教学内容、教学方法、教学原则和教学思想等方面急需改革。鉴于这种认识,北京市教委教育科学研究院基础教育教学研究中心组织部分有经验的教师重新编写了高中计算机课所用教材,并将教材更名为《信息技术》。新教材除了在名称上与旧教材(《计算机》)不同外,更为重要的是在教材的编写指导思想上和教学内容的安排上都进行了力度较大的改革。十分幸运的是笔者应邀参加了这次新教材的编写工作并从中学到了不少东西,现结合程序设计教学的内容将一些感受和体会重点提出来供大家参考。程序设计教学长期以来一直是高中计算机课教学的重点和难点之一,当然也是争论的焦点。全国范围内在高中开设计算机课已经有约十六年的时间了,在这段时间里程序设计教学在高中计算机课中的地位也在不断发生着变化:1984年──1989年,程序设计教学在高中计算机课中占据绝对主导地位,其课时数占到了总课时数的70%~80%;1989年──1994年,降低难度、减少内容的呼声此起彼伏,相当多的老师和学生反映程序设计教学的难度过大,有的教育专家甚至提出了取消程序设计教学的观点。一时间程序设计教学的地位岌岌可危,程序设计教学课时数占总课时数的百分比一度下降到20%~30%;1994年──2000年,随着全社会计算机应用领域的不断扩大和水平的不断提高以及社会信息化进程的不断加速,人们逐渐认识到搞好信息处理工作不懂得程序设计是行不通的。在这种认识前提下程序设计教学在高中计算机课教学中的地位逐步恢复到了正常水平,目前其课时数在总课时数中的比例约为40%~50%。纵观程序设计教学“过热──过冷──正常”的发展过程,笔者认为这里面反映出来的是对程序设计教学的内容、方法、原则和思想的整体认识问题。为避免程序设计教学在今后的发展过程中产生新的大偏差,笔者认为有必要在这里进行一下认真的研讨。一、正确认识程序设计教学走过的发展路程程序设计教学之所以走过“过热──过冷──正常”的发展路程,与客观条件及主观认识的变化是密切相关的。1984年高中首开计算机课时选择的试验对象都是名牌重点中学。这些学校的生源好,学生质量高,学生的接受能力普遍较强。经过几年的试验,高中计算机课的教材被定位在一个较高的层次上,而这种定位是以名牌重点中学的学生为背景形成的。因此,从1990年左右高中计算机课在全国普通高中范围内全面铺开后不久,反映教材(尤其是程序设计部分)难度过高的呼声越来越强烈。在认真听取基层意见的基础上,受当时诸多客观条件及主观认识的限制,教材编写者对高中计算机教材中的程序设计部分进行了大幅删减。然而经过几年的实践发现,随着全社会计算机应用领域的不断扩大和水平的不断提高,各行各业的计算机应用工作对软件人员的需求量不断扩大,对他们在技术上的要求不仅没有降低而且是大大提高了。从为人才的成长打下一个坚实的基础这个角度来说,程序设计教学在高中计算机课中的地位必须得到应有的合理的恢复。当然,程序设计教学本身也需要在多方面进行必要的改革。二、程序设计教学要符合计算机软件设计的发展方向1、程序设计教学要选择属于主流方向的程序设计语言1984年高中首开计算机课时用的是APPLE-II微机。受当时的资金、硬件条件和认识水平的限制,程序设计教学选用的语言是那种带行号的非结构化的BASIC语言。就当时各方面的情况来说,这种选择是被迫的,但也是现实的、正确的,因为那时的非结构化的BASIC语言是程序设计的热门语言,也是世界上掌握人数最多的和最通俗的语言。1990年之后的两、三年里,不少学校的计算机硬件条件得到了初步改善,软件资源也较以前丰富了。然而此时非结构化的BASIC语言的结构化进程缓慢,易用性差的特点越来越突出。一时间取消BASIC语言教学的呼声四起,不少学校纷纷呼吁甚至改教PASCAL、FORTRAN和C等其它语言。应该说这种勇于创新、不断进取的精神是值得称道的,但也不应忽视问题的其它方面。首先,当时全社会的计算机应用范围还很窄,学生对计算机基础知识的了解与前几年的学生相比没有什么变化,因此教学的起点不宜太高;其次,PASCAL、FORTRAN和C都是用途较特殊或较专业的语言,不适宜用来进行普及教育;再次,即使采用非结构化的BASIC语言进行程序设计,也可以在一定程度上按照结构化语言的特点进行要求。所以说这种摒弃BASIC语言的做法是不太合适的,后来的事实也证明了这一点。当结构化的BASIC语言出现后,它重新受到了人们特别是初学者的青睐。近几年,程序设计的观念又发生了显著变化,可视化(Visual)技术广泛用于各种程序设计过程。作为专业人员不懂得可视化编程技术已无法在竞争激烈的计算机行业中立足,作为计算机学科的教师不懂得、不传授可视化编程技术已难以满足学生的强烈求知欲望。从本次教材编写过程中对这一问题的激烈争论来看,不少教师的认识水平急待提高,观念急需更新。在目前的几种可视化编程工具中,笔者认为对于高中阶段的学生来说讲解VB(Visual Basic)语言比较合适。首先,VB是使用最为广泛的编程工具,用它编程便于和其他人的交流;其次,VB本身在设计时就充分考虑了使用者的需求,尤其便于初学者的学习;再次,VB和以前版本的BASIC语言有一脉相承的地方,便于教师的知识更新,更有利于教师在教学中对不同版本的BASIC语言进行纵向比较,帮助学生明确知识的形成过程。2、程序设计教学要渗透结构化程序设计的思想采用非结构化的程序设计方法设计出来的程序无章可循,程序常常带有强烈的个人色彩。这样的程序可读性差,编写、调试和维护工作都十分困难。为了提高程序的可读性、保证程序的质量并降低程序的成本,人们提出了结构化程序设计的方法。所谓结构化程序设计,通俗地说就是按照人的思维方式在合理的时间里将计算任务拆解成顺序、选择和循环三种基本结构的容易理解的有机组合,然后动手进行程序设计。学计算机专业的人都知道,程序设计的观念虽然发生过很多变化,但程序的基本结构仍然是顺序、选择和循环三种。因此,在学生初学程序设计时就应该注意渗透结构化程序设计的思想以便使学生养成良好的程序设计习惯。渗透结构化程序设计的思想时要突出以下几点:(一)、程序的质量首先取决于它的结构。程序设计和建筑设计极为相似,一座建筑物的整体质量首先取决于它的钢筋混凝土结构是否牢固,然后才是它的外装修质量。同样,一个程序的质量优劣,首先取决于它的结构,其次才是它的速度、界面等其它特性;(二)、程序设计的基本方法是自顶向下地逐步求精和模块化。自顶向下地逐步求精是指首先要对所设计的系统有一个全面的理解,其次从顶层开始连续地逐层向下分解,直到系统的所有模块都被分解为一条条的详细指令时为止。模块化是指把一个大的程序按照一定的原则划分为若干个相对独立但又相关的小程序(模块)的方法;(三)、如果一个程序中的所有模块都只使用顺序、选择和循环三种基本结构,那么不管这个程序中包含多少个模块,它仍然具有清晰的结构。从对结构化程序设计概念的解释中我们还可以看出,结构化程序设计的过程也就是对学生的思维进行训练的过程。在许多常规学科的日常教学中我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。写起作文来前言不搭后语,令人不知所云;解起数学题来步骤混乱,搞不清因果关系。这些都是缺乏思维训练的结果。结构化程序设计的训练不仅可以让学生养成良好的程序设计习惯,而且可以有效地培养学生思维的条理性和逻辑性。3、程序设计教学要帮助学生树立面向工程的观点在计算机行业中,软件的设计已经用工程的观念来进行管理。软件设计不再被认为是手工作坊里的个体劳动,而是被当作一项系统工程。软件工程的复杂程度不低于甚至高于诸如建筑工程等其它行业的工程。高中阶段教育的目的是为社会和高等院校输送合格的中等人才,而高等教育的目的又是为社会培养合格的高等人才。随着社会信息化进程的不断加速,计算机应用走进各行各业是大势所趋。从广义的角度上说,高中阶段的计算机教育是培养未来社会计算机应用人才的初级阶段。我们都知道这样一个道理,一个人从小养成一个好的习惯是非常重要的。因此,当前的程序设计教学必须以切合将来软件工程开发的实际需要为第一目标,使学生在学习程序设计的初级阶段就树立正确的软件工程观点。这样做不仅可以为学生将来从事计算机应用打下良好的基础,而且有利于培养学生统筹全局、协调关系的基本素质。4、程序设计教学要指导学生应用面向对象的技术程序设计的实质就是编写处理对象的过程。凡是教过程序设计的教师都曾经有过这样的体会:语句教到一定的程度,学生会逐渐产生一种编程越来越难学的感觉。这是一种很不正常的现象。语句相当于程序设计的工具,掌握的语句越多设计起程序来本应该越自如、越灵活。那么为什么会产生上述反常的现象呢?这里面的原因是多方面的,其中最重要的一点就是长期以来程序设计的观念不是以如何处理好对象为出发点,而是以如何使用好语言为基点。受这种思想的影响,我们的程序设计教学不是以如何解决好问题为重点,而是以讲解语法规则和语句格式为目标。这样做造成的结果就是拿到一个任务后学生首先想到的不是怎样把任务进行合理的解析,而是先琢磨该用哪条语句。令人庆幸的是在计算机行业中程序设计的观念已经有了重大变革,面向对象的程序设计技术已经被广大软件设计人员所接受并用于实际开发过程。我们教师应当及时学习这种先进的技术,把学生们从程序设计的苦海中解放出来,还他们一个轻松的学习过程。三、程序设计教学要遵循教学过程的基本规律和基本原则教学过程是教师根据教学的目的和任务以及学生身心发展的特点有计划地引导学生掌握知识、认识客观世界的过程,是通过知识的传递和掌握来促进学生身心全面发展的过程。探讨教学过程的基本规律,是研究教学理论的重要课题。只有按照教学规律办事,才能增强教学工作的效率,提高培养人才的质量。教学原则是根据教学目的和教学过程的客观规律而制定的指导教学工作的基本要求。遵循正确的教学原则可以帮助教师创造教学工作的有利条件,从而达到预定的教学目的并获得良好的教学效果。1、程序设计教学要以学生学习间接经验为主,但要注意间接经验和直接经验的结合从知识的起源来说,任何知识都是来源于直接经验。然而从学生的个体认识过程来说,学生必须大量地接受间接经验,以学习书本知识为主,不可能也没必要事事从直接经验进行。学生在教学过程中的主要认识目的不是探索新的真理,而是学习和继承人类已有的认识成果。学生的学习以书本知识为主使学生能用最短的时间掌握大量的系统的文化科学基础知识,避免人类曾经经历的曲折和失败。然而强调学生以学习书本知识为主,绝不能忽视学生的直接经验在认识客观世界中的作用,要重视使学生获得必要的直接经验以便从感性认识向理性认识过渡,加深对书本知识的理解。同时,要重视组织学生参加必要的实践活动。在教学中把间接经验和直接经验结合起来能使学生获得比较完全的知识和把知识运用到实际的能力。程序设计人类已经搞了几十年,对于一些问题业已形成了成熟的算法。对于这些算法我们只需要求学生会用即可,不必要求他们掌握里面的深奥技巧。反过来,对于一些并不是很难然而却需要学生细心体会和品味的概念和技能教师最好不要进行代替消化式的讲解,而要让学生自己去领悟,哪怕碰点钉子也未尝不可。2、程序设计教学要注意发挥学生学习的主动性教师在教学过程中要善于启发和诱导学生独立思考、积极思维,充分调动学生学习的自觉性和积极性,使学生融会贯通地掌握所学知识,提高分析问题和解决问题的能力。我国古代教育家孔子指出:“不愤不启,不悱不发”。学生的学习是个认识过程,要实现认识过程中由感性认识上升为理性认识、由理论到实践的飞跃,必须有学生自己的积极主动的思维活动。学生是学习过程的主体,学生的学习过程是一个相对独立的客观过程,教师的主导作用要通过学生对学习过程的主动性、积极性才能实现。教师要重视培养学生的探索心理,鼓励学生积极思考和质疑。在教学中教师要充分发扬教学民主,建立民主平等的师生关系,生动活泼地开展教学活动。程序设计教学可讲的内容很多,但受课时和学生认知水平的限制,不可能也没有必要把所有的内容都讲到。多年的教学实践表明,将部分教学内容设计成专题留给学生进行有准备的课堂讲座或讨论以及将一些教学内容提炼成问题作为学生的课外思考题等方法往往更能调动学生学习的主动性,常常收到一些意想不到的教学效果。3、程序设计教学应注重理论联系实际理论联系实际不仅是人类认识活动的普遍的基本规律之一,而且也是教学中传授和学习科学知识本身的客观要求。教学应该在理论与实际的结合过程中传授和学习基本知识,从而引导学生运用所掌握的知识去分析问题和解决问题,在动手实践中达到培养学生手脑并用能力的目的。科学研究的结果表明,如果学生在学习书本知识的同时注意做到密切联系实际,则易于获得关于客观对象的比较完整的认识。因此我们在重视通过书本知识的教学使学生获得系统的基础知识的同时,必须加强基本技能的训练,创造多种多样的活动形式,使学生把所学知识运用于实际。除此之外,还要加强对学生自学能力的培养,尽可能使学生亲自动手、动口、动脑地学习,培养学生利用旧知识获取新知识的能力。程序设计是一项实践性很强的工作,因此程序设计教学不能采取纯理论解析的教学方法。除了进行一些必要的概念讲解之外,教师主要应该让学生通过上机实践的办法来掌握所学内容。一方面,通过上机实践可以加深对课堂理论内容的理解和掌握;另一方面,通过上机实践可以培养学生的操作能力和灵活运用所学知识进行程序设计的能力。重视并贯彻理论联系实际的原则可以有以下几种可行的办法:(一)、提高动手实践部分占程序设计课的比例。学生实践的机会越多对所学知识的掌握就越牢固,设计和调试程序的能力就越强;(二)、进行学科教学的整合。鼓励学生设计程序解决其它学科中的问题,有条件的学生还可协助其它学科的老师编制一些CAI课件;(三)、积极开展第二课堂的活动。组织学生开展程序设计竞赛、课件设计竞赛和网页设计竞赛等多种形式的竞赛,让学生感到学有所用,提高学生的学习兴趣,巩固学生的学习效果。4、程序设计教学要采取多种途径巩固所学知识(一)、课内与课外相结合学生在短时间内集中地学习大量的未经自己亲身感受的间接经验,特别需要及时不断地巩固才能防止遗忘并有利于知识的消化和积累。知识和技能的巩固是顺利学习新知识的基础,也是在实践中运用知识的先决条件,更是发展记忆力和思维力的重要手段。课内讲授主要起入门、引导和启发的作用,学生要想真正领会所讲内容,必须结合自己的实际情况在课外多做一些编程练习、多看一些这方面的参考资料。一本教材编得再好、一位教师的课上得再棒也不可能把知识讲得面面俱到、也不可能满足所有学生的学习愿望,只有善于通过多种途径学习的人才能把知识学好用好。这个道理不但教师心里要明白,而且也要让学生明白。(二)、分散讲解与集中训练相结合把大问题分解成若干个小问题、把集中的知识难点分散到不同的环节中去讲是我们为了搞好平时的教学而经常采用的方法,这种方法在便于学生理解、接受新知识点的同时也带来了学生对知识的整体结构认识不清、不能融会贯通地灵活运用所学知识等弊端。比如在试卷中经常会看到这样的现象:有的学生对试卷前半部分的填空题、选择题等小题尚能应付自如,一旦碰到试卷后半部分的论述题、综合题等大题则往往不知所措。在程序设计教学中为了避免类似现象的出现,笔者建议采用布置课程设计作业的方法。具体做法是:将学生分成若干个小组,每组布置一道具有实际应用背景的大题,由组员分工独立完成,最后大家一起联合调试通过。这样做既提高了学生的学习兴趣,又培养了学生综合运用所学知识协同解决实际问题的能力。(三)、卷面考试、上机考试和课程设计相结合程序设计课程的实践性决定了它对学生的要求不是死记硬背各种语法规则和语句格式,而是在解决实际问题的过程中掌握程序设计的方法并提高逻辑思维的能力。因此,程序设计教学对学生进行的考核应采用卷面考试、上机考试和课程设计相结合的方式。卷面考试可以侧重考察学生对基本概念的理解和对基础知识的掌握;上机考试可以侧重考察学生的综合应用能力;课程设计可以侧重考察学生解决实际问题的能力。以上三个方面的综合考察,有利于全面衡量学生的学习情况,有利于教学过程的合理进展,从而全面提高教学质量。例如,笔者在学生学完程序设计部分以后,要求学生编一个模拟福利彩票的程序,该程序要具有彩票销售和彩票抽奖两大功能。学生在完成这个程序的过程中,要用到数值变量、字符串变量;单个变量、数组变量;固定次数的循环、不定次数的循环;随机函数、取整函数;利用数组标志变量判断重复的算法等。可以看得出来,学生要想完成好这个作业,必须对所学过的知识进行一下系统的总结。除此之外,可能还要学习一些新的知识。笔者的教学实践表明,这个作业极大地激发了学生的学习兴趣,充分锻炼了学生分析问题、解决问题的能力,收到了良好的教学效果。四、结束语高中计算机课的程序设计教学搞了十几年,其所经历的发展道路是令人深思的。搞好程序设计教学工作涉及的因素很多,既要考虑计算机软件设计发展的方向和需要,又要考虑学校、教师和学生的实际情况,更应重视采用科学、合理、有效和先进的教学方法实施教学。本文在笔者参加北京市高中计算机课《信息技术》教材和教参编写的基础上从程序设计教学应有的指导思想角度谈了一些个人的观点。受学识水平和理论水平的限制,谬误之处在所难免,恳请有经验的教师不吝指正。参考文献北京师范大学《心理学》编写组,《心理学》,北京师范大学出版社。作者声明:本论文尚未正式发表,也从未投稿到任何报刊。作者联系方式姓 名:陈阳通信地址:北京市朝阳门外大街38号邮政编码:100020电 话:6509.4792(3,4,6,8,9)转103E-MAIL:CHENYANGCHEN@263.NET