APP下载

从项目中来,到项目中去

2019-12-24钱焕春

关键词:项目学习计算思维程序设计

钱焕春

摘要: 新课标要求提升学生的计算思维,而我们现行的教学方式很大程度上是学生读取已有程序,分析猜测出题人的算法思维,缺少了在计算思维中抽象特征、建立结构模型、通过判断、分析与综合各种信息资源、运用合理的算法形成解决问题方案的能力。本文通过项目学习的方法试图提升学生的计算思维,提升学生程序设计的算法思维,提升学生的学生核心素养。

关键词: 项目学习;算法思维;计算思维;程序设计

中图分类号: G633.67            文献标识码: A  文章编号: 1992-7711(2019)22-117-2

一、学科发展、存在困境

1.学科发展、未来趋势

随着新课标(2017)的出台,高中信息技术课程旨在全面提升全体高中学生的信息素养,提出了核心素养概念,其中计算思维是核心素养中重要一环。学生要学会运用计算思维分析与识别问题,通过抽象、建立模型,最终设计解决方案。而算法思维是计算思维重要一部分体现,高中信息技术中如何培养学生的计算思维,提升学生的算法思维,促进学生程序设计能力,值得我们去研究,尝试,突破。

2.学科教学、思维困境

在实际教学的过程中我们发现学生算法思维不易落实,现在的程序设计教学模式基本上是教师给出问题、算法思路和部分代码段,让学生去填写相应的代码。这种模式虽然提高了教学节奏,但是学生不知道为什么要这样设计,为什么可以如此操作,算法设计的意义是什么?如何加深学生对算法思想的印象,提高学生的算法思维能力,提高学生算法思想的迁移能力,尽量拉平学生之间的差距,是我们信息技术教师面临的一个迫在眉睫的问题。

3.上下求索、黎明之光

通过查阅文献和实践研究积累,我们发现项目学习是一个较为合适的提升算法思维的方法途径。项目式学习(project based learning)是一种动态的学习方法,通过PBL让学生自主、主动的探索、发现现实世界中存在的问题, 通过不断探索,解决问题。学生在这个过程中领会到更深刻的知识和技能。

二、项目引领、真实情境

算法思维是一种思维方式,要通过实践求证,在反复尝试中逐步形成的可行方案。它于我们生活中的思维方式略有不同,学生要跳出固有思维方式,计算机原理出发,设計符合计算机本身运行特点的算法。通过项目学习,设计真实的情境,提供学生自由探索的环境,让学生在不断的尝试中适应计算机思维,设计合适的算法程序。课堂教学中设计一个合理的项目,通过实例来贯穿整堂课,在不断的探索中摸清原理、加深印象,提升算法的设计能力。

例如我们在课堂上教授互换语句时(t=a;a=b;b=t),要使用临时变量t来过度,但是学生在设计的时候会直接想到的是a=b;b=a,显然这样是错误的。学生从实际生活的习惯中就觉得互换,只要两样东西换一下就行,没有想到互换的中间过程,在这里我们可以设置一个简单的项目,让学生去思考,互换到底是怎么实现的。

设计项目:有两个不同的容器,其中分别放苹果和梨,要求学生设计算法程序,把碗中的苹果和盘中的梨互换。提供实物两个容器及相应的水果,提供相关资料平台(变量及赋值语句的概念)。

学生在拿到项目,在实行的过程中基本上设计的方案步骤都是:1.把盘中的梨放到碗中;2.把碗中的苹果放到盘中。让学生上台实物演示,在互换梨或苹果的时候提示学生新的内容会覆盖旧的内容,是否可以实现互换?通过实际操作来检验学生设计方案是否可行,对项目进行阶段性评价。

再对学生的项目设计进行分析,以上错误产生的原因学生习惯性的使用平时的惯性思维考虑问题,忽略了算法程序有自己的规则,学生脱离了是程序中的规则,即互换的过程其实是一个赋值的过程,变量赋值会把原内容覆盖。

引导学生在实际设计时先收集相关资料,再是把问题抽象化、模型化。如把碗抽象为变量A,盘抽象为变量B,问题抽象为要实现A与B中的值互换。再是让学生实际操作互换过程,就会想到有把A中的苹果拿出来放到空变量C中,再把B中的梨放到A,C中的苹果放到B中。

最后对整个项目设计过程进行交流评价:1.对学生的设计进行展示;2.分析设计过程中存在的问题;3.总结课堂中收获及相应知识。

通过项目实施,在“尝试——验证——修正”的过程中,学生实际体验,收集资料,设计方案,尝试可行性,最终得到可行结果。这样既培养了学生的算法思维,突出了以计算机的角度思考问题,锻炼了学生的分析设计能力,通过实际设计加深了学生印象,提升学生兴起,提高学生知识点记忆。达到高效学习。

三 、项目提升、开阔思路

解决问题的算法有多种多样,而最终要找出能正确的、高效的、简洁的解决问题方法。学生的思维是纯洁的,没有固定模式的,在设计算法时他们的思路是五花八门的,有的思路不行,有的思路可行,有的思路效率低下,有的思路高效,教师要引导学生从多种方面中找出最优算法。切忌直接抛出一个最优算法,让学生学习,只有通过学生自身的不断尝试,通过项目的实施,一步步深入分析,得到的解决问题的方法才是自身的。

如在学习枚举算法时有一个经典问题“水仙花数”,我们可以设计项目:我们生活中有很多有特点的数字,如153=1^3+5^3+3^3,这个数字每一位的三次和刚好等于它自己,老师对这些数很感兴趣,在网上查到这些数字叫“水仙花数”,我们能不能设计一个算法,找一下所有的水仙花数。

设计前引导学生分析问题:1.三位数;2.每一位的三次之和;3.三次之和于这个三位数相等。学生深入分析:1.三位数范围100-999;2.怎么得到三位数中每一位数值;3.比较找符合结果。

学生设计过程中主要问题是第2步,怎么得到三位数中的每一位值,用i表示三位数,有一下几种情况:

1.a=i \100; b=i\10 mod 10 ; c=i mod 10

2.a=i\100 ;b=(i-a*100)\10;c=i-a*100-b*10

这两种方法都是通过数值取整、取余的方法来实现,实际操作可行,这是常规思路。但是在学生设计的过程中还有一种情况:

a=val(mid(cstr(i),1,1)) ;b= val(mid(cstr(i),2,1)) ;c= val(mid(cstr(i),3,1))

这种设计的思路是通过字符串来处理数据,也可以实现三位数每一位分解。这种思路不是常规思考思路,但是学生会想到,因为学生没有固定思维,他们把学到的知识应用到解题中,作为教师要给予肯定及鼓励。但是教师要引导学生培养一个意识,数字问题能用数值的方式解决尽量使用数值方式解决问题,我们要跳出具体的程序语言,设计合适算法。

还有的学生会从另一种角度考虑问题:1.先有百位、十位、个位上的数字;2.再通过这三位值来组成三位数;3判断百位、十位、个位数的三次和与三位数是否相等。a^3+b^3+c^3=a*100+b*10+c

通过反相思考,我们也能解决寻找水仙花数的问题。通过项目学习方法的实施,培养学生通过不同的角度,不同的思路,设计算法,验证算法思路,在不断尝试过程中解决问题,扩展学生的思路,提升学生知识点掌握能力,促进算法思维养成。

通过“水仙花数”的学习,扩展学生眼界,引出“自幂数”,让学生尝试4位数(玫瑰花数)、5位数等数的 “自幂数”验证。通过同类型问题的解答,培养学生的知识迁移能力和知识应用能力。

同样的问题有多种设计思路,多种算法思维,如“百钱百鸡”问题、“斐波那契数列”问题等等都可通过多种方法解决问题,教师通过适当的引导,充分调动学生的思维能力,开阔学生的思路,让学生进行各种尝试,验证正确性,提升学生的知识应用能力和知识的理解能力。

四、项目递进、逐层深入

知识的落实有其连贯性,算法思维的培养也是如此,通过知识点的授予,逐步提升,逐渐深入。项目学习的特点可以把一个大项目分解为多个小项目,把难题简化,通过小项目的实现最终完成一个大项目。

例如:在计算机系统中,数值一律用补码来表示和存储。怎么样知道某个数在电脑存储中的编码呢?

资料收集:补码的定义。1.符号位,正数最高为位0,负数最高为1;2.正整数的补码是其二进制表示,与原码相同;3. 负整数的补码,将其二进制数除符号位外的所有位取反得到反码;4.对反码加1得到补码。

通过补码的定义,我们可以拆分为三个小项目:1.进制转换,十进制转换为二进制;2.反码求解;3.进制加法进位运算。三个小项目可以设计三个课时的连贯系列课程。

在各个项目实施的过程中落实项目的知识点,通过小项目的实现,逐步推导大项目,最终解决问题。

1.在进制转换项目中要求实现十进制转换为二进制,原理是除二取余法,实施的过程中落实循环语句反复执行除二取余,以及除二取整,出口是整数部分为0为止;

2.第二课,重点强调学生的解析思维能力,取反的结果是1變为0,0变为1,结合前一课中得到余数,对其取反,可以通过“1-余数”实现;

3.第三课重点是进位算法,逢二进一的进位方法,注意进位和当前位的值的变化。

通过教材的整理,把相关联的知识点串联起来,设计一个阶段性项目发布给学生,再是把大项目拆分成几个小项目,大问题分解成小问题,“大事化小”,逐个落实,逐个击破,最终实现整体突破,在使用的过程中巩固已学知识点,培养学生分步实现能力及合作能力。

五、项目实施、得失之处

项目学习通过生活中真实事例设计问题,实例引导,更贴切生活,使得学生学习目标明确,而不会出现学习知识和实际应用脱离,学生迷茫现象。项目学习能更好的吸引学生的学习兴趣,明确学生的学习目标,提升学生的学习效率。

算法思维要求学生最终能自行收集分析材料,提炼规律,形成算法模型,最终通过计算语言实际解决问题。在设计算法的过程中要进行不断的“试错”,不断的“排错”,通过尝试——验证——尝试的过程逐步完成最终算法。项目学习的方法刚好可以满足算法思维的思考过程,通过一个项目,学生自主收集资源,自行设计方案,测试方案,不断尝试,得到最终的解决方案,这和算法思维完全符合。

在实施的过程中也发现了项目学习的一些不足之处:1.项目学习是学生自主探索学习,通过试错,不断更正方向,一步步现在最终目标,在实行的过程中所花费的时间是传统授课方式的几倍,甚至十几倍;2.对于一些大型问题,因学生能力有限,要让学生自行设计算法,有点强人所难。

总体来说,项目学习在算法思维培养上是适用的,通过项目的引导,使得学生养成良好的算法设计习惯,能自行设计简单算法,解决实际问题。项目学习方式能提升学生的自主学习和探索能力,培养学生成为一位数字化时代合格信息公民。

[参考文献]

[1] 普通高中信息技术课程标准(2017年版)[M].人民教育出版社,2018.

[2]罗廷洪.项目教学法在电子技术基础教学中的应用[J].现代职业教育,2019(06):108-109.

[3]冷伟.在综合实践活动中开展项目式学习的探索[J].课程教育研究,2019(11):215-216.

(作者单位:浙江省杭州市富阳区新登中学,浙江 杭州 311400)

猜你喜欢

项目学习计算思维程序设计
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
广挖资源深度整合巧用技术
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养