指向计算思维培养的初中Python递进式教学

2023-12-30 17:11侯贺中
中学教学参考·理科版 2023年9期
关键词:计算思维

侯贺中

[摘 要]编程对于发展学生的计算思维、提升学生的核心素养具有重要的促进作用。Python简单易学,但在初中教学中存在一些问题。文章分析了初中Python教学中存在的困境,基于培养计算思维的角度,通过确定问题解决的思路与方法、规划学习目标、设计递进式问题等过程,将递进式教学运用于“循环结构——while循环”一课,以期为初中Python教学提供思路。

[关键词]计算思维;递进式教学;初中Python

[中图分类号] G633.67 [文献标识码]  A [文章编号] 1674-6058(2023)26-0084-04

在科技快速发展、社会日益进步的信息化时代,培养学生的核心素养,让学生具备能适应社会发展的能力就显得尤为重要。2022年,教育部公布了《义务教育信息科技课程标准》,新课标的出台将信息科技的核心素养提升到前所未有的高度,这也意味着未来的信息科技课程将从技能的传授转向能力的培养。对一线教师来說,如何根据新课标的要求做出改变就成为亟待解决的问题。

一、核心素养中的计算思维

核心素养是人应具备的素养中最关键、最必要的共同素养,是一种跨学科素养,是知识、技能和态度等的综合表现,核心素养在注重学生基础知识、基本技能掌握的基础上,还强调学生文化基础、自我管理、勇于探究、协作交流、创新创造等能力的养成,从而使学生能够适应未来社会的发展。《义务教育信息科技课程标准(2022年版)》指出,信息科技课程要培养的核心素养主要包括信息意识、计算思维、数字化学习与创新、信息社会责任。这四个方面是学生适应现代信息社会、提升数字素养和技能、掌握相关能力的基本要求。根据皮亚杰认知发展阶段理论可知,初中学生正处于形式运算阶段,这一阶段的学生能够利用逻辑推理、归纳或演绎的方式解决问题,能够理解符号的意义,具备系统思维能力,因此初中是训练学生计算思维的重要阶段。

计算思维这一概念最早由美国卡耐基梅隆大学的周以真教授提出,它是通过运用计算机科学的基础概念解决问题、设计系统、理解人类行为等一系列思维活动。有学者认为,计算思维是由意识、方法和能力三个层次的内容所组成的复合思维,是一种独特的解决问题的过程, 是一种可以帮助人们更好地理解和分析复杂问题的思想方法, 从而形成具有形式化、模块化、自动化、系统化等特征的问题解决方案。因此,具备计算思维的学生能够将具体问题抽象化,把一个大问题分解成若干个小问题,通过建立模型、设计算法形成问题的解决方案,然后通过动画模拟、程序仿真等方法来验证问题解决方案的可行性,最后反思、优化问题的解决方案,并能够将这种方式应用于其他问题。有人将计算思维的相关特征点归结为问题分析、抽象、算法与程序和自动化四个方面,(如表1),因此可以看出计算思维的核心就是“问题解决”。

二、 初中Python教学困境

Python于2020年进入浙教版初中信息技术教材,作为一种高级编程语言,它具有语法简单、简单易懂等特点,因此比较适合初中学生学习。但是在初中Python教学中存在一些问题,主要体现在以下三点:

(一)不会用流程图表示算法

用流程图表示算法是一种极好的思路方法,尽管学生在七年级下册详细学习过流程图,但是面对一些复杂的算法结构时,大部分学生仍然不知道通过流程图厘清思路。

(二)被算术思维所束缚

学生从小接受的数学教育对他们的思维方式产生了根深蒂固的影响。当面对一道计算题时,他们首先想到的是归纳出公式或方法,而不是结合计算机工作特性,运用计算机科学领域的思想、原理与方法去思考问题,因此在解决问题时可能会毫无头绪。

(三)不理解程序运行的逻辑

与C、C++、Java等高级语言相比,Python虽然语法简单、简单易懂,但不能很方便地设置断点进行debug,这就造成学生很难通过程序的运行理解循环语句等较复杂的语法。再加上有些学校的学生在小学阶段很少接触信息技术课程,没有完整地学习过scratch语言,所以他们感觉编程很难学,逻辑难以理解。

三、指向计算思维培养的初中Python递进式教学

针对上面存在的困境,笔者以新课标中的核心素养为指导,以问题解决为目标,基于计算思维的培养,在初中Python教学中采用了目标导向的递进式教学。下面以“循环结构——while循环”为例展开探讨。

(一)解决问题的思路与方法

目标导向的递进式教学的目标是解决一个具体问题,在本课中是“计算1+3+5+7+…+93+97+99的值”,要想解决这个问题必须首先确定解决问题的思路和方法。“计算1+3+5+7+…+93+97+99的值”是一个典型的循环问题,但与普通的循环不同的是,从1加到93后接下来加的不是95而是97,也就是说这个问题计算的是从1到100的奇数和再减去95。由于本课的主题是“循环结构——while循环”,因此解决这个问题可以仅使用while循环计算从1到100的奇数和再减去95,也可以在while循环中嵌套分支结构,使用continue语句来控制循环计算该问题。

(二)学习目标的规划

本课涉及while循环结构和循环控制语句两个关键知识,基于学生的认知基础与学习特点,本课学习目标的设定由易到难,即通过学习先掌握while循环结构的基本内容,再理解学习循环控制语句,因此学习目标分为普通和进阶两部分,具体见表2。

(三)递进式问题的设计

根据确定的学习目标和目标问题,本课需要设计5个递进式的问题来达成学习目标、解决目标问题。第一个问题是最简单的累加问题,帮助学生理解while循环的格式和执行流程,如“计算1+2+3+4+5的值”;第二个问题将累加的数字增加,使用while循环计算1到99的和;第三个问题要求学生使用while循环解决目标问题;第四个问题是在while循环中嵌套if语句,通过continue语句控制程序的输出,计算1+2+3+5的值;第五个问题是在第四个问题的基础上做出修改,解决目标问题。

(四)递进式教学的实施

尽管学生已经在上一课时学习过for循环,但while循环的基本结构与for循环完全不同,因此需要从while循环的基本结构讲起,教学活动的设计如下。

【教师讲解】结合while循环的流程图讲解while循环的基本结构和执行流程。

【问题1】使用while循环计算1+2+3+4+5的值。

代码:

i = 1

s = 0

while i <= 5:

s = s + i

i = i + 1

print(s)

【教师讲解】讲解问题1的执行流程(如图1)。

通过表格展示问题1每次循环时i和s的值

【分析】设置问题1的目的是帮助学生巩固while循环的基本结构和执行流程。问题1提出后,教师让学生思考1分钟,然后直接给出答案,以问题1为实例讲解该问题的每一步,巩固while循环的执行流程。

【问题2】使用while循环计算1+2+3+4+5+…+97+98+99的值。

代码:

i = 1

s = 0

while i <= 99:

s = s + i

i = i + 1

print(s)

【学生解决问题】学生画出问题2的流程图,根据问题1来思考问题2的算法及程序。

【分析】学生能理解掌握问题1,问题2就变得非常简单,只需要将条件i<=5改为i<=99即可。学生完成问题2后,教师可以对问题2的代码做出两次修改,第一次是将i<=99改为i<99,第二次保持i<=99不变,将i=i+1这句代码删掉。第一次修改的变化显而易见,当第98次循环结束时,i的值是99,此时已不满足i<99,所以第99次循环不会执行,得到的结果为1到98的和,学生也可以在IDLE中输入代码,比较修改前后结果的不同得到结论。第二次修改代码后,无法改变i的值,将代码输入到IDLE中运行,学生能很直观地看到结果得出结论。

【问题3】使用while循环计算1+3+5+…+93+97+99的值。

代码:

i = 1

s = 0

while i <= 99:

s = s + i

i = i + 2

s = s - 95

print(s)

【学生解决问题】学生画出问题3的流程图,思考问题2的算法及程序。

【教师点评】分析前三个问题中的易错点,指出学生学习和操作过程中的错误。

【分析】问题3是本课达成普通学习目标需要解决的目标问题,前两个问题解决的都是连续整数相加问题,这个问题是奇数相加再减去一个数,i=i+1在循环中的作用是每循环一次将i加1,从而得到连续整数,要想得到连续奇数i每次加的数应该是2,循环结束后再减去95就可得到最终结果。在这个问题中,教师可以让学生尝试把s=s-95放入循环体中,在IDLE中观察输出结果是怎样的,并思考原因。

【问题4】使用while循环和continue语句计算1+2+3+5的值。

代码:

i = 0

s = 0

while i < 5:

i = i + 1

if i == 4:

continue

s = s + i

print(s)

【学生自主学习】解决问题4前,教师引导学生自己上网搜索循环控制语句的相关学习资料,学生自学后画出流程图,尝试解决该问题。

【教师点评并讲解】点评学生自主学习的成果,讲解问题4的执行流程,展示问题4每次循环时i和s的值(见表4)。

【分析】设置问题4的目的是学习循环控制语句的含义以及如何在while循环中嵌套if语句。当第四次循环开始时i由3变为4,此时满足if语句的判断条件,执行continue语句,本次循环结束,不执行s=s+i这一句,所以第四次循环并没有进行累加。在这个问题中,将i=i+1这句放在if语句前和放在if语句后有不同的结果,学生可以自主探究并思考其中的原因。

【问题5】使用while循环和continue语句计算1+3+5+…+93+97+99的值。

代码:

i = 1

s = 0

while i < 99:

i = i + 2

if i == 95:

continue

s = s + i

s = s + 1

print(s)

【學生解决目标问题】参考前面四个问题的解决思路,首先画出流程图,然后在IDLE中编写程序解决问题5。

【教师点评】点评学生提交的程序,指出问题5的易错点。

【分析】问题5是本课达成进阶学习目标需要解决的目标问题,总的来说,问题5对于初中学生具有一定的难度,主要体现在i的初始值的确定。如果仿照问题4的程序来编写问题5的程序,i的初始值为0,这样第一次循环开始后i的值变为2,之后每次循环i的值都是加2,最终得到的结果不是奇数相加的和;如果i的初始值为1,第一次循环开始后i的值变为3,之后每次循环i的值都是加2,最终得到的结果少了1,所以程序应该在循环结束后将s加1,或者把i的初始值设为-1,才能得到正确结果。有了问题3的结果作为参考,学生在解决问题5时能知道自己的程序是否正确,及时思考程序错在哪里,进而实现本课的学习目标。

四、 初中Python递进式教学的成效与不足

(一)教学成效

1. 问题由易到难,提升学生信心

计算思维强调将复杂的问题分解为一个个小问题,通过抽象、建模、设计算法等过程解决问题。与传统教学相比,本课的递进式教学由易到难设置了5个问题,帮助学生建立分析问题、化简问题的思路。简单问题的设置增强了学生解决问题的信心,使学生敢于挑战新的问题。

2. 学生自主探究,培养学习能力

新颁布的义务教育信息科技课程标准更加注重能力的培养。本课通过流程图绘制、教师讲解、资料查询等方式培养了学生自主学习能力和问题解决能力,课后练习的结果也表明学生对while循环的理解和应用整体较好。

3. 教学及时反馈,学生感受深刻

Python的IDLE能够在程序运行后及时给出反馈,提示学生找出程序中的问题。此外,除问题1外,学生完成其他4个问题的解答后,教师都会点评学生的程序,分析每个问题的易错点,促使学生深入思考,从而实现了从感性体验到理性认识的提升。

(二)发现的问题

尽管递进式教学取得了一定的成效,但在实际实施中同样发现一些问题,主要体现在以下几点。

1. 课程内容较多

本课设置5个问题,主要由学生自主探究解决,总体来说内容较多,无法在1个课时内完成,要想让学生较好地掌握知识,至少需要两到三个课时。

2. 评价方式不够多样

本课递进式教学中涉及的评价方式主要是教师点评,缺少学生自评、小组互评等其他评价方式。

3. 学生代码编写习惯不好

大部分学生刚接触代码编程,对Python的语言逻辑和语法规则不够熟悉,没有养成良好的代码编写习惯,容易出现忘记冒号和括号、缺少缩进等格式上的问题。

综上所述,在核心素养的视角下,将目标导向的递进式教学应用于初中Python教学中,通过设计5个由易到难的问题,完成课程的学习目标,培养学生的计算思维。实践表明,这种教学可以较好地帮助学生掌握知识、提高能力,但仍有些许不足,在后面的教学中需要改进和完善。

[   参   考   文   献   ]

[1]  陈明选,张宁.基于高中信息技术学科核心素养的学习活动设计[J].中国电化教育,2019(1):87-93.

[2]  中华人民共和国教育部. 义务教育信息科技课程标准:2022年版[M]北京:北京师范大学出版社,2022.

[3]  JEANNETTE M W. Computational Thinking[J].Communications of the ACM,2006(3):34-35.

[4]  龔沛曾,杨志强.大学计算机基础教学中的计算思维培养[J].中国大学教学,2012(5):51-54.

[5]  任友群,隋丰蔚,李锋.数字土著何以可能?:也谈计算思维进入中小学信息技术教育的必要性和可能性[J].中国电化教育,2016(1):2-8.

[6]  叶新苗. 以培养计算思维为导向的初中《Python程序》的教学实践研究[D].上海:华中师范大学,2020.

猜你喜欢
计算思维
高中信息技术课堂中计算思维能力培养问题的探讨
公安专业学生计算思维能力培养对策初探
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究