摘要:“计算机组成原理”课程作为计算机大类专业一门承上启下的专业核心课程,具有理论性强、内容和知识点多、同时需要强调实践等特点,对于学科完整性、学生升学和培养未来的计算芯片设计人员都有着非常重要的作用。随着人工智能时代的到来以及摩尔定律走向终结,FPGA将成为未来主流的计算芯片之一,具备软硬件系统能力能胜任FPGA开发的人才是未来紧缺人才。本文分析了目前“计算机组成原理”课程教学存在的问题和不足,探索了本课程理论教学和实践教学中教学条件、教学方法和教学手段的改进。特别是在理论学习环节引入SPOC,实践环节引入FPGA云的思想,让学生可以轻松学习,并快速地融入到行业中。
关键词:计算机组成原理;SPOC翻转课堂;启发式教学;教学方法探析
0、引言
数字逻辑、计算机组成原理、微机原理与接口技术等课程是计算机硬件技术基础课程,是计算机、通信类专业的核心基础课程。这些课程通过从底层剖析数字电子计算机的基本组成和一般工作原理,让学生掌握计算机系统的基本设计技术,培养学生分析和解决数字系统实际问题的能力,同时也是培养计算机系统分析、系统设计人员的一个必经教育环节。
其中“计算机组成原理”课程作为一门承上启下的中间课程(如图1所示),在计算机硬件技术基础课程中,所占的位置相当突出,从2009年以来,计算机研究生入学全国统一考试就把“计算机组成原理”课程作为必考的课程。
“计算机组成原理”课程的后续课程有单片机应用编程、嵌入式应用开发、物联网技术、智能控制技术等,这些课程所讲授的技术在当前社会生活中具有极其广泛的应用需求,具有这些课程坚实基础并具备工程能力的毕业生一直都有很大的缺口。
可见,“计算机组成原理”课程对于强化学生基础知识和基本技能、提高研究生入学考试成绩、提升学生的就业竞争力,为相关后续课程打下坚实的基础,都有非常重要的作用。但是,传统的教学方法已经越来越不能满足这门课程的教学要求了,因此,针对于本课程的新教学方法的探索亟需进行。基于多年本課程的教学研究和体会,兼顾学生基本技能、考研需求、就业需求,笔者在本文中对“计算机组成原理”课程的理论和实践教学方法进行探析。
1、现阶段“计算机组成原理”课程教学存在问题的分析
1.1课程难度大,教学时间紧
“计算机组成原理”课程是偏向硬件的一门专业课,其讲授的内容主要包括ALU、CU、Memery、Input、Output等硬件的基本组成和一般工作原理。很多部分都比较复杂,学生理解和掌握起来比较困难,特别是CPU,其内部结构非常复杂,也无法提供一个直观的实物让学生看,学生会觉得课程知识比较抽象,学习难度很大;另外计算机中的运算方法,例如:原码一位乘法,原码两位乘法,补码一位乘法,补码两位乘法,并行乘法等,均为二进制思想,与平时的十进制数运算方法有所不同,学生感觉非常不习惯。这些本课程特有的性质和实际情况都可能导致学生学习兴趣不高,学习效果达不到要求[1]。
目前,二本类学校学生普遍在校学习时间只有三年,按照学校课程调整的整体要求,很多学校已经将汇编语言、微机接口技术、嵌入式等课程直接去掉,不在培养计划中作要求。而计算机组成原理课程的课时也有大大地缩减。可见,在“计算机组成原理”课程讲授的过程中,要添加必要的前期课程的内容讲解,时间也非常地紧张。
1.2师资短缺
“计算机组成原理”课程作为一门承上启下的课程,对教师的要求也非常高。不仅要求授课教师讲授好本课程的内容,还要求教师对先导课程和后继课程也要有相当的掌握和把控。授课教师最好是把硬件技术基础课程群里的课都熟练掌握,并且能够在嵌入式和物联网方面有项目支撑。
现实情况是,能够在硬件技术基础课程群里一直上课的老师比较少,要老师有相应的科研和项目支撑就更少了。
1.3“欺软怕硬”现象愈演愈烈
现在的计算机专业学生普遍重视软件类课程,主观地认为计算机专业就是学习如何用各种编程语言来编写程序,觉得计算机硬件离他们很遥远、硬件知识很难理解,渐渐地出现了“欺软怕硬”的现象。
同时,现在很多同学的就业方向都定在以Android和IOS为代表的移动互联的应用开发上。并且这个领域每年吸纳的学生非常多,很多学生不用掌握任何硬件知识,也能够就业。这在客观上,让学生觉得硬件类知识学不学习无所谓,只要会写程序就可以就业了。因此,“欺软怕硬”的现象是愈演愈烈。
1.4实践环节落后
计算机组成原理实验课开设的目的是使学生能够深入理解所学的理论知识,在此基础上培养学生的硬件设计和开发能力,并能够结合当前的热门应用有所创新。
目前,很多学校采用了基于FPGA芯片的现代计算机组成原理实验箱。实验项目主要按照实验箱配送的电子版实验指导书设置。实验课上,教师会给大家演示如何完成实验项目,以及实验操作步骤。学生按照老师的做法,依葫芦画瓢在实验箱上只要完成简单的硬件搭接,然后把实验教师给的代码或设计图运行,就可以过关。实验教学的内容没有深入底层,学生对实验原理也没有得到根本的理解,对理解相关的理论知识起到的作用也非常有限,脱离了理论联系实际的原则。
按照目前的实验模式,并不能够很好地体现注重培养学生的创新精神,也不便于学生做自主型实验、综合型实验和创新型实验。其次,基于大规模数据和创新应用的FPGA云实验系统不仅价格高昂,而且不便于维护和更新,在已经有实验箱的情况下,也不可能在短时间内再次购买。再次,学生做实验的整个过程,无法很好地跟踪和记录,不利于对学生的实验成绩做出真实的评判[2]。
2、关于“计算机组成原理”课程更新教学方法的探索
针对以上在“计算机组成原理”课程中存在的问题,结合教学实践,笔者提出一些改进当前课程教学方法的讨论与思考。
2.1引入SPOC和翻转课堂
基于MOOC平台的SPOC拥有人数少、在校注册(收费)、除了在线视频和习题等,还可以有其它辅助的线上或线下课堂、答疑。SPOC教学内容可以是MOOC的超集,换句话说,教师可以开着MOOC,同时对一小部分学生开SPOC —— 要求后者选了MOOC的同时,通过其他的渠道(线上的在线讨论,或者线下的混合式教学(含翻转课堂)实现SPOC,实现“SPOC = MOOC + 补充交流”的模式[3]。
目前开设“计算机组成原理”课程SPOC比较好的学校有哈尔滨工业大学、华中科技大学等。一般的二本学校,可以申请这些学校的计算机组成原理课程的SPOC,除可以利用的公用MOOC资源外,还可以自己上传私有讲稿和作业,供本学校学生使用。这样学生可以在课前进行线上预习、线下上课时教师可以与学生进行讨论式教学、课后师生间可以进行有针对性的线上和线下多方位的互动。
笔者相信通过SPOC和翻转课堂思想,可以很好地解决“计算机组成原理”课程任务多,时间紧的问题。
2.2组建稳定的教师团队
计算机硬件技术基础课程群包含了多门课程,“计算机组成原理”课程是其中的一门,而要讲授好这门课程,仅靠一个老师,肯定是不行的,所以组建一个教师团队非常必要。
为了让这个教师团队能够保持相对的稳定,并且能够有所发展。可以做如下一些努力。
1)确定1~2名核心教师,然后发展和指导2~3名辅助教学教师。
2)团队内部经常组织一些教学活动(听课、评课、说课),让每一名教师都得到成长。
3)共同维护课程SPOC,为课程教学提供必要的教学资料。
4)外出参加与课程相关的论坛和学习,让团队的教学思想和理念始终都保持先进性。
5)与企业合作,让有能力的企业参与到实践和课程设计中,同时,教师可以到企业参与生产实践,与企业共同申请项目。
6)针对考研的学生,可以开展一些讲座和答疑活动。
2.3努力提高学生的学习积极性
学生出现害怕硬件类课程的现象,究其原因还是没有把学生的学习积极性调动起来。而学生不想学的原因可能是因为某一个知识点没听懂,导致后面的内容连接不起来,到逐渐放弃这门课程。
为了提高学生的积极性,授课教师可以做以下几个方面的努力。
1)启发式教学
计算机组成原理的知识相对来说会比较抽象,所以学生在理解的时候会有些困难,因此可以在教学过程中,采用启发式教学方法,用一些通熟易懂的例子来对知识进行由浅入深的讲解。
在讲解Cache的地址映射方式的时候,学生对组相联映射方式中的主存地址格式不太容易理解,对于计算某一个主存单元所对应的Cache组号也犯糊涂。
例如:某计算机的Cache共有16块,采用2路组相连映射方式,每个主存块大小为32字节,按字节编址。主存号129号单元所在主存块应装入到cache的组号是多少?
解:主存地址格式如下
t(无法计算) u(3位) b(5位)
其中t是主存标记,在本题中受限于条件,无法计算,但对计算结果没有影响。u部分表示的就是所要求的组号。
可以先引导学生对十进制数据X=12345,求这个数的百位和十位构成的两位数。那么学生在学习C语言的时候,就做过相应的练习。直接用一个计算公式:(X/101)%102,就可以计算出结果。那么类似的,在本题中也可以采用这种方法,只不过在本题中为二进制计算。综上就可以引导学生得到本题的计算:(129/25)%23=4。
2)重点讲解和动态演示
在讲解CPU的时候,ALU和CU是核心。ALU可以结合组合逻辑电路,以及运算方法讲解;但CU只能通过指令的执行来讲解。而学生对于指令是如何在CPU中执行的,以及分别由CPU中的那个部分执行,都是比较难以理解的。这时,可以借助模拟动态演示,帮助学生更加形象地理解这个过程中,数据流向和内部主要结构组成。
3)与其他课程结合
课程之间的知识点绝对不是独立的,所以可以结合其他课程的知识点,辅助计算机组成原理的教学。
在讲解IEEE754标准的时候,32位浮点数和64位浮点数,实际上就分别是C语言中的单精度和双精度型浮
图2一段简单的C程序
点数。为了让大家更好地理解IEEE754标准,就用一个C语言程序来间接地讲解。
C语言源程序如图2所示,不运行,直接分析程序的运行结果。看到题目,学生肯定觉得非常难。但实际上就是一个IEEE754的实际应用。
解题过程:数组a[0]=00H, a[1]=80H, a[2]=30H, a[3]=41H。
按照小端对齐方式的规定,IEEE754的32位浮点数是41308000H。把这个数再填入IEEE754标准的32位浮点数格式中,通过计算,得出结果为11.0313。最后运行这个C语言程序,可得到相同的结果。通过这样的方式,可以让学生理解到知识的相通性,也能够提高学习的积极性。
4)鼓励学生参加竞赛
目前与计算机组成原理课程相关的竞赛有电子设计类的FPGA和SOC比赛。
这类竞赛作品的要求比较高,可以让学生把数字逻辑、计算机组成原理、操作系统等课程学的知识串通起来。当然,如果要求太高而没有学生参赛,也可以鼓励学生参加物联网和电子设计等方面的竞赛,通過竞赛,可以让学生更好地理解课程的意义。同时,在竞赛中获奖,也可以极大地提高学生的学习积极性。
2.4结合现代教育手段改进实践环节
“计算机组成原理”课程的实践环节非常重要,对于理解理论知识,拓展学生思维,引导学生进入实际工程领域非常重要。
传统实验箱的实践教学手段,学生的实验以验证性实验为主,缺乏创新项目和真实的工程项目;同时,受到到了场地和时间的限制,学生在实验课后,无法自己安排时间进行实验。
目前, Baidu、IBM、Amazon、Microsoft、浪潮、腾讯、阿里等都发布了自己的FPGA云;2017年03月,Intel发布CPU+FPGA的机器人大脑。可见,芯片即将进入应用驱动时代,为算法定义硬件将是常态,FPGA应用开发将成为主流。
面向未来的人工智能时代,学生需要一个随时可用的FPGA开发环境;老师需要一个基于学生数据的智能FPGA实验教学平台。
基于“互联网+FPGA”的未来计算实验室,只要有网络和浏览器,学生就可以随时随地做实验,同时,可以将学生衔接到行业应用需求上。
3、总结
“计算机组成原理”课程对于学生理解和掌握计算机一般组成和一般运行原理有非常重要的作用,同时也可以引导学生进入“互联网+FPGA”的应用领域。而本课程对教师和学生的要求都非常高,对课程教学的要求也非常高,高校需要积极探析课程教学方法,改进教学手段,以适应技术和行业的发展对从业人员的要求。通过探析,改进教学手段和教学方法,可以有效减轻教师负担,提升教学效率,提高学生的学习兴趣,为学生快速融入到行业提供帮助。
参考文献:
[1]彭雅琴,王万生.计算机组成原理教学方法探析[J].教育教学论坛,2017(10):205-206
[2]王小林,候漠,胡晓婷.计算机组成原理实验教学改革探讨[J].科技资讯,2014(02):155-156.
[3]黄岚等.基于SPOC理念的计算机组成原理课程互动教学研究[J].计算机教育,2015(13):15-18
作者简介:邓绍伟(1979-),男,助教,主要研究方向:FPGA、物联网研究与应用。