王 磊,叶 军,陈素芬
(南昌工程学院 信息工程学院,江西 南昌 330099)
大学计算机基础是普通高校本科人才培养计划中的一门公共通识必修课程。随着个人计算机的日益普及以及计算机在各行业中的广泛应用,一些曾经为计算机专业学生所掌握的计算机专业知识已逐渐成为当代大学生的通识。为了适应这一变化形势,九校联盟率先提出关于加强非计算机类专业大学生计算思维能力的培养的倡议[1-3]。教育部高等学校大学计算机课程教学指导委员会2015年下发的《大学计算机基础课程教学基本要求》,以及2017年7月第六届“计算思维与大学计算机课程教学改革研讨会”提出的高校设置计算机基础课程教学实施方案中都体现并细化了以计算思维为导向改革教学内容。同时全国各高校大学计算机基础课程的教学改革也都在逐步、稳妥地推进,当前国内大多数高校该课程教学的内容均发生了较大的变化,由过去的以计算机基础知识传授,以Windows操作系统、Office办公软件等软件操作技能培养为主的教学转向以培养计算思维和理解计算机中信息处理的基本原理和方式为主,因而课程的培养目标也随之发生了根本性的变化,培养目标转向以培养计算思维以及对计算机基本工作原理的理解为导向,旨在提高非计算机专业本科生运用计算机解决专业领域实际问题的能力,为专业领域的创新型设计和研究打好基础。
目前,尚未有一个统一和权威的计算思维定义,一个普遍认同的、较为系统的计算思维定义是由卡内基·梅隆大学计算机科学与技术系周以真教授给出的[4],她认为计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为,其本质是抽象和自动化;计算思维能力是地球上每个人都必须具备的基本技能,而不只是计算机科学家才具备,这正如人们都具备“阅读、写作、算术”能力一样。作为人类认识世界和改造世界的3种思维(逻辑思维、实证思维和计算思维)方式之一的计算思维,是以设计和构造为特征的,是以计算机科学为代表的。周以真教授认为计算思维无处不在,人人皆有之[5]。
对于刚入学的大学新生而言,其逻辑思维能力和实验思维能力在中学阶段已得到了较为系统和全面的培养和训练,但由于中学对信息技术课的重视程度不够致使计算思维能力没能得到应有的培养和训练。为了提高应用型本科院校大学生运用计算机解决其专业领域生产实际问题的能力,进行系统的设计和创新,大学生计算思维能力的培养刻不容缓,亟待加强。首当其冲,需要明确计算思维培养的内容。在文献[6]的基础上,笔者结合个人理解,认为计算思维的培养由3部分构成。
计算思维是伴随人类计算工具的出现自然而然形成的,是自古有之的一种思维方法,也是每一个人都具有的一种技能[5]。然而,人们的计算思维活动通常是朦胧的、无意识的和自发的,在培养大学生计算思维意识的过程中应消除学生对计算思维的神秘感,注重因势利导,将大学生的计算思维由无意识的形态激活为有意识的形态,由自发的意识转变为自觉的意识。对于应用型本科院校,主要是培养学生运用计算技术和计算机去解决各专业领域生产实际中问题的能力的思维意识。
计算思维方法是计算思维培养的核心内容。人类使用的计算工具不同,相应的计算思维方法就会有所不同和侧重。这正如著名的计算机科学家、图灵奖得主Edsger Wybe Dijkstra所说,“我们所使用的工具影响着我们的思维方式和思维习惯,从而也将深刻地影响着我们的思维能力。”为了学生能较好地理解和运用这些方法,在实际的教学中可采用程序流程图并结合案例来讲解,如可以借助计算机强大的运算能力,用穷举法破解位数较少且组成单一的密码。
计算思维的根本目的是解决问题,即问题求解、系统设计以及人类行为理解[4]。对于应用型本科学生而言,能运用计算机技术解决将来所面临的专业实际问题就是计算思维能力培养的目标所在。计算思维涉及特定的思想、方法、理论和技术[7],计算思维能力的培养绝非大学计算机基础一门课程所能承担的,所以计算思维的培养应当贯穿在大学所有的计算机基础类课程之中,需要计算机基础类课程群的支撑。
在大学计算机基础课程中,几乎每一个概念都对应一种计算思维方法[8],如Cache 是预置和缓存方法、多核处理器是并行处理方法。计算思维方法分布在大学计算机基础课程各章之中,厘清计算思维在大学计算机基础课程各章的分布以及各章的教学重点内容,有助于大学计算机基础课程任课教师有的放矢地组织以计算思维为导向的教学。在此以冯祥胜、朱华生老师编写的应用型本科院校《大学计算机基础》[6]为例进行说明。
(1)绪论。本章的内容是计算机的初识,主要介绍计算工具的发展简史,计算机的特点、应用领域以及计算机应用新技术和计算思维的基本概念。人类计算工具的发展历史就是一部人类运用计算工具解决问题的历史,也是一部计算思维的发展史。重点内容是人类计算工具的发展简史,计算机的特点、应用领域以及计算思维的基本概念。
(2)计算机中信息的表示。介绍计算机中信息表示的方式。数值、图形、图像和声音等信息采用二进制表示是便于信息在计算机中的存储、传输和处理。该部分内容是计算思维能力培养的基础。教学重点内容是各类信息在计算机中的表示和存储。
(3)计算机基本工作原理。熟悉冯·诺依曼体系结构计算机的存储程序工作原理有助于理解用计算机进行信息处理的基本原理和过程,从而能更好地运用计算机解决问题。计算机硬件结构是实现计算思维本质之一自动化(程序自动执行)的硬件基础。本章是计算思维能力培养的一个基本方面。教学重点内容是计算机系统组成和信息处理的基本原理。
(4)程序设计基础。本章介绍程序设计语言的基础知识以及程序的3种基本控制结构,程序设计的基本方法、结构和原则。程序是对系统的抽象,控制结构是对问题求解步骤的抽象。编程是运用计算机解决问题的根本,因而编程能力是计算思维培养的重要环节。教学重点内容是结构化程序设计和面向对象程序设计的基本概念和算法的流程图表示。
(5)算法与数据结构。算法是计算机的灵魂,是描述问题求解的有限的、确定的步骤,它可以看作是对特定计算思维方法的描述。数据结构是解决数据在计算机中的表示和存储问题,是运用计算机实施信息处理的基础。数据结构可以视为在系统建模过程中对系统特征的抽象,它体现了计算思维本质之一的抽象。本章是计算思维教学的核心内容,教学重点是算法的基本概念、表示和设计方法,数据的逻辑结构和物理结构以及排序和查找等计算思维方法。
(6)操作系统。操作系统是合理组织计算机工作流程,管理其软硬件资源,提高其效率,提供人机交互的界面的系统软件。操作系统是实现计算思维本质之一的自动化(程序自动执行)的软件基础,是计算机赖以实施信息处理的最基本的系统软件,本章教学重点是操作系统的概念、功能以及进程的概念和状态转换。
(7)数据库系统。本章中的数据模型以及数据库系统结构中的三级模式和二级映像就体现出计算思维本质之一的抽象。教学重点是数据库的基本概念、数据模型基本概念、SQL语句。
(8)软件工程。软件工程是采用工程化的思想和方法去指导大型、复杂软件的设计、开发和维护,是开发大型软件系统的一整套工程化的方法。本章介绍了工程化的计算思维方法,其教学重点是软件工程的概念、结构化分析和设计方法、程序的测试和调试。
(9)计算机网络。计算机网络的三大特点是资源共享、数据传输和分布式处理。联网的计算机会增强数据的存储的能力和复杂问题的求解能力。一些新技术如网格计算、物联网、云计算就是基于网络的。本章教学重点是计算机网络的基本概念、局域网的基本概念和基本技术。
运用程序设计解决问题是培养计算思维的一种有效和直接的方法。鉴于目前大部分大一新生都未曾学习过程序设计语言,需要开设针对大一学生计算思维技能培养的先修程序设计课程,如可选择Scratch完全在线开发的Android编程环境,Google App Inventor等可视化、模块化、易于入门学习的程序设计语言。此外,还可通过建模与仿真、游戏软件等方式培养学生的计算思维技能,不过此法不宜在课堂使用。程序流程图是一种能有效地表达问题解决方法的图形化工具,具有直观、简明、易用的特点,适宜在大学计算机基础课程中的计算思维教学中使用。
通过程序流程图的设计促进学生学习计算思维的两个教学案例如下。
3.2.1 “百钱百鸡”问题
“百钱百鸡”是我国古代数学家张丘建在《算经》一书中提出的一个著名问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
这个问题属于典型的不定方程求解问题,由于不定方程存在多个解,一般是采用穷举法来穷尽每一种可能性,从而得出所有的可行解。“百钱百鸡”问题采用穷举法来求解,需要714(21×34)次的试凑,如果不借助于特定的技巧,单靠用穷举法进行试凑,如此庞大数量的重复试凑对人而言必定是枯燥乏味的,且在使用穷举法求解的过程中还很容易出错,由此还会遗漏一部分解。人们可凭借计算机的强大计算能力来穷尽每一种可能性,因而运用计算机解决此类问题是可行的和高效的,既不会出错也不会有遗漏。表达“百钱百鸡”问题求解算法的程序流程图如图1所示,变量cock、hen、chicken分别表示公鸡、母鸡和小鸡的只数,“=”表示赋值运算符。
图1 “百钱百鸡”问题的程序流程图
“百钱百鸡”问题的程序流程图中蕴含了迭代、穷举算法等常见的计算思维技能。通过该问题的讲解可传授给学生这样的认知:运用计算思维和计算机可以把人类从枯燥乏味的重复劳动中解脱出来,前提是要学会特定的计算思维技能,并且会通过编程实现自己的想法,由此也在一定程度上激发学生学习计算思维的兴趣。
3.2.2 定积分的计算问题
定积分的数学计算方法是借助于不定积分公式求出初等函数形式的原函数,并通过积分的上、下限来解决定积分的计算问题,但求解特定形式的不定积分是需要一定技巧的,对上述原函数不是初等函数的定积分计算问题则具有较大的难度。
计算机科学中的方法是先通过对积分区间进行若干等份的划分,然后使用迭代法累加各个小区间的梯形面积来实现定积分计算的,这与定积分的数学定义一致,是一种直观、简明且有效的方法,在使用该方法时避免了求原函数,因而适用面广,也易于编程实现。
这个例子说明运用计算思维中的迭代法并结合数学定义能直观、简明和有效地解决原函数不是初等函数的定积分计算问题,是工程化计算思维的体现,其中蕴含了迭代、分解、抽象等计算思维技能。
图2 定积分计算方法的程序流程图
程序流程图是人们描述解决问题的方法、思路的一种图形表示,其特点是直观形象、逻辑性强和易于理解。将程序流程图运用于大学计算机基础课程中计算思维的教学,即用程序流程图中统一规定的标准符号描述解决问题的具体步骤。一方面,可将计算思维涉及的问题解决思路和步骤清晰地标识出来,使抽象的计算思维变得直观形象,易于为学生所接受,由此激发学生学习计算思维的兴趣,唤起学生学习计算思维的热情。因此,借助于程序流程图可促进学生理解和掌握迭代、分解(功能模块化)、组合等计算思维技能以及解决问题的算法思想,从而有利于学生计算思维意识、方法和能力的培养。另一方面,程序流程图还能增进学生对计算机解决实际问题过程的认知和了解。这些均可以提高应用型本科学校非计算机专业学生运用计算机解决专业领域实际问题的能力,达到大学计算机基础课程的教学目标。
综上,结合具体案例设计程序流程图进行大学计算机课程中计算思维教学的方法,是一种能促进学生计算思维技能提高的教学方法。
为了响应九校联盟提出的关于加强非计算机类专业大学生计算思维能力的培养的倡议以及符合教育部高等学校大学计算机课程教学指导委员会提出的有关大学计算机基础课程教学的基本要求,在2010年,南昌工程学院计算机基础教研室就结合应用型本科院校的实际着手改革计算机基础类课程的教学内容和方法并取得了初步的成果[9],其中大学计算机基础教学改革的指导思想是由以前对常用软件的操作技能为主的教学转变为以计算思维的培养和计算机信息处理模式的理解为中心的教学内容。这一改革既给计算机基础课程的教学带来了挑战,也带来了机遇。
以计算思维为导向的大学计算机基础课程教学改革是一项在新形势下适合非计算机专业大学计算机基础教学需要的教学改革活动。在搞清楚计算思维培养的内涵的基础上,尚需厘清大学计算机基础课程各章中所蕴含的计算思维思想、方法、理论和技术以有利于组织教学,通过在教学中采用设计程序流程图的方式来帮助学生理解计算思维进而培养学生的计算思维能力。笔者下一步教学研究工作的重点是探讨如何有效地测试和评价大学生在大学计算机基础课程中习得的计算思维技能。