关桂霞, 任鲁鲁, 王 晶
(首都师范大学 信息工程学院, 北京 100048)
未来5~10年是中国利用信息技术与装备,提升国家创新能力的关键时期。要实现这一目标,需要大批具有计算思维和系统观念,能够进行系统级设计、实现和应用的计算机专业人才,加强计算机类专业学生的系统能力培养已成为教育界、学术界和工业界的共识。近年来,在计算机领域的科研方面,计算机系统方向的各种前沿性研究工作的数量和质量也在不断地提升,同时产业界对于计算机系统方面人才的需求也在不断增加。ACM/IEEE 最新公布的CS2013不仅对原有14个知识域进行适度调整,还增加了4个新的知识域,分别是系统基础SF、并行和分布计算PD、基于平台的开发PBD、信息保障和安全IAS,都涉及系统级内容。由此可见,ACM/IEEE CS2013 的重点是进一步强调系统知识和系统能力的培养。与此相呼应,目前国内外很多高校已经在学生系统能力培养方面进行了有益的尝试,美国麻省理工学院、加州大学伯克利分校、斯坦福大学和卡耐基梅隆大学的计算机专业在教学体系、课程教学和实验方面都增加了系统能力培养的内容,国内高校,如清华大学、北京大学、北京航空航天大学、南京大学、浙江大学、国防科技大学等也在进行系统能力培养有关课程体系和实践环节的改革[1-12],系统能力培养已经进入到一个新的阶段。
我校针对学生系统能力的培养,从2012年开始积极参加高等学校计算机系统类课程教学研讨会以及相关培训,学习清华大学、北京航空航天大学、浙江大学等兄弟院校的教改经验,并结合普通高校生源特点,制定了适用于我校学生的课程体系以及课程改革方案,并积极落实。2015年12月获批教育部高等学校计算机类专业教指委认定的侧重于实践教学体系改革的第一批“高等学校计算机系统能力培养”研究项目试点单位。2017年5月,教指委对第一批试点单位进行中期检查,对我校的评价是:改革深入、特色明显。
我校数字逻辑电路课程不属于计算机系统课程群,学生对硬件描述语言不了解、对计算机功能部件的设计不熟悉,直接采用硬件描述语言设计功能部件及CPU是行不通的。区别于一流大学的改革方案,针对普通高校学生生源特点及本校学生的实际情况,提出了图形化设计辅助硬件描述语言的对比实验教学方案。对于功能部件,要求学生首先通过原理图方式直观的理解各部件的工作原理,然后采用硬件描述语言设计并在FPGA上运行验证。原理图和硬件描述相结合的方式极大地提高了实验效果。同时设计阶梯型的实验,由功能部件的设计到单周期CPU设计、再到多周期CPU以及五级流水CPU的设计,学生通过循序渐进的实践过程,逐步掌握了硬件描述语言以后,对于指令集比较丰富的多周期CPU、五级流水CPU的设计[13],再要求学生采用硬件描述语言设计并在FPGA上运行验证,比较符合普通高校学生的认知规律。
针对教学内容陈旧的问题,提出以精简型计算机系统设计为目标、软硬件协同的教学改革方案。课程内容围绕1个完整的计算机系统组织内容,使用图形化+硬件描述语言编程2种方式,实现精简指令集CPU的3大组成部件并支持汇编程序运行,涉及汇编语言、组成原理、操作系统和接口技术4门课程改革,并逐步将毕业设计和课外研学相结合,拓宽学生在专业学习中的思维深度和广度,从系统设计能力、工程实践能力和问题解决能力3个方面培养学生的综合实践能力。经过深层次的课程改革,学院完成CPU设计的学生比例从不足5%提高到70%。这一工作得到了教育部计算机专业分委会专家组的认可,我校获批成为全国首批计算机系统能力培养试点单位,在全国普通高校中起到了示范作用。
针对课程只注重自身完整性,缺乏整体优化的问题,在学习“985工程”高校改革方案的基础上,构建了符合普通高校生源的课程体系。建立以计算机组成原理为核心,包含前导课程汇编语言和后续课程操作系统的计算机系统课程群,将CPU设计的知识贯穿多门课程,通过汇编课程学习程序底层行为,建立对指令系统体系结构的直观认识;通过计算机组成设计并实现基于MIPS的CPU,建立系统观念;接口技术围绕自己设计的CPU实现I/O访问和中断控制;操作系统在软件层进行管理。同时,提出软硬件协同的教学方案,注重对学生系统能力的培养,让学生从“使用别人的计算机”到“设计自己的计算机”再到“使用自己的计算机”。通过系统性的学习,学生不但能够解决局部的编程和应用问题,更能胜任对于复杂系统的设计和实现。这一贯通式的课程体系改革,获得了北京市教改项目的支持。
针对传统实验缺乏设计、创新的问题,结合学生兴趣和职业导向,区别于“985工程”高校的改革方案,提出了针对普通高校学生的图形化设计辅助硬件描述语言的对比实验教学方案,设计了一套加强学生软硬件协同能力、问题解决能力的综合实验项目。
实验方式上采用直观性和抽象性相统一的原则,首先采用图形化方式直观理解原理,然后采用Verilog语言设计并在FPGA上运行。实验内容上采用模块化思想,首先设计功能部件运算器、寄存器文件、存储器、控制器,然后由功能模块组装完整的CPU,通过循序渐进的实验过程,使学生不仅掌握计算机各部件的具体实现方法,而且更深入地理解各部件相互协同的工作机制,建立整机的概念。实验进度上分层展开,要求全体学生完成多周期CPU设计,暑假小学期课程让部分感兴趣的学生完成流水线CPU设计,通过学生科研项目和毕业设计让部分优秀学生完成支持中断和简单I/O的CPU设计,以此拓宽学生在专业学习中的思维深度和广度。
通过这种分层次的实践活动,使学生不但能够解决局部编程和应用问题,更能胜任对于复杂系统的设计和实现,这一方案被北京电子科技学院借鉴。
针对教学与实际工程脱节的问题,建立一支以实际工程能力培养为导向的教学科研相结合的教师团队。 教师依托科研优势自觉将研究的理念、思维、方法、手段、内容等贯穿到人才培养的全过程,并对学生开展高水平科研训练进行指导,让学生在参加科研活动的过程中增强实际工程能力。同时,通过课堂教学提高教师知识的系统性,实现教学与科研以及教与学相互促进的良性循环体系。
在构建的计算机系统课程体系中,计算机组成原理是核心课程,它的改革是重中之重。我校计算机组成原理课程改革之前,大部分学生只会使用试验箱,通过搬动开关观察CPU运行情况,只有3~4名有兴趣的学生以图形化方式完成简单的乘法运算的硬件实现。
团队自2012年开始着手改革计算机组成原理教学内容及实验内容,2014年开设教改班,参加教改的38人全部独立完成单周期CPU的设计;2015年深入改革,选修的112人全部独立完成单周期CPU设计;2016年全面铺开,选修的150人全部独立完成单周期CPU设计,而且2015年开始开设小学期课程,独立完成40多条指令多周期CPU设计和五级流水CPU设计的学生人数逐年增加。同时,2015年开始整合硬件系列课程,建立计算机系统课程小组。课程小组在改革核心课程计算机组成原理的基础上,于2015年开始改革汇编语言课程,使其引入精简指令计算机的代表——MIPS的指令格式及寻址方式。目前,汇编语言的实验已完成3轮改革,通过汇编语言和组成原理2门课程的深度改革,学生的系统设计能力和实践能力有了很大程度的提高,大部分学生都可以编写MIPS汇编程序,并且能够在自己设计的单周期CPU上进行验证。这一工作得到了教育部计算机专业分委会专家组的认可,同时于2015年也获批了全国高等学校计算机教育研究会研究项目。
在明确的培养目标下,全方位系统地构建相关课程的课堂教学和实验教学方案,将汇编语言、组成原理、操作系统和接口技术相关的基础内容有机贯穿起来,建立计算机系统课程体系,如图1所示。
计算机系统课程体系以汇编语言为前导基础、计算机组成为核心内容、构建系统为深入提高进行知识共享,组内各个课程内容有效的衔接。当前的汇编语言大多是讲解8086的汇编,这和组成原理改革采用的RISC体系结构不一致。因此可以对汇编语言课程进行改革,一方面汇编语言课程可以根据组成原理课程改革的需求,对RISC汇编和CISC汇编对比讲解,为后续组成原理实验提供知识储备;另一方面,可以增加汇编和链接过程的讲解,让学生建立完整的系统观,能够实现一套支持选定指令系统的工具链,包括编译器、汇编器等,能够支持指定测试程序的运行。为了提高学生的系统设计能力,计算机组成原理课程改革已将多周期、流水、中断的概念引入教学内容。后续要结合计算机接口技术实现丰富的I/O接口,结合操作系统提供的软硬件资源的管理技术,为用户提供友好的交互方式。经过课程小组不断的探索与改革,计算机系统课程群建设于2016年获批北京市教改项目。
图1 计算机系统课程体系
课程小组把“全面考核”“过程考查”等先进理念贯彻到考试活动中,逐步建立了教学内容随堂考、课下习题实践考、学生自主学习能力考和期末闭卷整体知识的考核相结合的比较科学的评价体系。对于计算机组成原理实验课程,采用面试的方式,每次的实验都面对面、一对一地检查,每次检查首先让学生运行实验结果,然后随机针对实验中使用到的关键原理部分进行提问,避免了抄袭和照猫画虎的应付现象。通过严格的考核,学生普遍反馈对数字逻辑的内容有了更深入的理解,同时也颠覆了对计算机组成原理课程的认识,由原来的了解各部件工作原理到设计并实现基于MIPS的CPU,并能运行自己编写的汇编程序。图2是学院近年来学生设计CPU的统计情况。
图2 学生完成CPU设计的情况
由统计图可以看出,能够设计并实现基于MIPS CPU的学生人数在逐年增加。
自从2012年课程组教师将系统观的教学理念渗透到各门课程,这一教学理念将学生系统设计能力的培养推向了更深、更广的层面,由此吸引了越来越多的学生参加与计算机系统设计相关的大学生创新实验项目和实验室开放基金项目。通过参加项目,学生的实践能力和系统设计能力得到了很大程度的提高,经过几年的积累,2015年开始在毕业设计、学生竞赛、发表论文方面取得了突破,首次有本科生在计算机系统方向发表科研论文。
教师素质的高低直接关系到教育教学质量的高低,为了更好地服务于教学,课程组教师一方面同美国弗罗里达大学、休斯敦大学和北京微电子技术研究所等展开密切合作,站在学科前沿开展研究工作;一方面到清华和北航等高校全程参加日常教学工作,积极参加全国高等学校计算机系统类课程教学研讨会以及相关的培训,并与多所高等院校(清华大学、北京航空航天大学、浙江大学、东南大学、南京航空航天大学)教师共同探讨教改模式,提高教师教学水平。经过几年的团队建设,团队教师的科研水平与教学能力取得了长足的进步,课程组获得了多项教改、科研项目的支持,课程组教师也多次获评优秀主讲教师。
以“提高学生对计算机系统的全面认识和系统设计能力”为导向,将自主设计“一台功能计算机、一个操作系统核心”为最终的教学目标,并据此重构计算机系统类课程,形成了汇编语言、计算机组成原理、操作系统以及接口技术为代表的核心课程群。目前已初步完成计算机组成原理和汇编语言的教学改革,学生
可以在自己设计的CPU上运行自己编写的汇编程序,后期会逐步进行操作系统、接口技术等课程的改革,将相关内容进一步整合,形成一个从硬件→系统软件→应用软件的“软硬件贯通”的计算机系统课程群,培养符合北京市教育需要的高素质人才,满足产业界对于计算机系统方面人才的需求。