高小鹏
摘 要:以毕业能力驱动课程体系建设是工程教育专业认证核心内容之一。针对当前课程体系建设普遍存在的问题,本文以计算机专业系统能力培养为顶层目标,描述了以该目标驱动的教学准则以及“以课程群为中心”的建设模式,介绍了一种新颖的教学方法——工程化综合方法,以旨在指导学生开发具有足够规模的系统。本文介绍的技术途径具有一定普适性。
关键词:计算机专业;系统能力;课程体系;课程群;建设模式
随着我国于2013年加入《华盛顿协议》,按照国际工程教育专业认证体系开展专业建设将逐步成为国内广大工科专业的必由之路[1]。作为专业认证的核心内容,如何定义毕业生的毕业能力,进而如何以毕业能力为牵引建设课程体系则成为专业建设的主要内容之一。
对于大多数工科专业来说,其人才培养诉求之一应是其毕业生能否驾驭现代工程的复杂性与综合性。我们认为毕业生这种能力为系统能力,即毕业生应具有本领域系统特征的知识体系,能够从系统角度理解与把握构成系统的诸要素的功能、结构及其相互作用关系,并能够综合运用多种知识解决复杂系统级问题。
考虑到课程体系是系统能力培养的主要载体,北航计算机学院自2006年确定计算机专业系统能力培养目标后,提出了“三工”教学准则,建立了“以课程群为中心”的课程体系建设模式,历经8年持续研究与实践,取得了显著教学成效。
本文首先分析系统能力培养面临的挑战,并在指出当前课程体系建设普遍存在的问题后,给出系统能力培养的技术路径,并介绍了项目历程及取得的成效。
一、系统能力培养面临的挑战
在经历几十年发展后,CPU、操作系统和编译器目前仍然是IT领域基础性支撑技术。众所周知,我国在上述3大技术方面仍较为薄弱,这在相当程度上限制了我国IT领域整体创新与发展。虽然造成这一局面的原因有很多,但我国计算机专业没有规模化培养出能够深入理解并掌握这些核心技术的人才是无法回避的事实之一。
从计算机专业人才培养体系看,几乎所有计算机专业均设置有与上述3大技术相对应的3门课程,即计算机组成原理、操作系统和编译技术,并且通常是核心课程,其不仅课时量大,并且普遍都设置了不同程度的实验。但是本科生学习了这些课程后,如果我们问:
(1)他们能够开发符合工业标准的CPU吗?
(2)他们能为所开发的CPU配套开发操作系统吗?
(3)他们能够为所开发的CPU配套开发编译器吗?
回答往往是悲观的。
由此不难看出,计算机专业人才培养的水平远未达到技术发展与人才市场的要求。为什么?
二、课程体系建设普遍存在的问题
目前课程体系建设中普遍存在着3个基本问题。
1.各门课程独立规划、知识冗余及衔接脱节
传统上,我们主要采用“以课程为中心”的建设模式,即当专业的课程体系确立后,各课程的知识体系与实验体系几乎由授课教师唯一确定。经过长期演化,每门课程都成为一个过于强调完整性的独立知识体。课程间知识体系存在重叠与脱节,并且各课程均包含大量与顶层教学目标无关甚至不合理的知识。
2.所开发的系统缺乏足够规模,学生未能真正具备系统开发的能力
只有达到足够规模,一个系统所具有的共性特征、开发难点等才能较好显现。此时,学生才能真正学习并掌握系统构造方法,才能更进一步领会系统构造的核心原则(如设计权衡)。可以说,没有规模的系统不能被称为系统。
因此,我们必须要求学生完成具有足够规模的系统开发,否则难以达到训练效果。但目前相当多的专业未对实验训练的工程规模予以足够重视,从而只是设置了若干小规模实验。学生虽然经过了训练,但却因训练强度不足,不能对系统有较为深刻的认识并具备具有工程规模的系统级开发能力。
3.普遍采用分析式教学方法,难以指导大规模系统开发
不少专业已认识到第2个问题,并设置了较高难度的教学目标,但在实施过程中却往往达成度较低,即只有少数优秀学生凭借其较高天赋能够完成教学目标,而多数普通学生则难以完成。
上述现象的主要原因在于传统上通常采用分析式教学方法,即首先给出系统结构,而后分析输入输出关系。以讲授CPU开发的教学为例,目前国内外基本普遍采用可被称为“图解案例法”的分析式方法,即以若干典型指令为对象,通过若干设计图展示对应数据通路构造过程。当教师以上述方式介绍完少数几条典型指令后,要求学生以类推的方式去构造更多的指令。但在实际类推过程中,学生还将遭遇因指令规模增长而带来的诸多设计困难,因此对于大多数普通学生来说,该类推并不能成功。
从上述例子中可以看出,分析式教学可以通过若干案例进行具体剖析,使得学生能较快地了解系统的工作原理。但从构造系统的角度看,其缺陷也较为明显,即缺乏有效的从已知系统输入输出功能来构建系统结构的工程性构建方法。在分析式教学方法指导下,学生虽然知道了基本概念和基本构造方法,也能够按照该方法构造出规模相对小的系统,但却难以实现具有一定规模的实验。
三、系统能力培养的技术途径
为达成系统能力培养,我们认为需要从教学目标、教学准则、课程体系建设模式3方面进行系统级的顶层设计与规划。
1.“三位一体”教学目标
针对CPU、操作系统、编译器这3大基础技术所具有的计算机系统“三位一体”特点,我们认为对于计算机专业人才来说,其必须建立“系统观”,即深刻理解以CPU、操作系统、编译器为核心的计算机系统工作原理及三者间相互作用关系。进而,对于高素质创新性的计算机专业人才,其必须具备“系统能力”,即能够开发一个包括CPU、操作系统和编译器在内的计算机系统。
据此,我们提出了本科生自主开发“1个CPU、1个操作系统、1个编译器”的教学目标,即本科生通过多门课程的学习与实践,能自主开发1个CPU,并能为所开发的CPU配套开发1个操作系统和1个编译器,从而完成计算机系统设计与实验。
2.“三工”教学准则
针对前述教学目标,我们确定了“三工”准则为教学定位,即工业标准、工程规模和工程方法。
(1)工业标准
作为计算机系统3个子系统,我们须确定CPU、OS和编译器之间及其对外应采用何种接口规范。
可以说,IT业几十年的快速发展得益于“工业标准”。工业标准是大量科学与技术人员在对一类事物进行大量实践后,形成对科学、技术和实践经验的总结,是对构成系统的功能、性能、成本等诸要素进行综合权衡与取舍的产物。它从一个侧面折射出系统构造的精髓——均衡性。
我国著名谚语“熟读唐诗三百首,不会作诗也会诌”已经明确告诉了一个初学者应采取的学习方法。由此我们认为,对于以学习知识为主要目的低年级本科生而言,学习和实践工业标准,不仅有助其更快更好地领悟系统构造的原理与精髓,而且有助于其今后更快速进入产业。
经过审慎评估,RISC技术代表作并广泛使用的MIPS指令集、POSIX标准以及C语言分别被确定为CPU指令集、操作系统系统调用接口以及编译器输入语言,见表1。
(2)工程规模
以CPU开发为例,目前国内相当多大学的实验规模为10余条指令。这意味着所开发的CPU仅仅能运行简单的程序,而无法满足操作系统的运行,也无法满足复杂应用的运行。如此则不仅难以达到充分训练的作用,还无法满足后续开发操作系统和编译器的需求,从而致使整个教学目标无法达成。
有鉴于此,我们对CPU、操作系统和编译器确定了评估参数,制订了相应的评估要求,并最终确定了如表2所示的相应规模。
(3)工程方法
CPU开发长期以来就是各专业的教学难点。在本教学目标中,特别是提出“工程规模”准则后,CPU开发成为第一也是最为重要的环节,其成败至关重要。
我们认为必须找到一种能够有效降低CPU开发复杂度的工程化方法,即将大规模系统的一次性复杂开发过程,分解为由重复性的但难度极大降低的子系统综合环节与工程化(可自动化)的将子系统综合成系统的系统综合环节,从而将全系统复杂度较好地控制在子系统复杂度上。唯如此,我们才能破解前述教学困境,也才能让“系统能力培养”惠及国内更多大学和更多学生。
3.以课程群为中心的建设模式
由于教学目标中的“CPU、操作系统、编译器”分别需要在计算机组成原理、操作系统和编译技术等多门课程中完成,而传统“以课程为中心”建设模式存在诸多弊端,因此转变为“以课程群为中心”的建设模式势在必行。
所谓“以课程群为中心”就是将若干门在顶层教学目标达成上存在强相关的多门课程组建为课程群,以系统的观点将顶层教学目标合理分解并形成各课程教学目标,通过系统性规划和细致梳理确保课程间知识体系与实验体系的有序衔接。
基于此,我们将数字逻辑、计算机组成原理、操作系统和编译技术4门计算机专业最核心的专业课程构造为计算机系统核心课程群,以顶层教学目标为根本目标,以“奥卡姆剃刀”为准则精简非必要知识,重构整个课程群的知识体系和实验体系。
(1)优化课程群知识体系
以“奥卡姆剃刀”为指导,我们围绕顶层目标对各门课程的知识体系进行了必要的优化。通过精简了大量不必要的知识,不仅使得核心知识更加突出,而且为学生提供足够实践时间奠定了基础(见表3)。
(2)层次递进、合成系统的课程群知识体系与实验体系
遵循“层次递进、合成系统”的体系设计思想,我们通盘考虑了整个课程群的知识体系与实验体系。重构后的课程群知识体系和实验体系具有以下紧密衔接特征。
①数字逻辑。理论教学定位于基础计算技术理论介绍,实验教学则围绕构造CPU内部所需的各种功能部件来展开。
②计算机组成原理。理论教学定位于以CPU为核心的计算机原理及构造方法,实验教学则利用数字逻辑实验所开发的功能部件为基础,以构造能支持操作系统运行的MIPS CPU为主线展开。
③操作系统。理论教学定位于操作系统的组成及运行机理,特别强化了操作系统与CPU之间在中断、同步等方面的衔接,实验教学则以为MIPS处理器开发配套操作系统为目标展开。
④编译技术。理论教学定位于讲编译器构造原理,实验教学则以为MIPS CPU开发配套编译器为目标展开。
(3)CPU工程化综合方法
国内开展“系统能力”培养且招生规模较大的专业,目前通常仅有少数优秀学生能开发支持50多条指令的CPU。针对该教学难题,我们受圆周率计算方法变革的启发,总结出一种新颖的面向综合的CPU工程化综合方法。
①圆周率计算方法变革。三国时期刘徽提出了“割圆术”,即用圆内接正多边形的面积去无限逼近圆面积并以此求取圆周率。祖冲之计算到圆内接16384边形后,得到π的取值范围在3.1415926与3.1415927之间。
17世纪,莱布尼茨提出了π的表达式,即π/4=1-1/3+1/5-1/7+…。当取10000000项,π/4=0.7853981634的前八位保持一致。
对比这2种方法后不难发现:前者易于理解,但普通人难以完成高计算精度要求;后者表达式简单精确,普通人也可完成高精度计算要求。
②CPU工程化综合方法。受圆周率计算方法变革的启发,我们以系统论创建者贝塔朗菲提出的综合方法(给定系统输入输出功能构建系统结构)为理论依据[2],提出了将系统综合分为“构思综合与工程综合”一般性方法(简称SI&SE,Synthesis of Ideal & Synthesis of Engineering)。其中:构思综合——根据功能语义,通过思想完成简单综合;工程综合——根据构思综合的结构,探寻工程方法来完成系统综合,实现系统结构。
将SI&SE方法应用于CPU开发,我们进一步形成了CPU工程化综合方法,其基本思路如下:
根据指令操作码和功能码,给出通路操作码及功能码信号逻辑表达式;
根据一条指令简单通路表,查表确定嵌入选择器,构造出一条指令复杂通路表;
根据一条指令简单通路表,确定寄存器控制信号逻辑表达式表;
根据一条指令复杂通路表,确定多路选择器控制信号逻辑表达式表;
合并寄存器控制信号逻辑表达式表,并且排序,确定寄存器控制信号逻辑表达式;
合并所有多路选择器控制信号逻辑表达式表,并且排序,确定多路选择器及其控制信号逻辑表达式。
在该方法中,学生每次仅设计一条指令对应的数据通路,而下一条指令的数据通路与前条完全无关。当所有指令的数据通路均设计完毕后,该方法可以自动将全部指令的数据通路自动综合为一个完整指令集对应的数据通路及控制信号,从而完成整个CPU的开发。该方法彻底克服了传统图解案例方法中一次性设计全部指令集的数据通路及控制信号的弊端,使得CPU开发复杂度与指令集规模无关,仅与学生对单条指令的理解与构造有关。
四、系统能力培养的改革历程及成效
自2006年启动,本项研究工作已历时8年,教学成效显著。对比计算机系统研究与教学方面均处于世界领先水平的美国加州大学Berkeley分校,本项研究工作水平已经具有国际可比性。
1.改革历程
本项目实施历程大致可以分为3个阶段,即项目启动、3年方案研制和5年持续实践与改进,如表4所示。
(1)项目启动。2006年,作为首批计算机专业工程教育专业认证试点单位按国际标准通过专业认证后,学院通过开展广泛深入的大规模研讨工作,最终确定了“系统能力培养”是计算机专业高素质创新人才培养的关键标志,并着手启动相关研究工作。
(2)三年方案研制。2007年组建课程群及课程群教学团队,选拔的20名优秀本科生在教师带领下完成了MIPS CPU、小型操作系统内核和C编译器的开发。该里程碑标志着本项研究制订的教学目标是可行的。我们随后逐步规划设计了4门课程的实验体系,并于2009年自主研发了可以支持整个课程群实验的统一硬件实验系统。
(3)五年持续实践与改进。自2009年起,上述课程分别完成多轮次的实践。针对实践中发现的问题,我们以专业认证“持续改进”的理念为指导不断改进和完善,进一步实现了课程融合。
2.教学成效
本项工作实施以来,学生的系统能力得到大幅度提升。
(1)CPU开发能力
CPU开发能力主要可以从学生开发的CPU的指令集规模来衡量。随着教学方法运用的不断成熟,能开发较大指令规模的同学比例在逐渐上升。2012年我们再次优化实验体系,形成了8个实验构成的层次递进实验体系,并选择1个行政班(20人)为试点,取得了国内首次整班成建制开发完成包括具有55条指令规模(支持中断机制)CPU、系统桥和定时器的较完整计算机硬件的教学成效。2013年全面推广该体系,全大班30%同学(全大班247人)能完成上述教学目标,同时67%同学能开发完成具有40条指令规模的处理器。在本研究工作所知范围内,这2个难度级别的达成度均为国内最高。
相对于Berkeley分校的相关课程[3],我们学生开发的CPU在指令集规模和对操作系统支持方面都优于对方,但对方在CPU性能方面优于我们。由于我们无法获得对方学生规模以及完成情况,因此我们难以对比达成度。总体来看,双方在CPU开发方面互有优劣。可以说,CPU实验与美国Berkeley分校互有擅长,水平持平(见表5)。
(2)操作系统开发能力
2010年仅5%的学生分组选择MIPS小型操作系统实验,大部分分组选择了难度低很多的Windows和Linux实验。随着实践教学不断深入,特别是学生间逐步形成了“选择MIPS小型操作系统实验收获更大”的口碑,该比例逐年上升。至2013年,选择MIPS小型操作系统实验的分组数达到了43%。
相对于Berkeley分校的相关课程[4],可以看出本项目在操作系统实验选型、能力层次等方面与Berkeley是持平的。但实验体系在规划创新性实验(即是否设置有可自主选择的挑战性任务)方面仍需进一步努力(见表6)。
(3)编译器开发能力
编译实验课程设置了3种难度的实验,其最高难度要求为指定的扩充PL/0文法或扩充C0文法构造编译器,除生成机器代码外还需完成消除公共子表达式、全局寄存器分配等优化算法。自2008至2011年,每年有50%学生选择高难度实验。参照国外一流大学编译课程建设趋势,2012年大幅提升了编译优化实验比重,使高难度实验的难度再次大幅提高。目前选择高难度实验学生比例稳定在20%。
在编译优化方面,编译实验已经大幅超出了国内大学20%的平均水平。总体来看,编译实验接近Berkeley分校相关课程的水平(见表7)[5]。
参考文献:
[1] 中国工程教育认证协会(筹)秘书处. 工程教育专业认证工作指南[Z]. 2013.
[2] 冯·贝塔朗菲. 一般系统理论[M]. 北京:清华大学出版社,1987.
[3] http://www-inst.eecs.berkeley.edu/~cs150/sp13/ agenda/[EB/OL].
[4] http://www-inst.eecs.berkeley.edu/~cs162/archives. html[EB/OL].
[5] http://www-inst.eecs.berkeley.edu/~cs164[EB/OL].
[责任编辑:余大品]