APP下载

以计算思维为导向的C语言编程思维能力提升研究

2019-07-08邹柳聪缪佳佳

中小学电教 2019年6期
关键词:C语言编程思维能力

邹柳聪 缪佳佳

(浙江师范大学 教师教育学院,浙江 金华 321000)

一、引言

近年来,在国内关于计算思维的研究逐年上升,成为计算机学科与教育领域关注的重点,研究热度不断升高。大多数高校将程序设计、编程设计等课程列为计算机和通信等专业的必修课程,以及理工科非计算机专业的计算机基础课程之一[1],研究者和教学者也更加注重将传统的以知识传授为导向的教学转向以计算思维为导向的教学。以计算思维的理念为切入点,渗透计算思维的特征到实际的教学实践环节,有效地培养学生的程序设计、编程能力,大多数教学实践证明培养学生的计算思维能力能够作为一个解决问题的有效工具,对程序教学的实践、学生编程思维能力的提升都具有重要指导意义。

二、研究背景

(一)计算思维在教育领域兴起且研究热潮不断

计算思维的研究起步较早,在20世纪下半叶就已出现计算思维的概念,我国周以真(Jean-nette M.Wing)教授[2]于2006年在计算机权威杂志“Communication of the ACM”上发表了题为“Computational Thinking”的文章。周教授在文中给出了“计算思维”的定义与说明,认为计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。其本质内容体现了抽象、约简、规划、关注点分离、递归、优化、分解等思维特征。关于计算思维的教学和培养在计算机、信息技术等教育领域均呈现出较高的活跃度,尤其是在高等教学中逐渐成为广泛关注的重要研究课题。

(二)以计算思维为导向培养学生C语言编程能力发展的必要性

程序设计类课程对于学生来说是很难掌握的一门科目,需要学生结合自主学习能力、理解应用能力、抽象思维能力以及理论化为实践的操作能力,尤其在编程设计中。C语言编程能力的形成体现在学生进行思维养成的动态过程,即在程序设计时进行问题分析、确定算法、确定可行的解决方案、编写代码,最后运行程序获取结果来解决问题。从教学角度来说,培养学生的计算思维要在具体的课程教学中落实,以计算思维为导向的教学培养能够直接有效地训练学生的思维能力、实践能力。及时调整方式、方法以适应程序设计学习、编程学习所需的计算思维变化过程,对研究者、教学者培养学生C语言编程能力的教学实践有着重要的指导意义。

三、传统C语言编程教学课程中亟待解决的问题

我国众多高校计算机和通信、理工科等专业均有开设关于计算机编程或计算机科学相关的课程,例如大学计算机课程、C语言程序设计等。这些课程用于提升学习者的编程能力虽有必要,但程序设计和编程类课程的教学存在一些亟待解决的问题,主要体现在教师和学习者两个方面[3][4][5][6]。

大部分教师缺乏对学习者编程思维能力的培养。授课过程中仅注重语法细节而忽视算法思维的培养,教学重难点停留于语法学习和实例应用上,缺乏积极引导学生进行算法思维的分析和编程设计的思考;未能根据学生的个人能力发展发掘有效的编程思维能力提升训练方法和教学策略,教学上用统一的教学方式和教学案例,学生被动接受教师指令,机械地完成上机作业,无法正确找寻适合自己的学习方式。可以说,教师未能正确引导学生将实践经验转化为思维能力。

学生则存在“只知其一,不知其二”的学习情况。C语言及其派生的编程语言学习对学生来说存在一定的难度,大多数学生对于课程内容的掌握仅停留在读懂和编写给定程序,即一些基本问题的求解方法,而不能调用自我思维设计算法和编写程序,十分不利于后续知识的学习,学生极易丧失学习兴趣;学生的编程思维能力、学习能力等存在较大的个体差异,再加上学生课后投入的精力有限,往往导致两极分化现象非常严重,容易造成学习者学习兴趣减弱,从而容易产生掉队的现象。

四、以计算思维为导向的C语言编程思维能力培养

C语言编程作为一门实践性很强的专业课程,需要课堂教学和学习实践活动相结合逐步进行能力提高的培养[7]。建构主义强调个体主动性在建构认知结构中起关键性作用,学习者主动性地发生学习行为、进行意义建构、形成概念,从而获得知识。思维的意义建构需要通过有效的外部思维技能引导和训练渐进达成,思维技能可通过学习和训练逐渐得到提升,在学习和认知的过程中可以通过反复训练潜移默化的培养、发展和提升[8][9]。强化计算思维训练更加注重从学生潜在的实际思维能力出发,结合有形的技术工具,主动建构和可视化学习思维。

皮亚杰认知发展理论指出由浅入深、循序渐进的四个发展阶段过程的重要性,并且在学习过程中可通过同化与顺应两种方式,从而不断积累知识并促进已有的观念、思维方式、知识组织结构的发展,进而促进认知结构的发展[10]。应摒弃学习仅仅是简单的信息积累的旧观念,从思维方式发展的角度出发,新旧知识经验的思维冲突,由此引发认知结构的重组。自我认知的发展注重自我调节,在简单汲取知识信息的输入、存储和提取之外,进行思维和学习双向的作用过程。

有效培养和训练学生在程序教学类课程中对复杂问题和事物进行分析的计算思维能力,通过规范的方式将复杂问题转化为若干简单事物加以解决,并及时调整方式、方法以适应程序设计学习、编程学习所需计算思维变化过程,对研究者、教学者进行程序设计类教学实践有着重要的指导意义。以计算思维为导向的C语言编程思维能力培养则是利用计算思维的特征为主导启发和训练学生在特定的实践中对实际待解决问题进行复杂到简单的逻辑抽象,能应用特定的编程语言实现已知算法,对已知问题进行数据结构和算法的设计,并能够有序、有意识地进行代码的调试、运行、反思和完善等一系列综合活动。学生将拥有的基本的C语言编程思维能力落实到发现问题、分析问题、解决问题、反思问题等思维活动中,最终达到增强学生解决实际问题的编程能力的目的。

(一)培养维度

计算思维作为思维方式的一种,并非单一的思维能力构成,而是涉及多种思维能力的综合体现。美国国际教育技术协会(ISTE)和计算机科学教师协会(CSTA)[11]曾共同提出了计算思维的操作性定义:计算思维是一个问题解决过程,涉及问题的阐述,数据的组织、分析和呈现,解决方案的制订、识别、分析和实施以及问题解决过程的迁移。计算思维以其独特的方式对其他思维技能进行了扩展,既区别于其它思维,但又与其它思维密切相关。这对研究者计算思维培养的研究提出了更高的要求,通过划分计算思维的维度并对其内涵进行更加深入的解析,各学者相继提出三维度[12][13][14]、四维度[15]、八维度[16]、九维度[17]的划分维度为提升计算思维以及思维教学提高提供重要培养方向依据。

计算思维的训练培养要有机嵌入到具体的实践系统中去。也就是说,在教学方面,发展学习者的计算思维要在具体的课程教学当中落实。借鉴前人提出的计算思维划分方式,本研究认为从传统的以知识传授为导向的C语言编程教学转向以计算思维为导向的C语言编程思维能力培养,需要着力从3个培养维度开展C语言编程能力提升训练,分别为抽象思维、算法思维、纠错思维,如表1所示。

表1 C语言编程能力提升培养的维度及可行方式

(二)培养方式

1.利用思维可视化工具开展直接的思维训练

思维可视化工具是无形的意识形态技术,可帮助学习者将思维实现从抽象到具象、从内隐到外显,甚至从加工旧知到创造新知的有效转变[18]。C语言编程教学中,渗透思维可视化工具的应用,开展直接的思维训练,引导学生清晰而直观地进行思维图示的过程,是对抽象思维的有效锻炼,帮助学生统合发散式的思维,从抽象到具体按照一定的逻辑形成线状、网状的图示思维。在计算知识学习和知识理解的过程中帮助学生认识思维、激发思考、构建思维结构与流程,并在反复的练习和强化过程中,逐步养成从无意识思维到有意识思维直至无意识自动思维的习惯。例如利用思维可视化工具优化学生课前预习以及课后复习整理部分,利用思维图示法支持工具,如思维导图、流程图、模式图等进行围绕主题/项目问题的有序解决。

2.设计基于问题解决的探究式课堂学习实践

传统的程序设计课程以教师活动为中心,以知识点讲解为主线,过于强调编程语言本身的完整性和系统性,忽略了抽象、分解、自动化等计算思维特征在教学过程中的渗透[19]。以计算思维为导向的C语言编程能力提升培养注重算法思维的拓展发展,在有限的教学课时里实现总体的教学目标,采用基于问题解决的案例教学法,通过C语言基本知识的实例讲授,以理解和应用为目标,基于实际问题,在课堂学习实践中引导学生围绕问题、项目,判断、分析与综合各类知识点,运用合理的算法表示成可以进行计算的解决问题方案,最终形成问题提出-问题分析-设计算法-执行程序-解决问题的探究式课堂学习实践活动。

3.设计渐进梯度的自我编程任务

自我实践编程是C语言程序学习的一个重要环节,学生掌握基本的典型算法之后,内在C/C#的基础知识,能够灵活应用三种控制结构顺序结构、选择结构和循环结构,从问题分析、确定方法、界面设计、编写代码到调试运行最终完成一个完整的编程动作。渐进梯度的自我编程任务符合编程学习所需计算思维变化过程,渐进梯度的编程实践任务操作能够提高学生自我分析问题和解决问题的能力。在知识模块学习之后,设计层次化、梯度化的编程任务目标,学习者根据自我能力状况制定由易到难、由浅到深的编程任务进程,完成从基础能力到中级应用能力的培养,最终达到高级应用的一系列循序渐进的C语言编程能力提升活动。

五、结语

在程序设计类课程的教学中,学生的C语言编程能力体现在能够掌握并利用C语言程序编写代码,从而提出解决问题的思路和方法,最终完成经过问题分析、方法确定、算法设计和编程实现的整个学习过程。因此,笔者只能对目前传统C语言编程教学课程存在的亟待解决的问题,在具体教学中以计算思维为导向进行C语言编程能力提升培养。从抽象思维、算法思维、纠错思维三维度提出相应的三个培养方式训练学生的C语言编程能力,促使学生进行系统化的具体的编程训练,为提升C语言程序教学实践效果和学生编程学习效率提供可行的参考策略。

猜你喜欢

C语言编程思维能力
编程,是一种态度
元征X-431实测:奔驰发动机编程
培养思维能力
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
培养思维能力
51单片机C语言入门方法
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索