核心素养视野下的高职《C 语言程序设计》课堂教学
2020-10-12冯满堂王瑞杰
冯满堂,王瑞杰
(1.南京市莫愁中等专业学校,南京210017;2.江苏凤凰数字传媒有限公司,南京210009)
0 引言
随着教育部《关于全面深化课程改革落实立德树人根本任务的意见》颁布,核心素养成了学科课程标准、课堂教学的指引,并成为学生培养质量评判的标准。如普通高中新课程标准(2017 版)最显著的特点是凝练了各学科的核心素养,并以此来引领各学科课程标准的制定和各学科的课堂教学。核心素养只是一个理论框架,只是指明了学生接受完相应学段的学校教育后应具有的面对未来的必备品格和关键能力。而核心素养的落地,仍需课程和课堂教学为载体。理应把核心素养融合到相应学科的课程教学中。
《C 语言程序设计》是五年制高职移动互联应用技术专业、软件应用技术专业的一门专业基础课,是后续课程(Java、数据结构、Python 等)的前导课程。目前该门课程的教学过多的关注了语法、语句等知识点的教学,忽视了像计算思维、深度学习和自主学习等核心素养的培养。本文尝试着把核心素养引入到《C 语言程序设计》的课堂教学中,围绕着计算思维这一核心素养要素开展核心素养视野下的课堂教学研讨,以期提高《C 语言程序设计》课堂教学的成效性。
1 核心素养与计算思维
“核心素养是学生在接受相应学段过程中,逐步形成的适应个人终身发展和社会发展需要的必备品格与关键力。”《中国学生发展核心素养》从三个方面(文化基础、自主发展和社会参与)六大要素(人文底蕴、科学精神、学会学习、健康生活、责任担当和实践创新)十八个要点来进行论述中国学生发展应具备的核心素养。核心素养作为教育培养人才的主要目标,主要回答了“培养什么样的人”的问题,这一目标可以带动和引领课程改革,变革教学方式,推动课程教学评价,是知识、技能、态度、情感价值观的综合体[1]。要想体现核心素养的育人目标,必须立足课堂教学,让学科特有的素养在学生身上体现和落实。
对于核心素养的界定与涵义,不同国家和组织有不同的描述,但基本上都突出强调了学习思维能力的培养和在此基础上的情感态度价值观等非知识本身的强调。而思维能力是学习者对世界的理解与改造水平,对其培养是学科课程教学特定的责任和目标。高中信息技术课程标准将计算思维、信息意识,数字化学习与创新等作为其学科的核心素养[2]。《中等职业学校信息技术课程标准》也将“计算思维”作为学科的核心素养纳入其中,而作为专业基础课的《C 语言程序设计》理应做出自己的回应,将计算思维作为自己学科应当承载的核心素养之一。
计算思维最早由周以真教授提出,即“计算思维是一个明确问题和制定解决方案的思维过程,由此解决方案就可以表示为能够被信息处理代理有效执行的形式”,为了使计算思维的培育在实际的课堂教学中具有可操作性,ISTE 和CSTA 联合给出了一个具有可操作性的定义,即“计算思维是一个问题解决的过程,包括制定问题、分析数据、抽象、设计算法、选择最优方案,推广六大要素”[3-4]。这个定义表明计算思维的培育应聚焦于问题的解决,使其在实际的课程教学中应用具有了很强的可操作性。但是计算思维培育不能仅仅停留在问题解决这些知识与技能培育的目标上,还应该融入像情感、态度等核心素养要素。美国麻省理工学院媒体实验室从三个维度分析和定义了计算思维的新概念,即计算概念、计算实践和计算观念。和目前课程的三维课程目标相呼应,就《C 语言程序设计》课堂教学来讲,具体对应关系如下表所示[3-4]。更好地诠释了计算思维不仅仅是算法和编程,还有像态度、宽容、与他人沟通交流解决问题的能力等,也从另一个侧面说明核心素养视野下的计算思维是在差异化的问题情境中,分析问题、设计算法,利用C 语言编程实现问题解决,形成解决问题的思维过程,并应用在其他相似的情境中。
表1 计算思维与三维目标对应表
2 核心素养视野下的课堂教学
《C 语言程序设计》作为理工科专业的一门专业基础课,其知识点(常量、变量、运算符、表达式、选择、循环、数组、函数、结构体等)多,理论深(面向结构化程序设计),灵活性强,实践性(编程实践)要求高。但教师在日常的课堂教学中过于关注知识点的教学,过于关注C 语言本身语法的教学,没有很好地处理好程序语言、算法与应用的关系,更别说像自主创新和学会学习等与核心素养相匹配的教学,造成学生“一讲都会、一做都错”的课堂教学窘境,学生普遍感觉不知“为何学?”、“学何用?”。造成课堂教学成效性不高。为改变这种课堂教学现状,本文尝试着把核心素养融入到《C语言程序设计》的课堂教学中,围绕着计算思维这一核心要素,提出了教学内容聚焦问题解决、算法设计引入算法原型工具、编程实践验证问题解决,知识迁移融会贯通的“四位一体”的《C 语言程序设计》课堂教学的新模式,具体的模式如图1 所示。并以“寻找所有水仙花”为例开展核心素养视野下的课堂教学实践,以期培养学生的计算思维,培育学生的核心素养,提升《C 语言程设计》课堂教学的成效性。
图1 四位一体的课堂教学模式图
(1)教学内容聚焦问题解决
计算思维就是指使人们能够按照计算机的工作思路来解决现实生活中的问题,形成解决问题方案的一种思维活动,核心在于聚焦问题的解决,形成解决问题的思维活动。程序设计却能够很好的展示解决问题的思维过程,培育学生积极主动的利用计算机来解决现实生活问题的意识,提高计算机思维能力。在《C 语言程序设计》的课堂教学中,教学内容的选择应聚焦问题的解决,问题的难度应符合学生的最近发展区,最好是符合学生生活背景的真实问题。针对比较复杂的问题,教师应引导着学生按照问题解决的思路分解成若干个小问题,且这些小问题应该具有递进性和梯队化,从简单的问题不断思考,随着一个个问题的解决,形成解决问题的思路,构建相应的模型,形成解决问题的方案,培育学生的计算思维能力。现在以“寻找所有水仙花”为例来进行说明。
“寻找所有水仙花”是《C 语言程序设计(第五版)》(谭浩强著)第五章“循环结构程序设计”中的一个经典例子,这个例子在教材中重点考核学生对循环知识的掌握情况,而在核心素养理念的引领下,《C 语言程序设计》这门课程除了传授给学生学科知识外,还应培育学生和这门课程相匹配的核心素养,如计算思维,等等,因此,这节课设计时融入了枚举算法的内容在内,并根据问题解决的过程,把问题解成如下两个问题。
问题1:如何判断一个数是水仙花数?
问题2:如何寻找所有水仙花数?
针对问题1 的解决,教师可以继续引导学生进行思考,想判断一个3 位正整数x 是否是水仙花?应该想办法截取其百位数、十位数、个位数?以使其满足各位数字立方和等于该数x 本身。进而引导学生利用已有知识想办法得出如下解决方案:个位数=x%10;十位数=x/10%10;百位数=x/100;这个方案不是唯一的,可以引导学生发散思维,得出多种不同的答案。
针对问题2 的解决,教师应在问题1 的基础上继续引导学生进行思考,问题1 解决了如何判断一个三位正整数是否是水仙花的问题,对于寻找所有水仙花,首先让学生明白水仙花数是一个三位数,水仙数一定存在于100 至999 的范围之内,如果采用键盘从100开始往后一个个输进电脑,利用问题1 的方案一定能够找出所有的水仙花,这种一个一个试的办法,可以利用C 语言的循环来解决,同时引出了一个经典算法“穷枚法”。采用以上问题分解的方法来解决问题,比一开始从循环知识点角度来讲解,然后上机编程,不管是学生的接受度还是学生计算思维的培养都要好很多。
(2)算法设计引入原型工具
对于程序设计来说,有了问题的解决方案,并不代表一定能够利用C 语言编程实现,尤其对五年制高职生来讲,本身自己就是初中生毕业,中考的失利者,再加上C 语言本身语法知识点复杂,在上机实践的过程中会遇到形形色色的问题和错误,这些意想不到的问题和错会消耗学生大量的时间,并打击他们学C 语言的积极性。为了方便学生把自己解决问题的思路通过C 语言编程实现,在课堂教学的实践过程中引入算法设计原型工具——Raptor。
Raptor 是一款可以进行算法设计的原型工具环境,让学生用基本的流程图符号可视化的快速有序推理的创建算法,不用在语法上花费太多精力,就可以快速的把解决问题的思考过程用算法的形式设计出来。和传统的流程图相比,不用像C 语言那样需要编译调试运行程序,可以直接在Raptor 环境中基于流程图进行执行,验证和调试算法,且能动态的展示算法的执行过程,变量值的变化,避免算法的逻辑错误,并助于提高学生的计算思维[5-6]。借助Raptor 表达算法,可以激发学生的学习激情和兴趣,培养学生的逻辑思维能力,促进学生的思考与创新,“寻找所有从水仙花数”的流程图如图2 所示。
(3)编程实践验证问题解决
借助于算法原型工具设计的流程图,学生会很快实现“寻找所有水仙花数”的C 语言代码,把代码输入到C 语言编译器中,运行调试代码,验证问题的解决,由于借助了Raptor,在程序的编写调试过程中,减少了逻辑上的错误,增强了学生的成就感,提高了学生学习的主动性和积极性,使自己全身心的投入到问题解决之中。
(4)知识迁移融会惯通。
计算思维是一种思维活动,是人类利用计算机领域的方法来解决现实中的问题,并形成解决问题的方案,且能有效的迁移到与之相关的其他问题的解决当中,也就是做到知识迁移,能够融会惯通的应用所学知识。这就要求在实际的课堂教学中要差异化的创设教学情境。针对“寻找所有水仙花数”这一问题,如果只是停留在循环语句的使用这一层面,那就太浅层化了,应在解决这一问题的过程中,引导学生总结出所蕴含的“穷枚算法”,并迁移到其他如“暴力破解密码”、“换零钱”、“鸡兔同笼”、“百钱百鸡”等相关问题情境中。
3 结语
在《C 语言程序设计》课堂教学中传授学科知识固然重要,但更重要的在于利用学科知识在差异化的情境中解决问题,并关注问题解决的思维过程和方法[7],形成计算思维。本文在分析了核心素养与计算思维的涵义和特征,结合《C 语言程序设计》课程特点的基础上,提出了“四位一体”的教学模式,并结合“寻找所有水仙花数”这一具体教学案例进行实践,取得了不错的效果,对促进高职《C 语言程序设计》课堂教学改革具有重要意义。
图2 寻找所有水仙花数的流程图