从硕士研究生入学统考看高校计算机本科专业基础课教学
2013-11-08袁春风
袁春风 陈 睿
2006年,教育部启动硕士研究生招生初试科目改革,于2007年在教育学、历史学、医学门类,2008年在农学门类进行专业基础综合科目的全国统考,2009年在计算机一级学科进行计算机专业基础综合科目的统考,并以此作为工学门类全国统考的试点。通过对4年计算机专业基础综合统考科目考试成绩的跟踪和分析,发现我国高校计算机本科专业基础课的教学存在“轻应用、缺关联、少综合、无系统观”等问题。本文以计算机专业基础综合统考科目中组成原理为例,对相关统计数据进行分析,以期对高校计算机本科专业基础课的教学改进有所启示。
1 抽样统计数据分析
计算机专业基础综合统考涵盖大学计算机本科教学的4门专业基础课,满分150分。其中,数据结构和组成原理各占45分,操作系统占35分,计算机网络占25分。各门课程的考试结果抽样统计数据见表1。
表1显示,计算机专业基础综合试卷的整体难度偏难,2012年难度值下降较多与抽样地区改变有关。在4门课程中,组成原理试题4年的平均难度值最小,故本文以组成原理为例,按照试题考查的能力层次进行分类,得到考查不同能力层次的试题难度如表2所示。其中识记层次考查基本概念或术语的定义,理解层次考查对基本概念内涵的理解,包括对相关技术特点的提炼和总结、对处理过程中每个步骤的意义以及各步骤关联关系的理解等;简单应用能力考查考生运用单个概念分析和解决问题的能力;综合应用能力考查考生运用多个相关概念分析和解决问题的能力。
表1 2009—2012年计算机专业基础综合统考各门课程抽样统计难度值
表2显示,就组成原理课程来说,综合试卷中考查识记的分值较少,考生掌握情况良好;对于理解和简单应用能力层次,考查分值占全卷的50%左右,难度有所提高;对于综合应用能力层次,考查分值也占全卷的50%左右,试题难度较高,并且试题涉及的知识点越多难度越高。
2 典型试题分析
表2 2009—2012年组成原理试题按照能力层次划分的考点分布比例及抽样统计难度值
从上述抽样统计数据和按考查能力划分的试题得分情况来看,抽样数据反映出来的情况与考试设计的难度存在一定偏差。是试题偏、难、怪,还是考生对知识的掌握有欠缺,亦或是教学环节在对考生的知识传授和能力培养方面存在一定问题?下面以组成原理试题为例,试图分析造成这一偏差的原因。
例1:(2012年第43题)
假定某计算机的CPU主频为80 MHz,CPI为4,并且平均每条指令访存1.5次,主存与Cache之间交换的块大小为16B,Cache的命中率为99%,存储器总线宽度为32位。请回答下列问题。
(1)该计算机的MIPS数是多少?平均每秒Cache缺失的次数是多少?在不考虑DMA传送的情况下,主存带宽至少达到多少才能满足CPU的访存要求?
(2)假定在Cache缺失的情况下访问主存时,存在0.0005%的缺页率,则CPU平均每秒产生多少次缺页异常?若页面大小为4 KB,每次缺页都需要访问磁盘,访问磁盘时DMA传送采用周期挪用方式,磁盘I/O接口的数据缓冲寄存器为32位,则磁盘I/O接口平均每秒发出的DMA请求次数至少是多少?
(3)CPU和DMA控制器同时要求使用存储器总线时,哪个优先级更高?为什么?
(4)为了提高性能,主存采用4体交叉存储模式,工作时每1/4个存储周期启动一个体。若每个体的存储周期为50 ns,则该主存能提供的最大带宽是多少?
此题主要考查考生对层次化存储系统的基本概念和基本原理的理解和掌握情况,考查考生是否真正理解在指令执行过程中CPU访问Cache、主存和磁盘的过程,从而考查考生是否具有运用多个相关概念进行问题分析的能力。为了降低试题难度,对问题描述进行了简化。考生只要理解CPU访存过程和每个概念的含义以及概念之间的关联,就能容易地给出答案。虽然该题涉及的概念和知识点多,但这些知识点都是计算机专业最核心、最基础的内容,是考生必须掌握的,也是《计算机专业基础综合考试大纲》中明确考查的内容,但是考试结果却非常令人失望,抽样统计难度只有0.246,有28.6%的考生得分为零,58.7%的考生得6分以下(满分为12分)。抽样结果说明,有相当一部分考生在本科学习阶段没有很好地掌握指令执行过程中CPU访存过程这个重要知识,对层次化存储系统的基本概念和工作原理没有真正掌握,而且综合分析问题和解决问题的能力很差。既然此题考查的是课程核心的、基础的内容,考生在课程学习中就应掌握,加之考前复习,不应该有近90%的考生只得到一半分数以下。经调查教授此门课程的教师,教师反映与教学过程中对课程核心内容的强调不够,缺乏对概念间相互关系的讲解,学生一知半解,而且有的教材内容陈旧,存在错误,一些授课教师水平有限,只能机械地按照教材内容授课,把错误的内容教给了学生。这一情况尚存在于我国高校特别是地方院校的本科教学中。下面这道题也同样反映了这种状况。
例2:(2010年第44题)
某计算机的主存地址空间大小为256 MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行中数据块大小为64 B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下所示:
假定int类型数据用32位补码表示,程序编译时i,j,sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。
(1)若不考虑用于Cache一致性维护和替换算法的控制位,则数据Cache的总容量为多少?
(2)数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)?
(3)程序A和B的数据访问命中率各是多少?哪个程序的执行时间更短?
Cache技术是现代计算机系统中广泛使用的一种加快信息访问的技术,其分块化思想和访问局部性原理与程序设计密切相关。本题旨在通过让考生对比分析两个源程序实例中数组元素在Cache中的访问过程,考查考生对Cache技术的理解程度和运用能力,从而有效地考查考生分析问题和解决问题的能力。本题考查点涵盖了Cache技术中的各类问题,包括主存地址划分、Cache的组织结构和访问过程、Cache行与主存块的映射方式、访问局部性和命中率的关系、替换算法等,是一道典型的综合应用能力测试题。抽样数据显示其统计难度仅为0.181,是4年试卷中难度最低的一道综合应用题,得零分的考生占31.2%,考试结果非常不理想。通过分析试题发现,求解问题所要用到的基本概念和基本原理也都是课程中最基础的核心内容,试题内容既不偏也不怪,考试结果不理想,说明考生对基本原理的掌握和对所学知识的运用能力都比较欠缺,也反映了在对有关Cache内容的教学过程中,教师没有抓住Cache的本质进行讲解,脱离程序设计讲Cache,学生无法深入理解Cache的基本原理和实现技术,也无法体会Cache在计算机系统中的重要性。当然,本题将程序设计和Cache结合起来考察,给出的视角比较新,在复习资料中可能很难见到,考生不熟悉,无形中增加了试题难度。但是,如果试题的变化使得几乎所有考生都不知如何下手,这也在一定程度上说明我们的计算机专业本科教学在创新型人才培养方面存在缺陷。如果大学培养的都是只会按套路做题、按公式套题的死记硬背式的“人才”,那么我国的高等教育质量从何保证?
例3:(2011年第43题)
假定在一个8位字长的计算机中运行如下类C程序段:
若编译器编译时将8个8位寄存器R1~R8分别分配给变量x、y、m、n、z1、z2、k1和k2。请回答下列问题。(提示:带符号整数用补码表示)
(1)执行上述程序段后,寄存器R1、R5和R6的内容分别是什么?(用十六进制表示)
(2)执行上述程序段后,变量m和k1的值分别是多少?(用十进制表示)
(3)上述程序段涉及带符号整数加/减、无符号整数加/减运算,这四种运算能否利用同一个加法器及辅助电路实现?简述理由。
(4)计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?上述程序段中,哪些带符号整数运算语句的执行结果会发生溢出?
本题也是一个典型的应用能力测试题,考查的是将定点数表示及其加减运算基本原理运用到程序调试中的能力。定点数表示及其加减运算基本原理是组成原理课程中最基本、也是最容易理解和掌握的内容,按理说得分应该比较高,可是抽样统计数据显示,难度仅为0.44。其中,得零分的考生占7.1%,得1~6分的占64.5%,得7~9分的占25.6%,得10~11分的仅占2.8%。考试结果显示,考生不能很好地将程序设计中的问题与数据表示和数据运算中的知识联系起来,即不能将所学基本原理运用到具体的应用问题中。计算机专业是一门应用性和实践性很强的专业,学习概念和原理就是为了应用,如果掌握了概念,弄懂了原理,但是不会应用,那么学习的概念和原理也就失去了意义。本科教学不仅是教授学生掌握知识和概念,更重要的是应该引导学生学会应用,教师应该在学生基础知识的掌握和实践能力的培养之间发挥桥梁作用。
3 思考与建议
通过分析计算机专业基础综合统考中组成原理试题,发现考生及高校计算机本科专业基础课教学存在如下问题:第一,考生专业基础知识较差,对于一些基本概念和基本原理认识和理解不到位,一定程度上反映了本科教学中教师对一些基本概念和原理没有讲清讲透;第二,考生分析问题能力较差,遇到问题只会照搬公式套概念,而不会融会贯通地灵活运用,反映了考生在学习和复习过程中普遍存在“死记硬背”现象。由此,也透视出在教学过程中,教师没有很好地将基本概念和基本原理与实际问题结合起来进行讲解,缺乏对考生分析具体问题能力的训练;第三,考生综合运用能力较差,缺乏将多个相关知识关联起来解决应用问题的意识,说明教学中没有很好地对学生进行这方面能力的培养;第四,考生缺乏对这些专业基础课的整体认识和把握,不清楚课程之间的关系,甚至一门课中知识和知识之间的关系都搞不清楚,学到的知识是割裂的,这充分反映出本科教学的弱点,教师没有意识将所教课程与其他相关课程有机结合,导致学生难以掌握课程的本质和精髓。
从以上分析可以看出,我国高校计算机本科专业基础课教学存在着“轻应用、缺关联、少综合、无系统观”等问题,应从改变教学理念、更新教学内容和教学手段、加强教学交流入手,加强课程核心内容的教学,加强考生对专业基础知识体系的认识,加强学科实际应用知识的教学,加强学生实际应用能力的培养,让本科教育真正成为我国创新型计算机专业人才培养的摇篮。
从2007年开始的硕士研究生入学考试专业基础综合统考经过几年的检验显示,考试的反拨作用促进了教学的发展,推动了本科生对专业基础知识全面系统的学习。在2007年硕士研究生统考专业基础课推出后,一些高校按照考试大纲中规定的考试内容制定其教学内容,原来有些没有开设的课程或者原来课时安排较少的课程被列入学校重点教授的课程之列;再如一些地方院校原来不重视实验课的教学,甚至连基本的实验条件都不具备,在2008年农学门类开考后,因为考试内容中有关于实验的内容,所以这些院校开始引进实验设备,开设实验课程。此外,初试统考突出了人才选拔的基本标准,增加了考试的公平性和安全性,显现了校内自命题考试无法比拟的优势,建议继续推进硕士研究生招生初试专业基础综合统考科目,以解决目前初试形式繁杂,考务管理任务繁重,入学选拔标准不统一,学校自命试题存在科学性、安全性隐患等问题。
[1]教育部考试中心.2012年全国硕士研究生入学统一考试计算机专业基础综合联考考试大纲[M].北京:高等教育出版社.2012.
[2]陈睿.硕士研究生招生考试初试科目改革刍议[J].北京师范大学学报(社会科学版),2008(增刊).