计算思维视角下的程序设计案例研究

作者: 李宁

计算思维视角下的程序设计案例研究0

[摘           要]  计算思维是教育部规定的信息技术学科核心素养之一,且计算思维有利于学生培养行为、习惯,C程序设计对软件技术专业学生培养计算思维尤为重要。选择C程序设计中“二维数组”相关内容作为研究对象,通过在课堂中引入游戏,淡化游戏、深化程序设计思维,有效培养学生的计算思维。

[关    键   词]  计算思维;程序设计;“二维数组”

[中图分类号]  G712                   [文献标志码]  A                   [文章编号]  2096-0603(2023)36-0153-04

2018年教育部在《义务教育信息科技课程标准》和《普通高中信息技术课程标准》中将计算思维正式纳入学科核心素养,并在各个学段明确了对应课程的课程目标。在软件技术专业的人才培养方案中明确提出:培养大数据、互联网+时代背景下,软件技术从业人员应具备的信息意识、计算思维能力、数字化学习与创新能力、信息社会责任意识、数据安全意识等,养成良好的职业素养。

一、研究现状

(一)计算思维研究情况

周以真在1980年首次界定了计算思维:“计算思维就是利用计算机科学的基本理念来进行问题求解、系统设计和理解人类行为等涵盖计算机科学之广度的一系列思维活动。”2008年周以真重新修订了计算思维:“计算思维就是与形式化问题及其解决方案相关的思维过程,其解决问题的表示形式应该能有效地被信息处理代理执行。”2018年召开的第13届学习科学国际大会也是围绕什么是计算思维、如何学习计算思维、如何评价计算思维等召开的。

在中国知网以计算思维作为关键字检索,共计检索到词条2891条。将研究范围限定为职业教育时,仅仅137篇。通过梳理研究发现,目前计算思维界定为两类:一类是从计算机科学的角度出发,将计算思维界定为计算机科学以及编程思维。另一类则从实际生活出发,将计算思维用于生活中问题的处理,即抽象问题、分解问题、分步设计解决方案、选择最优解、泛化解决问题。

(二)程序设计研究情况

在中国知网以程序设计作为关键字检索,共计检索到词条88727条。将研究范围限定为职业教育时,为2840篇,研究较多集中在系统设计与开发、学习模式等,课程教学案例研究相对较少。C程序设计是计算机专业学生的专业基础课程,对于学生拓展思路、提高逻辑思维能力非常重要,同时为后续软件课程的开设奠定基础。因此,本次研究选择了C程序设计中“二维数组”相关内容作为研究对象。

二、研究基础

(一)教学对象为五年制高职学生

本研究所涉及的教学对象为五年制高职软件设计专业学生。经调查研究发现,五年制高职软件设计专业的学生具有以下特点。

1.学业成绩相对较差,不自信

大多数五年一贯制高职学生学业情况较差。相对于高中生而言,表现出学习习惯、学习能力、基础知识储备不足,部分学生还会表现出严重偏科等特点。经过小学、初中的学习,部分学生开始缺乏学习自信心。

2.年龄相对较小,难管理

与普通高职学生相比,五年一贯制高职学生为初中毕业入学,一般入学年龄为15岁。此时学生正处于世界观、人生观、价值观形成的关键时期,也是身心发展的过渡时期。该年龄段的学生无法全面看待问题,缺乏分析问题、解决问题的能力,开始有意模仿成年人的行为举止,将学习、纪律看作小事,且无法抵制不良诱惑,易受社会不良风气影响。

3.学习目的性不强,无动力

五年一贯制高职学生没有学习目标,严重缺乏学习动力。部分学生在初中时因学习成绩不好,缺乏明确的奋斗目标,没有上进心;部分学生家境较好,受社会风气影响,缺乏对知识的正确认知。

(二)教学内容为“二维数组”

本节课主要教学内容选自清华大学出版社谭浩强主编的C程序设计中的第六章第二节“二维数组”,主要为二维数组的基本知识及其应用。课程结束后需达成以下目标。

1.知识与技能目标:理解二维数组的基本概念;掌握二维数组的定义、引用、初始化;掌握二维数组的应用方法。

2.过程与方法目标:通过分析求二维数组最大值问题,掌握二维数组应用的思维逻辑;通过调试求二维数组最大值的程序,掌握程序调试的一般方法。

3.情感态度与价值观目标:通过实现二维数组的实际应用,提升学生分析问题、归纳解决问题的能力,让学生在应用中深刻体会二维数组编程的有趣之处,激发学生学习程序设计的积极性。

(三)案例设计思路

依据学生特点、授课内容、教学目标,该节课围绕二维数组展开,通过一个“种萝卜”的小游戏导入课程。将种萝卜的菜地看作二维数组,种萝卜的数量看作具体的数据元素。在实际上课过程中,通过提问讲解二维数组相关知识,练习二维数组题目,学生掌握二维数组的定义、引用、初始化的方法。通过求二维数组最大值的题目,巩固二维数组基本知识,并学以致用。整个教学环节分为课前、课中和课后三个环节。下图为设计思路。

(四)实施基本情况

1.课前准备

教师在泛雅平台发布二维数组相关的知识内容,鼓励学生进行课前预习,提前了解新知,提高课堂效率。学生自主学习二维数组相关知识后,完成课前检测题,并根据自己的题目反馈情况进行再次学习。在这个过程中,教师通过学生学习时间、课堂测试等内容,督促学生自学的同时,可以根据测试结果了解学生的具体学习情况,及时调整授课内容。

2.导入新课:种萝卜

在创设情境、导入新课阶段,先展示课前测情况,强调学生出现的问题,教师督促学生进行课前自学的同时,根据学生的实际情况讲解学生出现的问题;学生了解自己的不足,做到“心中有数”。然后教师向学生展示提前准备好的模拟菜地地图,并随机在菜地上种上萝卜,引导学生把菜地类比为二维数组。通过种萝卜活动,引起学生的注意力,通过游戏的方式,增强课堂的趣味性,激发学生兴趣。

3.任务一:定位萝卜,学习二维数组

教师随机指出3个萝卜,请学生说出萝卜的位置以及数量,并讲解如何利用二维数组确定行和列,提出二维数组的定义,引导学生掌握二维数组的定义、引用和初始化的方法。二维数组是一个具有一定难度的抽象性概念,学生在学习时会有一定的困难,通过种萝卜、定位萝卜的游戏,具体且有趣地学习二维数组概念、下标以及简单思维。定义、引用、初始化等方法是有固定格式的,因此教师在此处重点强调C程序的规范与规则,完成练习题目,巩固二维数组的基本知识。

4.任务二:数量计算,掌握二维数组逻辑

教师提出问题:有一块3×4的菜地,要求编写程序求出菜地中最大萝卜的重量,以及该萝卜所在的位置。活动可以提高学生的学习兴趣和课堂参与程度,但容易抓不住重点。教师通过有效的引导,教会学生如何分析、思考问题。在本环节中,教师通过活动的分析、引导,让学生逐步推导学会二维数组的相关内容,潜移默化地完成二维数组使用教学目标:首先要有相应的菜地,其次菜地中种了萝卜,再次如何找最大的萝卜,要注意比较的顺序,最后要注意记录最大萝卜的位置。

5.任务三:代码实现

教师提出任务:使用二维数组相关知识,求菜地中最大萝卜的重量以及位置。二维数组的使用是本节课的重点内容之一,通过代码的实现,学生掌握二维数组的使用方法,掌握重点,突破难点,同时可以将本节课的种萝卜活动完整串联起来,对本节课知识点进行一次知识巩固。同时通过学生调试程序,掌握程序调试的一般方法。通过学生的演示、教师的点评,教师可以有效了解学生的具体情况,及时有效地进行补充讲解。

6.总结评价、布置作业

教师通过提问引导学生进行知识总结,并布置相关作业。总结时教师带领学生一起将本节课的知识内容再次进行梳理、巩固。课后作业分为课堂任务完善、填空题和简答题(即编程题目)。填空题主要是对课上基础知识的再次巩固,较为基础;编程题为提高题目,学生可以通过练习,有效检验自己的学习情况。学生通过练习,了解学习过程中的重点和难点,泛雅平台答案反馈非常及时,能有效促进学生的学习积极性,了解学生对课堂知识的掌握情况。通过信息化手段推送教学内容,提供个性化需求,培养学生的自主学习能力。

三、游戏推动,活跃课堂

根据学生的特点,结合教学内容,经过精心设计和周密计划之后,对本节课进行授课。授课对象为软件设计专业二年级的学生,在学习C程序设计之前未接触程序设计相关知识,授课时学生按照课程进度学习数组相关知识。在授课结束后,通过学生课堂表现情况、程序完整度、作业情况等多方面分析后做出如下总结。

(一)游戏引起学生兴趣,提高参与度

C程序设计课程理论学习内容相对较多、较细,尤其是有严格的编程规范、原则等,学生学习时有畏难情绪。在教学活动中,游戏常承载着吸引学生注意力、提高学生积极性、激发学生动力的任务。本节课在引入小兔子种萝卜活动后,教师明显感受到学生开始配合教师活动,课堂参与程度较高。

(二)合理的游戏可化抽象为具体,降低学习难度

合理创设游戏情境,将目标知识与游戏情境相融合,可以让学生将知识与情境相联系,易于记忆与学习。例如在本节课中,二维数组常会以二维表形式表示,二维数组与二维表的概念相对比较抽象,因此将二维数组类比为菜地,每一小方格类比为数组元素,而萝卜的重量类比为数据,求数组的最大值类比为找最重的萝卜。通过类比操作之后,将抽象的知识点进行具像化,学生理解起来较容易。

(三)课堂积极活跃,学习成果却一般

在课堂中引入游戏,虽然可以引起学生的注意力,但是学生容易失去学习注意力,沉浸在游戏的乐趣中。在本节课中,与种萝卜相关的问题处理,学生表现非常积极,能紧跟课堂节奏,推动课堂进行,在问题分析环节,学生开始出现懒怠思考。如在分析最大萝卜重量时,学生能以生活中的语言描述如何进行查找,但却无法用逻辑语言或伪代码语言描述查找步骤,不思考,等教师或其他同学公布答案。因此,本节课结束时,学生逻辑分析略有欠缺,代码完整性不高。

(四)游戏设计难度较大,且并非所有教学内容都适合游戏

为了保证课堂效果,教师在选择游戏主题、设计游戏环节时常会遇到困难。首先,游戏要相对比较简单,因为课堂时间是有限的。其次,难度过高的游戏不适合进入课堂,尤其是规则复杂的游戏,否则学生花费大量时间去学习游戏的规则,本末倒置。再次,游戏主题要与课堂相关,如本课中将二维数组比作菜地,与课堂无关的游戏不能进入课堂。最后,游戏的环节要与课堂环节紧密结合,让一个游戏从导入贯穿到课堂结束,维持学生的注意力。

四、适当淡化游戏,深化计算思维

根据学生上课表现、课后作业与评价等环节,总结反思了本次课程中的问题所在:学生缺乏以计算机视角进行查找最大值的过程,未形成计算思维。为解决该问题,优化了本次课程,主要优化点为弱化游戏、以表格形式深化思维。

(一)弱化游戏,将知识留下来

在上课时,虽然有知识讲解、提问等方式进行知识学习,但知识点一闪而过,且二维数组的相关知识点较为零散,学生掌握不够扎实。为了提高学生的知识掌握度,在课堂上加入了下图内容,随知识点讲解,将二维数组定义、引用、初始化的知识点贴在投影边上,既可以强化学生记忆,又可以在编程环节供学生参考。