基于计算思维大学计算机基础课程教学内容设计
  要:如何将计算思维能力培养作为计算机基础教学的核心任务,已经引起了计算机基础教育界的广泛关注和讨论。作为高校计算机基础教学的入门课程,大学计算机基础迫切需要进行基于计算思维的教学内容改革。本文在分析计算思维核心方法和思想的基础上,围绕抽象级、指令级、语言级以及系统级的典型计算环境设计课程教学内容的思想,提出了一个课程教学内容的组织架构,并以计算机网络为例分析了以问题为引导的具体教学单元实施方法。
关键词:计算思维;大学计算机基础;课程教学;计算机网络
自从20108月中国9所高校联盟在西安会议上发表了《九校联盟(C9)计算机基础教学发展战略联合声明》以来[1],国内高校对运用计算思维作为新一轮计算机基础教学改革的指导思想已形成了广泛的共识。201111月在杭州召开的大学计算机课程报告论坛上,许多院校对围绕计算思维的计算机基础教学改革进行了不同的解读。笔者认为,目前对计算机基础教学进行新一轮改革的认识是充分的,但如何以计算思维去指导计算机基础教学的具体改革实践,尤其是在大学计算机基础课程教学内容的重新梳理和组织方面,仍然有许多值得探讨的问题。
一、大学计算机基础课程教学内容改革的需求
教育部高等学校计算机基础课程教学指导委员会制定的《计算机基础课程教学基本要求》所提出的4×3知识体系结构和1+X课程体系[2],不但回答了上什么课的问题,也科学地阐述了为什么要上这些课的问题。尤其是大学计算机基础课程(即1+X中的“1”),在计算机基础教学中占有极其重要的地位。这是我们进行计算机基础课程建设的基石,也是教指委和广大从事计算机基础教学工作的教师们多年辛勤工作的结晶。
由于计算机基础课程所依赖的计算机科学、技术、工程等发展极为迅速,知识更新周期越来越短,使得传统的以技能为主的应用型课程远远滞后于学科发展。尤其是传统的应用技术课程下移到中小学阶段,使得许多高校的大学计算机基础教学入门课程大学计算机基础的内容不能满足大学新生的学习要求。笔者最近在和西部一些高校计算机基础课程的教师接触过程中,他们对此更有深刻体会:以技能性为主的计算机基础课程已经到了非改不可的地步。
即使已经进行了课程内容改革的部分学校,仍然面临着课程应该涉及什么内容及如何组织的困惑。不同于大学阶段的数理课程具有完备、循序渐进的体系,计算机基础课程尤其是大学计算机基础涉及知识点很多,各种知识互相交叉,很难梳理出一条清晰的脉络,往往从教材到教学过程都是以名词解释为主,也就是解释了是什么,却难以进一步解释为什么。因此,
在新的课程改革中如何表现课程的知识体系就成了亟待解决的问题。例如,在介绍计算环境时,往往局限于具体的机器描述,忽视了对计算环境核心思想的介绍和分析;再如,介绍算法也局限于实现过程,忽视了求解方法的思路。
课程教学内容建设是一项工程,不但要解决课程的内容体系,也需要解决如何在教学过程中组织和表现具体的内容。计算机基础教学应该有别于计算机专业教学,不可能也没必要涉及计算机技术的方方面面。大学生学习计算机基础课程,不仅要了解计算机是什么、能够做什么、如何做,更重要的是要了解这个学科领域解决问题的基本方法与特点。计算机作为通识教育的重要内容,不只是简单地拓展学生在计算机方面的知识面,更需要展现计算机学科的思维方式[3]大学计算机基础课程作为大学计算机基础教学的入门课程,需要有相对稳定、体现计算机学科核心思想和方法的内容,不但要解释相关知识是什么,更要回答它们为什么,特别要在不局限于特定机器的条件下,抽象表达计算模型和原理、方法及其实现,因此需要在更高层次上进行课程教学内容建设。
更为值得注意的问题是,由于一些高校大学计算机基础教学内容改革的滞后,使得相关学校的教学主管部门开始质疑该课程设置的必要性,有的已经开始将大学计算机基础课程从必修改为选修,或者干脆只保留了程序设计类课程。
归根结底,我们必须正视以上问题。能够解决上述问题的关键就是计算思维。如果将计算机作为机器,它是一种工具,是具有计算功能的工具;但是,它依赖的科学基础并不是机器本身。这就是把计算机称为科学的机器以及把其学科称为机器的科学的原因。计算思维反映了计算机学科最本质的特征和最核心的方法。将计算思维能力培养作为计算机基础教学的核心任务,不仅紧紧围绕现有计算机基础教学的根本任务和核心知识内容,而且反映了计算机学科的本质,也体现了通识教育应有的特征[3]。因此,需要全面正确理解计算思维,并运用计算思维的思想对大学计算机基础课程的教学内容进行重构。
二、计算思维的核心方法是构造
正如陈国良院士等专家所指出的那样:计算思维不是今天才有,早就存在于中国的古代数学之中,只不过周以真教授使之清晰化和系统化了”[4]。卡内基·梅隆大学(CMU)周以真(Jeannette M. Wing)教授认为计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动”[5]。按照周以真教授对计算思维的解释,计算思维建立在计算过程的能力和限制之上,由人或机器执行。这一点特别重要:并非所有计算过程都是由计算机完成的。进一步而言,计算思维最根本的内容,即其本质是抽象(Abstraction)和自动化(Automation)。
现实意义上的计算思维的基础是计算机学科。计算机学科既是构造计算机器的学科也是基于计算机器进行问题求解的学科。从问题求解的角度看,计算机学科所涉及的问题求解均是基于一定计算模型(环境,包括计算机器)和约束上的问题求解。这里所说的计算环境,并非是单一的机器层次上的,而是存在不同层次的计算环境。计算机学科不同的研究领域可以理解为在不同计算环境中的问题求解。例如,在抽象级上的图灵机研究;在指令级上的硬件设计;在语言级上的程序设计;在系统级上的操作系统、数据库设计以及应用软件设计,等等。无论面向什么层次的计算环境,问题求解首先需要解决的是问题的表示,例如编码/解码和建模等都是典型的例子。只有这样才能够建立计算环境所能理解的基本计算对象,进而为基于计算环境的问题求解提供可能。进一步需要设计问题求解过程,典型的方法有:约简、嵌入、转化、仿真、递归、并行、启发式推理、平衡与折中等。最后需要验证以确定计算过程的正确性与效率,典型方法有预防、保护、冗余、容错、纠错等,其中还需要多维度(时间、空间、简洁、社会、成本)考量计算的效率。
因此,从本质上说,计算思维的核心方法是构造Construct)。这里面包括了三种构造形态:对象构造、过程构造和验证构造[3]。对象构造是面向计算过程中的各种对象,例如指令、硬件系统、数据组织、程序函数/组件、系统软件等;过程构造是基于对象的计算形态的
计算机课
构造,例如指令的执行、算法(涉及数据组织和语言)、计算资源调度、分布式处理、软件工程等;验证构造则是针对前述两个构造的有效性分析,包括测试与分析、系统安全性、可靠性及对社会的影响等。因此,计算思维能力的重要表现就在于培养其构造能力。
进一步地讲,我们可以将计算机学科的12个重复出现的基本概念[6],与构造进行关联分析。可以认为这些12个基本概念实际上就是针对对象构造、过程构造和验证构造的不同的方法与原则[3]
从学科思维角度看,与计算机学科关系最密切的传统思维方法主要是数学思维、逻辑思维和工程思维。计算思维不是一种孤立的思维,在不同层次(环境)上的问题求解也体现了传统思维的许多特征。如下图所示。
计算思维与传统思维图
抽象级(如图灵机)的问题求解具有数学思维的特征,指令/语言级上的问题求解(如程序设计)具有明显的逻辑思维特征,而在系统级的问题求解中则大量应用了工程思维方法。实际上,也可以把数学思维、逻辑思维、工程思维中的相关思想映射到计算机学科相对应的理论、抽象和设计的相关形态上。
和计算机科学与技术专业能力培养不同的是,计算机基础教学层次上的计算思维能力培养不需要也不可能涉及计算思维的方方面面,而应该面向各专业计算机应用需求,培养学生基本的计算思维能力。主要体现在3个方面,即:对计算机的认知能力,具有判断和选择计算机工具与方法的能力(包括运用信息技术的学习能力等)以及运用计算机解决专业问题的能力。
三、教学内容组织
近年来,许多高校对大学计算机基础课程教学内容进行了大力度的改革,突破了过去那种以计算机应用技能培养为主的教学模式,取而代之的是更多地教授计算机系统知识,更加突出课程的基础性。但是,面对纷繁复杂的计算机专业词汇,如果没有厘清相关的内容体系,无疑将使得学生从不要学变成不会学,因为即使一个计算机专业的学生要弄清那么多名词、概念也不是一件容易的事。
大学计算机基础是高校极为重要的一门计算机基础类课程。该课程内容的改革应该围绕计算思维的核心思想,梳理和删减现有课程教学内容,避免概念的堆积,建立围绕计算思维核心思想的内容组织体系,突出核心的基础内容。
基于上述分析,我们认为大学计算机基础教学内容应该涉及抽象级、指令级、语言级以及系统级的典型计算环境,使学生对这些计算环境的基本原理以及基本问题求解方法有所认识,进而从中了解从计算思维的基本方法,培养计算思维的基本能力。因此,下面是我们基于上述思路提出的一种教学内容组织架构。
1.计算的历史与影响。介绍人类追求自动计算的发展历程以及现代计算机技术对经济发展和人类社会进步所带来的影响。今天的计算机从最初的机器发展成为一门学科是人类智慧、想象力发挥到极致的体现。计算机学科与其他各门学科的结合,改进了研究工具和研究方法,促进了各门学科的发展。现在,计算科学已经成为推动人类社会文明进步与科技发展的三大手段之一。
2.计算模型。这是对计算机的高度抽象,最为经典的模型为图灵机/波斯特模型(Turing/Post Model),解释了机器的计算能力及其局限性,同时它还是研究算法的重要工具。按照图灵-丘奇命题,所有可计算的都是图灵机可以执行的。
3.处理器模型。以指令为基础理解具有程序能力的自动计算过程,进而理解现代计算机模型(也被叫做冯·诺依曼模型)。
4.信息的编码与存储。信息的编码与存储是问题表示的基础,也是应用计算机求解问题最基础和核心的工作。通过介绍数制(进制)、逻辑代数和典型数据的编码与组织方法,了解数据在计算机中的基本表示和存储,包括存储器结构和数据的基本组织关系。
5.算法和程序。算法是计算机科学的核心和精髓。通过理解算法的表示与评价、基本算法以及程序的基本控制结构,初步理解计算机解决问题的自动实现过程。
6.操作系统。作为计算平台的操作系统,无疑是计算机软件系统中最为重要的软件,也是构建系统的平台基础。这一部分的内容组织不是基于如何使用操作系统,而是需要理解它是如何解决计算资源的竞争问题,高效实现资源共享与分配等。
7.计算机网络。某种意义上,最为吸引大学生的计算机应用技术就是网络。网络是一个集计算机、通信于一体实现资源共享和信息传递的计算环境。网络技术日新月异,网络的核心思想应该是解决资源共享和信息交换中的约定问题以及可靠传递问题。
在以上内容中,计算的历史与影响从历史和现实的角度认识计算机技术的影响和作用;计算模型在抽象级计算环境上理解计算的基本原理;处理器模型则展现指令级计算环境的基
本构成,进而理解现代计算机的基本工作原理;算法和程序则从语言级计算环境角度说明计算的基本过程和方法,使学生了解计算机问题求解的基本方法;操作系统计算机网络都是典型的系统级计算环境,涉及同一物理机中计算资源竞争问题和不同物理机间信息交换问题的解决思路和基本方法,其中也包含了系统效率与验证这些基本的工程方法;信息编码和存储是计算机问题求解的基础,也是最基本的计算对象构造。这些内容涉及不同层面的计算环境的基本构造方法以及对象构造、过程构造和验证构造等基本构造内容,是计算思维最基础和核心的内容。以上归纳,并非完全是教材的章节,也不完全是课堂教学的顺序,而是一个教学内容组织架构。在具体课程教学中,需要根据这个架构,对每部分内容给予合适的描述,使之能够被正确理解。