刘杰 李金玲 陈星 毛宇 吴菱艳
摘 要:从培养学生解决复杂工程问题的能力和计算思维能力的角度出发,针对程序设计类课程教学中程序设计思维难以表达和传递的现象,结合Raptor的四个可视化特征对编程思维过程进行可视化表述和传播,讨论Raptor在程序設计思维可视化教学中的三个阶段,以及每个阶段的目标、特征和实施方式。
关键词:计算思维;思维可视化;程序设计;Raptor;复杂工程问题
Abstract: From the perspective of cultivating students' ability to solve complex engineering problems and computational thinking ability, considering the phenomenon that programming thinking is difficult to express and convey in the course teaching of programming. Raptor's four visual features are combined, and the programming thinking process is visualized and propagated. Raptor's three stages in the visual teaching of programming thinking, as well as the goals, features and implementation of each phase are discussed.
Keywords: computational thinking; thinking visualization; programming design; Raptor; complex engineering problem
工程教育强调培养、提高学生解决复杂工程问题的能力,针对计算机相关专业而言,该能力的代表就是具有分析性、创造性和系统性特征的计算思维能力。因此,培养和发展学生的计算思维能力应成为计算机相关专业工程教育教学目标之一。程序设计类课程是计算机相关专业的核心课程和入门课程,其目的是教会学生程序设计的思想和方法,培养学生的计算思维,并运用该思维解决复杂工程问题。然而,传统的程序设计教学模式偏重语法知识教学而忽视计算思维培养,有相当一部分学生缺乏将数学模型映射为计算机模型的能力,即计算思维薄弱[1],解决复杂工程问题的能力不足。为此,本文提出一种思维可视化的程序设计教学模式,运用Raptor这一基于流程图的可视化编程环境对程序设计思维(思考方法,思考路径和思考结果)进行显性化表示,帮助学生发展计算思维,提高解决复杂工程问题的能力。
一、计算思维与程序设计
2006年,美国卡内基·梅隆大学的周以真教授在美国计算机权威期刊《Communications of the ACM》杂志上给出计算思维(Computational Thinking)的概念和相关说明。周教授认为计算思维的本质是抽象与自动化,它涵盖了计算机科学之广度的一系列思维活动,包括运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等[1]。自此,计算思维的培养迅速成为教育领域的研究热点,从大学到小学、从计算机学科到非计算机学科,以各种形式明确计算思维培养的重要性,它被认为是创新人才应该具有普适性的思维方式。
随着社会发展和科技进步,人们不断提高对计算机相关专业大学生实践和创新能力要求,掌握一种或数种计算机语言,具备使用计算机解决复杂工程问题的能力是工程教育的目标之一。程序设计过程完整演示了从问题到计算机求解问题的全部过程,包括了对问题进行分析思考的思维过程、对算法进行描述的设计过程、用计算机程序实现算法的计算过程和用数据测试程序的验证过程。计算机求解问题的全过程都贯穿了计算性的思维——可计算性或可操作性,即计算思维[2]。这四个过程本应该是相辅相成,融为一体的,然而在传统教学中却常常被分割,甚至被忽视。传统课堂教学的重点常常是重视知识的灌输而不是思维的发展,学生花了大量的时间应付枯燥的语法细节,忽视了对问题的分析思维过程和算法设计过程,直接跳跃到算法实现阶段,通过程序的运行结果来验证分析和设计过程。这种教学导致学生不适应从自然语言到计算机语言的思维转换,编程能力不强,在使用计算机解决实际问题时,总是无从下手,进而缺乏学习的兴趣和动力。
在这种背景下,程序设计类课程作为一门实践性很强的课程,当前教学的研究重点应该是如何组织教学内容和教学模式,培养的核心问题不应该是对某种语言的掌握程度和各种编程技巧,而是培养学生发现问题、分析问题和解决问题的思维习惯和能力,即计算思维的培养。只有具备良好的计算思维,才能摆脱程序设计语言的限制,熟练应对各种领域的问题。
二、思维教学与思维可视化
赵国庆在《思维教学百年回顾》中提到思维教学起源于“授之以竿”的“思维技能”教学,发展于“授之以饵”的“思维倾向”教学,回归于“授之以渔”的“知识理解”教学[3]。这三种取向的思维教学不是彼此独立的,而是相互重叠。回归“知识理解”的思维教学不是简单而机械的知识学习,而是在良好思维倾向指导下,用娴熟的思维技能对知识进行深加工,实现对知识更透彻的理解,以及从思维技能到思维能力的迁移。
人们已认识到培养思维的重要性,然而在实践中却收效甚微。长期以来,人们更看重外在的、有形的知识和思维技能,而忽视思维倾向的培养。常常认为学生学习了知识和思维技能,只要多模仿和练习,就可以自己摸索出隐藏其中的思维方法,培养思维能力。如同美国著名心理学家诺曼(Norman)曾指出的那样,“我们要学生学习,却很少教他们怎么学;我们要学生解决问题,却又难得教他们如何解决问题……”[4]究其根本原因在于知识和技术是显性的,而思维是隐性的。因为知识和技术的显性特征,在教学过程中,教师可以很容易地判断学生对知识的掌握情况,对之进行强化或补充;而思维的隐性特征,则导致无论是资历丰富的老教师还是缺乏教学经验的年轻教师在处理思维方式是否正确、思维技能如何迁移、思维倾向是否有建立等方面都存在疑问,进而导致思维的培养可能会出现偏差。
鉴于思维及其过程是不可见的,人们提出了“思维可视化”,目的是将看不见的思维过程和思维方法用一系列图示技术呈现出来,这种“可视化”对学生而言有利于帮助理解特定的思维策略和思维过程[5],提升思维能力;而对教师来说,能真实了解学生的思考内容、思考方法和思考过程,及时调整教学重点和方向。
目前对思维可视化的研究主要集中在可视化工具及其应用,通过应用可视化手段与学科教学整合,将隐性的思维过程和思维结果显性化,提高学生的认知能力,培养学生的思维能力[6]。蔡慧英从“可视化知识、可视化认知模式、可视化问题过程和可视化系统建模”[7]四个维度对目前已有的可视化技术工具进行分类,并阐述不同工具的设计理念和应用场景,提出融合多个工具的特色构建新工具,支持不同的学习情景。
三、基于Raptor的程序设计思维可视化教学
本文选择Raptor作为程序设计类课程中的编程思维可视化工具,避免了将教学重点放在程序设计语言的语法上,更重要的是利用Raptor的可视性培养学生的计算思维,强调程序设计不仅仅是一种单一的技能,更多的是一种思维方式,显示呈现出学生在面对问题的提出、设计、实现、验证与改进各个阶段所涉及的思考内容和思考方法。
(一)Raptor与可视化
Raptor(the Rapid Algorithmic Prototyping Tool for Ordered Reasoning)是一款基于流程图的能进行有序推理的高级程序语言可视化算法原型工具。按照蔡慧英[7]的分类方式,我们从语法知识可视化、编程模式可视化、问题解决过程可视化和系统思维可视化四个维度对Raptor进行分析,分别列出它在四个维度上的关注点、基本要素和可视化学习活动的表征方式,见表1。
具体来说:
1. 知识是学习的目标之一。Raptor中所包含的语法知识真正做到了程序设计语言语法集合的最小化和原子化[8],用6种图形表征了不同的指令,通过箭头表示指令间的前后关系,将程序的结构和内容图形化。因此,有助于满足语法知识类的学习。
2. 能否熟练解决问题取决于对该类型的问题是否具备一定的思维模式,进行有序的思考。Raptor利用子程序和子图表现出参数的传递、函数的调用和返回,实现了模块化程序设计模式的可视化,这既符合结构化程序设计的主要原则,也是可视化体现了计算思维中关于问题求解的抽象化过程。
3. 计算机类学生一般是以某种计算机语言为载体解决复杂工程问题,这个过程包括分析、设计、编码、测试、排错等不同阶段。Raptor具备的可视化工具包括建立、调试、运行、分析流程图,因此,它适合问题解决技能的可视化培养。
4. Raptor程序设计过程中采用计算思维的一系列方法对现实中的对象及其关系进行建模和模拟,这是一种可视化。基于关注点分离、抽象与分解、递归有利于辅助复杂问题的建模;基于流程图的运行和分析有助于理解问题的内在变化和问题复杂性分析;基于流程图到多种高级语言的自动转换能帮助学生对高级程序设计语言进行系统化思考。
综上所述,我们认为Raptor利用可视化技术将流程图、算法设计、算法分析与程序设计融为一体,能较好地应用在程序设计思维可视化教学的各个应用场景中,涉及问题的提出-设计-实现-验证等各个阶段,有助于实现知识的活化和思维的发展。
(二)Raptor在程序设计类课程教学中的应用
赵国庆[3]和赵姝[4]将思维训练分成的三大阶段——隐性思维显性化,显性思维工具化,高效思维自动化,Raptor在程序设计思维可视化教学中的应用也分成三个阶段,每个阶段有各自的目标、特征和实施方式。
1. 隐性思维显性化——形成思维倾向,产生需求
程序设计思维可视化教学并不是单纯地画个图或表,其目的是为了将程序设计过程中深藏的思维过程和思维结果可视化,达到思维的共享和传播。只可意会不能言传的思维对大部分人来说都是很难获取的,因此,思维教学的第一阶段就是将编程过程中深层次的思维进行提取、整合、重构,显示成具体的、形象的思维,提升师生间的沟通效率,促进学生的主动思考。这个阶段的实施主要是选择哪些思维可以进行可视化。前文谈到Raptor可以将语法知识和结构化设计模式(如赋值语句、输入输出、函数调用、顺序、分支、循环……)进行可视化,例如,函数调用体现了主调函数和被调函数之间的关系,表示出参数和返回值的传递;顺序、分支和循环结构体现了流程的转向,表示出指令的执行过程。从学生的角度来看,站在可视化的思维面前,有助于从程序视角来理解人类行为,对程序设计概念体系实现整体把握。
2. 显性思维工具化——训练思维技能,形成策略
Raptor的可视化策略贯穿流程图绘制、调试、运行、验证、分析的全过程,将直观显示人脑求解问题和计算机求解问题之间的区别和联系。这个阶段的实施主要是思维如何进行可视化。Raptor中流程图采用拖拽符号进行绘制,克服非可视化环境下语法复杂的屏障,在尽可能少的语法限制下,让学生能快速开展程序设计;流程图自动运行过程中通过设置断点和单步执行等调试手段,可以显示观察各种结构的入口和出口两点间变量改变情况,让学生对程序进行测试、运行和验证;流程图运行结束后,Raptor会自动给出所有操作步骤的统计数据,让学生直观体验算法复杂性,便于改进算法。思维显性化的过程有助于改造思维进程和思维方式,形成针对不同问题的程序设计思维模式。
3. 高效思维自动化——提升知识理解,应用思维
程序设计思维可视化教学的终极目标是在计算思维指导下自动高效解决各种问题,这个阶段的实施是思维如何迁移和自动化。在实践中,结合重点、难点开展大量的模仿和练习,对知识进行深加工,实现转变性内化和思维迁移。内化意味着新创造的显性思维又转化为隐性思维,这是思维的应用与创新,也是个人能力的提高;迁移意味着面临不同的复杂工程问题时,不断地应用思维、更新思维,分析问题、解决问题。Raptor中流程图可以自动转换成C++等各种高级语言程序,复杂的代码重新淹没之前的可视化思维。这种从隐性到显性再到隐性的思维循环转化形成了一个螺旋形上升的思维创新过程,让学生既培养计算思维,又掌握语言的实现。
这三个阶段并不是彼此孤立的,而是紧密结合,相辅相成,最终目的是为了强化计算思维,提高解决复杂工程问题的能力。
四、结束语
本文以思维可视化为手段,开展基于思维可视化的程序设计类课程教学研究,构建以思维训练为导向的新型教学模式,改革计算思维能力的培养路径与策略,高效地培养大学生掌握复杂问题求解的方法与技术,培养计算思维能力与工程技术能力,增强自身数字化时代的生存技能与竞争力。
参考文献:
[1]Jeannette M. Wing. Computational thinking[J]. Communications of the ACM, 2006,49(3):33-35.
[2]丁海燕.计算机程序设计课程中计算思维的培養[J].实验技术与管理,2015,32(12):16-18.
[3]赵国庆.思维教学百年回顾[J].现代远程教育研究,2013(6):39-49.
[4]赵姝,赵国庆,吴亚滨,等.思维训练:技术有效促进学习的催化剂[J].现代远程教育研究,2012(4):28-34.
[5]罗恩·理查德.哈佛大学教育学院思维训练课:让学生学会思考的20个方法[M].中国青年出版社,2014:42-69.
[6]赵慧臣,王玥.我国思维可视化研究的回顾与展望[J].中国电化教育,2014(4):10-17.
[7]蔡慧英,陈婧雅,顾小清.支持可视化学习过程的学习技术研究[J].中国电化教育,2013(12):27-33.
[8]程向前.基于流程图的可视化程序设计环境对大学计算机基础教学的影响[J].计算机教育,2012,170(14):56-59.