APP下载

智能时代编程教育如何培养学生的创新能力

2023-12-25李锋袁雨欣顾小清

现代远程教育研究 2023年6期
关键词:信息科技智能时代创新能力培养

李锋 袁雨欣 顾小清

摘要:在教育数字化转型的背景下,智能时代的编程教育被赋予培养学生创新能力、服务于创新型国家和科技强国建设的重要使命。然而,受技术工具论的影响,当前学界还普遍存在将编程教育等同于程序设计语言学习、简化为程序的模仿练习,甚至将其异化为编程测试题训练等认识误区。事实上,伴随计算机和人工智能技术的快速革新与普及,编程教育在教育理念、目标界定、内容选择、方法设计上不断成熟和完善,并形成了以知识与技能为主体内容的“学编程”、以解决问题为关键技能的“用编程学”、以编程创新为核心素养的“用编程创新”的教育模式演进路径。智能时代的编程教育应突破传统编程教育在内容、模式和方法上的局限,基于编程项目活动来贯通编程探究全过程,优化编程创新成果,并建构螺旋上升的创新路径。同时,还需按照教育实践需要从单元项目活动整体性、跨学科任务综合性、智能编程环境易用性等方面提供全方位的策略支持,以更好地为学生创新能力的培养提供坚实保障。

关键词:智能时代;编程教育;创新能力培养;编程教学模式;信息科技

中图分类号:G434   文献标识码:A    文章编号:1009-5195(2023)06-0011-08  doi10.3969/j.issn.1009-5195.2023.06.002

基金项目:国家社会科学基金2021年度教育学一般课题“线上线下融合的信息技术教材新形态及创新应用研究”(BCA210081)。

作者简介:李锋,博士,教授,博士生导师,华东师范大学教育信息技术学系(上海 200062);袁雨欣,硕士研究生,华东师范大学教育信息技术学系(上海 200062);顾小清(通讯作者),博士,教授,博士生导师,华东师范大学教育信息技术学系主任,上海高校“立德树人”信息科技教育教学基地主任(上海 200062)。

在智能时代,以数字化、网络化、智能化为特征的技术革新催生出了社会发展的新赛道、新模式和新样态,为新一轮社会经济繁荣奠定了坚实的基础。大数据、大模型支持下的生成式人工智能进一步推动技术工具向更加智能化的水平飞跃,开启了人机协同的新路径。在教育数字化转型的大背景下,引导学生正确理解人与数字环境的关系,学会数字化生存技能,发展应用智能设备进行协同创新的能力就成为学校开展编程教育的新任务。

一、编程教育的三大认识误区

编程作为学校教育的一项重要内容,其教育目的是要帮助儿童合理应用身边各种由程序驱动的数字设备,掌握以编程解决问题的过程与方法,用符合智能时代的思维方式去思考、理解和解决日常学习与生活中的问题,提高数字素养与技能(Nouri et al.,2020)。为加快建设创新型国家和世界科技强国,2017年国务院印发的《新一代人工智能发展规划》强调在中小学阶段设置人工智能相关课程,逐步推广编程教育(中華人民共和国中央人民政府,2017)。2022年《义务教育信息科技课程标准(2022年版)》进一步要求学生能针对简单问题,尝试设计求解算法,并通过程序进行验证,引导学生在经历编程解决问题的过程中发展计算思维、数字化学习与创新等能力(中华人民共和国教育部,2022)。但是,受技术工具论的影响,编程教育还存在着等同于程序设计语言学习、简化为程序模仿练习,甚至异化为编程测试题训练等认识误区。

1.将编程教育等同于程序设计语言学习

素养导向的编程教育不再局限于编程知识与技能学习,更强调培养学生运用计算机科学领域的思想方法去解决问题的能力,即通过抽象、分解、建模、算法设计等思维活动形成解决问题方案,以程序验证问题解决方案,并能将此能力迁移运用于解决其他问题之中。编程教育成为培养学生计算思维、问题解决能力、创造力等的重要途径(张进宝,2019)。例如,“智能浇花系统”活动中,学生为完成依据土壤湿度阈值实现自动浇花的模块功能,需进行“描述自动浇水模块需解决的问题,设计问题解决方案,通过编写程序实现自动浇水方案,运行程序验证效果并进行优化迭代”。在此过程中,学生不只是学习程序设计语言中的变量、运算符、表达式、循环语句等内容,还要将此应用于解决实际问题之中。然而,在教学实践中,为提高教学效率,一些编程教学活动脱离解决问题的真实情境,只是围绕某一程序设计语言的知识技能开展教学,过于关注该语言的数据类型、常量与变量、运算符、表达式、语句结构等内容,强调单纯地向学生传授程序设计语言知识。事实上,如果忽视引导学生经历问题描述、算法设计、编程验证、优化迭代等编程问题解决全过程的学习,将程序设计语言知识技能的学习与应用编程解决问题的过程隔裂开来,不仅不能让学生感受到编程学习的乐趣,反而会因记忆过多的枯燥语法和难以理解的语句符号而降低学生学习的兴趣,进而使学生对编程学习产生“畏惧感”(Rogerson et al.,2010)。

2.将编程教育简化为程序的模仿练习

编程解决问题的过程是一项不断“试误”和逐步完善的过程。在此过程中,学生需要针对要解决的问题对编程方案和作品进行持续迭代与优化,直至满足任务需求。因此,编程教育要求创新教学方式,在真实问题情境中,引导学生参与编程探究活动,经历描述问题、完成任务、建构知识和运用知识的过程,逐步领悟编程解决问题的过程与方法(孙立会,2023)。然而,教学实践中为让学生能快速完成编程任务,较多采用的是“教师讲一步,学生做一步”的模仿训练方式。例如,在 “设计导游机器人游览路线”教学活动中,为了让学生都能完成机器人导航设计任务,教师在展示给学生需要完成的任务后,会分步演示导航机器人需要行走的步数、方向和应用积木流程实现导航方案的过程,并让学生按照教师设计的方案和演示的步骤,分别在自己的设备上添加相应的模块,经过不断调试直到能实现机器人的成功导航。在此活动中,教师为激发学生的学习兴趣创设了编程活动情境,融入所需解决的问题,但是在活动过程中只是强调学生要进行编程模仿与跟随,而忽视了学生应用编程方法进行问题分析、方案设计、试误与优化探究过程的体验。尽管通过模仿每组学生都能完成相应的活动任务,但是由于学生没有自主经历应用编程方法分析问题、解决问题、创作作品的过程,一旦更换新的问题情境,学生依然较难将编程方法迁移到新问题的解决中,由此导致了“为活动而活动”的编程教育误区。

3.将编程教育异化为编程测试题的训练

学校教育的本质是引导儿童逐步获得人类积累的文化观念、方法、工具和资源,并促进其实现从依托个人经验与世界互动,到理性自主地认识世界和参与社会的转变过程(杨向东,2017)。 评价作为编程教育实施的一个重要环节,需落实评价促进学习的理念,提高学生自我评价和自我反思能力,引导学生合理运用评价结果改进学习。以评价促进学生编程问题解决能力的提高,旨在引导学生正确应用编程知识与技能理解程序驱动的数字化环境,逐步成长为有效的技术使用者、创新的技术设计者和理性的技术反思者(中华人民共和国教育部,2020)。但是,随着学校课程改革的深化,编程内容逐步成为学校“高利害”考试的一项内容。受“选拔指挥棒”的影响,为让学生在选拔考试中获得好成绩,一些学校往往将编程教育异化为编程测试题训练。即针对编程知识与技能点编制专项测试练习题,采用“题海战术”组织学生高强度练习,以强化学生对编程知识与技能的熟练掌握程度。事实上,学校编程教育如果过于强调评价的“甄选作用”,而忽视评价激励与促进学生编程学习的功能,则不仅难以有效提高学生应用编程解决问题的能力,还会因为高强度、重复性试题训练增加学习负担,进而弱化编程教育的育人价值。

二、编程教育的模式演变与实践探索

编程教育随着计算机技术的革新与普及得以快速发展,其教育理念、目标界定、内容选择、方法设计在教育实践与探索过程中得以不断成熟与完善。自学校开设计算机及相关课程以来,编程教育经历了从以知识技能为主体内容到以解决问题为关键技能,再到以编程创新为核心素养的发展脉络,逐步形成了面向知识技能的“学编程”、面向实践应用的“用编程学”和面向创新能力发展的“用编程创新”的教育模式。三种教育模式在教育理念、学习目标、课程内容、教学方法等方面各有特点,其模式演变与发展历程如图1所示。

图1 编程教育的模式演变与发展历程

1.面向知识与技能的“学编程”

20世纪70年代,微型计算机的推广与应用促进了学校计算机教育的开展,许多国家为占得信息化发展先机纷纷在学校开设计算机课程,以提高学生的计算机应用能力。但是,受当时计算机软硬件条件限制,要有效使用计算机就需要掌握能调控计算机的语言,因此“学编程”就成了学校计算机教育的主要模式。苏联计算机教育专家叶尔肖夫在《程序设计——第二文化》一文中指出,“是否具有编排与执行自己工作的程序能力是人们能否有效完成各种任务的关键。现代人除了传统的读写算能力以外,还应该具有一种可以与之相比拟的程序设计技能,这种能力可以帮助人们从小培育一种程序设计的意识与能力”(王吉庆,2001)。受该观点影响,许多学校将程序设计语言作为计算机教育的主要内容。例如,美国海登出版公司编写的“小学微型计算机”教材就基于BASIC程序设计语言设计了“变量、表达式、函数、赋值语句、条件语句、循环语句、输出语句 ”等编程知识与技能(Moody,1978)。1984年,我国教育部发布的《中学电子计算机选修课教学纲要(试行)》提出“掌握基本的BASIC语言,并初步具备读、写程序和上机调试的能力”(全国中学计算机教育研究中心,1991),也属这种情形。基于程序设计语言的“学编程”教育模式要求学生记住一系列的指令,运用这些指令编写代码语句,形成可执行的计算机程序,并通过执行程序实现人们对计算机的调控。该模式强调学生对程序设计语言的学习,注重编程知识与技能的系统性,为学生理解计算机运行原理、通过程序设计语言管理和应用计算机创造了学习条件。但是受计算机应用领域的局限,编程学习的内容与学生生活及学习情境相脱离,学习过程过于强调指令记忆与抽象代码的编写。尽管学生在学习过程中能够积累一些编程知识与技能,但依然难以将相应内容有效应用于实际问题的解决中。随着计算机技术快速发展、应用场景日趋多样,编程教育亟需突破“记指令、写代码”的困扰,引导学生在真实情境中带着问题去学习编程,并在活动过程中应用编程技能,不断提高用编程解决问题的能力。

2.面向实践应用的“用编程学”

20世纪80年代,随着计算机在教育中的普及应用,学界对计算机教育有了更深刻的认识,越来越多的学者认为计算机教育不仅要让学生学习关于计算机的知识与技能,更要让学生学会用计算机去学习,这就推动了编程教育从“学编程”到“用编程学”的发展。美国计算机教育专家西蒙·派珀特在《因计算机而强大:计算机如何改变我们的思考与学习》一书中强调,“儿童在编程环境中开展其他学科学习,可以鼓励他们将头脑中的想法转化为可视化作品,引导儿童在設计、制作、试误过程中验证和优化自己的想法,借助丰富而又复杂的‘微型世界’获取知识、解决问题”(Papert,1993)。受该教育理念影响,很多学校通过跨学科整合方式开展编程教育,将编程教育融入数学、科学、语言以及艺术课程学习中。例如,有学校利用LOGO可视化编程环境,引导学生按照几何图形特征设计绘制图形的步骤,在LOGO编程环境中编写程序指令验证步骤的正确性,在试误与修正的过程中完成几何图形绘制,由此掌握几何知识,发展编程能力。近年来,随着可视化编程环境日趋成熟,越来越多的学科也开始尝试使用编程方式来开展学习,如通过在编程环境中引导学生体验和应用“分析与描述学科问题—抽象和设计解决具体问题方案—编程验证方案和实现解决学科问题—对方案优化迭代”的“编程+”跨学科学习方式,促进学生运用编程方法学习不同学科内容,掌握编程的基本知识与技能,提高用编程解决问题的能力。当然,随着越来越多的数字设备应用于学生的生活与学习中,编程教育也不应局限于跨学科学习,同样需要将“编程+”的方法与学生更多元的生活及学习情境相结合,引导他们利用编程创造性解决其中的问题。

3.面向创新能力发展的“用编程创新”

近年来,互联网、大数据、人工智能等新技术的发展创生出全新的数字化生存环境,推动了社会各领域的数字化转型,也形成了社会发展的新赛道、新模式和新样态。在全新的数字化环境下,编程教育既要帮助学生理解与适应数字化环境,也要引导学生合理利用数字化环境创新地解决问题,通过编程教育促进学生从“技术工具消费者”向“技术应用创新者”发展。2022年我国发布的《义务教育信息科技课程标准(2022年版)》将数字化学习与创新作为学生发展的一项核心素养,强调学生要“在日常学习与生活中,具有创新创造活力,能积极主动运用信息科技高效解决问题,并进行创新活动”(中华人民共和国教育部,2022)。哈佛教育研究团队依托图形化编程开发的“创意计算”(Creative Computing Curriculum)课程,以编程主题活动为载体支持学生针对开放性主题从问题分析、方案设计、编程创新、优化完善等环节促进学生探索、合作与反思,以提高学生创新的兴趣和创造力(The Harvard Graduate School of Education,2011)。“用编程创新”的教育模式通过加强编程知识与社会实践之间的联系,引导学生在认识世界、发现和分析真实问题过程中,创造性地设计与验证解决问题的方案,提高用编程创造性解决问题的能力。当然,在用编程培养学生创新能力的教学实施中,如何将学生的“学编程”与“用编程创新”合理结合起来,怎样实现程序设计语言知识与开放性问题设计的内在统一,还需在编程教育实践中进行持续研究与探索。

三、指向创新能力培养的编程教育实践模型 建构

生存于智能时代,学生不仅要适应程序驱动的智能环境,也应具备选用智能设备创造性地解决问题的能力。为促进学生创新能力的发展,一些教育学者或研究机构依托形式多样的编程环境开展了一系列的编程教育实践研究。例如,乐高教育机构依托积木教具与模块编程环境设计了5E教育实践模型,针对具体情境任务,引导学生经历“参与(Engage)、探究(Explore)、解释(Explain)、拓展(Elaborate)、评估(Evaluate)”的活动过程,进而完成作品设计、搭建和编程实现,以此来提高学生的编程创新能力(LEGO Education,2020)。国内学者孙立会依据“建造主义”理论和“活动理论”框架构建了“非计算机化”儿童编程教育模型,通过“计算概念选定—游戏情境创设—故事引领切入—项目协作构建—同伴分享交流—思维评价迁移”等环节引导学生分析问题、设计指令和创新成果,实践表明该模型能有效促进学生的计算思维发展(孙立会,2023)。库塞特等学者在综述前人编程教育研究成果基础上提出了“问题理解—方案策划—策略比较—设计算法—编程验证—运行调试—迭代和优化算法”的编程教育模型(Erümit et al.,2019)。该模型既强调学生要经历编程问题解决的全过程,也突出了编程创新的开放性,还强调了创新成果的不断迭代与优化。综合国内外的研究成果可发现,智能时代的编程教育突破了传统“学编程、写代码”的教育模式与实践方法,强调通过项目活动引导学生针对开放性问题,创新设计解决问题的方案,并以编程方式实践方案,初步形成创新成果,沿着开放、螺旋上升的路徑对创新成果进行迭代和优化,以此促进学生创新能力的发展。具体阐述如下:

1.创设基于项目的编程活动

编程项目活动是依据学习目标组织起来的编程实践与创新应用。在项目实施过程中,学生首先要判断与项目密切相关的真实问题或任务,通过编程解决问题或完成任务,以实现学生对知识的意义建构与作品创新。在此过程中,学生不仅能学习编程知识与技能,更能应用编程方法去创造性地解决问题。例如,在“编程分析《红楼梦》前后文风变化” (以下简称“编程分析《红楼梦》”)项目中,既可结合文学研究理论,通过数据挖掘与编程方法探索《红楼梦》前后文风变化的问题,还可综合文学研究方法与编程方法创新提出红楼梦研究的新方法。因此,教育实践中为更好地提高学生编程创造能力,项目活动设计应体现情境性、问题性和开放性的特征。

其一,编程项目的情境性。情境是学生开展项目活动的真实场景,一方面它像“黏合剂”一样把学生开展项目活动所要解决的问题、所用到的编程知识与技能,以及问题解决过程中形成的创新成果融为一个综合体,从而为学生提供真实任务探索的创新空间;另一方面它像“催化剂”一样不断引发学生的认知冲突,并激发其探究动力。

其二,编程项目的问题性。问题是事物初始状态与想要达到的目标状态之间存在的“障碍”(王小明,2009)。编程项目中的问题根植于学生的生活与学习经验中,具有真实性、复杂性、综合性的特征。从认知层面看,编程问题解决可看作是知识与技能的理解、应用和调控的认知连续体,学生在解决问题过程中将抽象的编程知识与技能还原到具体的个人经验情境中,在感知、发现和掌握的认知过程中建构出“活化”的编程知识与技能。从实践层面看,编程问题解决可反映为界定、分析、设计、实施、反思的行为连续体,便于学生在优化、迭代和螺旋上升过程中创造性应用编程知识与技能。可见,编程项目的问题设计与组织为学生编程创新活动的开展搭建了“桥梁”。

其三,编程项目的开放性。编程项目方案的设计与执行过程是学生抽象项目关键特征,按照算法思维分析已知条件、描述问题、设计问题解决步骤,通过编程验证、调试和持续完善项目方案并创新项目作品的过程。在此过程中,项目主题应具有开放性,学生可依据主题要求灵活选择活动方向、设计实施过程、创新项目成果。项目的开放性为学生创新方法与过程,形成创新成果提供了支持。例如,在“编程分析《红楼梦》”项目活动中,既可以选择文本中对某人物语言描写的前后变化进行文本数据分析与编程验证,也可以选择文本中对饮食描写的前后变化进行文本数据分析与编程验证。总之,编程项目的情境性、问题性和开放性为学生编程实践创设出了知识际遇、问题支架和探究空间。

2.引导学生经历编程探究全过程

编程任务实施是针对项目任务,设计问题解决方案,通过编程实现人机协同的过程。学生完成每一项任务、创作每一个作品都需经历编程探究的过程,发展编程解决问题独特的方法。其活动目标不只是要记住或者会操作程序设计语言的语法知识和语句结构,更重要的是要引导学生经历编程探究的全过程,在问题解决的过程中创新活动作品,提高“编程+”实践能力。编程探究过程主要包括四个环节:

首先,开展需求分析,界定研究问题。即针对项目情境和活动任务开展需求分析,界定需要解决的核心问题,抽象问题的关键因素,列出解决问题的已知条件,描述所需解决的问题及预期结果。

其次,自主/合作探究,创新实施方案。即引导学生尝试利用各种策略寻求解决问题的方法,通过编程方式创新解决问题的过程与步骤,形成解决问题的实施方案。例如,针对某一个复杂问题,采用编程过程中的分解思维方式,将复杂问题分解为若干个小问题,通过求解小问题的最优解得到整体问题的最优解,以此创新这一问题的解决方案。为有序、清晰地执行解决问题的步骤,方案中每一步都应明确、清晰、没有歧义,并能通过自然语言或流程图以顺序、分支和循环控制结构进行描述。

再次,编程验证方案,形成创新成果。即选择合适的编程环境将问题解决方案的逻辑和步骤转化为可执行的程序,通过执行程序实现问题解决,创新编程成果。在此过程中,学生既要学习编程的知识与技能,也要应用这些知识技能实现问题的解决。例如,在“编程分析《红楼梦》”文本数据处理过程中,需要学习Python程序设计语言中列表数据的类型,掌握列表中增加或删除数据项的方法,定义列表存放需要处理的文本数据项等。该过程既是学习程序设计语言知识的过程,也是应用编程环境创新编程作品的过程。

最后,分享实施方案,完善创新成果。此过程需在测试和运行程序后,输入测试数据和参数,查看输出结果,确定程序是否正确执行了问题解决方案,并对测试结果进行评估。还需根据调试和测试结果,征求同伴和他人的建议对问题解决方案进一步优化,以及对创新成果进一步完善。学生在经历项目问题描述、问题解决方案设计、编程方案执行、程序调试与运行的全过程中,既能创造出编程作品,又能提高其编程创新能力。

3.持续优化编程创新成果

编程创新成果是学生在问题分析与方案设计基础上,借助编程环境完成的作品、应用或服务,其呈现形式是算法、应用系统或分析报告等。为提高创新成果功能的多样性、稳定性与实用性,在项目活动中,学生还需根据创新成果的应用效果和用户建议,从功能特征、技术性能和用户体验等方面对其进行迭代和优化。

其一,功能特征的迭代与优化。对照项目活动中的问题分析与预期结果,检测编程成果是否达到预期目标要求,对未能实现的功能还需再次进行方案设计与编程实现,以进一步完善项目活动成果的功能特征。例如,在“编程分析《红楼梦》”文本数据处理过程中,起初对某一人物语言文本数据的前后变化进行分析并得出结论。但是预期结果要求对所得结论进行多方互证,这就需要进一步优化方案,增加更多人物语言文本数据分析的互证数据,完善编程成果,得出多方互证结论。

其二,应用性能的迭代和优化。程序作品是编程创新成果的重要呈现形式,其运行效果和响应速度是用户评价作品质量的重要因素。为提高程序作品质量和应用效果,编程项目活动过程中,学生还需进一步考察程序作品的運行效率,从技术性能方面对程序作品进行迭代和优化。《义务教育信息科技课程标准(2022年版)》要求学生能够“通过真实案例,知道算法步骤的执行次数与问题的规模有关,观察并体验采用不同算法解决同一问题时在时间效率上的差别”。因此学生在完成编程作品后,还需从算法设计、空间存储、语句结构等方面进一步优化程序作品,以期在提高学生编程知识与技能的同时,进一步完善其创新成果。

其三,用户体验方面的迭代和优化。用户体验包括人机交互界面、程序作品使用流畅度、生成报告或结果的可用性等方面。当编程创新成果初步完成后,可邀请同学或老师试用编程成果,通过成果展示、交流和研讨等方式听取大家建议,按照用户体验与建议对编程创新成果做进一步的迭代和优化。事实上,编程创新成果在实际应用中总会遇到一些前期未能预料到的问题,通过用户体验可以发现新需求,并有针对性地对其进行改进和完善。

4.建构螺旋上升创新路径

编程创新过程继承了“做中学”的实践性特征,融入开放、迭代与优化的学习策略,超越了传统编程教育的线性执行与封闭反馈的实施方式,逐步形成了螺旋上升解决问题的实施路径,促进了编程创新成果的持续优化和完善。编程创新过程中螺旋上升实施路径主要表现为三个方面:

其一,问题分析不断深入。问题分析是编程创新的关键环节,既需要确定问题的已知条件,也要界定和描述问题,为问题求解步骤的设计做好准备。但是受情景复杂性与需求多样性的影响,问题分析通常很难一次就精准、完整地表述出来,更多是在编程创新过程中对问题反复思考与深入认识,对前期考虑不周全的问题进行不断细化和逐步完善而得到的。例如,我们在使用各类软件时会发现软件版本总在不断更新,其功能随着研发者对问题认识的深入而不断完善,由此软件应用的功能性和健壮性也不断得到提高。

其二,实施方案持续完善。编程任务会随着对问题的认识、功能需求以及技术效率等要求而发生改变,实施方案也会根据相应的要求进行调整与优化。例如,通过优化算法提高方案执行效率,针对个性化需求加强创新成果的可用性,修复系统漏洞以去除安全隐患等,实施方案的持续改进和完善有助于提高编程创新成果的质量。

其三,编程结果逐步优化。编程结果是在不断试误与优化中完成的,随着问题分析描述得越来越准确、实施方案越来越完善,编程结果也得以逐步优化。学生将根据不断提出的新需求,创新成果的应用功能,提高程序运行的稳定性和安全性。由此可见,要提高学生的编程创新能力,不仅要为学生提供探究问题的空间,还需为他们提供开放的、持续探究问题的路径,进而引导他们循序渐进地提高编程创新能力。

四、编程教育培养学生创新能力的实施策略

指向创新能力的编程教育注重问题解决与实践活动相结合,通过项目活动引导学生设计创意方案,体验从创意设计到成果实现的全过程。因此,为加强学生创新活动的开展,编程教育就需要从活动整体性、任务综合性以及编程环境易用性等方面为学生提供全面的支持。

1.基于单元开展编程项目活动

教学中的“单元”是基于一定的学习目标与主题构成的学习模块,它既是课程开发的基础单位,也是课时计划的前提条件。相对于以“课时”为单位的教学设计,基于“单元”的教学设计具有整体性和系统化的特征,能够克服碎片化、孤立进行课时教学中“只见树木、不见森林”的局限(熊梅等,2018)。而编程项目活动的开放性能为学生编程创新能力的培养提供空间、支架和平台。

一是提供创新活动的空间。学生在单元主题活动中,需要经历从问题分析到编程实现的全过程,项目活动可为学生方案设计、编程实现,以及根据执行情况进行优化和完善留下创新活动空间,以此促进学生的创新能力发展。

二是搭建知识建构支架。对单元活动搭建知识建构支架,有助于克服孤立知识点的学习和学用分离的问题,便于学生把相应的知识点进行关联,在应用过程中创新编程成果。

三是创设多条探究路径。面对结构不良问题,学生可从多个维度思考解决问题的方法,选择最优实施路径。编程教学活动要为学生创新活动搭建平台,如为学生提供问题解决方案、确定最优路径、选择最合适的编程环境等。总体而言,基于单元的编程项目活动应从课程的视角来审视编程教学,将编程方法贯通在整个单元教学过程中,让学生在通过编程解决问题的过程中,实现从“技术消费者”向“技术应用创新者”转型发展(Bates,2015)。

2.用跨学科任务促进编程探究实践

跨学科任务是指为培养学生学科知识综合应用水平而整合两种及以上学科内容开展学习的主题教学活动安排,其本身具有综合性、实践性、探究性和开放性等特点(吴刚平,2022)。相较于某一学科知识的学习,跨学科任务设计与实施为学生融合多学科知识、创新解决问题方法、提高综合创新能力提供了支持。

其一,跨学科任务强化编程知识与其他学科知识的融合。跨学科任务具有较强的综合性,涉及的知识与技能不再局限于某一学科,因而需要调动和综合运用多学科知识来解决问题。编程创新活动中,跨学科任务有助于实现从“学科知识逻辑序列学习”向“以活动为主要形式的学习”发展,其更强调学生在“做”“实验”“探究”“创作”等一系列活动中发现和解决问题,强化编程与其他学科内容间的相互联系和支持,有助于促进学生“编程+”创新能力的发展。

其二,跨学科任务加强编程方法与其他学科方法的融合。跨学科任务活动要求学生运用两种或两种以上的学科方法分析和解决问题,强调学科方法的融合,引导学生用跨学科视角理解问题。编程创新活动中,通过跨学科任务可加强跨学科学习内容与学生直接经验的联系,建立起“学科合作”的情境与任务,将编程方法与其他学科方法有机地联系起来。例如,在“编程分析《红楼梦》”文本数据处理过程中,可结合编程解决问题方法与文学分析方法,建立新的跨学科文本分析模型,从而为文本分析提供新的视角。

其三,跨学科任务促进学生创新能力整体发展。创新能力亦具有整体性、综合性、跨学科性的特征。当前课程研制中为体现学科“领域特殊性”和“相对独立性”的特征,跨学科任务设计更关注不同学科所强调的创新能力培养。事实上,学生的创新学习活动与日常生活并不是割裂的,而是相互渗透、互相影响的,甚至在解决复杂生活问题过程中会生成综合性的创新能力。例如,依托编程环境开展化学实验数据分析,其可以可视化方式呈现数据变化、发现规律,体现出明显的培养学生跨学科综合创新能力的意图。因此,以跨学科任务开展编程探究应立足实践、着眼综合创新,为学生创新品质的形成提供弹性、综合的空间(田慧生,2001),在积极探索和协同合作的过程中促进学生创新能力的整体发展。

3.依托智能环境推动编程创新成果实现

随着人工智能的迭代发展,智能技术支持下的编程环境日趋丰富,其智能程度也越来越高,不仅可提供编写与执行程序的功能,还具备程序跟踪与语法检查的功能。智能编程环境可为学生减少繁琐的代码编写工作提供支撑,从而让学生将更多的时间用在设计创新方案、优化创新过程、完善创新成果等方面。因此,编程创新教育要合理应用智能化编程环境,提高程序编写效率,促进编程创新成果的实现。

一是合理应用编程环境中的代码跟踪与评判功能,提高编程质量。一些高级程序设计语言能借助智能分析工具跟踪、分析和评判学生代码编写的准确性,并通过代码编辑、自动代码补全、代码调试等对程序代码进行优化。因此,编程过程中可使用这些功能及时发现程序编写中的问题,对编程作品进行调整和优化,不断提高编程质量。

二是有效采纳编程环境中的个性化指导建议,提高编程效率。一些在线编程环境通过收集用户的编程数据,可根据用户编程的特征、习惯和项目需求为其生成程序模板,或者提供程序片段、函数库等相关资源。可见,有针对性地应用编程环境中的个性化指导与建议,可有效实现程序模块的复用与转换,从而提高编程效率。

三是发挥智能编程环境的代码生成与注释功能,不断优化编程创新成果。生成式人工智能可利用训练模型并根据用户的编程需求自动生成编程结果,对程序设计产生了革命性影响。在编程解决问题过程中,合理应用智能编程环境的代码生成与注释功能,可快速执行和验证编程方案,并不断优化编程创新成果。

当前,人工智能作为数字科技创新发展的核心动力,为新一轮产业革命注入了新兴力量。大数据、超算力、大模型等新技术的突破推动了人工智能从专用人工智能向通用人工智能的发展,创生出全新的智能化生存环境。在此背景下,编程教育不应再停留于早期程序设计语言的语法记忆与代码编写上,而是要以编程项目活动为“桥梁”,支持学生通过“编程+”的理念创新解决问题的新路径、新方法和新策略。

参考文献:

[1]全国中学计算机教育研究中心(1991).全国中小学计算机教育资料汇编[M].北京:电子工业出版社:63-64.

[2]孙立会(2023).“非计算机化”儿童编程教育教学模式的构建与应用[J].现代教育技术,33(2):52-60.

[3]田慧生(2001).综合实践活动的性质、特点与课程定位[J].人民教育,(10):34-36

[4]王吉庆(2001).信息素养论[M].上海:上海教育出版社:118.

[5]王小明(2009).学习心理学[M].北京:北京中国轻工业出版社:231.

[6]吴刚平(2022).跨学科主题学习的意义与设计思路[J].课程·教材·教法,42(9):53-55.

[7]熊梅,李洪修(2018).发展学科核心素养:单元学习的价值、特征和策略[J].课程·教材·教法,38(12):88-94.

[8]杨向东(2017).基于核心素养的基础教育课程标准研制[J].全球教育展望,46(10):34-48.

[9]張进宝(2019).计算思维教育:概念演变与面临的挑战[J].现代远程教育研究,31(6):89-101.

[10]中华人民共和国教育部(2020).普通高中信息技术课程标准(2017年版2020年修订)[S].北京:人民教育出版社:2-3.

[11]中华人民共和国教育部(2022).义务教育信息科技课程标准(2022年版)[S].北京:北京师范大学出版社:5-28.

[12]中华人民共和国中央人民政府(2017).国务院关于印发新一代人工智能发展规划的通知[EB/OL].[2023-01-07].https://www.gov.cn/zhengce/content/2017-07/20/content_5211996.htm.

[13]Bates, S. (2015). From Consumer to Creator: Students as Producers of Content[EB/OL]. [2023-07-02]. https://flexible.learning.ubc.ca/case-studies/simon-bates/.

[14]Erümit, K. A., Karal, H., & Sahin, G. et al. (2019). A Model Suggested for Programming Teaching: Programming in Seven Steps[J]. Egitim Ve Bilim-Education and Science, 44(197):155-183.

[15]LEGO Education (2020). Blended Learning with LEGO Education[EB/OL]. [2023-07-02]. https://education.lego.com.

[16]Moody, R. (1978). The First Book of Microcomputers[M]. New Jersey: Hayden Book Company:11-29.

[17]Nouri, J., Zhang, L., & Mannila, L. et al. (2020). Development of Computational, Digital Competence and 21st Century Skills When Learning Programming in K-9[J]. Education Inquiry, 11(1):1-17.

[18]Papert, S. (1993). Mind-Storms: Children, Computers, and Powerful Ideas[M]. New York: Basic Books:80-93.

[19]Rogerson, C., & Scott, E. (2010). The Fear Factor: How It Affects Students Learning to Program in a Tertiary Environment[J]. Journal of Information Technology Education, 9:147-171.

[20]The Harvard Graduate School of Education (2011). Creative Computing Curriculum[EB/OL]. [2023-07-02]. http://creativecomputing.gse.harvard.edu/guide/curriculum.html.

收稿日期 2023-07-05 責任编辑 刘选

How to Cultivate Students’ Innovation Ability in Programming Education in the Intelligent Ara:

Connect “Learning to Code” to “Coding to Innovate” Through Programming Project Activities

LI Feng, YUAN Yuxing, GU Xiaoqing

Abstract: In the digital transformation of the digital education, programming education in the intelligent era is given the important mission of cultivating students’ innovation ability and serving the construction of an innovative country and a technological superpower. However, influenced by the technological instrumentalism, there are still such misconceptions in the current education as equating programming education with learning programming languages, simplifying it into imitation exercises of programs, and even alienating it into training students for programming test. In fact, with the rapid innovation and popularization of computer and artificial intelligence, programming education is constantly developing in the educational philosophy, goal identification, content selection and method design. It has formed an evolution path of programming education, that is, “learn to code” with knowledge and skills as the main content, “code to learn” with problem-solving as the key skill, and “code to innovate” with programming innovation as the important ability. In the intelligence era, programming education should break through the limitation of traditional programming education in terms of learning content, teaching mode and instructional methods. It should integrate the process of programming exploration, optimize programming innovation achievements, and construct a spiral upward innovation path. At the same time, it is necessary to provide learning support from aspects such as the integrity of project activities, the comprehensiveness of interdisciplinary tasks, and the usability of intelligent programming environments in accordance with the needs of educational practice, to promote the development of students’ innovation ability.

Keywords: Intelligent Era; Programming Education; Cultivation of Innovation Ability; Programming Teaching Mode; Information Science and Technology

猜你喜欢

信息科技智能时代创新能力培养
世界机器人总动员
新媒体时代食品安全迎来智能时代
研究生创新培养的“步态追踪”模式
创新能力培养:“管理学原理”教学改革的一条红线
浅论小学数学课堂教学中学生创新能力的培养
智慧旅游景区发展存在的问题和对策研究
关于新时期博物馆的陈列思考