自我架构:高中“算法与程序设计”教学
2015-01-13马凤云
马凤云
“算法与程序设计”是从培养学生的算法思维与创新能力入手,更适用于对高中生培养的模式。但与“多媒体技术与应用”等课程相比,“算法与程序设计”课程看起来较为枯燥,这也是为什么一提起该课程的教学,很多教师都感到束手无策的原因。我总结了大家困惑的问题,首先是课程定位问题,如何正确处理算法、程序设计与语言之间的关系问题;其次是课程的信心、兴趣培养问题,这是怎样形成以此为趣的态势问题;再次是课程体系形成问题,是明确照搬教材还是自己重构课程体系才能更符合高中学生的认知规律;最后是学生评价体系的问题,即如何建立合理动态的学生学习效果评价体系。
● 课程定位问题
从高中信息技术课程标准可以看出“算法与程序设计”的重点是“对算法的体验和设计算法解决简单问题”,即算法和程序设计是中心,语言是辅助。因此,要把算法的体验和设计作为“算法与程序设计”课程的重点,避免使课程陷入程序设计语言的语法命令和方法技巧的细枝末节中。这样既降低了学生的学习难度,同时也能使学生的“算法思维”得到进一步的训练和培养。下面以入门第一课为例做简单的介绍。
大部分学生对程序设计和VB语言一无所知,甚至会觉得程序设计枯燥难懂。因此,在上课伊始,我会首先简要阐述学习这门课程的意义,并展示往届学生的一些典型、有趣的作品。然后,我鼓励学生们自主探究完成第一个VB程序:计算器。在整个过程中,教师提供辅助学习资源:导学案和微视频。其中,导学案从启动VB→制作界面→编写代码→程序调试运行等几个方面做了详细介绍。关键代码的编写只给出了一个“减法”运算,其他步骤由学生自主探究完成。微视频则录制了计算器界面制作的详细过程及“减法”代码的编写。有了这个样例以后,学生就知道如何编写代码,而且能触类旁通地完成其他运算符代码的编写,说白了就是修改运算符的问题。当学生看到自己制作的计算器能正常运行时,欣喜之情溢于言表,他们觉得“算法与程序设计”原来这么有趣!通过本节课,学生认识并编写了程序,体验了可视化程序设计的完整过程,看到了程序运行的结果。在这样的课堂上,学生体验到的是有趣的思维训练,而不是堆积枯燥的代码,这样就能逐渐消除畏难情绪,并对后续的学习充满了期待。
● 课程的信心、兴趣培养问题
如何树立学生对“算法与程序设计”课程的信心,并培养其对此课程的学习兴趣?为了解决这个问题,我是从备课入手的。
1.备课第一步:精选案例,激发兴趣
为了激发学生的学习兴趣,经典案例是必不可少的,经典案例选取只靠个人可能精力有限,不可能节节出精品,需要借助集体的力量。我们教研组每周集体备课一次,每次备课选定一个主讲人,负责精心选取贴近大家的生活与经验、能激发学生学习兴趣的案例,还要兼顾案例的典型性、连贯性、拓展性,同时每个案例要能完成每周两节课知识点的学习。例如,第二周,我是主讲人。本周的知识点为对象的属性、事件、方法。教材上的例子是“打字测试”,这个案例枯燥、代码复杂。学生刚刚认识VB,找一个什么样的例子能让学生既掌握知识点又很容易入手,而且还非常感兴趣呢?我想到很多学生经常去吃各种快餐,于是决定做一个“点餐程序”。为了充分激发学生的学习兴趣,我事先准备了很多的相关素材和一个优秀范例,教学结果显示,这个“点餐程序”获得了较好的教学效果。
2.备课第二步:分解复杂任务,感受学习乐趣
我们的课堂教学主要以任务驱动、自主探究教学方法为主,将知识点的学习融入不同任务的需要中,学生只有需要了才会用心去学。我们以任务为核心,以解决任务的思想方法为主线,以任务解决的过程为载体,让学生在任务驱动、自主探究的过程中学习算法与程序设计的相关知识。我们通过巧妙地设置障碍,层层递进地设置各类的问题,引导学生自主学习,让学生在不断突破“障碍”的过程中感受成功解决问题的乐趣。下面以“对象的属性、事件、方法”两节课的“点餐程序”为例进行说明。
第一课,首先展示本节范例,让学生初步了解学习任务。然后根据学案自主探究设计界面。界面完成后,合作探究完成代码的编写,这需要考虑两个问题:代码写在哪儿和怎么写代码?在这个环节教师先让学生自主探究,然后,教师再次演示范例,简单引导:①当单击“确定”按钮时,计算出总金额,代码应该写在哪里呢?很明显应该写在确定按钮的单击事件下面。②总金额怎么计算?等于单价×份数。“障碍”解除了,学生可以继续自主探究学习。
第二课,“实现点餐时,能即时计算点餐总金额并显示点餐信息”。课上,教师演示范例,学生仔细观察点餐程序的改进之处。本节的新知识点LostFocus涉及操作步骤较多,给学生学案自主探究难以完成。于是我以上节课学生的源程序为例,现场演示修改(修改学生自己的程序,他们非常感兴趣,注意力很集中),很快就将代码修改完成。学生明白了lostfocus事件的具体用法,后面的任务基本都能自主探究完成。本节课的教学非常顺利,取得了良好的教学效果。
我在两课时内容之间给学生设置了“障碍”。第一课时,完成计算总金额的功能,第二节课引入lostfocus事件的学习,完成即时计算总金额与显示信息的功能。这两节课的任务设计是循序渐进的关系,如果一开始就把第二节课的内容抛给学生,估计好多学生都会知难而退。
回过头来再看该案例,知识点还是围绕如何实现计算功能,是第一周内容的重复,但是加入了对对象的属性、事件、方法等知识点的理解,对初学者来说这样“新瓶装旧酒”式的重复,一遍一遍的训练强化,是完全有必要的。学生第二课的作品,实际上是有瑕疵的,光标失去时即使没有点餐也会显示点餐信息,领悟较快的学生在课堂上就发现了这个问题,该怎么样解决呢?这就是下节课要学的选择结构方面的内容,如此环环相扣,学生对后面的学习也就充满了期待。
● 课程体系形成问题
根据自身教学特点和学生们的接收知识能力,“算法与程序设计”课程可以适当调整教材结构,对课程体系进行优化和重构。例如,我在教学的过程中发现无论是教材内容的选择还是编排顺序都不适合本校学生。教科版第一章内容是体验计算机解决问题的过程,我认为将其融合到第二章的程序设计中更为恰当。程序设计的过程就是计算机解决问题的过程,学生用到了再学更容易理解。另外,课本上的案例陈旧,引不起学生的学习兴趣。由此,我们对教材进行了重新编排,构建了自己的课程体系。经过多年的摸索总结,算法与程序设计模块的教学严格按我们自己的教学进度表授课。并且每节课都会设置学案、学习范例、视频资源、图片资源、参考资料等学习资源,目前已经形成了较为完备的课程体系和部分经典学习资源。
● 学生评价体系的问题
对学生评价的重点是学习效果的评价,通过当堂作业评价学习效果。学生每节课都要将本节的任务形成作品上交。教师对作品进行点评,点评分为部分和全部点评两种。部分点评就只点评代表性作品,选择普通的给予肯定,有亮点的给予表扬,有错误的及时解决。如果遇到优秀的值得推广的作业,在其他班级都会给予展示,对作者无形中是一种很大的鼓励。全部点评,主要是为了激励学生,不定期的点评全部作业。每节课上交作品并给予点评,可以更好地提升学生学习的积极性,同时也是一种监督。为了更好地表现自己,学生会认真完成每节课的作品,并尽力做到最好。
总之,我们通过准确的课程定位,降低了学习难度,锻炼了学生的算法思维;通过精选案例、巧设任务,引导学生自主学习,培养了学生的信心,激发了学习兴趣;通过重新构建课程体系,适应了学情,化解了学习困难;通过作品评价,激发了学生学习的积极性。这样可以使我们的算法与程序设计的课堂教学游刃有余,学生如鱼得水。在发挥学科优势,锻炼学生的算法思维与创新能力的同时,我们又关注了学生身心的全面发展,提高了学生的自主学习能力。