2006 年, 美国卡内基梅隆大学的周以真教授提出了计算思维的概念。计算思维是利用计算机科学的基本理念解决问题、设计系统和理解人类行为的一种方法,并指出计算思维的本质是抽象(Abstraction)和自动化(Automation)。
本文采用了英国南安普敦大学的 Cyn- thiaSelby博士和 JohnWoollard博士对计算思维的理解,将计算思维划分为分解思维、抽 象思维、算法思维、评估思维、概括思维(见表1),并做了进一步的研究。
随着 《中小学信息技术课程指导纲要(试行)》的颁布,各地方中小学都依据新的课 程标准对信息技术课程进行了改革。但在国家层面,目前尚未出版与新课标相配套的信息技术教材。在实施过程中, 很多学校对信息技术课程内容作出了调整,编程教育占据了较大比重,信息技术教育也逐步实现了由重理论到重实践的跨越。 在实施过程中, Python成为在中学阶段开展编程教育较为普遍使用的编程语言。
本研究通过查阅文献资料、实地调研与访谈,切实了解到我国中学编程教育中存在的一些突出问题:
1.编程教学方法较为单一
信息技术教师在传授知识时多采用讲授演练法,教师通常先讲授编程的基本知识,然后在编程环境中操作演示, 让学生根据编程语言,在相应的环境中按照教师的步骤,机械地敲语言,最后输出语言,提交作业。编程教学变成了学生模仿教师的过程, 信息技术教师忽视了教学过程中教学方法的应用, 过于注重结果。编程教学过程的形式与方法都较为机械和单一。
2.编程教学评价的不尽全面
教师通常根据学生提交的作品来给分,诊断学生的学习效果, 忽视了学生在完成作品的过程中存在的问题,比如作品完成过程中,是否用语言表达清楚自己的作品,是否明白所制作作品的意义等。教师单纯地通过最后的作品质量给分,对学生的评价较为片面,也容易忽视学生水平的差异,使得教师对学生的问题解决存在滞后性,容易使学生的兴趣被弱化,不利于新课改中核心素养的养成。
3.编程知识系统性不强
部分教师过于强调编程语言的语句规则,未能有效地组织和引导学生的创作实践与梳理知识体系。导致学生所学到的知识、掌握的技能都是碎片化的,没有一条知识链将知识连接形成体系,无法将零散的知识有效整合应用到自己的创作中。创作时出现知识的拼凑,无法将创意转化为完整并且具有创新性的作品,计算思维的培养也无法得以实现。
综上可知,在开展编程教育的过程中,部分信息技术教师更多地是教授基础知识、基础理论,疏于培养学生的实践能力,学生没有得到正确、充分的引导, 对编程教学也没有正确的认识, 将知识与实践结合还存在很大的问题。教师也不注重改进教学方法,对于如何培养计算思维还缺乏认知, 也忽视了思维培养的长期性和重要性。传统教学方式对计算思维的培养针对性不强、效果欠佳,当前还没有有效培养计算思维的系统化方法。
刘景福将项目学习定义为一种学习方式,“项目学习是一种基于建构主义学习理论, 强调以学生为中心、学科交叉、协作学习、自主探究,与真实世界和生活实践相联系的学习模式。项目式学习的基本流程如图 1 所示,主要分为图 1 所示六个步骤。
在编程教育中引入项目式学习,教师可以创设真实的项目情境,学生根据项目提供的信息和要求,自主、合作、探究,制定解决方案,完成作品创作。学习过程中学生通过小组合作,促进了交流和协作能力的发展,在探究过程中促进了学生问题解决能力和创新能力的提升, 在方案制定和作品创作过程中促进了学生计算思维的养成。
本研究针对当前我国中小学编程教育的现状与问题,以建构主义学习理论和“做中学”为理论依据,以项目式学习的基本模式为直接参考, 以Python 为具体教学内容, 结合 《普通高中信息技术课程标准 (2017年版)》以及《中小学信息技术课程指导纲要(试行)》的基本理念与培养核心素养的要求, 提出面向计算思维培养的初中编程项目式学习教学设计流程,如图 2 所示。
整个教学设计是以项目为核心,以项目式学习的六个组成部分确定项目主题、制定项目计划、项目活动探究、作品制作与交流、成品交流与展示和活动评价为基础与依据。围绕项目活动的前期阶段、活动过程、后期阶段三个阶段,分别从教师的活动角度和学生的活动角度两个方面进行分阶段设计。
1. 确定项目主题、制定项目计划——培养分解思维、抽象思维
(1)教师活动
首先,前期阶段教师最主要的工作之一就是要进行学情分析。学情分析主要分析当前学生原有知识基础、认知能力、学习风格以及兴趣养成等,可以通过学生的档案袋、过往的表现和成绩单、前期问卷测试以及学生的年龄特征进行分析,同时也要注意学生班级整体的情况,这样有利于教师全面了解学生,更好地分析学情,清楚教学一线的实际情况, 以便设计出更贴切的教学起点,有利于教学设计更加合理化。
其次,教师要制定项目的最终目标。以培养信息技术学科核心素养为目标,发展计算思维,要使学生能够从计算思维的视角审视编程的基础知识与应用,引导学生依据计算机解决问题的方法,将问题形式化,分解问题,建立结构模型,对数据进行分析和组织。
最后,教师要巧妙地创设情境,从而呈现项目主题, 引导学生选定项目并协助学生制定计划。在此过程中, 要注意培养学生分解思维和抽象思维,将一个复杂问题先分解为若干相对简单的小问题,化整为零,将复杂问题整体分散成若干子问题。我们就能够非常便捷地找到这些子问题的解决思路和相应方法, 问题也就迎刃而解,这也是复杂问题简单化的常用处理方式。
(2)学生活动
首先,学生在看到项目后, 要学会思考、分析与理解项目,为选择项目进行周全的思考(假如项目有多个时,就要事先了解各个项目, 对项目的完成情况进行预估)。根据事先提供的信息对项目有全面的认识,确定好方向, 以便后续工作的顺利展开和减少不必要的返工。
其次, 学生要利用已经提供的知识,进一步分析项目,并根据项目试着制定计划。分析项目是为了学生更好地理解项目,通过对项目的理解可以结合小组内部各个成员的优势与特点进行分工,分工的过程要集体讨论,责任到人。
2. 项目活动探究、作品制作与交流——培养抽象思维、算法思维、评估思维
(1)教师活动
首先,根据课程标准以及教材大纲,罗列基础知识,提供教学资源,从宏观到微观,形成体系框架,明确该项目需要用到的知识点(包括内涵知识和可能会用到的外延知识),通过教材、导学案、知识清单、PPT 课件、微课等形式发放给学生。
其次,教师不仅要准备基础知识和教学资源,还要营造情境,利用特定的情境,一步步地引导学生, 让学生自己积极探索。在这个环节中,教师要培养学生养成抽象思维、算法思维、评估思维。在此过程中,教师要引导学生设计相应的步骤或规则来解决每个小问题。此处的问题不是简单地得出问题的答案,而是通过多次、多角度思考,想出符合规定的步骤来进行问题解决。评估思维的培养, 注重引导学生在简单的步骤或指令中选择出最优方案, 对问题解决的多种算法的各个方面进行综合衡量和判断,比如问题处理效率、结果准确程度等, 确保选择出来的算法能够使问题达到最优化的解决效果。教师要循序渐进地引导,对于学生的疑问要逐步给出,不能全盘托出,而是一步步地引导学生完成项目。
(2)学生活动
学生通过多渠道对基本知识进行学习,掌握编程的基本操作,自己亲手编写相关代码。在操作的过程中,如遇到不懂的问题,可以及时请教教师或与组内成员合作交流讨论,解决疑难知识,进行活动探究,最终完成项目作品。
2. 成品交流与展示、活动评价——培养评估思维、概括思维
(1)教师活动
项目的收尾阶段是非常重要的一个环节,主要分两块,一是学生展示作品,二是教师对小组完成的项目进行评价。教师的评价又从两方面进行,一是对项目最后的成品进行点评, 二是评价学生在项目过程中的表现。这一步需要教师前期关注学生的项目,对学生完成项目的情况有一个全面的了解。另外,教师还可以组织学生对小组完成的作品进行互评, 通过观察学生的作品、反馈的信息和学生的表达,从而抓住学生的创新点,予以肯定或提出建议, 鼓励学生再次进行作品修改与完善, 最终完成项目。
在这个环节中, 教师要引导学生对问题解决的多种算法的各个方面进行综合衡量和判断, 确保所选算法能够使问题达到最优化的解决效果。同时,要培养学生的概括思维能力, 在先前已有的问题解决经验的基础上, 找到已解决过的问题与待解决的新问题的共同之处, 从而可以选择性地运用已有经验来快速解决新问题。
(2)学生活动
学生进行作品展示,交流经验。对于学生而言,完成一个项目是学习 Python 新知识和新技能的过程,也是将原有知识与技能迁移应用在作品创作的过程。小组汇报展示时,要展示小组合作过程中成员任务的分配以及在
过程中是如何合作的,与同学交流在完成任务的过程中遇到了什么问题以及问题是如何解决的,最终作品是否达到项目计划中的预期效果等等。
本研究依据项目式学习的基本模式,构建了面向计算思维培养的初中编程项目式学习教学设计流程,为解决编程教学方法的单一性、 编程教学评价的片面性、编程知识缺乏系统性等现实问题提供了参考与借鉴。基于项目式学习开展编程教学,可以促进学生交流和协作能力的发展,促进学生实践能力和创新能力的提升,促进学生复杂问题解决能力和计算思维的养成,使学生逐步形成智能化时代的终身学习能力。
参考文献
|作者:王 颖,侯 岩,赵健如,王玉龙
|来源:中国知网
|美编:黄萱