刊文精选

非计算机专业《计算机原理》课程教学实践探索

来源:教育教学论坛     2019-3-12 20:04:44      点击:

马胜 唐玉华 陆洪毅 王志英

摘要:非计算机专业的《计算机原理》课程的教学实践面临着诸多挑战。本文探索了国防科技大学《计算机原理》课程教学团队的教学实践,教学团队针对课程教学的特点,在教学内容、教学方法、实验和习题设计方面进行了改革,取得了良好的教学效果。

关键词:计算机原理;非计算机专业;教学实践

中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2018)42-0135-03

一、引言

《计算机原理》是信息与通信工程、自动化、电气机械等非计算机专业的一门关于计算机基本结构和工作原理的基础课。当前,各大高校对计算机专业的《计算机原理》课程的教学理论和实践方法研究较多,也取得了一定的成果[1-4]。但是对非计算机专业的《计算机原理》课程的建设关注却较少,导致如何有效面向非计算机专业的学生讲授《计算机原理》课程依然是一个值得研究的课题。

《计算机原理》课程具有涵盖内容多、知识点离散、知识更新快等特点。此外,与计算机专业相比,非计算机专业的《计算机原理》课程还具有学生计算机基础不足和课程课时较少两个显著的特点[5]。这两个特点大大提高了面向非计算机专业学生讲授《计算机原理》课程的难度和复杂性。一方面,学生的计算机基础不足导致需要更多的课时才能让他们掌握课程的知识。另一方面,受限于各个专业的人才培养体系,非计算机专业一般只给《计算机原理》课程安排了有限的课时。比如,在国防科技大学,为计算机专业学生开设的《计算机原理》课程的课时高达90个学时,但为非计算机专业学生开设的《计算机原理》课程的课时只有54个学时。因此,如何在有限的课时内让计算机基础较差的非计算机专业学生有效地学好《计算机原理》课程,无疑是一项具有较高挑战性的工作。

二、课程教学特点

《计算机原理》课程是一门公认的较难讲授的课程,而面向非计算机专业的学生讲授《计算机原理》课程无疑是一项更为艰巨的挑战。本节简要分析了非计算机专业《计算机原理》课程的教学特点。

1.教学内容多,知识点离散。《计算机原理》课程涵盖的内容非常丰富,从基本的数制表示到复杂的软硬件协同管理的虚存都有涉及,课程需要讲解一个完整主机的各个组成部件,包括中央处理器、存储器、总线和各类外设等。为方便学生理解各个部件的结构和工作原理,课程还要求学生理解和掌握汇编语言,以便对这些部件进行编程操作。《计算机原理》课程不但涵盖了很多的知识点,且这些知识点之间的离散性也较强,它们大都针对不同的部件。比如,中央处理器的流水线设计是一个非常重要的知识点,但是这个知识点与其他章节的内容基本无关。又如,包括串口、并口、定时器在内的各类外设接口都是独立设计的,它们的工作机制和编程方式各有特点,很难总结出公共特性。涵盖内容多使得学生需要学习很多知识点,知识点离散又进一步增加了学生理解和掌握这些知识点的难度。

2.知识更新快。《计算机原理》课程作为一门基础课程,需要重点关注计算机组成结构和工作机制最本质、最基础的部分。但是计算机领域是一个更新发展非常快的行业,很多新技术层出不穷,为了使学生学习到的知识与现实生活的采用技术紧密相关,课程又必须涵盖业界的一些最新进展。比如,目前固态硬盘已基本成为各类计算机的一种标配,在课程教学中应相应地增加对固态硬盘的介绍,否则学生在学完课程后还是感觉对自己日常接触的计算机的结构不了解,进而影响学习本课程的收获感。

3.学生基础差。非計算机专业的学生在上《计算机原理》课程之前先修的计算机类课程较少,一般只先修了《大学计算机基础》和《C语言编程》这两门课程,导致《计算机原理》课程当中遇到的一些基本概念以前没有接触过,学习起来难度较大。比如,部分学生对补码的运算过程理解不清楚,在设置各种溢出标志位时会比较困惑,需要教师从多角度反复讲解才能理解。又如,学生之前基本上没有接触过三态门的概念,当讲解总线连接需要使用三态门时,学生往往难以理解,需要教师及时对三态门的概念做出解释。

4.课时数量少。与计算机专业一般给《计算机原理》课程安排90甚至上百个课时不同,受限于各自专业的人才培养体系安排,非计算机专业一般只给《计算机原理》课程安排较少的课时数。如何在较少的课时内让学生学习好《计算机原理》课程无疑是一个较大的挑战,同时课时数较少也在一定程度上影响了学生对《计算机原理》课程的重视程度。在上述关于《计算机原理》课程的教学特点分析中,第一个特点和第二个特点是计算机专业和非计算机专业存在的共性问题。第三个特点和第四个特点是非计算机专业特有的问题。在面向非计算机专业学生讲授《计算机原理》课程时,必须针对这四个特点进行教学实践活动的设计。

三、课程实践情况

1.教学内容设计。《计算机原理》课程的教学目标是要求学生理解计算机组成的基本原理和工作过程,但计算机专业和非计算机专业各有侧重,计算机专业倾向于教学生设计好计算机,而非计算机专业倾向于教学生用好计算机。教学团队紧紧围绕非计算机专业的教学目标选择合适的教材,对教学内容进行合理地规划。所选择的教材是电子工业出版社出版,东南大学杨全胜等人编写的《现代微机原理与接口技术》,教学内容大部分来自这本教材。辅助教材是机械工业出版社出版,龚奕利等人翻译的《深入理解计算机系统》。为了让学生“用好计算机”,教学团队为课程规划的教学内容充分强调了对使用计算机的重视,使用计算机的一个重要方式是接口编程,因此课程将大量内容用于讲解IO接口技术,并详细讲解了三款接口芯片的使用,包括8254定时器芯片、8255并口芯片和8259中断控制器芯片。教学团队对每一讲的内容都精心设计,充分考虑非计算机专业学生的需求和他们的计算机基础,将每一讲教学重点集中于一些原理性的、根本性的概念上,对一些较复杂的与计算机使用关联不大的内容则采取略讲的方式。比如,在讲解处理器结构与原理一讲时,乱序执行是提升计算机性能的一个重要手段,因此重点介绍了指令乱序执行的过程,并重点解释了它能获得性能提升的原因。但是乱序执行的实现涉及到许多复杂的硬件结构,如保留站、重排序缓冲等,这些硬件结构与使用计算机关联不大,因此课程对它们进行了略讲。又如,Cache是一种典型的挖掘程序局部性的结构,因此cache结构是存储器系统一讲的一个重点,但是cache的替换较为复杂,存在各种不同的替换算法,课程对它们进行了略讲。通过精讲和略讲相结合的方式,重点突出了与用好计算机最相关的内容,同时也对相对较复杂的一些设计进行了简单介绍,方便有兴趣的学生进一步学习。针对课程知识更新快的特点,为了充分调动学生学习的兴趣和积极性,课程将一些业界最新进展引入了教学内容中,包括GPU结构及其对并行性的挖掘、固态硬盘结构、多核处理器结构、2.5D堆叠存储的设计等。学生通过学习这些紧贴业界进展的知识,提高了他们将所学知识应用到现实生活中的能力,提高了他们学习这门课程的收获感。

2.教学方法设计。由于非计算机专业学生的计算机基础较差,为易于学生理解和掌握课程的知识点,教学团队在教学中大量采用与现实生活贴近的比喻。比如,使用洗衣服的过程来解释流水线的工作原理,洗衣服需要洗衣、烘干和熨烫三个步骤,正好跟一个三级流水线相对应。又如,中断和异常是两个容易混淆的概念,两者都会打断处理器当前的任务执行,区别在于中断是由与处理器当前执行任务无关的事件引起的,而异常是由处理器当前执行的任务引起的。为解释清楚中断和异常这两个概念,教学团队引入了现实生活中的一个例子:假设某人正在吃饭,此时电话铃响就是一个中断事件,而如果吃饭过程中被鱼刺卡住了喉咙,就是一个异常事件。

3.实验设计。《计算机原理》课程是一门对实践性要求较高的课程,学生必须通过动手实验才能充分理解所学到的理论知识。为此,教学团队为课程设计了六次实验,具体内容如表1所示。

汇编语言是使用计算机的一个重要工具,学生通过编写汇编程序能更好地理解计算机的组成结构和工作原理,因此教学团队为汇编语言设计了三个实验,分别是标志寄存器的设置、分支程序的设计和子程序的调用设计。汇编语言编程是基于Emu8086工具开展的,Emu8086模拟了一个8086处理器平台,支持单步执行、查看各种寄存器和存储器的值。为了加深学生对cache的理解,教学团队在存储系统一讲中安排了一次关于cache的实验,实验要求学生完成查看本地cache的结构信息、编程验证cache行的大小、cache失效率的统计、cache禁用和启用等操作。实验过程使用valgrind软件中集成的cachegrind工具统计cache失效次数。Cache的禁用和启用是通过使用汇编语言对CR0寄存器进行设置实现。

最后两次实验是接口编程实验,分别在TMC-2开放式实验箱上进行定时器编程和并行接口编程,定时器编程需要基于8253定时器完成一个音乐跑马灯和一个音乐盒的实现,并行接口编程需要基于8255并口芯片完成三种方式的通信实验,并且在进行方式1实验时发出中断请求。接口编程需要使用汇编语言,因此也进一步锻炼了学生的汇编程序设计能力。

4.习题设计。针对《计算机原理》课程存在知识点离散的特点,教学团队精心设计了一些能将多个知识点串联起来的习题,学生通过完成这些习题能较好地将多个知识点联系成一个完整的整体,加深他们对这些知识点的理解和应用能力,本节简要地给出一个例子。

Cache结构和虚存管理:传统教学方法一般为cache结构和虚存管理设置独立的习题,导致学生即使能较好理解这两个知识点,但也无法将它们串联成一个整体。为此,教学团队特意设计了如下类型的习题。

这个习题要求学生理解对一个虚拟地址的访问过程,访问涉及到如下步骤:(1)通过查找TLB表格将虚拟地址转换成物理地址,查找TLB表格需要确定虚拟地址中哪些位分别表示页内偏移、虚页号和TLB标记;(2)获得虚页号和TLB标记后,访问TLB表格。如果TLB命中,就将虚页号转换成物理页号,得到物理地址;(3)如果TLB缺失,接下来就访问页表,从页表中获得物理页号,得到物理地址;(4)CPU得到物理地址后,访问L1D cache。访问L1D cache需要确定物理地址中哪些位分别表示cache行内偏移、cache行号和cache标记;(5)获得cache行号和cache标记后,访问L1D cache。如果cache命中,则返回L1D cache中的数据。如果cache缺失,則访问主存。从上述过程可以看出,本习题较好地将虚存管理和cache访问两个知识点整合在一起,完成本习题需要学生掌握虚拟地址到物理地址的转换机制以及cache的访问过程。除了上述例子外,教学团队还精心设计了许多其他串联多个知识点的习题,包括综合使用8253定时器芯片、8255并口芯片和8259中断控制器芯片的习题,综合磁盘访问、主存访问和cache访问的习题。通过类似的综合性习题的设置,较好地提高了学生有效掌握多个知识点的能力,加深了学生对完整主机的理解和掌握。

四、教学效果

教学团队针对课程教学效果进行了统计分析。2017年秋季学期教学团队共承担了两个班的教学任务,教学团队通过多种手段提高了学生学习的积极性和兴趣,两个教学班的大部分学生都能集中精力听讲,学生上课睡觉的现象得到显著改善。

五、结语

如何面向非计算机专业学生讲授好《计算机原理》课程是一项较具挑战性的工作。教学团队针对非计算机专业《计算机原理》课程内容多、知识点离散、知识更新快、学生基础差和课时少等特点,对教学内容、教学方法、实验和习题进行了精心地设计,取得了良好的教学效果。

参考文献:

[1]任江春,肖侬,王志英,唐玉华.“计算机原理”课程教学模式的新探索[J].计算机教育,2008,(22):111-112.

[2]晏伯武.计算机组成原理的教学探讨[J].福建电脑,2017,(9):64-65.

[3]陈微,梁正发,唐玉华,王志英,肖侬.计算机原理课程实验探索[J].计算机教育,2014,(15):23-27.


本文版权归教育教学论坛杂志社及本文作者所有,未经同意,不得转载! ——《教育教学论坛》查稿电话:0311-85178286