CMU(卡内基梅隆大学)
与MIT、伯克利等学校计算机科学仍然和电子与电气工程同处一系不同,CMU的计算机科学系成立于1965年,是全美最早的,如今它已经升格为计算机科学学院。其研究生项目中除了机器人方向与硬件关系较多之外,其他基本上都是纯软的。从这个意义上来说,CMU的教学体系对于偏软的计算机科学系应该有较大的借鉴意义。
CMU的教学手册上没有从传统意义上针对计算机科学专业学生的导论课,虽然有名为“计算机科学伟大思想”的两学期课程,但是从内容上看应该是离散数学的替代,因为此外CMU并没有其他离散数学方面的课程。此课程没有教材,内容比传统离散数学要灵活得多,涉及概率、代数、算法、加密理论、复杂性理论、博弈论等,非常注重学习的趣味性和实用性。
与其他名校相同,CMU对程序设计的重视也给人留下很深印象:本土新生的第一堂课就是“初中级程序设计”,直接讲授Java。然后是中高级程序设计(Java)、C语言编程技巧、高级编程实践(Java)、程序设计原理(用SML语言讲授)。
目前计算机科学专业教学计划中的一个难点,是硬件课程的设置问题。硬件知识体系本身非常丰富,但是硬件课程多了,又削弱了计算机科学专业的特色。CMU在这一问题上是怎样处理的呢?计算机科学学院的现任院长Randal E。 Bryant 亲自给出了回答,他用15~213“计算机系统导论”一门课(12个单元)完成了硬件知识的教学。这项教学改革的成果就是一本厚达900多页的书:《Computer Systems: A Programmer's Perspective》(中译本《深入理解计算机系统》已经由中国电力出版社出版)一书。他在该书的序言中说:“本课程的宗旨是用一种不同的方式向学生介绍计算机。因为,我们的学生中几乎没有人有机会构造计算机系统。而大多数学生,甚至是计算机工程师,也要求能日常使用计算机和编写计算机程序。所以我们决定从程序员的角度来讲解系统,并采用这样的过滤方法:我们只讨论那些影响用户级C程序的性能、正确性或实用性的主题。
比如,我们排除了诸如硬件加法器和总线设计这样的主题。虽然我们谈及了机器语言,但是不关注如何编写汇编语言,而是关心编译器怎样翻译C的各种构造,比如指针、循环、过程调用和返回,以及switch语句。更进一步,我们将更广泛和现实地看待系统,包括硬件和系统软件,讨论链接、加载、进程、信号、性能优化、评估以及网络与并发编程。这种做法使得我们讲授本课程的方式对学生来讲既实用、具体,又能实践,同时也非常利于调动学生的积极性。”
网站上的一些随书配套实验,也独具匠心。因此此书的成功是水到渠成的。根据配套网站上的列表,它已经被全球80多所院校采用作为教材。
MIT(麻省理工学院)
MIT的课程设置,只能用其学生起点高来解释。该校没有典型意义上的计算机科学专业,偏软的只有理论计算机科学和人工智能及其应用两个专业。因此没有类似于其他学校的导论课程。
在MIT的电子电气工程与计算机科学系中,所有学生都要参加如下四门课程:6.001“计算机程序的结构与解释”,当然与伯克利相同,采用的是 Abelson等编著的同名教材;6.002“电路与电子学”;6.003“信号与系统”(自编讲义);6.004 “计算结构”(Computation Structures),与伯克利的61C“计算机结构”对等(教材是自编课件)。此外有两门专业基础数学课:“概率系统分析”(教授自编教材)和“计算机科学数学”,后者的教材是国外院校普遍采用的Rosen所著《离散数学及其应用》(中文版由机械工业出版社出版)。
对MIT的学生而言,实验课程有多种选择:电气工程和计算机科学实验,模拟电子实验,数字系统实验,微机项目实验,半导体设备项目实验。此外,无论何种专业,都有软件工程实验课。值得注意的是,本科生各专业的必修课程中并没有软件工程课程。也就是说,软件工程的内容都在实践中完成了。带软件工程实验课的是因为提出Liskov替换原则而知名的女教授Barbara Liskov,她刚刚获得了2004年度的冯·诺依曼奖。作为美国工程院和艺术科学院的双院士,她几十年在软件开发研究方面的经验,将有力地保证这门实验课程的质量。
分析与总结
由上面的材料可以看出,各个学校的教学体系之间还是有不小差异的。这首先得归因于历史沿革形成的专业侧重、机构设置上的不同。其中MIT算是一极,由于和电子电气专业深深地融合,计算机专业带有很强的“硬派”色彩。而CMU可以算作另一极,计算机科学有自己的独立学院,非常罕见,因此它的课程设置“软化严重”——与硬件相关的只用一门课就解决了。UIUC和斯坦福由于都拥有独立的科系,所以可以归入后一阵营。伯克利可以认为处于两极中间,但是仔细分析起来,它的计算机科学专业目前虽然仍属于电子电气和计算机科学系,但是有相当大的独立性,1973年创立以来,一直有自己的主席和教学安排,所以离后者更近一些。
此外,各校在专业导入课程的设置上差别也非常明显。基本上可以分为三类。按IEEE-ACM《Computer Curricula 2001》(以下简称CC2001)的分法,斯坦福属于广度优先(有明确的注重广度的导引课程),MIT的属于函数为先(采用函数式语言),CMU和 UIUC属于对象为先(直接采用Java)。伯克利有些特殊,它有导引课,但是广度稍差,紧接着又采用函数语言,同时开设学生自学为主可以任选的多种语言课程,属于混合多元型。应该说各个学校在刚入门时如何调动学生积极性,培养对专业的感情上都有自己的思考。无论哪种类型,将课堂变得有趣,能够容纳更多计算机科学的方面,都已经成为一种趋势。
无论如何,各校存在的差异并不妨碍各自培养出同样优秀的人才,这也给我们提供了一种有益的启示,办学思路和方法应该是因地制宜的。
当然,总的来说,各学校之间的共性还是主要的。归纳起来,有这么几个特点,值得我们思考:
1、硬件课程整体在减少
偏软类的三所院校中,CMU最为彻底,硬件课程只有一门课,而UIUC也只有两门必修(两门体系结构),斯坦福也是两门(电子学、体系结构或数字系统)。其中的原因,前面引述的Randal E。 Bryant所言作出了解释,毕竟计算机科学需要关注的在计算机系统层次中已经越来越高,底层越来越变得透明了。事实上,CC2001中制定的硬件课程也只有一门。而国内目前一般还开设数字逻辑、微机原理、计算机组成与结构、微机实验等硬件类课程。
2、程序设计日益重视
在 CMU,UIUC和斯坦福,必修的程序设计类课程往往在四五门左右。伯克利加起来也有四门。MIT虽然没有大量前导性的编程课程,但是由于在后面计算机系统工程、计算机语言工程、软件工程实验、Web软件工程诸课程都有实际的项目要完成,所以实际学时也很多,UIUC的改革更说明了这一点。同时,还出现了强调提高程序设计技巧,与软件工程环境和工具相结合,提倡团队合作,高级程序设计课程与数据结构、算法课融合的趋势。这方面的代表有斯坦福。该校副系主任 Eric Roberts曾执教入门类课程多年,总结了一套在语言教学中融入软件工程和现代程序设计观念,结合算法和数据结构教学的经验。其成果就是《C语言的科学和艺术》和《C程序设计的抽象思维》两本书(影印版已由机械工业出版社出版)。作为CC2001工作组两位主席之一,他在C语言教学中强调库与接口设计、编程风格的重要性,并进而介绍抽象、封装的概念,产生了很大影响。反观国内目前很多学校的语言教学和程序设计教学,不仅学时偏少,与其他课程孤立,而且脱离实际,造成语言学习和相关专业课学习都变得非常枯燥,不利于调动学生的积极性。
应该说,这些名校的教学体系、教材和经验都是丰富的宝藏,值得好好挖掘,比如每门核心课程的教学法,实验课程的安排,各门课程的衔接,大型项目的选材等。
加州大学伯克利分校
伯克利的课程设置也有很多独树一帜的地方,尤其是在专业基础课方面,除了有专业导引课程“计算机科学专题”之外,对于没有编程经验的学生,第一门编程课是符号编程入门,采用LISP语言。有一定编程经验或者有自学能力的学生,可以选择多种语言和环境的自主学习(Self-paced)课程,包括C、Fortran、C++、Java,以及UNIX的使用等,这种多元化与伯克利计算机科学与电子电气工程同系有关。但是所有学生在第二学期都要学习一组独特的基础课:61A“计算机程序的结构与解释”,采用MIT Abelson等编著的同名教材(中译本机械工业出版社出版,清华大学出版社出版了影印版);61B“数据结构”(教材采用自编讲义);61C“计算机结构”(Machine Structures),采用Hennessy的《计算机组织与设计》(中译本清华大学出版社出版,机械工业出版社出版了影印版)。这项规定就是转校生也不例外,可见其中蕴涵了伯克利多年的教学经验结晶。
伯克利其他比较有特点的课程还有:将离散数学和概率论结合讲授的CS70,主讲是名教授Christos Papadimitriou;CS98-1 编程练习课,以主要大学生编程竞赛中的赛题为授课素材;CS 169 软件工程直接用Kent Beck的《极限编程》(人民邮电出版社出版了中译本)作为教材,非常超前,但是既然连Pressman的《软件工程:实践者方法》新版中敏捷方法都已经成为重头戏,既然IEEE都已经开始制定敏捷方法相关标准,这种课程选材也就不显得那么骇世惊俗了。除了软件工程课程常见内容外,教学侧重实际,贯穿了极限编程的思想,涵盖UML、JUnit单元测试、软件架构、设计模式和反模式、重构、CVS版本控制、系统和集成测试,最后要求完成一个实际产品,并进行演示。
UIUC(伊利诺依大学厄班纳-香槟分校)
UIUC的计算机科学专业创建于1972年,到1986年基本定型,十多年来几乎没有什么变化。
其中,数值分析方向课程中,Math225为矩阵论,CS257为数值方法,CS35x代表数值分析导论、常微分数值方法、偏微分与数值逼近和数值线性代数;
理论方向课程中,CS173为离散结构,CS273为计算理论,CS37x包括算法、形式方法、程序验证;
人工智能方向课程中,CS348为人工智能导论,CS34x包括机器人、机器学习与模式识别;
软件方向,CS125为计算机科学导论,CS225为数据结构与软件工程原理,CS31x包括数据库、图形学、多媒体,CS32x包括软件工程、操作系统设计、分布式系统、编程语言与编译器、并行计算、实时系统、编译器构造、编程语言设计;
硬件方向课程中,CS231为计算机体系结构I,CS232为计算机体系结构II,CS33x包括计算机组成、VLSI系统与逻辑设计、VLSI系统设计、通信网络、嵌入式体系架构与软件。
可以看到,处在图1中最下面的课程基本上都是在多门中选择一至三门,整个体系脉络清晰,具有很高的灵活性。与斯坦福不同的是,UIUC的计算机科学导论课程比较简单,只有一门为新生开的计算机科学导向课(CS100),而且并非必修。名为“计算机科学导论”的CS125实际上是以Java语言为主的编程入门课,涵盖了一些算法的内容。此外还有与之配套的实验课。当然,系里所开的许多面向高年级和研究生层次的讲座是对低年级开放的。
2003年,在工程院院长David Daniel的倡导下,计算机系对教学计划进行了改革,以反映目前社会、行业和技术的发展趋势。主要的变化有:
* 在必修要求中增加了两门编程课:CS241 系统编程,采用Gary Nutt的《操作系统》作为主教材,Stevens的《Unix环境高级编程》作为编程教材;CS242 程序设计实验(Programming Studio),教学大纲基本上以Kernighan的《程序设计实践》为蓝本(以上教材机械工业出版社均出版了中译本和影印版)。
* 必修要求中增加了一年的高级项目,强调团队合作和软件工程实践,包括文档写作、口头表达、项目规划与管理等,实际上是在实践中学习软件工程。这门课也可以用两学期的软件工程或者一年的高级论文代替。仍然充分保留了灵活性,有利于因材施教。
* 增加了CS173 离散结构的学时,部分原CS273的内容移到这里,同时CS273又新增了原CS375的内容。这实际上是提高了对计算机理论的要求。
* 在专业课程中增加了数据挖掘、信息检索和高级图形学。
分享到:
相关推荐
全国名校计算机考研真题是众多计算机专业学生梦寐以求的宝贵资料,这些真题集涵盖了数据结构、数据库、操作系统、计算机组成原理、计算机网络和编译原理等核心课程,对于准备考研的学生来说,是检验自身知识掌握程度...
综上所述,这份2015年美国大学本科计算机科学专业的排名揭示了美国顶尖高校在计算机科学教育和研究方面的现状,为学生和教育者都提供了宝贵的信息。同时,通过对这些排名的解读,我们可以更深入地了解计算机科学专业...
根据提供的文件信息,这里将详细解释标题和内容中涉及的知识点,即2015年美国大学本科计算机科学专业的排名。 标题中的“2015年美国大学本科计算机科学专业排名”指的是在2015年,由某些评估机构或媒体对美国大学...
在计算机科学的学习过程中,理解并掌握基本概念至关重要,如算法设计和分析、数据结构(如数组、链表、树、图等)以及计算机体系结构。此外,编程语言的学习,如Python、Java、C++,以及数据库管理和网络通信的知识...
从文件的【部分内容】来看,它列出了2015年美国大学本科计算机科学专业的排名情况。这个排名中涵盖了众多名校和研究型大学,如卡内基梅隆大学、麻省理工学院、斯坦福大学、加州大学伯克利分校等。计算机科学专业作为...
5. 杜克大学、约翰霍普金斯大学、纽约大学等综合性大学,其计算机科学专业结合医学、社会科学等多个领域,推动交叉学科研究,培养复合型人才。 6. 北卡罗来纳大学教堂山分校、明尼苏达大学双城、科罗拉多大学波尔得...
由于提供的文件内容主要是关于2015年美国大学本科计算机科学专业的排名,我们可以从中提炼出几个与计算机科学教育和专业排名相关的重要知识点。 首先,了解排名的依据通常包括哪些因素。高校计算机科学专业的排名...
2. 名校云集:从提供的内容中,我们可以看到多所世界知名的高校位列前茅,如卡内基梅隆大学(Carnegie Mellon University)、麻省理工学院(Massachusetts Institute of Technology,MIT)、斯坦福大学(Stanford ...
综上所述,这些名校的历年计算机考研真题不仅能够帮助考生巩固基础知识,还可以让他们提前适应考试的风格和难度,提高应试能力。在备考过程中,考生应结合教材、参考书目及网络资源,进行全面而深入的学习。同时,...
2015年的美国大学本科计算机科学专业排名为我们揭示了那些在该领域拥有卓越教学质量和研究实力的学府。这份排名反映了各大学在计算机科学教育方面的影响力和学生就业前景。 在排名前五的学校中,卡内基梅隆大学、...
### 二流学校信息与计算机科学就业策略 #### 引言:选择的力量 著名管理学家彼得·德鲁克曾预言21世纪将是选择的世纪,人类将拥有前所未有的选择权。在信息技术飞速发展的今天,每个人都能够获取所需的信息、学习...
18所名校计算机组成原理试题,考研专业课复习资料
根据提供的文件内容,我们可以了解到关于2015年美国大学本科计算机科学专业的排名情况。这个排名反映了各个大学在该专业的实力和教学水平。以下是根据文档内容整理的相关知识点: 首先,文档开头提到的几个大学,如...
5. 教育质量和专业建设:排名较高的大学通常在计算机科学专业的教学质量和专业建设方面表现出色,能够为学生提供最新的课程设置,丰富的实践机会,以及强大的行业联系和实习资源。 6. 地理分布:美国不同地区的高校...
中国各名校校计算机实力分析,比较.含清华,国防科大,哈工大,南大,北航,上交,浙大等
16大计算机名校.html 16大计算机名校.html 16大计算机名校.html
《全国名校计算机基础综合考研真题汇编》是针对计算机科学与技术专业硕士研究生入学考试的重要参考资料,集合了多所知名高校历年来的计算机基础综合考试试题。这份资源旨在帮助考生全面掌握计算机基础知识,提高应试...
42所计算机名校复试内容汇总
名校必备计算机公共基础课教学改革研究与实践.pdf