“算法与编程”模块教学策略探讨_计算机算法论文

“算法与编程”模块教学策略探讨_计算机算法论文

“算法与程序设计”模块教学策略探究,本文主要内容关键词为:程序设计论文,算法论文,模块论文,教学策略论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

      国家教育部制定的《普通高中技术课程标准(实验)》要求,学校在开设必修模块教学的基础上,“至少应开设算法与程序设计、多媒体技术应用、网络技术应用、数据管理技术中的两个,也要制定规划,逐步克服经费、师资、场地、设备等因素的制约,开出包括人工智能初步在内的所有选修模块,为学生提供更丰富的选择[1]。”从目前高中信息技术课程的教学情况来看,“算法与程序设计”模块位于选修模块的首位,但其教学现状却令人担忧。

      一、当前的困惑

      针对“算法与程序设计”模块教学现状,笔者通过问卷调查、座谈等多种方式了解该模块开设率偏低的原因。同时查阅专业数据库,综合全国其他教师的观点,归纳出了当前开展“算法”模块教学存在的主要困难。

      从学生角度来看,开展“算法”模块教学主要有以下困难:(1)学习心理上有障碍,学习内容实用性不强。教材上的案例多为数学问题,一类为一眼就能看出答案的问题,对这类例题学生产生的疑问是:“这么简单的问题为什么要这么麻烦,要计算机来解决。”另一类是数学课上怎么都弄不明白的问题,信息技术教师又在不停地重复着这些难题。(2)理论课枯燥,没有联系实际生活,趣味性不强,难于激发学习兴趣。(3)没时间做作业,头脑中的知识衔接出现断点[2]。

      从教师角度来看,开展“算法”模块教学的困难主要体现在以下几点:(1)难以激发学生学习程序设计的兴趣。教师大多采用传统的先讲后演示、学生先听后编程的教学方式。学生在听或者看的过程中往往注意力难以集中,到实践编程时自然就无从下手。(2)基础知识与理论内容多,不讲学生不明白,讲多了学生没有耐心听。(3)课时少,内容多,课时安排时间间隔长,遗忘率高。模块中包括大量的数据、语句、过程以及函数等基础知识,需要教师详细地讲解,学生在课堂上通过大量地训练才能熟练应用。讲解一个完整的算法往往需要一两节课时间,而要让绝大多数的学生真正能自主编写,甚至需要投入更多的时间,要学生全面理解算法并学会编程难度偏大。

      二、课程的核心价值

      信息技术课程的发展经历了程序设计文化论、工具论、信息素养论等几个不同的阶段。社会发展与需求的变化推动信息技术日新月异地发展。作为信息技术学科的一线教师,笔者也时常在想:“‘算法与程序设计’模块作为信息技术课程的一部分,教学目标是什么?它的核心价值在哪里?究竟培养学生什么能力?能否挖掘一些该模块特有的东西?”

      笔者结合多年的教学实践,将本模块的教学目标定位于:打造程序设计文化,培养计算思维以及算法思维。一线教师应站在更高的角度去审视课程,不仅要教会学生编程及其他技巧,还要通过编程将计算思维、算法思维等渗透于教学中,充实和完善信息技术学科的价值。

      信息技术,尤其是程序设计,在人类文化中占有一席之地。首先,人类生存要运用工具,特别是要运用工具来解决问题。计算机是大脑的延伸,如何让人和计算机进行沟通,就产生了计算机语言。而如何把人类的语言告诉计算机,就产了程序设计语言,也就是人们所说的程序设计文化。从最原始的计算的能力到人的自然思考方式,再到机器语言、汇编语言、高级语言的出现,以至现在的让计算机理解人们思想的自然语言,程序设计语言的每一次发展都对人类产生了重大的影响。其次,在工作生活与学习中,很多时候解决问题需要有一种计算思维。比如有一首诗的内容为“白日依山尽,黄河入海流。欲穷千里目,更上一层楼”,如果用计算思维的观点来看,其实就是在六千多个汉字中选取20个汉字进行排列。六千多个汉字如果让计算机来排的话,有很多种可能,有些排列可能人类穷极一生都无法想到。但是诗人很容易地找出了20个汉字,并且排列开来,这就是诗人的一种灵性和智慧,这是计算机所不具备的。这种情况下如何促进人与计算机的交流呢?这就需要人具备计算思维来告诉计算机该怎么做。最后,人具备计算思维,而如何用计算机的语言把它呈现出来,就需要算法思想的指导。这种算法思想就是人的思维和计算机沟通的一种途径与方法。

      三、教学策略及方法

      1.深度挖掘课程思想

      传统意义上对程序设计的理解是:用计算机编写程序解决问题,经历分析问题、设计算法、编写程序、调试运行与检验结果等过程。在这种观念里,“程序”是低于“算法”的存在,是具象的,是由给定语言环境中的若干条代码组成的代码群。而“算法”则是高于“程序”的,是相对抽象的。“算法”超越了具体语言,是程序设计的灵魂,因而更加贴近程序设计的本质。

      但是,学生对“算法”概念感觉生涩,对“算法”的认知依然有许多困难。因为“算法”概念并不是最贴近学生生活经验的东西,学生从生活经验中提取“算法”并将其迁移到真正的“算法”概念上来,需要经历一个艰难的过程。显然,基于“算法”概念走进程序设计,不能算得上是一条令人满意的途径。

      程序设计的本质是什么?程序设计无非是使用一组预设功能的指令集去完成特定的任务,所谓的“一组预设功能的指令集”,就是一套为了实现特定功能的人机对话,而给出的一套人工语言。在“人机对话”这个意义上,“指令—程序—任务执行”更能彰显程序设计的本质,“算法”无非是建立在“指令—程序—任务执行”基础上并服务于具体任务的方法而已。需要注意的是,这里的所谓“程序”已非前述“程序”,前“程序”指的是一组代码,此“程序”指的是解决问题的过程[3]。

      或许教师要换一种思路开展程序设计的教学。在程序设计学习之初,教师可以为学生提供一个需要解决的生活中的具体任务,让学生分析解决该问题需要几步,设计出解决问题的过程,得到这个“程序”,而后再引导学生提取其中的指令,得到一组“指令集”。例如,设计一个“抽签器”程序。教师提出问题之后,首先分析设计程序界面,有哪些对象,需要哪些控件,每个控件的功能是什么,如何实现这些功能,最终应用相应的代码来实现功能,形成“指令集”,整个过程完全没有涉及“算法”。

      在此基础上,教师可以让学生结合生活中的实例反复训练,从而提高“指令集”的复杂程度。譬如先让学生在VB环境中进行问题解决,分析需要经历哪些步骤,其中的指令有哪些。并逐渐涉及分支、循环等结构,得到功能逐渐强大的指令集。用这种方法学习到的“程序设计”,是把握住通过人机对话实现问题解决的程序设计,是将问题解决方法(工具)和问题解决过程融为一体的程序设计,是面向贴近生活经验的问题解决的程序设计。

      教师在开展“算法与程序设计”模块教学工作中,遵循“提出问题—解决问题的过程—指令实现”这样一条线索,“解决问题的过程”即“程序”,其中涵括算法。因而,“算法”变成位于“程序”之下的概念,属于方法层面,而“程序”在层次上则反超“算法”。这种教学策略不需要译码,更贴近学生生活经验及学生的认知起点,有利于启发学生的学习。

      2.整合重组信息技术课堂

      信息技术学科存在课时少、内容多、巩固难等实际困难。而《普通高中技术课程标准(实验)》中提出的“信息技术和数学课程内容的整合”为指导课堂教学提供了全新的理念。如,人民教育出版社出版的高中《数学》第三册(必修)第一章“算法初步”介绍了算法与程序框图、基本算法语句以及算法案例等内容,基本涵括了“算法与程序设计”模块中的程序设计基础知识。因此,教师合理的做法是调整模块教学内容的次序,将“可视化编程的概念与方法”移到模块最前面,这样学生在学习初期就可以利用可视化编程动手解决一些小问题,初步具备可视化编程的能力。当数学课堂完成“算法”教学内容之后,教师再来讲述编程的基础知识,自然就有事半功倍的效果。

      在课时的安排方面,目前大体有两种情况:一种为1周1课时的情况,一个学年完成一个模块的教学工作;另一种为1周2课时,一个学期完成一个模块的教学工作。不过,绝大多数学校的2课时都是分开来排课的,譬如星期二1节、星期五1节等。但是,程序设计课作为实践性极强的一门课程,1节课的时间既要学习新知识,又要实践巩固它,难以取得满意的效果。较好的做法就是两堂课连排,共计80分钟,教师大概用20多分钟精讲新知识,剩下时间让学生动手编程实践,深层理解,巩固新知识,避免出现知识衔接的断点。

      针对各章节的基础知识及算法等精讲内容,教师可以适度地开发一些微视频,建立微课网站,用于学生课前预习或课后复习巩固,把有限的课堂时间更多地让位于师生讨论、交流与探究等活动。

      传统教学过程是,教师每讲完一个新知识,随后布置任务让学生编程实现。学生往往觉得教师布置的任务并不是自身想要做的,难以体现编程的价值,久而久之学习编程的兴趣下降。比较恰当的做法是,教师可设计开放式的实践任务,要求任务主题明确,有个性、有创意、内容积极向上即可。然后,教师将整个班级分为若干个学习小组,每小组4人,从学生的生活与学习出发,由小组的4个同学讨论确立小组任务的主题。主题确立之后,通过小组交流、探究、合作互助等方式,共同完成实践任务。设置开放性的任务,不仅训练了学生编程的技巧,更在开放的学习过程当中,将学生的思维培养与能力培养更好地融入实践任务中[4]。

      3.激发学生学习的兴趣

      目前,信息技术课的教学目标定位于:培养学生的信息素养,即信息时代应具备的获取信息、处理信息、加工信息、交流评价信息的素养,其着力点在于培养学生的技术素养。

      技术素养是信息技术有别于其他学科的明显特征。哪些技术是深受学生欢迎和喜爱的呢?毫无疑问是实用性技术,即能够帮助学生解决现实生活中的实际问题的技术。例如,在讲授“可视化编程的概念与方法”这节内容时,教师可以让学生编写一个倒计时程序,用于班级辩论会等活动。学生会感觉到程序是有用的,体验到成功的快乐,获得学有所得的满足感,学习积极性与主动性自然就高。

      生活是取之不尽的教学源泉,学生熟悉的日常生活经验对其学习和能力的培养具有持久而深刻的影响。因此,教师在教学过程中要善于建立程序与生活实际的联系,创设出贴近学生生活实际的问题情境,把生活中喜闻乐见的问题逐步提升为编程思想,从而激发学生的学习兴趣,创造学生主动参与的学习氛围,充分调动学生的积极性和主动性[5]。

      如在讲述“穷举法”时,教师可以首先通过猜密码来导入教学,然后揭示QQ密码被破解之谜,进而提出思考问题:如何防范密码被破解?从现场教学效果来看,学生热情非常高。这样的教学情境引入法,非常贴近学生的生活,情境和任务的设计思路也非常贴近吻合,所以很自然就将穷举的算法思想展现出来。

      游戏教学法也是经常使用的教学技巧。游戏教学法就是在教学中尽可能将枯燥的语言现象转变为学生乐于接受的、生动有趣的游戏形式,为学生创设良好的学习氛围,使学生在玩中学,在学中玩[6]。游戏教学法可以大大调动学生的学习兴趣和求知欲望,培养学生的动手能力,帮助学生深刻理解理论知识,有助于学生的互助式学习。

      在讲述“算法与算法描述”章节内容时,学生对“什么是算法”、“算法的特征”等问题感到晦涩难懂,教师可采取如下教学方法,如在情境导入环节引入一个1~100之间的猜数字游戏,看谁用最短的时间猜出结果,继而剖析猜数字程序的算法实现过程,学生对算法的理解肯定更加深刻。在讲述穷举、排序、递归等算法时,适当地开发一些小游戏,展示算法实现的全过程,效果肯定比教师在课堂上干巴巴的讲授要好。

      另外,信息技术学科不是高考科目,学生的学习主动性往往不足。针对这种情况,教师需要适时地对学生进行教学评价,及时进行教学反馈,教师还可以通过评价激发学生的竞争意识,营造出竞争的学习氛围。

      4.半成品加工策略或程序填空

      鉴于有限的教学时间、有限的教学空间和参差不齐的学生基础,“半成品加工”策略是很好的教学突破口。“半成品加工”提供了相对完整的作品,只是对教学的内容某部分“留空白”,让学生在短时间内体会到技术操作的方法和信息素养的内涵,提高了讲解、理解和实践的效率,并且优化学习的情景与练习的环境[7]。

      “半成品加工”策略主要应用于课堂教学的演示。在教学中,它可以配合讲解基本的方法与过程,突出教学的重点。同时,学生通过阅读程序,了解别人的编程思路以及实现算法,有利于培养算法思维。

      应用“半成品加工”策略,可以为学生提供学习情景,回避技术盲点。所以提供的半成品往往是大半的成品,只差一点就完成了。比如,在“算法”模块教学初期,由于学生尚不具备系统的编程知识,动手编写完整的程序存在困难,教师针对教学内容在程序某部分“留白”,学生填空解决关键问题,大大提高了课堂的效率。

      5.恰当运用项目教学法

      项目教学法就是在教师的指导下,将一个相对独立的项目交由学生自己处理的方法。信息的收集、方案的设计、项目实施及最终评价,都由学生自己负责,学生通过处理该项目,了解并掌握了整个过程及每一个环节中的基本要求[8]。

      教学实践中,我选取了高一年级2个平行班作为实验班,运用项目教学法,让学生设计项目,应用VB技术,完成教学内容“数据库管理软件的开发”。通过对比教学,我发现实验班的学生对数据库管理系统的开发流程理解非常深刻,对程序设计基础知识和VB可视化编程的概念和方法也有更深入的认识。其间通过笔试和上机考试考核学生的学习情况,结果显示,实验班大部分学生的基础知识理解、上机操作、界面设计、解决问题能力等都比非实验班有了明显的提高,平均分比非实验班高出近10分。

      项目教学法的关键,在于设计和制定一个合适的项目,项目既要适合教学目标的实现,又要具备可操作性。项目开发中要进行有效分工,每位学生根据自己的能力负责相应的子任务,因此项目教学法的一个很大的优势就是能让不同层次的学生都参与到项目的开发过程中,体现了分层教学的思想。

      当前,在开展“算法”模块教学过程中存在着一些困难,但困难只是暂时的。因为“算法”模块本身具有无穷的魅力,学生通过编写程序解决一个个鲜活的问题,会给他们带来无限的学习动力。教无定法,只要结合当地的学情,有针对性地找到适合学生自身的教学策略与方法,“算法”模块定能焕发其应有的生命力。

标签:;  ;  ;  

“算法与编程”模块教学策略探讨_计算机算法论文
下载Doc文档

猜你喜欢