教学策略与实施过程
一、关注全体学生,施实分层教学
通过初中阶段的有关信息技术课程的学习,大部分学生都能较好地掌握信息技术的基础知识和基本技能,虽然学生在信息技术基础知识、基本技能的掌握上仍存在着差异性,但是在学习VB程序设计时表现出的差异并不十分明显,而明显的差异性主要表现在以下两个方面: 1、学习兴趣的差异。
绝大多数的学生对信息技术课都有着浓厚的兴趣,但有相当数量学生浓厚的兴趣主要是在游戏上而非学习中,更不是在学习枯燥的VB程序设计中。也有的学生既不喜欢也不讨厌信息技术课,只是因为学校的课程安排,另有部分学生由于觉得VB程序设计比较枯燥难懂,因而不喜欢上信息技术课。 2、学习态度的差异。
学生的学习态度分为主动型、被动型、放任型三类。不同类型学生对学习内容、教师教导方式的要求,以及完成学习任务情况均有较大差异。这种学习态度的差异性不仅表现在不同班级之间,而且男女同学间也有着较大的差异。如果对不同知识水平、情感水平的学生进行相同内容、统一进度、同一方式的教学,势必造成基础好、学习兴趣浓厚的学生“吃不饱”,渐渐丧失学习的兴趣;基础差的又会“吃不了”,加剧厌学的情绪,致使大部分学生都把时间和精力用在电子游戏和上网上,势必造成整节课无法顺利进行。信息技术课程的总体目标就是全面提升学生的信息素养,关注全体学生,促进学生的全面发展。 “分层教学”就是要探讨适合学生特点的教学途径,促使每个学生都能得到发展。这就需要在教学的各个环节都兼顾到不同学生的学习需要。我在教学的过程中采用的是同班分层教学法,就是以班中相似知识结构、认知水平及兴趣爱好的同学为同一个层次,依据实际情况将整个班分为A,B,C三个层次,然后依据各层的特点来制定相应的教学目标,设置各种教学任务,使各个层的学生均得到发展。针对基础比较差的学生所采用演示性探究方法,学生通过模仿老师在课堂上的一些演示操作,达到“巩固基础,按部就班,模仿提高”的目的。对各层学生在学习的过程中出现的问题,要及时进行解惑释疑,释疑以个别释疑和集体释疑相结合。 在我的教学实践中发现,分层教学在课堂上能最大限度地提供给学生发展的时间和空间,也最大限度地提供给教师因层施导的时间和空间,使每个学生都能根据自己的情况,确立适当的学习目标,提高单位时间的学习效益。
二、增强学生的求知欲,培养学生的学习兴趣。
爱因斯坦说过:“兴趣是最好的老师”,当学生对所学的知识产生兴趣和积极的情感时,就会从内心迸发出向往和求知的强烈欲望,产生积极、主动的学习动机。学习活动就不再是一种负担,而是一种享受,一种愉快的体验,学习效果也会事半功倍。如何培养学生的学习兴趣呢?
1、创设学习情景
教师在教学过程中创设一个好的情境,使学生融入其中,有利于激发学生的学习主动性,加深对知识的理解和记忆。如:本人在讲授冒泡排序时,首先,请五位同学(相同性别)到讲台上拿一块布蒙住自己的眼睛随机排成一排。然后布置任务:如何通过用手摸对方的头顶和自己的头顶进行比较,才能使你们按从左到右由高到矮排列。五位同学因为看不清有点不知所措,然后教师进行提示:最右边第五位同学可以先和第四位比较,如果第五位比第四位高则交换位置;接着,最右边第四位同学和第三位比较,如果第四位比第三位高,则交换位置,依次类推,可以得到最高的一位同学排在左边第一位。接着教师进行提问:“当最高的一位同学在最左边的时候他们总共比较的多少次”?同学们回答:“四次”。“那第二高的同学要排在第二位怎么办”?“和刚才一样,再从最右边的同学开始两两比较”。“当第二高的同学在左边第二位的时候他们总共比较的多少次”?“三次”。五位同学用同样的方式比较完成。接着教师进行总结:五位同学总共比较了四趟,每一趟总比前一趟少了一次。通过这个小游戏,大大激发了学生的学习兴趣,并且基本搞清了冒泡排序的基本思想。
2、以趣味性强的例题为任务,进行教学
趣味题能吸引学生的注意力,启动学生学习的动机,激发学生的学习兴趣,增强活动的愉悦性,促进学生思维的发展。例如:在讲授顺序程序设计时,以“鸡兔同笼”问题进行讲解;在讲授分支程序设计时,以“火车托运行李”问题进行讲解;在讲授循环程序设计时,以“百鸡百钱”、“水仙花数”、“猴子吃桃”、“国王算米”、“韩信点兵”等问题进行讲解;在讲授模块化程序设计时,以“歌德巴赫猜想”问题进行讲解;在讲授用递归法设计程序时,以“汉诺塔”问题进行讲解;在讲授迭代法设计程序时,以“兔子繁殖”问题进行讲解。通过使用这些趣味题,能大大提高学生的学习兴趣。
三、注重引导,提高学生的综合编程能力
因为学生编程能力的高低,归根到底还是由他们分析问题和解决问题能力的高低决定的。而分析问题和解决问题能力的高低除了与自身的因素有关外,还与教师的教学方式、方法有关。若教师在教学中,重视算法分析引导,学生们的编程水平哪有不提高的呢?
1、巧用比喻
比喻是借用已感知的知识来映射新知识,使新知识更容易理解的一种方法。合理借用比喻能使抽象的知识深入浅出、通俗易懂。例如,在讲授交换两个变量a和b的值时(假设a和b的初值分别是10和20),学生往往会用以下语句完成:
a=b
b=a
但是,经过运行程序,发现a和b并没有交换。这时,教师就进行必要的指导,合理运用以下比喻:假设a磁带录的是歌曲,b磁带录的是京剧,现在要交换这两个磁带的内容。根据日常生活经验,学生很自然就想到借助另一个空磁带来实现。同理,要交换两个变量a和b的值,须借助第三个变量t来实现。这时,学生很快就能正确写出以下程序段了:
t=a:a=b:b=t
2、善于观察
观察是认识事物的基础,是创造思维的起点,许多发明和创新,往往来自善于观察。因此,引导学生善于观察,有利于激发他们的求知欲。善于观察,不只是停留事物在表面,而是要注意事物隐含的内部规律。例如,编程求:s=1+1+2+3+5+8+13+…共20项的和,学生们往往一筹莫展,原因是学生往往只从表面上观察事物。这时,教师就要引导学生善于观察隐含在事物内部的规律,得出:该数列的第一项是1,第2项也是1,从第三项开始,每一项等于前两项之和。找到了这个规律,编写程序就不难了。
3、循序诱导
循序诱导是按照教材的内在联系和学生的认知规律,由浅入深地提出问题,引导学生主动、积极进行学习,掌握知识。例如:在讲授循环程序设计时,学生对编程求s=1+2+3+4+…+100已经熟练掌握,能够编写出如下程序段:
s=0
for i=1 to 100
s=s+i
next i
print “s=”;s
接着,要求学生编写以下程序:①s=1×2×3×4×…×10 ②s=1!+2!+3!+4!+…+10!,在教师的诱导下,学生也能够根据上一题的程序编写出这两题的程序。对程序1,因为是求若干项的积,所以,先将1赋值给s,循环体的“+”变为“*”;又因为只有10项,所以将循环变量的终值由100变为10。对程序2,因为是求若干项的和,所以先将s的初值赋值为0,再用循环语句实现各项累加;而每一项又是若干项的积,所以,再通过循环语句计算每一项的值即可。
4、一题多编
一题多编,能培养学生的发散思维能力。学生在一题多编的过程中,能深入透彻地理解教材,巩固所学知识,开拓知识视野,提高编程能力。例如,编程:已知a为10,b为20,要求交换a和b的值。学生往往编写成以下程序段:
a=10
b=20
c=a
a=b
b=c
接着,要求学生,能不能不借用新的变量,用别的方法完成。经过引导,学生能够写出以下程序段:
a=10
b=20
a=a+b
b=a-b
a=a-b
由于平时加强了这方面的训练,所以学生在编程过程中,思路开阔,方法灵活。
5、重视评价
由于算法的多样性,学生编写的程序不尽相同,此时,教师要引导学生对编写的程序进行评价。通过评价,学生能够更深入地掌握所学的内容。例如,在讲授冒泡排序时,要求将n个数按从小到大的顺序排序。学生往往会编出以下两种程序:
程序段1:
For i = 1 To n - 1 For j = 1 To n-1 If a(j) > a(j+1) Then temp=a(j): a(j)=a(j+1): a(j+1)=temp End if Next jNext i
程序段2:
For i = 1 To n - 1 For j = 1 To n-i If a(j) > a(j+1) Then temp=a(j): a(j)=a(j+1): a(j+1)=temp End if Next jNext I
这两种程序的运行结果都是正确的,但程序2要优于程序1。为什么呢?很多学生不明白。这时,教师要引导学生分析这两种程序,得出:因为程序2执行的次数比程序1的少,所以,程序2要优于程序1。
由于程序设计学习的实践性较强,需要科学地分配课堂教学40分钟的时间,做到练中有学、学中有练,尽量避免“满堂灌”的教学方式,使学生的程序设计能力在上机操作中得到提高。当学生在程序运行过程中遇到问题时,教师不要马上指出其错误,而是启发学生观察研究程序的每条语句乃至标点符号,再参照出错信息的意思找出错误原因后进行修改,直到正确运行为止,这有利于学生通过人机对话、思索判断的思维活动来培养自学能力。我发现在课堂上有一些学生,在他们正确完成学习任务之后,很乐意帮助其它同学,协助我进行上机指导,这样可以大大地提高学生的学习兴趣也增强了同学之间团结互助精神。 四、精心设计教学案例,实施有效教学
首先,从案例教学和举例教学的区别来说,案例应该在教学当中占据主导地位,过多的案例给人感觉就像举例教学,这样就失去案例教学应有的特征和效果。
其次,从程序设计教学现状来看,由于教学时数少,如果选取过多的案例,在教学进度及教学目标上就很难把握,并且太多案例的选取对于教师来说也有相当大的难度,而对计算机程序设计教学而言,经典的案例并不是很多,要么太陈旧,要么太大、太深不适合教学的要求,大部分需要教师自己动手去编写。
最后,从程序设计教学的最终目的来看,是要让学生学会程序设计语言的基本知识和基本基本理论,因此说一个好的案例要能给予学生真正的实践指导,使学生能够系统地把握。
所以,在程序设计教学中的案例选取时,根据这门程序设计语言本身的特点要精选有代表性的一到三个案例,并且要有扩展性。