强化计算机课程贯通教学深入面向系统能力培养

2015-03-20 20:55施青松陈文智
中国大学教学 2014年12期
关键词:计算思维

施青松 陈文智

摘 要:面向系统能力培养是社会日益急迫的需求,同时也是高校计算机教学改革的重点。论文介绍了浙江大学在实践中探索面向系统能力培养的课程建设以及计算机课程贯通教学的操作方法。教学实践的分析表明,强化计算机课程贯通教学能有效提高学生的系统能力。

关键词:计算思维;系统观教学;系统能力培养;贯通教学

一、计算思维和系统观教学

计算机体系结构的发展和新颖软硬件技术的出现,极大改变了现代计算机技术应用的模式,同时也对计算机专业的教学带来了挑战。这些挑战使得高校人才培养与社会对人才的需求之间的差距有不断拉大的趋势。摆在高校教师面前的迫切任务是如何改变这种局面,提高硬件和系统类课程的教学质量,提升学生实践能力与兴趣[1]。这些挑战和困惑归纳起来主要有四个方面:

(1)如何更有效地培养学生的计算思维;

(2)计算机体系结构发展如何体现在课程教学中;

(3)新颖技术是否应该应用在教学实践之中,如何应用;

(4)还有一个老问题,如何激发学生硬件实践的兴趣。

为了解决这些问题,许多专家学者都在探索各种教学思想和方法,其中影响最大的是计算思维和系统观、系统能力培养教学思想[2-4],为当前的计算机专业教学改革指明了方向。

计算思维的本质是抽象和自动化,如同所有人都具备“读、写、算”(简称3R)能力一样[2],这是图灵在20世纪30年代已经证明的自动计算理论。20世纪60年代计算机体系结构(Computer Architecture)的出现和系统软件的成熟,标志着计算思维和计算机系统解题思想已经形成。计算思维和计算机系统解题教学思想在过去的几十年里一直若隐若现地存在于计算机学科的教学和发展中,只是限于当时的技术条件和计算机应用的单一性,没有被人们重视或全面体现在教学过程中。

随着信息技术的快速发展,计算机新兴硬件器件及系统设计工具不断涌现,以计算机技术为核心的信息技术应用已经不是单一的程序就可解决的,它是以嵌入式计算、移动计算、并行计算和基于服务计算为核心的集高性能处理、网络(云)存储、大数据、富媒体和智能化为一体的综合性应用。在技术和应用发生根本性变化的今天,人才培养的模式也将发生变革,而计算思维和计算机系统解题教学思想是唯一可以与此相适应的教学模式,也是应对挑战的解决途径。

计算机系统解题教学思想需要系统观思维,需要深入理解计算机系统以具备和掌握计算机系统设计的能力。计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解的涵盖计算机科学之广度的一系列思维活动[2,5],其本质也是计算机系统解题思想,也需要具备计算机系统能力。无论是哪种思维模式,都需要具备计算机系统能力以及这种能力的运用。

培养具备计算机系统能力的人才,深入理解计算机系统是基本问题,也是关键问题。浙江大学从20世纪90年代初就开始跟踪国际上计算机体系结构的前沿发展和教学思想,采用了课程贯通教学思想,在课程建设实践中提出了“面向计算机系统能力培养”,改变计算机专业的教学思维和教学过程,并对面向系统能力培养进行了深入的探索。

二、面向计算机系统能力培养的思想

面向系统能力培养目的是要培养能以计算机系统思维处理问题的人才,必须改变传统各专业课程独立设计建设和实施,缺乏计算机系统整体系统层概念,采用软硬件课程贯通整体设计建设统一视图、面向系统能力的课程体系;改变传统验证型实验的孤立性,缺乏实验模块的整体性和应用转化能力,采用具有确定目标的设计型实验模式。

综上而述,面向系统设计能力培养的总体思路是以计算机系统(或SOC,System On Chip)设计与实现的实践过程为手段,以深入理解计算机系统和高性能程序设计为目标,贯通计算机组成原理与设计、数字逻辑、操作系统和编译技术等课程;以系统设计能力为统一视图,建立层次化、循序递进、开放式的课程体系和实践目标,让学生在校期间递进式逐步设计实现简易但完整的计算机系统或SOC,并用自己的计算机系统(或SOC)和系统软件管理运行自己的应用程序。

面向系统能力培养要求充分掌握和利用现代新颖计算机理论和技术,提高学生对计算机系统整体的理解程度和应用计算机系统解题的能力;在此基础上以嵌入式系统为综合实践舞台,提高学生根据应用需求来设计与实现计算机(嵌入式)系统应用的工程实践能力与创新能力,培养具有软硬协同能力的计算机系统研究、开发和应用型人才。同时引导有兴趣和潜力的同学进入计算机体系结构研究领域。

面向系统能力培养目的不是要求所有学生都成为计算机系统设计和研究者,因此配合的系统能力教学实践平台力求简单而丰富,设计目标明确而开放,实践过程要求完整且有可操作性。针对计算机及软件工程等专业提出两个层次、高中低三类实现目标,通过系统设计实现过程感性地深入理解计算机系统、高性能程序设计,以更好地发挥计算机系统性能[2]。

三、贯通教学是面向系统能力培养的充分必要手段

要具备系统观能力,高校教学必须建立面向系统能力培养的教学手段。经过数十年的建设,我国高校计算机专业已形成了很大的规模,形成了一套相对稳定的人才培养模式。但从工程教育的观点来看,计算机专业建设存在一些普遍问题:由于核心课程独立进行设计和实施,难于实现课程体系的整体优化,导致学生很难建立完整的计算机系统概念,缺乏系统能力和创新能力的训练与培养,也难以激发学生深入理解计算机系统的兴趣。虽然已有很多文章讨论过计算思维和系统观思想,但鲜有相关可操作性的方法和手段的研究。现在越来越多的专家和教师认同系统观和面向系统能力培养模式,但如何实施及可操作的方法也不够具体,缺少明确的示范。

浙江大学在面向系统能力培养的改革实践中,总结出理论实践融合的深入理解计算机系统的教学思想,那就是理论上采取软硬件课程贯通教学,实践上给出确定目标的计算机系统设计实现。计算机体系结构和EDA技术的发展完全可以做到这两点,在可行性上没有任何问题,浙江大学计算机学院的实践也已经证明了这一点并探索出一套可操作的方法。

浙江大学在课程计划上整体贯通软硬件课程建立课程体系。根据计算机系统要素,将计算机系统设计分解到数字逻辑、计算机组成、计算机体系结构、接口与汇编、OS和编译技术等各门课程中,课程间构成输入输出关系。

这样的面向系统能力培养教学思想,改变了以往课程间缺乏直接联系和简单验证的不足,转向课程紧密联系的整体教学和实验目标设计实现不断完善的渐进过程。这个过程类似企业产品设计的不同阶段和过程。

通过一个确定应用目标的计算机系统设计实现,已足够让学生深入理解计算机系统及其解决问题的思想;同时让学生理解计算思维的核心思想和理解系统观角度思考解决问题,对激发学生提高计算机硬件及系统软件课程的兴趣和创造力也是必要的。

作者认为,面向系统能力培养采用课程贯通教学和确定目标计算机系统设计实现是可行的,也是充分必要的,但在计算机系统设计实现上可以根据不同教学对象和培养要求采取分层设计。

四、计算机系统课程贯通教学的操作方法

面向系统能力培养采用贯通计算机硬件之间的教学,贯通计算机硬件与软件之间的教学,系统将整个计算机系统分解到各个课程中。每门课程作为系统设计中的不同阶段,完成课程及相应的模块知识学习,设计实现并提供给后继课程相应的模块。计算机系统课程贯通涉及课程较多,是一个系统工程,必须探索一套切实可行的操作方法,否则将会流于形式,而达不到良好的效果。要达到目标需要解决四个问题:首先需要建立课程贯通教学的载体,其次就是要建立课程贯通的教学思想,再次是建立课程统一实验平台,最后是师资培训。

1.贯通教学的载体

贯通教学的载体就是“确定目标的计算机系统设计实现”,这个载体需要与当前社会实践应用接近,但又具备高度可行性的设计实现目标,类同于一个实际产品设计或工程开发项目,在学习的同时完成这个项目。有了这个载体,贯通课程教学建设就有了可操作内容和方向,能切实有效地建立课程体系和教学大纲。

课程贯通教学不是简单地把课程内容打通,而是要围绕面向系统能力培养这个目标,建立课程间的有机联系,各课程的理论教学以本课程知识点为核心,围绕(服务)整个确定目标的计算机系统实现。这样每门课既有自己独立的知识体系、实验内容和课程设计,同时又面向系统能力培养,为后继课程提供系统设计需要的基础、技能和部件(子系统)。

2.贯穿始终的教学思想和思维方法

必须明白的是计算机系统设计实现是手段,系统能力培养才是最为关键的目的。因此在课程贯通教学指导上还必须建立贯穿始终的教学思想和思维方法,把握课程与整体之间的教学脉络。浙江大学在教学实践过程中总结概括了贯穿课程间总体教学思想是系统能力培养,其思维方法是计算思维(以计算机系统思想解决问题),同时总结了计算机系统四大核心课程的教学思想和思维方法,以引导课程内教学。

“数字电路”课程的贯穿教学思想是数字系统解题思想,贯穿的思维方法是有限状态机和寄存器传输控制思维。

“计算机组成”课程的贯穿教学思想是程序(汇编)解题思想,贯穿的思维方法是图灵机(无限状态机处理)和三指令(Load、Store和ALU)思维。

“操作系统”课程的贯穿教学思想是协同管理(程序/进程、资源和交互等)解题思想,贯穿的思维方法是管理、调度、驱动思维。

“编译原理”课程的贯穿教学思想是让程序更聪明地解题思想,贯穿的思维方法是如何让目标具有更好的性能思维。

更重要的一点是为什么要采用计算机系统解题,在从数字逻辑课程教学向计算机组成课程教学过渡上还需要强调数字系统解题存在的困难,并以普适图灵机思想从数字系统解题转向计算机系统解题,引导转入计算机组成教学。

3.贯通的实验平台

第三个问题是建立贯通的实验平台。在实践中,浙江大学采用多个Xilinx FPGA建立了统一的实验平台构架,建立实验成果库,构建系列化、递进式的实验体系,详细内容请读者参阅相关文献[1]。目前正在重新设计更适合数字逻辑、计算机组成、计算机体系结构、汇编与接口技术、操作系统等课程使用的贯通的统一新实验平台。

在实验指导上运用工程化SOC集成综合实现方法。SOC设计在工程上主要采用IP(Intellectual Property right)核集成实现,浙江大学采用与SOC设计相同的工程化思想,实验时提供基本模块的IP软核。从系统视角对计算机系统作顶层分解,采用IP核集成调用方法构成自顶向下的SOC集成框架(顶层模块),每个IP核都可以替换(犹如传统实验箱IC插座),是基于FPGA实体的虚拟实验箱。

这种结构可扩展性好,有利于扩充和升级。在具体实现上,采用自底向上逐个用自己所设计的模块进行替换,最终完成整个系统的设计。

这种采用分解模块IP核化和系统开源方式,可降低实现难度,避免直接自底向上从零开始、积木化存在的问题,同时丰富各课程内容,也让学生掌握问题的分解能力和系统集成能力。

SOC集成方法便于操作,实验时学生从逻辑开始设计部件,到计算机组成、计算机接口课,逐步替换IP核,犹如传统实验箱。这种结构适合各类不同的高校,在实验方案设计时可根据教学对象取舍,可以要求很简单,只替换部分IP核模块,如CPU设计替换集成,甚至只做IP核SOC集成(作为CPU/微控制器应用或嵌入式系统的一种课程设计);也可以高层次要求,如替换所有的IP核并创新增加个性核。

该方法的另一优点是解决了学生自主设计的实验模块在硬件物理层的调试和测试问题。

4.师资队伍建设

最后一个问题是师资队伍建设。针对目前计算机学科教学,从认识上和知识储备上来讲,这是最关键的问题。

(1)教师首先要学会课程贯通教学。课程贯通教学需要了解计算机综合设计所需要的知识和组成模块,这些知识和对应模块以往是分散在各个课程里独立教学的,现在要通过不同层次计算机系统综合设计把知识有机联系起来[1],从系统整体的角度关联(贯通)教学。同时运用贯穿的教学思想和思维方法引导学生运用知识知晓系统需要的子模块在系统整体中的作用和位置并完成模块设计实现。贯通教学不是把所有课程知识简单混合在一起,而是需要有目标和指导思想。

(2)教师必须掌握计算机系统综合设计实现过程。计算机的组成结构是传统计算机组成教学的重点,专业教师在对知识熟悉优势的基础上,只需增加对简单计算机系统的分析、设计和实现过程的教学内容学习。这在理论教学上仅是调整了教学内容的侧重点,没有增加新的内容;实践教学上只是将验证型实验改为设计型实验,工作量没有增加,仅需要教师学会利用现代EDA工具实现简易计算机系统,并掌握这个计算机系统综合设计过程。现代EDA工具较10年前有了很大的改进和发展,简化了实现难度。

(3)教师必须掌握新技术的应用。计算机学科发展与其他学科相比,新理论和新技术层出不穷,作为计算机专业的教师需要及时了解和掌握这些新的内容并充实到教学中。因此,计算机学科的教师必须了解或掌握现代计算机体系结构、现代编译优化技术和操作系统相关的新技术。这本来就是不断学习的动态教学过程。对基于系统能力培养模式来讲,硬件(数字逻辑和计算机组成)教师还必须了解EDA相关理论和学会EDA技术,软件(编译、OS)教师还必须了解和掌握系统软件实现的技术。

传统教学过程中计算机学科对EDA技术要求比较简单,部分硬件教师没有接触过现代硬件电路设计实现的新技术,需要增加EDA技术的学习和应用。这些EDA技术主要涉及硬件描述语言、硬件描述模块(或系统)综合、逻辑电路模块的仿真(模拟)、综合后的电路约束实现及相关软件工具,这些对硬件教师来讲并不是非常难。硬件教师具体要学会掌握如下内容:一是学会一种硬件描述语言,建议使用Verilog HDL,这种语言风格与C语言非常类似,学习非常容易,对硬件教师来讲没有难度;二是学会一种FPGA开发平台工具的编辑、综合、模拟和实现,目前主要FPGA平台有Xilinx的ISE和Altera的Quartus II,可以根据实验平台选择。

对于编译和OS课程的系统软件教师来讲,程序设计本来就是强项,增加编译支持和OS移植或实现难度也不会太大。

五、贯通教学的实践成果

几年来的实践表明通过贯通教学模式,学生不仅了解了运用不同思想和途径解决相同问题的方法,而且更明确地知道了为什么要用计算机解题的思维模式,增强了计算机解题思维的能力。具体效果有如下几个方面。

(1)激发了学生兴趣。传统的验证型实验转变为设计型实验,变被动机械式操作为主动灵活的自主设计过程,学生的兴趣油然而生,参与度极大提高。为了实现选题目标,课程知识的重要性和课程间的相互依赖关系越来越重要,学生对理论课的学习也越来越重视,枯燥的理论知识学习转化为设计方案需要的支持。

(2)充分激发了学生创新潜力。教学实践初期,课程组比较担心两个问题:一是“基本要求”中如何用丰富的案例来激发学生的兴趣,二是“高级要求”的难度系数是否合适。由于年轻人有天然的想象力和丰富的创造力,在实践过程中学生为我们提供了非常丰富和有创新的作品(作业),如LED交互版有打乒乓、手指跳舞机或打地鼠等十几种有趣的案例;VGA交互版有基于数字系统实现的俄罗斯方块和基于汇编实现的俄罗斯方块,基于自主设计的CPU系统和移植操作系统实现的围棋,基于数字系统和汇编分别实现的弹幕游戏,都具有非常复杂的算法和VGA的画面显示。这表明学生的兴趣和潜力被激发出来后,这些问题并没有形成阻力,反而成为动力,给后继的同学做出了示范,也丰富了教学案例。

(3)学生对计算机系统有了更深入的理解,提高了用计算机解决问题的能力。这个结果在课后调查和学生实验过程中可以反映出来。计算机组成和计算机硬件系统综合课后的问卷调查题“你认为此课程的实验对理解计算机系统有多大的帮助”,共5个层次选项。组成课的数据统计给出80%的同学认为有很大的帮助,14%的同学认为有较大帮助,4%的同学保持中立,2%的同学认为帮助不大。后续的计算机硬件系统综合实践课程问卷调查统计结果,有40%的同学认为有很大的帮助,35%的同学认为有较大的帮助,23%的同学认为有帮助,2%的同学认为帮助不大。此数据包含来自哈尔滨工业大学、厦门大学、上海大学、武汉科技大学和石家庄经济学院学生的调查数据。

(4)提高了学生自主解决问题的能力。教师的指导仅给出最基本的设计结构(包括方案和部分代码,以IP核或关键问题描述方法)并引导出现问题的解决方向,但是在设计型实验中会出现一些无法预料的问题,这是无法避免的。这个过程使得学生必须自己去解决问题。大部分同学在老师的指导下都能找到解决方法,或者通过其他各种方法很快找到了解决方法。这个过程既让学生锻炼了自主解决问题的能力,又让学生体验了实际工程设计和开发中解决问题的过程。教学抽样调查显示,100%的学生提交了自主选题的课程设计,60%的学生创新或改造了课程组提供的案例,20%的学生完成了有较大难度的选题设计,16%的学生完成了课程组给定的选题,4%的学生完成得较差或没有完成。

(5)增强了学生走向社会的竞争能力。贯通教学和确定目标的计算机系统设计实现采用了目前最新的计算机发展成果、新颖技术和工程方法。这些新成果、新技术和新方法与社会实际工作是一致的,其学习使用不仅培养了系统能力,更进一步增加了学生进入社会的竞争力,以达到毕业即就业。同时,学生在出国申请时,将计算机系统综合设计与实现的实践作为自己的核心竞争力,也充分证明了这一点。

(6)为深化计算机教学改革提供了许多案例和经验。教学改革的许多思想和案例都来自这个改革实践,学生的作业、问题丰富了课程的经验积累,学生的热忱也给学院和教师带来了持续进行面向系统能力培养的动力。

参考文献:

[1] 陈文智,陈越,庄越挺. 面向系统设计能力的教学改革探索[J]. 计算机教育,2013(20).

[2] 陈国良,董荣胜. 计算思维与大学计算机基础教育[J]. 中国大学教学,2011(1).

[3] Jeannette M.Wing.Computational Thinking[J]. Communication of the ACM, 2006, 49(3).

[4] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业实践教学体系与规范[M]. 北京:清华大学出版社,2008.

[5] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业人才专业能力构成与培养[M]. 北京:机械工业出版社,2010.

[责任编辑:余大品]

猜你喜欢
计算思维
高中信息技术课堂中计算思维能力培养问题的探讨
公安专业学生计算思维能力培养对策初探
基于计算思维的多媒体技术及应用课程教学模式研究
信管专业计算机科学概论课程的教学改革实践
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养