美国学计算机的著名大学有哪些?
斯坦福大学有独立的计算机科学系。这个学校最有特色的计算机科普知识讲座恐怕是很多的,一般都是两三个单元,涉及面很广,从量子计算到数字演员,从计算科学的伟大思想到网络安全,从网上拍卖到利用元编译发现大型开源软件的大量错误,其中不乏对技术乌托邦的思考,斯诺的“两种文化”,计算机面临的困境以及快速发展带来的诸多问题。开课的老师阵容强大,基本上都是知名教授,甚至包括图灵奖获得者约翰·麦卡锡。用这种讲座代替计算机科学导论的专题课,可以充分展示计算机科学的丰富内涵,使学生更早地了解学科的大纲和脉络,对开阔学生的视野,激发学生的学习兴趣也大有裨益。因为美国大学的专业选择非常灵活,而且近几年计算机学科的招生受到了行业的严重影响(这种情况甚至惊动了Bill?盖茨,2004年微软去各大高校招聘的时候,每到一站都会来,用他的明星效应来讲计算机科学的美好前景。可以想象,这种讲座也肩负着吸引学生选择计算机专业的重要使命。
2.美国加州大学伯克利分校计算机专业
伯克利的课程设置也有很多独到之处,尤其是专业基础课。除了专业指导课程《计算机科学专题》,对于没有编程经验的学生,第一门编程课程是符号编程入门,使用LISP语言。具有一定编程经验或自学能力的学生可以选择各种语言和环境的自定进度课程,包括C、Fortran、C++、Java和UNIX的使用等。这种多样性与伯克利计算机科学和电子电气工程有关。但所有学生在第二学期都要学习一套独特的基础课程:61A《计算机程序的结构与解释》,使用麻省理工学院艾贝尔森等人编写的同名教材;61B《数据结构》(教材采用自制讲义);61C《机器结构》采用轩尼诗的《计算机组织与设计》。这个规定对于转学生也不例外,可见其中包含了伯克利多年教学经验的结晶。
柏克莱其他有特色的课程还包括:CS70,将离散数学与概率论相结合,著名教授克里斯特斯·帕帕迪米特里乌;作为主要发言人;CS98-1编程实践课,以主要大学生编程竞赛题目为教材;CS 169软件工程直接用Kent Beck的极限编程作为教材,非常先进。不过,既然连Pressman的《新版软件工程:一个从业者的方法》中的敏捷方法都成了重头戏,既然IEEE已经开始制定敏捷方法的相关标准,那么这门课的选择就不那么令人震惊了。除了软件工程课程的常见内容,教学以实践为主,贯穿极限编程的思想,涵盖UML、JUnit单元测试、软件架构、设计模式和反模式、重构、CVS版本控制、系统和集成测试,最后要求完成一个实际的产品和演示。
3.美国UIUC(伊利诺伊大学香槟分校)计算机专业。
UIUC的计算机专业是1972创立的,到1986基本定型,十几年变化不大。其中,在数值分析课程中,Math225为矩阵论,CS257为数值方法,CS35x代表数值分析导论、常微分数值方法、偏微分与数值逼近、数值线性代数;
在理论方向的课程中,CS173是离散结构,CS273是计算理论,CS37x包括算法、形式化方法和程序验证。
在人工智能的课程中,CS348是人工智能入门,CS34x包括机器人、机器学习和模式识别。
软件方向:CS125是计算机科学导论,CS225是数据结构和软件工程原理,CS31x包括数据库、图形和多媒体,CS32x包括软件工程、操作系统设计、分布式系统、编程语言和编译器、并行计算、实时系统、编译器构造和编程语言设计。
硬件方向课程中,CS231为计算机体系结构I,CS232为计算机体系结构II,CS33x包括计算机组成、VLSI系统与逻辑设计、VLSI系统设计、通信网络、嵌入式体系结构和软件。
4.美国CMU(卡耐基梅隆大学)计算机专业。
不像麻省理工和柏克莱的计算机科学还和电子电气工程在一个系,CMU的计算机科学系成立于1965,是全美最早的,现在已经升级为计算机科学学院。在其研究生项目中,除了机器人方向和硬件的关系,其他基本都是纯软的。从这个意义上说,CMU的教学体系对软计算机系应该是很有借鉴意义的。
CMU的教学手册中没有传统意义上的计算机专业学生入门课。虽然是两个学期的课程,名为“计算机科学的伟大思想”,但在内容上应该是离散数学的替代品,因为CMU没有离散数学的其他课程。这门课没有教材,内容比传统的离散数学灵活得多,涉及概率、代数、算法、加密理论、复杂性理论、博弈论等。,并且非常重视学习的趣味性和实用性。
和其他名校一样,CMU对编程的重视也给人留下了深刻的印象:当地新生的第一堂课是“初、中学编程”,直接教Java。然后是高级编程(Java)、C编程技巧、高级编程实践(Java)和编程原理(SML语言授课)。
目前计算机专业教学计划中的一个难点是硬件课程的设置。硬件知识体系本身很丰富,但是硬件课程多,弱化了计算机专业的特色。CMU如何处理这个问题?现任计算机学院院长Randal E. Bryant亲自给出了答案。他以《计算机系统导论》课程(15 ~ 213单元)完成了硬件知识的教学。这次教学改革的成果是一本900多页的书:《计算机系统:一个程序员的视角》。他在本书的序言中说:
“本课程的目的是以不同的方式向学生介绍计算机。因为我们的学生很少有机会构建计算机系统。大多数学生,甚至是计算机工程师,都被要求能够日常使用计算机和编写计算机程序。所以我们决定从程序员的角度来解释系统,采用了这样一种过滤方式:我们只讨论那些影响用户级C程序性能、正确性或实用性的话题。
例如,我们排除了硬件加法器和总线设计等主题。虽然我们讲了机器语言,但是我们并不关心汇编语言怎么写,而是关心编译器如何翻译C的各种构造,比如指针、循环、过程调用和返回、switch语句等。此外,我们将更广泛、更现实地看待系统,包括硬件和系统软件,并讨论链接、加载、处理、信号、性能优化、评估、I/O、网络和并发编程。
这种做法使我们教授这门课程的方式对学生来说是实用的、具体的、实际的,对调动学生的积极性也是非常有益的。"
5.麻省理工学院计算机专业
麻省理工的课程只能用它对学生的高起点来解释。这个学校没有典型的计算机科学专业,只有理论计算机科学和人工智能及其应用软。所以没有类似其他学校的入门课程。
在麻省理工学院电子电气工程和计算机科学系,所有学生都要修以下四门课:6.001《计算机程序的结构与解释》,当然和柏克莱一样,用的是艾贝尔森等人主编的同名教材;6.002“电路和电子学”;6.003“信号与系统”(自编讲义);6.004“计算结构”相当于伯克利的61C“计算机结构”。此外,还有《概率系统分析》和《计算机科学数学》两门专业基础数学课程。后一种教材是罗森写的《离散数学及其应用》,国外大学广泛使用。