计算机教育观念革新,胡伟武:光会用还不够
CPU和操作系统是计算机系统的核心,也是我国信息技术中的薄弱部分。与此相关的《数字逻辑》、《计算机组成原理》、《计算机体系结构》、《操作系统》等课程是计算机、软件工程等专业的重要基础课程。虽然中国计算机专业课程体系完善、课程内容成熟,但在高素质计算机专业人才的培养方面还存在一些普遍性问题,并直接导致我国计算机领域的教育更多的还是教学生如何"用"计算机而不是"造"计算机,并直接引发一系列问题。相比之下,西方的计算机教育体系则更加科学合理。
10月21日,在2016中国计算机大会期间,由教育部高等学校计算机类专业教学指导委员会和中国计算机学会教育专委会主办的"面向计算机系统能力培养的龙芯CPU高校开源计划"正式启动,龙芯将GS132和GS232两款CPU核向高校和学术界开源,中国科学院大学为首的一批高校开展教育改革试点,则不失为突破人才困境和技术困境的有益尝试。
美国名校计算机教育情况
南京大学计算机科学与技术系袁春风教授的文章《计算机专业系统能力培养的探索与实践(一)》中介绍了美国四所知名高校计算机教育的情况,笔者总结归纳如下:
麻省理工学院电气工程与计算机科学系的教材《Principles ofComputer System Design: An Introduction》内容涵盖了计算机体系结构、操作系统、网络等多门课程中的重要概念,包括计算范式、并行、跨层通信、资源分配与调度、虚拟化等。它包含了一个程序员为开发高性能应用而必须知道的关于系统内部的所有关键概念和知识。
加州大学伯克利分校有一门计算机系统的必修基础课CS 61C,涉及的内容包括C语言编程、汇编程序设计、流水线CPU等硬件逻辑电路设计、Cache模拟和多核多线程编程等。CS 61C的后续课程是EECS 150,是数字系统设计课程,它要求学生完成能够实现大多数常用指令的五级流水线MIPS CPU,这类课程非常锻炼学生的实践能力,通过动手实践完成系统能力培养的螺旋式上升。
卡内基梅隆大学的计算机科学学院与斯坦福大学计算机科学系的教学内容和实验内容也大同小异,都是通过一组精心设计的C语言编程实验,使学生能够更好地了解高级语言程序转换为机器代码的过程,深刻理解底层机器的系统结构,包括指令格式、数据表示、寄存器组织、Cache结构、虚存空间的映射等,提高编制高效程序和调试程序的能力,并为后续的体系结构、编译技术、操作系统等课程打下良好的基础。
以下为美国上述四所学校计算机系统入门课程表。
从美国四校相关课程的教学内容以及设计的实验内容来看,充分说明了四所学校非常注重学生的系统能力培养,通过专门的一门课程把计算机系统的各个层次串起来,为学生完整地、全面地认识计算机系统打下了良好的基础。
中国计算机课程缺乏系统性和深度
中国计算机专业各课程大多独立设计和实施,各门课程独立规划、知识冗余及衔接脱节。计算机专业课程具有很强的系统性,难以分隔,若要真正掌握知识,就必须把所有知识点融汇贯通。
袁春风教授在其文章中提到,在国内绝大多数高校开设的课程中,很难找到可以与上述四所美国学校相提并论的有足够份量的关于计算机系统的入门课程……国内绝大多数高校基本上仅是硬件概述,既不会与高级语言编程建立关联,也没有讲清楚CPU与操作系统的关系,对于与编译相关的知识也甚少提及,在硬件设计方面也远远没有达到加州大学伯克利分校CS 61C课程的深度。
某种程度上,目前国内高校计算机系统概论、计算机系统入门或导论之类的课程,内容广而不深,什么都讲一点,什么都讲不透。而且在现今的教学体系中,前后课程知识不能有效整合与衔接,课程间知识的重复比较严重,这些因素使得学生难以系统地理解课程知识体系。
此外,国内大多数学校的教学课程基本上还是沿用传统的教学理念,没能与时俱进,不像美国那样,可以让学生真正了解如何用硬件描述语言通过FPGA来设计现代计算机硬件系统。因此,中国的计算机组成原理课程相对于与美国的计算机系统教育课程而言,在系统性、广度和深度又都相差很远。
缺乏具有工程规模的系统实践
在《面向高校系统能力培养的龙芯CPU开源计划》中提到,在现今的教学体系中,更多的是原理性、分析式教学方法,缺乏工程性、综合式教学方法。课程教学往往突出原理性知识的传授,注重是什么,有什么,教学方式趋于死记硬背,计算机体系结构的诸多概念,对于学生教学而言仍然停留在概念阶段。由于计算机系统设计相当复杂,涉及底层的软硬件基础架构,加上往往没有讲授一套有
- 台积电满脸“苹果光”(05-06)
- 智能手机陷入“千机一面”怪圈(06-08)
- CPU/APU:一场无声的反垄断技术较量(06-21)
- 移动设备纷纷采用多核CPU遭质疑:性能过剩(01-12)
- 系统级芯片SoC真的能取代传统CPU?(04-26)
- 国产CPU:放手一搏正当时(05-11)