结合计算机系统能力培养竞赛推动系统类课程群建设
2018-11-29李东勤徐勇常郝陈晓玲
李东勤,徐勇,常郝,陈晓玲
(安徽财经大学管理科学与工程学院,蚌埠 233030)
0 引言
人类已经进入了以移动互联、云计算、大数据和物联网为代表的第三代信息化浪潮时代。随着这些新技术的快速发展和广泛应用,计算机系统应用呈现出新的特征,形成了嵌入式计算系统、移动计算系统、并行计算系统和基于服务的计算系统等四种新型的计算系统。新形势下对计算机专业的人才培养也提出了更高的要求,需要计算机专业人才更加深入掌握计算机内部的设计原理和工作机制,具备更深、更广的系统设计、实现和应用能力,即具备计算机系统能力。如何培养具备系统能力的计算机专业人才,如何能让我们的学生在掌握计算机系统内部设计思想和工作原理的基础上,具备设计、开发和调试以计算技术为核心的应用系统能力[1-3]。在2010年教育部高等学校计算机类专业教学指导委员会成立“计算机类专业系统能力培养研究组”,2015至2016年、2017年、2018年教指委分别批准成立第一、二、三批高等院校系统能力培养示范院校和试点院校,安徽财经大学于2018年入选第三批试点校。
为落实教指委的计算机系统能力培养计划,安徽省系统能力培养工作组在2017年4月23日举办的“安徽省高校计算机系统能力培养专题研讨会”上确定“以比赛作为推手,来推进FPGA在高校系统类课程的逐步应用”,并于同年11月在合肥工业大学举办安徽省第一届计算机系统能力培养竞赛。到目前为止,该比赛已经连续举办两届,大赛以学科竞赛推动专业建设、培养大学生创新能力为目标,选拔未来我国计算机系统的设计、分析、优化与应用人才,激发学生的创新实践能力与团队协作精神。通过比赛来进一步推动高校计算机等相关专业教学改革,为高质量专业人才搭建交流、展示、合作的平台,助力产学研,对大学生计算机系统能力的培养产生积极的影响。
笔者通过组织和指导学生参加两届安徽省计算机系统能力培养竞赛,认真反思了我校计算机专业硬件类课程教学,结合我校计算机专业的实际情况以及计算机系统能力培养的需求,提出了建设相关课程群的改革思路。
1 目前我校计算机专业课程教学存在的问题
计算机系统能力培养竞赛更加注重培养学生的综合设计和创新能力,是对学生知识的综合考核。这就要求我们的课程教学要结合时代的需求,体现计算机的系统性和完整性。但我校计算机专业在相关课程教学和实践操作中还存在诸多问题。
1.1 课程教学缺乏足够的系统性
我校计算机系统类相关课程主要包括:数字电子技术、微机原理与接口技术、计算机组成原理、编译原理、操作系统等,期望通过开设这些课程帮助我们的学生建立起完整的计算机系统的知识结构和框架。然而学完这些课程,学生对各子系统之间的相互关系和彼此作用还是了解不够深刻,也搞不清楚各子系统之间的衔接机制,缺乏完整性和系统性。
究其原因,目前我们的教学仍然以让学生了解知识为目标,而非以系统设计为目标。虽然我们也重视了课程体系建设,但各课程之间的衔接和关联考虑不够。教学内容上,各门课程都是独立规划、独立教学的,极易造成同一个知识点在相关课程中的重复讲解。同时,各课程之间的知识点缺乏前后衔接和有效整合,造成课程之间衔接关系的脱节,更是难以形成完整的计算机系统知识体系。另外,在教学方法上,各课程多以分析式教学方法偏多,更加注重基本原理的讲解,缺乏对完整计算机系统较为全面的阐述,其结果是学生掌握了基本概念和原理,却难以转化为设计完整计算机系统的基本能力。
1.2 实践教学环节存在的不足
目前安徽省计算机系统能力培养竞赛题目涉及的课程主要包括数字逻辑和计算机组成原理,其题目内容主要是组合逻辑电路、时序逻辑电路以及CPU的设计,就是实现从逻辑门到CPU的过程。通过组织和指导学生参加比赛,我们发现在计算机系统能力培养成为目前国内外计算机教育的新动向的大背景下,我校计算机专业实践教学仍然存在诸多不足,无法适应时代的需求。
首先,我们的实验目标是以课程为单位的,就是每门课程设置了各自的实验教学目标,实验内容也是以完成该课程的教学目标为目的,缺乏系统级的统一规划,这样就使得学生很难建立系统观。各门实验课程的实验成果也是独立,没有考虑过将这些实验成果进行有效的集成,形成规模更大的系统。因此,学生很难真正从完整系统的角度去理解计算机,在他们眼里是只见树木,不见森林。在对参赛学生的指导过程中,我们还发现,在建立各个功能部件连接过程中,就是自己画数据通路图时,学生感觉难度很大。究其原因,我们平时的实验主要是对各个功能部件的验证性实验,可以帮助学生理解系统运行的基本原理和工作机制,但缺乏对复杂系统的综合设计性实验,使学生无法面对复杂系统中存在的较为深刻的问题以及各个子系统之间的衔接机制。同时,我们学校计算机专业硬件类实验课程,像数字电子技术、计算机组成原理、微机原理与接口技术等,都是使用各自的实验箱,独立的实验平台无法建立课程间的任何联系和融合。
2 以竞赛为抓手推动系统类课程群建设
为了弥补我校计算机专业系统类课程在实际教学中存在的不足,提升我校计算机专业学生系统能力,结合教指委对计算机系统能力培养的相关要求,对我校计算机专业课程体系进行改革,以设计完整的计算机系统为总体目标,逐步建立推进式、循序渐进的计算机系统类课程群。依据改革目标和我校计算机专业的实际情况,首先选择数字逻辑、计算机组成原理、微机原理与接口技术、操作系统、编译原理等五门核心课程,组建为我校计算机系统类课程群,具体课程群组成及其相互关系如图1所示。
图1 计算机系统类课程群组成及其关系
2.1 实现教学内容和教学方法的统一规划
根据教指委提出的以系统发展观为主线的改革思想,认真研究我校上述五门核心课程的教学内容,查找各课程知识点和教学内容的不足,注重各课程知识点之间的有效衔接,同时避免知识点的重复讲述,强调课程内涵,强化各课程的理论基础和实践基础,确保各课程教学内容和实践项目真正服务于顶层总目标,强化核心功能模块设计。
首先,在数字逻辑课程中,重点讲解组合逻辑电路、时序逻辑电路以及状态机的时序逻辑设计。在后续的计算机组成原理中,重点讲解MIPS指令系统;基于简单MIPS指令集单周期微处理器的具体实现方法,讲解单周期和流水方式的硬布线控制器和微程序控制器;讲解中断机制,可实现中断请求、中断响应和中断服务及中断返回等功能;讲解存储器原理和Cache机制,实现虚存管理机制。在微机原理与接口技术课程中,重点讲解接口和汇编程序、标准总线、接口低层驱动程序,提供各类外部设备接口、中断接口、存储器接口。在操作系统课程中,以MIPS32指令集作为操作系统的目标平台;强调操作系统原理、操作系统的核心算法。在编译原理中以MIPS32指令集作为编译器的目标平台,强调编译技术与计算机系统整机的关联。
在基本理顺各课程教学内容和目标的基础上,在具体教学过程中要不断改进教学方法和教学手段。注重基本原理讲解的同时,要逐步强化工程化实现方法的训练,为复杂系统的设计和实现奠定基础,力求学生在系统原理和工程实现方法两方面均有收获。工程方法可能不是最优的,但应该是简单且有效的,可以让学生一步步达到实践目标。
2.2 实现系统类课程群实践教学一体化设计
实践可以说是内容最丰厚的教科书,也是能力培养最好的课堂。计算机系统能力培养中,实践起着至关重要的作用。同时,系统能力培养目标中更加强调的是系统级的设计,就是强调实践应具有一定的规模性和复杂度[4-9]。我校目前的硬件类课程实践体系中实验目标、实验内容及实验平台等均是以课程为独立单位设计的,缺乏一体化设计,加之原有课程结构不够完整,因此多门课程的实验成果也不能融合成为完整的计算机系统,进而无法帮助学生建立计算机整机概念。
改革之初,我们在第四学期数字逻辑实践课程中,首先抛弃原先的以插线为主的实验箱教学模式,选择Logisim。Logisim作为一款用于设计和仿真数字逻辑电路的教学仿真工具,其界面简单、电路仿真直观,同时可以克服原先实验箱庞大、实验场所和时间固定的缺陷。Logisim虚拟仿真实验最大的特点就是可以使学生重在设计,调试相对容易,教师指导起来也方便容易,对于学生的设计结果验收也比较容易,不需要任何其他成本,实验不受场地和时间的限制,学生随时可以进行实验,同时学生之间也很难互相抄袭。因为实验课时有限,因此我们要求学生通过自学熟悉Logisim环境,然后在实验课堂上利用Logisim实现简单的数字逻辑电路,包括编码器、译码器、多路选择器、加法器、比较器等组合逻辑电路以及寄存器、计数器和状态机。通过设计和仿真,让学生对数字逻辑电路的设计思想有很清晰的认识。接下来要求学生在暑假期间,自学Verilog语言。Verilog语言创始于1984年,由Gateway设计自动化公司开发(被Cadence收购),于1995年被IEEE确定为标准硬件描述语言(IEEE 1364-1995/Ver⁃ilog-95),它与C语言编程风格相似,最大的特点就是学习难度相对较低,易于上手。该语言对门级开关电路描述强,同时System Verilog的发布增强了系统级描述的能力。Verilog语言既是一种行为描述的语言,也是一种结构描述的语言;它既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。同时,要求学生自行熟悉Vivado环境,将所有数字逻辑电路通过Verilog语言进行描述,通过Vivado环境,在FPGA开发平台上进行结果验证,实现软硬件之间的融合。有了逻辑门和语言环境基础后,在接下来的第五学期,我们开设计算机组成原理课程,拟安排汉字编码实验、CRC校验码设计实验、可控加减法设计实验、ALU设计实验、存储器实验、Cache硬件设计实验、MIPS单周期处理器设计实验(8条指令)、MIPS多周期处理器设计实验(硬布线控制器设计、微程序控制器设计)。要求学生首先在Logisim上实现,这个相对比较容易。当学生理解其基本原理和思想后,通过Verilog语言进行描述,在Vivado环境中实现,同时通过FPGA开发平台进行结果验证。在接下来的寒假时间中,我们计划安排综合课程设计,用两周的时间要求学生实现流水CPU,将前面的单周期修改为五段流水,包括取指令、译码、执行、访存和写回,考虑分支相关和数据相关。通过两个学期的实验以及综合的课程设计,使学生能够真正掌握和理解计算机的设计思想和工作原理,实现从逻辑门到CPU。同时将实验成果延伸到后续课程操作系统实验和编译原理实验中,最终实现我校计算机系统类课程群的实践教学目标即设计实现一个CPU、一个操作系统、一个编译器,实现一个基本的完整计算机系统。
3 结语
通过参加安徽省计算机系统能力培养竞赛,看到了我校计算机专业课程体系在教学和实践方面存在的不足,并提出了整改措施,真正做到了以赛促学,以赛促教的目的。在推进计算机系统类课程群的建设过程中,我们注重围绕顶层总体目标,即实现一个完整的计算机系统,重构各课程的知识体系,重实践强系统,构造逐步推进式实验体系,实现系统能力的逐步培养。我校目前存在教师系统能力不足、学生缺乏系统级工程训练、软硬件失衡等诸多客观问题,因此计算机系统能力的培养是一个长期的过程,不可能一蹴而就的,还有很漫长的路要走。我们需要通过FPGA、EDA专题培训,提升硬件系统设计、工程实践能力;利用工程观、系统观丰富教学设计,充实教学内容;建立课程群建设小组,统一教学与实践指导。