软件工程专业“计算机组织与结构”教学模式
2011-12-31李晨朱利
计算机教育 2011年22期
摘 要:针对软件工程特殊的专业背景和应用性的需求,从教学思路、教学内容、教学方法及教学实践环节几方面,对我校开展计算机组织与结构课程教学的新理念和新思路进行了探讨,其经验对相同专业的其他教师有较好的借鉴作用。
关键词:软件工程专业;计算机组织与结构;教学内容;教学方法
目前软件工程是信息领域发展最快的学科分支之一。面对国家产业发展的战略重点和激烈的人才竞争形势,面向市场需求,改革软件人才培养模式,加大软件人才培养力度,已经成为当前高等教育改革与发展的一项重要和紧迫任务。为此,教育部从2001年起选择了若干高等学校,支持其试办示范性软件学院,并开设本科软件工程专业。我校软件学院是教育部、国家计委批准的首批试办的示范性软件学院。学院利用学校在计算机和数学学科上的优势,借鉴国内外优秀的管理经验和教学模式,十分注重软件工程专业的培养目标,根据软件企业的需求,按照工程化、国际化的培养方向,建立复合型软件实用人才的培养模式,加大复合型软件实用人才培养力度。
而“计算机组织与结构”作为计算机专业的重要专业基础课也被列入我院软件工程专业的培养计划中,在一系列软件、硬件课程中处于承上启下的作用。但由于软件工程专业自身特点,使得该课程的内容选择、教学目标、课时分配等方面都与传统的计算机专业不尽相同,为了适应更好地适应本专业教学体系要求,我们对该课程教学进行了一些有益的尝试和探索,获得了学生的认同,取得了比较满意的效果。
1 合理选择教材与教学内容
由于课时所限,我们将计算机科学专业开设的“计算机组成原理”和“计算机系统结构”两门专业课整合为“计算机组织与结构”,安排在本科生第三
学年上学期讲授,理论教学计划56学时。前修相关课程包括汇编语言、数字逻辑与系统设计,后续相关课程包括操作系统、编译原理等。此时学生对计算机应用性知识已经相当熟悉,很大一部分学生已经具有了比较好的软件编程能力。但本课程所涉及的主要是计算机硬件原理知识,内容比较抽象,而且理论概念较多,学生们觉得该门难懂难学,且对他们未来职业可用性不大,学习积极性普遍不高。针对这些情况,我们首先根据专业需求重新定位课程目标,目标不应再定位于培养学生未来从事硬件开发的能力,而是要求学生能从系统角度来理解计算机的整体实现,培养学生对硬件系统的分析及应用能力。
基于上述指导思想,我们在众多教材中最终选定由William Stalling编写、张昆藏翻译的国外著名计算机教材《计算机组织与体系结构——性能设计》(第7版)为主教材[1]。因为:一是该教材把计算机系统性能问题和计算机组成的基本概念与原理有机联系起来,而且介绍层次感更强,知识涵盖性比较宽,但总体难度并不是特别大,学生接受起来比较容易;二是该教材版本更新非常快,能很快捕捉业界新技术的发展,实用性比较强。同时,我们也推荐了白中英主编的《计算机组织与结构》(第4版)[2]和王爱英主编的《计算机组成与结构》(第4版)[3]作为辅助教材,满足不同层次的学生学习的需要。
根据教学大纲以及教学计划的安排,我们对本书18个章节都进行讲授,但内容侧重不同,重点讲授
作者简介:李晨,女,讲师,研究方向为计算机组成、信息融合理论;朱利,男,副教授,研究方向为计算机组成、计算机网络。
的内容包括:第二部分中Cache存储器章节,第三部分中CPU结构和功能以及指令级并行和超标量处理器章节,第四部分并行处理章节。对于这些章节,除了教材内容讲授,还穿插了例题讲解、实例分析等多种手段来加深学生理解。而其他章节则主要以介绍教材内容为主,同时也根据需要适当的补充相关知识,如在内部存储器部分,我们就补充了存储器芯片字扩展、位扩展以及字位扩展的方法等,弥补了学生在考研复习时的盲区。
2 依据本专业特点讲解知识内容
相比传统的计算机专业,软件专业学生对软件开发兴趣很大,但对于硬件成分比较多的计算机组成和结构课畏惧情绪严重。我们针对学生的这些心理,在讲课中坚持自顶向下、分层展开的原则来介绍计算机系统的性质与特征,并将软硬件互通的理念渗透讲述之中,同时尽可能多地引入与软件相关的例子,调动学生学习兴趣。如在讲CPU结构和功能这一章时,流水线的概念讲解完,我们会启发学生:这样的硬件设计思想同样也可以用于多线程并行处理,如在视频处理时,一般都会有采集、编码、打包及发送这样步骤,可以把这几个步骤像流水线一样采用不同线程处理,在第一帧图像进入编码时,第二帧图像就可以进入采集模块,其他各帧类似,这样就可以并行对不同图像同时进行处理,计算效率更高,视频通信将会变得更为平滑。通过这样的讲解,学生不但对流水线的思想理解深刻,而且他们也会很惊奇于软硬件的联系,感到学有所用,在下面学习中,会比较主动地找软硬件之间的切入点。后面讲到IA-64中软件流水技术时,学生就非常容易理解,并能积极主动的表述自己的观点。
在学习了流水线以及超标量设计思想后,学生已经了解哪些情况会影响机器的并行性,这时我们会适时提示学生目前的机器基本都是采用流水线以及超标量的处理器,那么在软件人员进行高级的开发编程时,就一定要考虑到硬件特性,尽量避免过多的子程序调用,以及不必要的循环,从而达到整体提升系统效率的效果。这样一来,学生学习后的应用感就很强,学习动力得到了很大的提升。
3 多种教学方法并用,提升教学效果
在教学中为了达到教学目标,应当强调学生学习的主动性。作为专业基础课,计算机组成与结构课程的教学大部分还是以老师为中心,以知识的传递为主体。但不能说整个教学过程都如此单一,这样学生学习的主动性和积极性都会受到影响。我们要有意识地引导学生去主动思考[4],通过以下尝试让学生参与到教学实践活动中来。
1) 采用启发式教学方式调动学生的思维,引导学生得出合理的结论。如在讲存储器的层次结构时,我们先介绍一下目前各类存储器各自的特点,然后抛出问题让学生考虑如何处理存储器价格、速度和容量之间的矛盾。然后在学生充分思考的基础上水到渠成地引出目前所采用的存储器的三层结构,这样学生不但能够知其然,更能知其所以然。
2) 对于某些有重复的内容,鼓励学生自己上台讲解,然后老师进行总结补充。如当我们在讲输入输出这一章里关于IO操作可采用的三种技术时,由于学生在之前的汇编语言课上已经对编程式IO、中断驱动式IO以及存储器直接存取DMA方式进行了学习,在讲这部分内容时,学生往往觉得已经学过就会思想放松,态度不认真而导致学习效果不好。我们提前告知学生,这部分内容课堂上随机抽取同学先从汇编角度谈谈自己对这三种技术的认识,这样学生就会提前准备,学生讲完后,我们再从组成角度谈这三者的不同以及CPU不同的处理过程,这样学生真正体会从另外一个角度分析问题的必要性,对知识的理解也会更加深刻。
3) 重点内容加入讨论式教学,加强互动。在讲Cache时,同学们普遍反映映射技术替换算法很难理解,那么针对这个问题,我们在课堂上将这部分内容讲解完后,留出典型例子让同学们讨论分析当Cache应用三种不同的映射方式再采用不同的替换算法的会出现什么结果。学生觉得这种方式很新鲜,讨论中没有拘束感,气氛很活跃。这样在小部分理解能力强的学生的带动下,大家基本都能对这三种映射方式和替换算法的过程了解得比较透彻,最后老师只要稍加总结,学生们马上就能反映上来。
4 实验设计软硬兼顾,训练学生综合能力
对于我们这门课,它是理论性和实践性都很强的专业基础课。因此课程教学与实验上机相结合尤为重要,硬件实验是非常必要且重要的[5-6]。如何让软件工程专业的同学对硬件实验不但能提起兴趣,做通搞懂,还能把这些实验尽量和未来的就业需求有效结合,这成为摆在授课老师面前的一个难题。为此我们把软件实验也纳入实验环节,并把实验分为如下三个层次:基础性实验、综合性实验,开发性实验。基础性实验是配合理论教学内容,进一步加深学生对于理论知识的理解而开展;综合性实验为了培养学生的设计能力和分析解决问题的能力;研究性实验是更高层次的要求,是为了培养学生的创新思维和研究能力。这样的分层次教学和坚持理论和实践相统一的原则,更有利于培养软件专业学生的适应能力。
一方面我们主要使用由杭州康芯电子有限公司生产的GW48-CP+计算机组成原理实验开发系统(主芯片为FPGA)作为实验教学平台,另一方面引入少部分软件实验,配合验证硬件的性能。
这里,我们在学了MMX指令以后,就布置了一个软件验证性实验,让学生使用一般技术和MMX技术方法实现图像的淡入淡出操作来比较两者的不同,进而验证该硬件性能对处理速度的影响。这样学生一方面可以通过实验验证理论,对硬件的作用也有更直观的体会,另一方面对图像处理的软件编程有所触及。实验过程中由于图像处理可视化效果好,学生做起来也很新鲜。
当然软件实验只是一种有益的补充,这门课还是要以硬件实验为主,那么在基础性实验部分,我们也布置了如运算器、存储器等实验。一方面让学生熟悉实验环境和硬件编程语言,另一方面使学生进一步学习并掌握计算机主要部件工作原理,
在综合性实验部分,我们安排了设计基本8位模型机等,让学生在前一阶段的实验基础上,运用微程序的设计思想来构建模型机,掌握整机运行模式,进一步巩固理论知识的理解。
在研究性实验部分,打破完全硬件实验的思路。我们要求学生在已有实验平台上根据某些应用的实际需求,完成一个基于NiosII的SOPC系统的设计,使系统具有一定的技术先进性和实用价值。在实施方法上,我们全程配合开放性实验室,实验以分组形式进行共同设计调试,一般4~5人一组,。学生需要进行开发平台应用分析,在此基础之上学生根据自己的爱好、能力进行选题,每组学生需提交正式的选通报告,由指导老师对选题进行审核。接下来开始进行系统总体设计与系统详细设计并提交相关报告,然后由各组自行安排组内成员在QuartusII中搭建硬件原理图并进行仿真测试,最后完成硬件测试报告。下一步就需要针对所要实现的具体功能,编写相应的C语言控制程序,最终在NiosII的环境下,载入硬件系统进行软硬件的联调,并完成功能测试报告。在每个系统开发阶段组织讨论会,由老师检查各阶段的进度和质量,最终验收并评定成绩,期间教师不过多参与学生设计,鼓励学生相互交流讨论,自己动手实验解决问题,提高学生的自主学习和动手能力。通过这一阶段实验,学生对计算机的内部结构有了更明确的了解,同时对当代计算机的硬件设计有了比较全面的认识,同时也发挥了本专业学生软件编程的特长,对于底层的C语言开发进行了很好的锻炼,使之了解软硬件之间的配合,为以后的就业也打开了一个新的方向,学生们普遍反映收获很大。
5 适时穿插本学科的最新科技动向
现在很多学生也都比较关注业界新技术的发展,但是他们对新技术的实质以及他们和原有技术之间的关系都不清楚,对这方面知识有很强的渴望。那么教师在课堂上讲到相关内容时,适时地对新技术进行介绍,不但能化解学生心中的疑云,活跃课堂气氛,更能促使他们自己查找资料跟踪新技术新动向,为日后良好的职业习惯的培养奠定基础。如讲到磁盘时,可以针对目前市场上大容量磁盘采用的垂直存取技术进行介绍,让学生能明白如何能在成本不变的条件下,达到磁盘容量大规模增加的效果。还有在讲完并行系统时,可以对业界热点——云计算技术进行说明,更让学生感到新技术并不遥远,促使其有深入研究的兴趣。
6 结语
在研究型大学的背景下,在培养学生的过程中,我们本着对学生创新能力和实际工程能力培养相结合的思路,坚持以学生为本,对计算机组织与结构课程的教学进行一些改革和探索。随着科学技术的不断发展,计算机技术更是日新月异,课程教学也需要不断更新变化,所以未来我们仍要不断学习,结合实际继续摸索,使课程改革成为一个持续不断的过程,以取得更好的教学效果。 (下转52页)