李忠金,汪启航
(杭州电子科技大学 计算机学院,浙江 杭州)
《计算机组成原理》课程是一门计算机专业学生必须掌握的核心基础课程,并且是一门偏低层硬件的课程。不仅需要学生学习理论基础,还需要学会实践操作,理解计算机的内部结构、各部件功能以及怎样协调整体运作,这样才能对计算机整体体系有充分的理解。本文针对目前《计算机组成原理》课程的一些教学问题进行了分析,提出了相应的改进方案。使得老师可以更好地把握教学重难点,展开高效合理的教学,也更能调动学生学习兴趣,更好掌握课程内容,增强实践动手能力。
课程内容展开介绍整个计算机系统的结构,并且不同结构如运算器和存储器的原理以及设计思路又完全不同,而且整个知识体系庞大,涉及知识范围广,这也让老师和学生都难以把握教学的重点[1]。此外《计算机组成原理》以数字电路、模拟电路的偏硬件知识作为基础[2],而这些前导课程难度也是比较大的,学生掌握程度往往也没有那么理想,这也是让学生畏惧该门课的原因之一。
该课程介绍的是计算机底层硬件的知识,比如指令系统、微程序控制、硬布线等知识都比较抽象。教师在授课时往往很难以形象生动地表达方式让学生理解,加之其逻辑性、思维性要求高,有许多的知识点又需要识记。所以很容易让学生觉得该课程枯燥无趣、晦涩难懂,从而产生畏惧心理[3-4]。
《计算机组成原理》除了理论知识的讲解,实验教学也是其必不可少的环节[5]。在该课程内容纷繁复杂、抽象难懂的情况下,学生们通过自己实际动手实践操作、验证、设计流程和观察结果,以此能激发自身学习兴趣,与课堂上所学的理论基础相结合,从而更好地掌握该课程的知识点[6-7]。但是当下教学由于课时紧张、实验设备问题,老师通常只设计了几个简单的小实验并且通常配有实验指导,让学生照猫画虎完成即可。这不仅使学生难以理解其中原理,而且弱化了学生动手实践创新能力。
计算机是一门飞速发展的学科,其内部结构也在时代发展中与之前有所不同。然而,目前大多数高校所用的《计算机组成原理》课程教材还是多年以前所撰写的,如果完全按照教材进行教学,那可能在有些地方会与时代脱节,给学生造成困惑。
由于《计算机组成原理》的内容非常多,如果老师在教学过程中面面俱到,罗列知识点,那么不仅课时不允许,学生也把握不了重点,理解也不够深刻,只能为了考试去死记硬背。然而对于像《计算机组成原理》这样逻辑性强的工科课程,死记硬背是掌握不了的。
《计算机组成原理》课程的重点在于计算机的基本组成部件的构成、组织方式以及工作原理。此外还应注重让学生理解部件单元设计思想以及如何构成完整的整机的原理。难点也在于此,需要帮助学生理解如何以控制流和数据流为主线,将计算机的各大部件联系起来,建立整机概念。如何将难点讲清楚,让学生理解可能是我们遇到最大的难题了。在平时的理论课堂上,不要光按照教材讲原理,可以通过生活中的例子,比如在讲寻址方式时,可以类比成生活中的找东西,直接寻址是你知道放在哪里、可以直接找到,间接寻址是你只知道某个人知道东西的位置,你得去找那个人获取位置信息,再根据这个位置信息去找。再如数据通路越宽则数据传输率越高[8], 但成本也会越高,可类比为马路宽度越宽,能通行的车辆也就越多,但是马路造价也更高。这样来启发学生,可以加快学生理解,并且记忆也更加深刻。
对于《计算机组成原理》这门课只有实验与理论教学相辅相成,共同实施才能有利于学生真正掌握。目前大多数高校对于《计算机组成原理》的实验教学不够重视,弱化实验环节,甚至将答案事先告诉学生,学生只需依样画瓢走个过程,实验的分数就拿到了。然而这样并不足以让学生深入了解计算机组成原理的内在逻辑,还会弱化学生动手实践能力,慢慢地使学生不善于实践,不善于思考,最后懒于去实践思考。
实验课程应将计算机的基础部件原理贯穿始终,遵循由易到难的实验教学设置。在实验教学中应采用启发式教学方式,而不应该直接演示告知答案。目前的《计算机组成原理》教学实验均是验证性实验,甚至很多老师直接将实验指导书发给学生,只要设备没问题,跟着步骤做,实验基本都能完成,虽然实验在一定程度上对理解计算机各功能部件的工作原理有所帮助。但是依葫芦画瓢是很难掌握这些硬件的设计及其原理的,尤其是有些实验的硬件是固定设计好的,就像黑匣子一样,光是按着指导步骤是很难掌握内在结构的。此外由于每次实验时间紧张,导致稍微复杂一点的实验少有学生能够完成,比如:微程序控制器实验和基本模型机设计与实现。这样的实验对培养学生了解计算机内部件的原理以及分析问题、解决问题能力收效甚微[9]。所以老师应在平时课堂上与学生们将实验原理大致思路共同理清,并让学生在实验前先做好准备,自己写下大致的实验逻辑步骤,这样在实践教学中才能让学生有所收获。此外还应根据学生掌握情况,改变传统实验教学模式,可设计一些综合性、开放性的实验,当然这类实验难度通常较大,可以让学生组队完成,并且加以指导和帮助。
《计算机组成原理》是高校计算机专业课程中为数不多偏向硬件的课程,但这并不意味着它应该与其他计算机课程相分离。为了帮助学生建立起完整的计算机学科体系架构,培养学生计算机综合分析能力,在授课过程中应将该课程与其他计算机课程相联系,体现软硬件协同思想[10]。
与程序语言相结合:学生在编写高级程序语言时应注意数据类型、存储方式等等这些都是计算机组成原理的相关知识,两者结合起来学习,可以让学生更好地理解,同时培养学生软硬件结合能力。
与操作系统相结合:两门课程都会介绍存储系统的知识:Cache、TLB、地址转换等等。此时这两门课就不可能分离开,应让学生清楚哪些功能是由计算机硬件实现的,哪些功能是由操作系统实现的。
与编译原理相结合:程序编译是将高级的程序语言转化为机器能够执行的代码,称为机器级代码。《计算机组成原理》的课程就是涉及计算机底层硬部件,与如何处理机器级代码有关,而编译原理所涉及的就是将高级程序性语言翻译成机器语言,两门课均与程序在计算机中如何执行息息相关,且呈上下对接关系,所以在课程中可以适当将两门课结合起来,让学生有整体的计算机系统概念。
如果一味地在平时课堂上老师讲课、学生在下面听课,这样很多学生其实并不能够理解消化课程知识,尤其是一些比较难懂的知识点。而《计算机组成原理》这门课程前后知识点连接紧密,前面的知识不理解就会影响后续课程的学习,慢慢地很多学生就失去了上课的兴趣,从而形成恶性循环,那这门课自然也就学不好了。所以在当下的教学中我们还需要对课堂的教学模式进行改进。
在当今的信息时代下,网络上也有许多教学资源,当然,老师需要对此进行筛选,或者自己录制教学视频保证网络教学资源的质量。我们可以利用这些教学资源,在课前给学生一到两个有关下堂课的问题,让学生先利用网络教学资源去了解学习。这样的导向性学习可以解决学生在课堂上只能迷茫听课的问题,在课堂上学生可以根据自己课前所学对不懂的知识点向老师提问,这样老师就能对症下药,知道哪些内容是学生难以理解,需要在课上重点讲解的。在课后,可以适当地让学生完成有关本节课核心知识点的一些习题,习题设置要带有启发性、思考性,针对理论课教学中一些比较抽象的或者容易混淆的基本概念和基本原理设计课后习题;或者根据由一些理论而延伸的应用设计习题。如果学生在课上对某些知识点不理解,可以回看教学视频进行巩固。这样的教学模式增加了课堂互动,使课堂以学生为主导,增加了学生的学习积极性,相比以前的满堂灌式的教学一定能取得更好的效果。
课程除了要注重以冯·诺依曼计算机模型为主线展开教学,还要注意联系实际应用,融入当代的计算机体系结构。虽然冯·诺依曼结构是经典模型,但计算机体系结构的发展并不是一成不变的,现在许多计算机内部功能部件都已经做了改进,与教材有所不同了,所以教学要与时俱进,让学生在将来的实际应用中能真正运用所学知识。
目前高校该门课程的考核通常由三大部分组成:平时上课情况、实验成绩、期末考试成绩。但是到了最后,学生成绩高低主要还是来源于期末考试高低,而最后期末考试很多学生通常突击复习,背八股文来应付考试。长此以往学生会忽视平时的学习,这样不利于该门课程的教学。在平时上课老师可以适当布置作业或者小测验来检测学生学习情况,让学生在平时上课重视起来。此外可以适当降低期末考试成绩占比,比如增加课程大作业,让学生完成一个综合实验,以此来考核学生,这样可以促使学生在平时重视该门课程的学习,更好地掌握好课程内容,这样也就自然而然能取得好成绩了。表1给出了具体的考核方式。
表1 课程考核方式
教学改革的道路肯定是曲折前进的,所以在这过程中肯定还是存在很多问题的,如果只是教师不断对教学进行改革探索,那必然是不够的,这是需要学生参与进来的。我们可以在学期末,让学生匿名填写一份教学反馈评价,由学生来指出教学中值得肯定以及需要改进之处。这样才能在一步步教学改革中做到取其精华,去其糟粕。
教学是老师与学生双方的事情,老师不能只是一味按照教材讲课,不管学生掌握情况,只有了解学生的学习情况,才能更好地展开教学。针对《计算机组成原理》这门课程,老师应把握课程重难点,翻转课堂,多与学生互动,了解学生掌握情况,对学生掌握不足之处重点讲解。同时需要将理论与实践教学相结合,与时俱进,与其它计算机专业课程相结合,培养学生计算机的动手能力以及综合能力。