周燕
针对关键性知识与技术,我们提倡经常问个为什么,即所谓知其然还要知其所以然。可是,我们这一问却往往缺乏力度,多数仍然是从内容、功能上问为什么。因此,本期解码我们拟从教学实例展示、实践理论反思等多方面进行挖掘,试图讨论从解决问题的思维过程来创新,让课堂更有生机,让课程更有深度。
2011年12月,我参加了山东省高中信息技术优质课评比活动,执教的课题是教科版《信息技术基础》第三章第二节《信息的编程加工》。在这次比赛中,我荣获省一等奖第一名。当我回忆准备优质课的过程时,发现这也是与同事、朋友多次研讨、思维碰撞的过程,比赛结果是对集众家所长的教学设计的肯定。对于其中的几个问题,我思考了许多也收获了一些心得。
VB与代码,谁来唱主角?
信息的编程加工属于必修模块中“信息加工与表达”主题,高中信息技术课标对此部分内容的要求概述为“初步掌握用计算机进行信息处理的几种基本方法,认识其工作过程与基本特征”。针对这句话,我纠结的第一个问题就是VB与代码孰重孰轻,二者谁更能体现编程加工的过程与魅力呢?教学设计应该重VB使用还是重代码理解呢?这个问题决定了整堂课的设计。
以往的教学过程中,我和同事们针对这一课题上过几个不同的版本,有“棋盘上的麦粒”、猜数游戏、简单计算器设计、文本处理等,aa无一不以VB的使用为主要载体。学生也能很快跟着做出作品,哈哈一乐,一节课也就过去了。但仔细想想,这种处理会给学生留下怎样的印象呢?这样的跟做过程会引发学生多少思考呢?将代码完全封装的控件罗列和属性设置就是编程加工的本来面目吗?如果是的话,这和人性化加工又有什么不同呢?
认真阅读教材,反复揣摩课标内容后,我决定放弃之前侧重VB使用的设计,以代码来为编程加工“代言”,将编程加工的过程由“创建界面—设置对象属性—编写代码—保存工程—调试程序—创建可执行程序”的“VB操作版”修正到“分析问题—确定算法—编写代码—调试运行”的“一般过程版”。
方向问题的解决,给整堂课的设计定了基调,即不追求热闹,但求课堂能引导学生深入思考问题,在愉悦中开动脑筋,学有所得,思有所悟。
实例选择与应用,怎样创新?
教材为本节课提供的教学实例是“描点法”绘制函数y=x2的图像。这一实例的优点在于很好地规避了VB使用的繁琐过程,而重点突出“描点法”代码,操作简单易学。但也存在以下不足:一是以函数图像贯穿始终,数学色彩过于浓厚,不利于信息技术课程的特色展示;二是函数图像缺乏变化,单调乏味。另外,教材中所给代码也存在绘图区域纵横长度单位不一致,导致图像变形的情况,容易误导学生。
分析了以上问题,我对教材中绘制图像的实例做了如下处理。
1.修改源代码。将代码中picture1的范围由“(-10,25)—(10,25)”修改为“(-11,11)—(11,-11)”,统一单位,修正了函数图像的比例;为了更好地还原数学情境,唤醒学生的知识储备,我也顺便为坐标轴加上了箭头。
2.将函数图像拓展为曲线图像。备课时我也设想可以鼓励学生绘出不同函数的图像,如y=x3,y=1/x等,来验证数学上的结论,但这个设想很快被推翻了。一是高一数学还没有学习到复杂函数,学生对于函数的了解还仅限于y=x2这样的二次函数;二是这样的课跟数学课没什么两样,自己都提不起劲头来,更不要说学生了。后来同事王洪新老师的一句话提醒了我,如果把二次函数的图像旋转90度会怎么样呢?这样的改变,仅需要交换描点语句的点坐标即可实现,简单易行而又效果明显,这不正是编程加工的优越性吗?只不过这时的图像由于不满足函数定义,应该称之为曲线。
主动学习的兴趣如何触发?
有了曲线图像的思路,下一步要考虑的是怎样丰富课堂,让学生产生学习兴趣。显然仅仅是一条曲线还略显单调,那么,组合曲线会出现什么效果,能不能用这段代码绘制出漂亮的图案让学生一下子就喜欢上编程呢?
在偶然与同行济南六职专王勇进老师交流的过程中,我们发现代码中可以修改的不仅仅是步长、表达式、颜色,更有意思的是还可以修改点的坐标,将简单的(x,y)用复杂的x、y的函数来表示,如(x, 0.001 x* Sin(y)),再与曲线表达式相配合,就可以绘制出如图1所示图像,简陋的图像一下变得丰富、可爱起来。在试讲的过程中,我果然听到了学生的赞叹声,编程加工的魅力一览无余。
这个灵感的获得启发了我,我们经常教导学生要打破思维定势,要有开放式的头脑,而我们自己却常常徘徊于已有的经验而不自知,我想交流沟通、思维碰撞是找到创新的必由之路。
另外,要让学生对所学内容产生亲切感,教师还需在学生身边寻找到切入点,让他们看到曲线图像在生活中的应用。我观察到学生的校徽一般都刺绣在校服上,而电脑刺绣恰是编程绘制曲线图像的一个典型例子。这样由校徽和电脑刺绣视频导入课题,学生的注意力一下就被吸引了,很快进入了学习状态。
“算法”处理如何体现深度价值?
备课过程中,有一个问题一直让我非常矛盾,就是本节课是否需要提到“算法”,提到的话又应该让学生理解到什么程度?是让学生玩玩做做,体验一下就结束了,还是应该引导学生主动思考,由“玩程序”上升到“设计程序”?如果是后者的话,算法的概念就必须要提而且还应该作为教学的重点。我想我们上课的目的是要引导学生学会学习,体验学习带来的成就感,而非走马观花、泛泛的体验。所以,学生需要自己设计程序,感受算法的重要性。
鉴于这样的思考,我在“合作探究”环节设计问题:怎么样在同一坐标系中同时绘出y=x2和y=-x2的图像?并在“拓展提升”环节给出了这样的任务:绘制如图2所示图像。
在学生初识编程以及体验编程加工的魅力之后,问题逐渐转入了实质性阶段,需要他们有目的地利用代码来绘制特定的图形,这就要求学生在描点法的基础上,利用现有的代码解决实际问题,而这个过程也正是他们逐步形成自己“算法”的过程。有了前边的铺垫,算法的最终提出显得顺理成章。大多数学生认真地开动脑筋思考解决问题的方法,让我感到欣慰,这节课也就达到了目的。
备课的过程中,同事和朋友们对我的无私支持和帮助,让我非常感动,也想借此表达深深谢意!虽然我们在一些细节的处理上还存在分歧,这节课的最终设计也还有很多值得商榷的地方,甚至也可能存在失误。但是,我们培养学生的学习兴趣,引导学生主动思考,让学生真正学有所获的方向和目标是有益的。有了这样的学科定位,我相信高中信息技术的发展会日益年轻、充满活力。