APP下载

高中“算法与程序设计”课程的探索与实践

2017-01-03姚艳秋刘晓峰王晓光

中国信息技术教育 2016年23期
关键词:外币盘子程序设计

姚艳秋+刘晓峰+王晓光

2016年9月,美国发布了K-12计算机科学框架,阐述了学生从幼儿园到12年级计算机课程学习主要包括五个核心模块——计算系统、网络和互联网、数据和分析、算法和编程、计算的影响,并要求在课程中开展培养学生计算思维(Computational Thinking)的实践活动。我国新一轮高中信息技术课程标准也把计算思维作为学科核心素养的一部分,强调在信息技术教学中注重对学生计算思维的培养。利用计算机解决问题的一般步骤是遇到问题、分析问题、进行算法设计、编写程序解决问题,由此可见“算法与程序设计”课程是培养学生计算思维的有效平台。

在“算法与程序设计”教学中如何培养学生的计算思维

1.设置问题,引导学生发现和解决问题

作为教师,不仅要传授给学生知识,更重要的是应该为学生提供足够的发展空间,指导学生发现问题,激发他们解决问题的兴趣,进而引导他们运用学会的知识去解决问题。

例如,笔者在讲《程序的顺序结构》一课时,给学生设置了如下问题。

两个没有刻度的杯子A、B,容积分别为7升和5升,是否能量出1升?如果能,怎样量出1升?

学生亲手操作,找出解决方案,再通过分析给出算法。大多数学生可能通过尝试的方法来解决,但不是最少的步骤,那么怎样用最少的步骤量出1升?运用计算思维和逆向思维的思维方式,能帮助学生找到答案。

如果7升的杯子最后成功地量出了1升,逆序的过程应该如下:

分析一:两个杯子,容积为7升和5升,如何量出1升?(如果A为6,B为空,A杯倒满B杯,A杯剩余即为1)

分析二:两个杯子,容积为7升和5升,如何量出6升?(如果B为4,A满杯倒满B杯,A杯剩余即为6)

分析三:两个杯子,容积为7升和5升,如何量出4升?(如果B为2,A满杯倒满B杯,A杯剩余即为4)

分析四:两个杯子,容积为7升和5升,如何量出2升?(B为空,A满杯倒满B杯,A杯剩余即为2)

基于以上分析,逆序过来就给出了正确的解决算法:

A=7,B=5

第一步:A满杯倒B杯A剩2,将A杯剩的2赋给B,B是2;

第二步:A满杯给B杯倒满,A杯剩4,将A杯剩的4赋给B,B是4;

第三步:A满杯给B杯倒满,因为目前B是4,所以A杯剩6;

第四步:B清空,将A杯(目前是6)倒满B杯,A杯剩下的就是1。

是否还有其他方法?7升的杯子能最后量出1升,那5升的杯子是否也能最后量出1升?7升的杯子最少需要倒出几次,5升的杯子最少需要倒入几次才能量出1升?引导学生尝试、探究,提出新问题,在这样的任务中是否蕴含着某些数学原理?这个任务恰好吻合了求解二元一次方程7x+5y=1是否有最小整数解。古希腊著名的数学家、教育家欧几里德在2000多年前就给出了答案,这就是著名的扩展欧几里德算法。在探究中,教师引导学生感受数学的神奇,体会古代数学家发现数学定理的过程。

2.将教学内容与生活密切联系

教师在教学中可通过创设与生活密切联系的问题情境,帮助学生在解决问题的过程中感受信息技术对人们日常生活的影响,学习数据与计算的知识,提高利用信息技术解决问题的能力,发展计算思维。

例如,在讲贪心算法时,笔者引入了人民币与某种外币兑换获利的例子。

在一周七天中,每天都可以用外币兑换人民币,也可以用人民币兑换外币,从100元人民币开始,给出七天的汇率,最后获得最大的利益。这七天的汇率为:500、600、800、700、800、600、500(100元人民币兑换外币的值)。

分析一:人民币某一阶段买入外币的时机,总是在这一阶段人民币升值到最大时买入。

分析二:外币某一阶段买入人民币的时机,总是在这一阶段人民币贬值到最大时买入。

贪心算法总是做出在当前看来是最好的选择,也就是说,它所做的是某种意义上的局部最优选择,由此给出算法。第一阶段:前3天中,人民币一直升值,第3天升值到这一阶段的最高,此时100元人民币买入800元外币;第二阶段:第3、4天,人民币贬值,第4天贬值到这一阶段的最低,此时800元外币买入114.28元人民币;第三阶段:第4、5天,人民币升值,第5天升值到这一阶段的最高,114.28元人民币买入914.24元外币;第四阶段:第5、6、7天,人民币贬值,第7天贬值到这一阶段的最低,914.24元外币买入人民币182.85元,从而得到最大获利82.85元。

这一任务中,笔者把经济学的问题引入实例中,引导学生关注算法与程序设计在生活中的应用,用计算思维的方法解决经济学中的问题,实现学科的融合。

3.以兴趣为起点,以趣味活动为主线的教学方法和策略

兴趣对学习有着神奇的内驱作用,能变无效为有效,化低效为高效。在此,兴趣包含两个方面:一是教师所设计的教学活动要让学生感兴趣,二是发挥学生对信息技术的兴趣。所以,设计活动必须结合学生的身心特点和认知水平,把学生感到枯燥的学习变成感兴趣的活动,把兴趣贯穿于整个课堂教学活动,让学生处于积极的兴趣状态之中。例如,笔者在讲解递归算法时,让学生用最少步骤完成汉诺塔游戏:有三根柱子A、B、C,A柱上有N个盘子,每次移动一个盘子,小的盘子只能放在大盘子的上面,要把所有盘子从A柱全部移到C柱上(如下图)。

学生通过完成汉诺塔的Flash游戏,体会、演绎、分析递归算法。在这个游戏中最关键的是最大的盘子的位置,在挪动最大的盘子前,A柱上只有最大的盘子,B柱上放着前N-1个盘子,C柱为空,由此给出递归算法。第一步:把A柱上的前N-1个盘子,经过C柱,移动到B柱;第二步:把A柱上的最大的盘子,移动到C柱;第三步:把B柱上的前N-1个盘子,经过A柱,移动到C柱。学生在游戏中体悟算法的原理,感受算法与程序设计的乐趣。

开展“算法与程序设计”课程的实践

1.组建“算法与程序设计”课程教师团队、学生团队

算法与程序设计课程的教学内容较多且专业性强,包括程序语言、算法、数据结构、图论、数论、博弈论、组合数学、离散数学、概率与统计等方面的知识,要求中学教师同时掌握这些知识且能灵活运用不是一件容易的事。“术业有专攻”,每位教师都有自己擅长的研究方向。同时,组成教师团队、加强教师间的交流学习、定期举行算法与程序设计专题备课,可以让更多的教师接触“算法与程序设计”课程。另外,还可以开展多人协作,每位教师负责课程中自己擅长的知识进行教学。

由于学生个体的差异,同一个教学内容、教学进度,有的学生“消化不了”,有的学生却“吃不饱”,教师可以尝试对学生进行分层教学,使不同层次的学生都有所收获,同组的学生之间可以进行协作交流学习,共同进步。“算法与程序设计”课程的学习适合“抱团取暖”,编程过程中遇到的问题具有普遍性,一个学生在学习过程中遇到的问题,可能也被其他学生遇到了,这时解决过此类问题的同学就成为课程资源,他解决问题的方式、方法都可以被其他同学借鉴。同一小组的学生组成团队,讨论学习,用集体的智慧解决遇到的问题。

2.“算法与程序设计”课程组织实施

以吉林省为例,省里组织了多次“算法与程序设计”课程的培训与集体备课,绝大多数高中都开设了程序设计课程,其开课的形式大体有以下几种。

(1)常规课。在高一第一学期的信息技术常规课堂中,面向所有学生用一个半月的时间向学生普及算法与程序设计的知识,讲授经典算法,选拔出对算法与编程有兴趣、有潜质的学生。

(2)校本课。在高一、高二开设“算法与程序设计”校本课程,面向的是对计算机编程有兴趣并且学有余力的学生。本课程旨在培养中学生使用计算机编程解决实际问题的能力,提升他们的创造性思维和计算思维,每周2课时,以算法知识的专题学习为主。

(3)大学先修课。北京大学开设了“计算概论”大学先修课程,目的是考查学生的算法与程序设计能力。学生可以访问北京大学在线平台进行学习,每学期由北京大学组织结业考试。考试合格后,学生进入大学可以申请免修程序设计的课程。选择大学先修课的学生每周有2课时的学习时间。

教学中以学生为主体,首先是选“才”,通过这样的课程,在程序设计方面有特长的学生就能显现出来。

3.搭建在线学习平台

在“算法与程序设计”教学过程中,教师对学生所写的程序进行评测是一项比较繁琐并且费时费力的工作。在实际教学中,教师的精力是有限的,无法对所有学生的程序进行评测。因此,需要建立一个基于网络环境下的在线学习评测系统,为学生提供一个实时的学习评测环境。吉林省开展程序设计教学较好的几所学校都搭建了程序设计在线学习平台,并向其他学校开放,平台中题库的题目按照“算法与程序设计”课程中的知识点进行分类,而且题目的难度是递进的,为学生做题顺序提供了参考。在线学习平台突破了教师、学校、家庭、地域的限制,也突破了学习时间的限制,使学有余力的学生在课后仍能依托在线学习平台进行学习,并验证学习效果。

4.创建新型学习策略

算法与程序设计课程与传统课程不同,它是以实验、探究、操作为主的一门课程,因此仅仅通过教师讲授,学生很难达到融会贯通,而教师精力有限,需要面对的学生又较多,因此需要学生主动学习。在学习过程中,教师可以打破年级界限,让高水平的学生指导入门的学生,建立学习小组,让学生共同讨论、研究,依托网络学习平台,建立QQ群,开通博客等,从而使学生思维得到锻炼,能力得到提升。

5.课程评价反馈

(1)追求育人目标,培养学生的计算思维。开展“算法与程序设计”课程不只是为了培养具有编程专长的人才,课程教学中也增加了育人的目标:一是鼓励学生积极进取,勇于拼博,不抛弃,不放弃;二是要培养学生一丝不苟、精益求精的品质,并在学习过程中形成计算思维去思考解决学习、生活中遇到的问题。

(2)基于在线评测网站的评价。评价是“算法与程序设计”课程教学中的重要环节,如何建立一种科学、合理、有效,能够激起学生学习兴趣与投入的评价体制是值得教师深思的问题。在线学习网站是学生自主学习和协作学习的平台,它可以让学生自我评价,通过在线测试题库,对学生的学习过程和学习结果进行评价,并及时给予反馈,做到评价和反馈的实时、动态、正确。教师还要做好阶段性评价,在在线评测网站上教师不仅可以创建不同的比赛,让学生在规定的时间内进行答题,还可以在线公布学生的排名、做题情况、得分情况等,以便让他们认识到自己学习中的问题,进行学习调整。

(3)参加各类比赛、考试,促进课程的学习。算法与程序设计的比赛很多,有全国青少年信息学奥林匹克竞赛分区联赛、全国赛、亚太地区青少年信息学奥林匹克竞赛等,还有大学先修课程验收考试,这些都为学习算法与程序设计的学生提供了评价反馈的平台,教师和学生可以根据比赛成绩及时调整学习策略和学习进度。

在信息化、大数据时代,在今后的社会中,不会搜集信息、处理信息,不懂得利用计算机解决问题,不知道如何与信息社会接触的人都将会被淘汰。将程序设计课程教学与计算思维的培养相结合,培养学生知道什么问题能用计算机解决,什么不能用计算机解决,以此来寻求处理问题的方式方法,能为学生未来的发展创造更多可能。

猜你喜欢

外币盘子程序设计
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
比比谁的盘子光等
判断:哪边小,哪边大
换外币
阿凡提巧装盘子
“撕”掉的盘子
我爱收集钢蹦儿