当前位置:首页 期刊杂志

基于计算思维的Python程序设计课程教学案例设计

时间:2024-07-28

张敏, 贾强

(渭南师范学院 计算机学院, 陕西 渭南 714099)

0 引言

2006年3月,美国卡内基·梅隆大学计算机科学系的系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊《Communications of the ACM》上给出,并定义了计算思维(Computational Thinking)。周教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。

2007年,周以真教授在《中国计算机学会通讯》发表的文章中指出:“计算机科学的教授应当为大学新生开一门称为“怎么像计算机科学家一样思维”的课程,面向所有专业,而不仅仅是计算机科学专业的学生。我们应当使入大学之前的学生接触计算的方法和模型。”

在微软公司2016年产学合作计划发布之初,教育部和大中小学各方面的教育专家齐聚微软亚洲研究院,共同商讨计算思维教育全龄化普及之议题。会议认为,“计算思维”理念在计算机基础教育中的重要性不容忽视,应作为培养目标的核心素养进行推广,并对于在教学内容建设,完善社会评价,推进政府支持等几方面开展后续工作达成共识。参会各方均表示:“将计算思维教育贯穿到大中小学,我们要有这样的远见!”

在中国知网中通过以下的检索条件((主题=计算思维 或者 题名=计算思维 或者v_subject=中英文扩展(计算思维)或者title=中英文扩展(计算思维))(模糊匹配)),检索到文献总数4 843篇,运用知网的统计工具进行了初步统计分析,总体趋势分析统计结果,如图1所示。

图1 中国知网计算思维研究总体趋势分析

通过图1我们可以看出,计算思维最早的研究开始于上世纪的80年代,但是在20世纪的研究都不温不火,所以我们认为当时的计算思维还没有被更多的大众学者所重视,也没有被作为重点研究问题。计算思维的快速发展则出现在21世纪初,从2010年到2020年的10年里,文献研究的数量呈直线上升的趋势,2019年达到了年论文发表数量900篇左右。此趋势表明,近10年间社会和大众研究者对计算思维的重视程度和研究热度大幅度提升。主题分布统计结果,如图2所示。

图2 中国知网计算思维研究主题分别统计

通过图2我们可以看出,计算思维相关的研究论文中包含“计算思维”主题的论文占总论文数量的34.59%,包含“计算思维能力”主题的论文占总论文数量的10.19%,其中包含“计算机基础教学”“教学改革”和“大学计算机基础”主题的论文占总论文数量的10.89%。这些数据表明,计算思维在计算机类课程的教学中起到举足轻重的作用,教学改革更多的关注计算机课程中计算思维的运用。东北师范大学于颖在2017年提交的博士论文《计算思维主导的高中信息技术教材结构设计研究》中强调:“计算思维是21世纪学习者的必备能力,各发达国家相继把计算思维纳入国家课程标准,我国也将计算思维写进国家课程标准,并将其列为信息技术学科核心素养之一”[1]。

随着人工智能、大数据技术的发展,Python语言作为一种数据统计和分析的通用语言,应用比较广泛。目前Python的应用热度紧随在C/C++语言和Java语言之后。多年前,Python语言开设在斯坦福等国外高校的程序设计课程中,近些年,清华大学等国内学校也先后开设了Python程序设计课程,并向大中专院校推广和普及[2]。

Python程序设计课程是计算机类专业的一门专业基础课。通过Python课程的学习,使学生系统地掌握Python编程的基本方法;通过对程序设计教学案例的设计,使学生快速地积累编程经验,提高学生利用计算机解决实际问题的能力[3-4]。

将计算思维融入到程序设计中,不仅仅教授具体程序语言及应用,而且强调程序设计的思想和方法,使学习者理解和运用计算思维求解问题的思想和方法,从而,使学习者理解将计算思维融入不同学科领域的重要性,并将程序设计类课程从单纯知识和技能的培养层面提高到意识和思维的培养层面[5-6]。

本文以Python语言程序设计为例,根据课程教学目标和教学内容,选择合适的教学案例,以计算思维为导向的案例设计,尽可能贴近实际解决问题的模式,让学生体会到如何用计算机解决问题的方法来解决生活中的问题。

1 基于计算思维的教学案例设计原则

著名案例研究学者托尔(Towl A R)说:“一个出色的案例,是教师与学生就某一具体事实相互作用的工具,一个出色的案例,是以实际生活情境中肯定会出现的事实为基础所展开的课堂讨论。它是进行学生探讨的支撑点,是关于某种复杂情境的记录,它一般是在让学生理解这个情境之前,首先将其分解成若干成分,然后将其整合在一起。”

依据托尔的观点,结合程序设计类课程的特点,给出基于计算思维教学案例设计原则如下。

(1) 案例选题生活化:选取生活中的案例,学生容易理解,也很感兴趣。

(2) 案例涵盖知识点典型化:选取涵盖程序设计课程中教学知识点的典型案例,容易在解决问题时掌握所学知识要点。

(3) 案例具有可分解性:一个完整的教学案例可以在求解时将其分为若干部分,对每个小问题求解后将其整合。

2 基于计算思维的教学案例设计流程

计算思维的四大基石:分解、模式识别、抽象和算法。其中分解是指将复杂的问题分解成更小、更简单的问题;模式识别是指建立相似的问题和经验之间的联系;抽象主要是指识别重要的信息,忽略不相关的细节;算法是指理清思路,设计步骤解决问题。基于计算思维的教学案例设计流程,如图3所示。

图3 基于计算思维的教学案例设计流程

3 基于计算思维的Python课程教学案例设计举例

3.1 教学安排

教学内容:选择结构、随机函数、turtle库。

教学目的:掌握选择结构、随机函数、turtle库的应用。

教学重点:选择结构、随机函数、turtle库的应用。

教学难点:选择结构的应用。

3.2 问题提出

游戏:石头、剪刀、布,编写程序让玩家与计算机玩经典的石头、剪刀、布游戏。

游戏规则:石头可以磕碰剪刀;剪刀可以剪布;布可以包裹石头

游戏结束条件:玩家赢为止。

为了增加游戏的趣味性,游戏结果用图形的方式显示,如图4所示。

3.3 问题描述

玩家输入石头(1)、布(2)、剪刀(3),程序使用随机数函数产生1-3的随机数,如果玩家输入的数和随机数相等,则为平局;如果玩家输入的数减去随机数的差为1或-2,则玩家赢,否则玩家输。程序在玩家赢后结束。使用turtle库实现显示玩家和随机数对应的图片,及结果对应的图片。

3.4 问题分解

① 玩家输入石头、剪刀、布,且图片显示。

② 机器随机生成石头、剪刀、布,且图片显示。

③ 比较玩家输入的值与机器随机生成的值。

④ 根据规则输出结果,且图片显示。

3.5 模式识别

这个问题与我们日常生活中的多重选择问题相似,也与我们初中学习过的求解分支函数的问题相似。程序设计问题中的选择结构,分支函数公式,如图5所示。

图5 分支函数

3.6 抽象化

随机函数:random.randint()

格式:random.randint(a,b)

解释:参数a和b是随机数的下限和上限,必须要写。

例如:random.randint(1,3) #随机生成1-3的整数

Turtle库:是Turtle绘图体系的Python实现。

设置图片:turtle.register_shape(“图片名")

输入框:Turtle库中的textinput()方法为用户提供一个输入窗口。

多分枝选择结构:if…elif…else

if 条件表达式: if 条件表达式1:

语句 语句1

if 条件表达式: elif 条件表达式2:

语句1 语句2

else: else:

语句2 语句3

3.7 算法分析

S1:用turtle库的turtle.register_shape( )方法设置石头、剪刀、布图片。

S2:用turtle库的turtle.register_shape( )方法设置输、赢、平局图片。

S3:创建用户、计算机及结果三个turtle对象调用turtle.register_shape( )方法。

S4:设置三个图片位置初始值。

S5:while True:循环语句控制程序循环执行。

S6:用户输入(1)石头、(2)布、(3)剪刀,根据用户输入结果显示“石头剪子布”图片。

S7:计算机随机给出(1)石头、(2)布、(3)剪刀,根据随机结果显示相应图片。

S8:判断选手和计算机的结果得出输赢结果。如果玩家输入的数和随机数相等,则为平局;如果玩家输入的数减去随机数的差为1或-2,则玩家赢,否则玩家输。

S9:重复S5-S8,直到玩家赢后结束。

3.8 代码实现

import random

import turtle

#使用turtle的register_shape()方法设置石头、剪刀、布的图片

turtle.register_shape("布.gif")

turtle.register_shape("石头.gif")

turtle.register_shape("剪刀.gif")

#使用turtle的register_shape()方法设置平局、输、赢的结果图片

turtle.register_shape("赢.gif")

turtle.register_shape("输.gif")

turtle.register_shape("平局.gif")

#创建玩家、机器和结果三个turtle对象

gamer=turtle.Turtle()

machine=turtle.Turtle()

result=turtle.Turtle()

#开始先隐藏turtle图片

gamer.hideturtle()

machine.hideturtle()

results.hideturtle()

#设置玩家、机器和结果三个图片的位置初始值

gamer.penup()

gamer.goto(-110,60)

machine.penup()

machine.goto(110,60)

results.penup()

results.goto(0,-110)

while True:

#提示用户输入1,2,3其中 石头(1),布(2),剪刀(3)

p=turtle.textinput("输入","请出石头剪子布-石头(1),布(2),剪刀(3)")

#通过用户输入结果来显示"石头剪子布"的图片

if p=='1':

gamer.shape("石头.gif")

p=1

elif p=='2':

gamer.shape("布.gif")

p=2

elif p=='3':

gamer.shape("剪刀.gif")

p=3

else:

break

gamer.showturtle()

#计算机使用随机函数产生随机的"石头剪刀布"

c=random.randint(1,3)

if c==1:

machine.shape("石头.gif")

elif c==2:

machine.shape("布.gif")

else:

machine.shape("剪刀.gif")

machine.showturtle( )

#比较并判断玩家和计算机的结果,并给出平局、输、赢等结果

r=p-c

if r==1 or r==-2:

print("你赢啦!")

results.shape("赢.gif")

break

elif r==0:

print("平局")

results.shape("平局.gif")

results.showturtle()

else:

print("你输啦!")

results.shape("输.gif")

results.showturtle()

3.9 案例总结

基于计算思维的教学案例设计遵循以下步骤。

① 案例提出:课程内容开始前提出案例,并对案例进行一定的描述,因为案例选自生活化的问题,所以学生很容易明确本次课程需要解决的问题。

② 教学内容的应用:针对案例问题的解决所需要的理论知识,讲解本节课的教学内容,使学生掌握理论知识的应用

③ 计算思维的四要素:按照计算思维的四要素来分析问题,引导学生运用计算思维的的方法去思考和解决问题,培养学生的计算思维。

④ 问题解决:完成案例求解,锻炼学生使用计算思维的方式思考和解决问题

4 总结

计算思维的思想出现在远古,真正的发展在21世纪初。对于21世纪的学习者,计算思维是必备的能力。在程序设计类课程中,运用计算思维设计教学案例,选择生活化、个性化、典型化的案例,强调程序设计的思想和方法,使学习者理解和运用计算思维求解问题的思想和方法来解决生活中的问题。计算思维将程序设计类课程从单纯知识和技能的培养层面提高到意识和思维的培养层面,提高学生解决问题的能力,也为学生综合素质的提升打下一定的基础。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!