原文链接
卡耐基梅隆大学(下文简称为CMU)的计算机科学享誉全美,被视为该领域的领导者。CMU的计算机科学研究生教育全美最佳,软件工程专业更是遥遥领先于其它名校,本科生的声誉也在雇主中排名第一。
像这样的顶尖大学,本文无法面面俱到,而是从计算机专业培养入手,结合院系
、课程
、培养方案
等角度总结其培养学生的特点,为CS领域或想转行CS的小伙伴提供可借鉴的方法和参考。
校训
CMU的校训是卡耐基先生的名言:My heart is in the work(我心于业),即使经历了百年内数次重大革新,这样的信念依旧根深蒂固融于整个大学文化中。
在校训的指引下,卡耐基梅隆大学对学生的训练异常严格,课业繁重,在普林斯顿评论(Princeton Review)每年“学生累得像狗的大学排名”中,从来高居前几位,与加州理工学院、麻省理工学院、芝加哥大学、普林斯顿大学等同为美国乃至全世界训练最为残酷的大学。
最大的学院
在院系设置上CMU和UC Berkeley、MIT和Stanford都不同,计算机是一个独立的学院-计算机科学学院,School of Computer Science 下面简称SCS。SCS是为数不多将计算机科学独立设院的大学,隶属于CMU七大学院之一,是全美乃至全世界最大的计算机学院。因此,CMU的学生戏称自己是全民CS。
SCS下面设置多个部门和研究所,由这些研究所为学生提供专业和培养方案。
丰富专注的课程
CMU的课程也是按编号管理的,格式为XX-xxx
,前缀XX
表示课程由哪个部门开设,计算机科学部的编号是15,后面的xxx
是一个三位数,第一位表示课程的难度/水平,一般数字越大,难度和级别越高。
计算机科学学院的课程信息查询有多种方式:
- 课程表。
- 不同部门开设的课程。
- Catalog为学生指引。
课程表
以学期为单位发布当前学年的完整课程表,里面列出当前学年的所有课程,但是只有课程信息、上课地点,没有具体的课程页面,适用于本校学生查询。
研究所课程
除了上面的两种方法,在计算机科学学院每个部门、研究所官网上都有详细的课程信息:
- Computer Science Department Course List:计算机科学学院的课程列表
- Machine Learning Department:人工智能系课程
- Human-Computer Interaction Institute:人机交互研究所课程
- Robotics Institute:机器人研究所课程
- Language Technologies Institute:语言技术研究所课程
- Computational Biology Department下的本科课程和研究生课程
- Software Engineering Institute Courses:里面的课程偏向培训
课程目录(Catalog)
计算机学院大而全,院系和课程都非常多,Catalog是以学院下属的研究所、部门为单位进行细分的:
如果上面的课程让你眼花缭乱,你可以到专门的课程搜索页查询课程。
上面介绍的三种方法可以让你找到自己需要的课程,这里总结几个比较出名的课程:
- 15-440/640 Distributed Systems,这门课有两个版本,Yuvraj Agarwal和Srini Seshan上的Fall学期,以及Satya和Babu上的Spring学期。Fall的15640用Go语言,更加偏向于应用一些(e.g. 实现mapreduce、比特币挖矿),Spring的15640用C和Java,更加偏系统一些。
- Fundamentals of Programming and Computer Science,全美最好的五门计算机课程之一,面向本科生的基础课程,最新课程页面为:https://www.cs.cmu.edu/~112/,目前还没有更新,感兴趣的小伙伴可以持续关注。
- 15-213: Introduction to Computer Systems,该门课程诞生了著名神书CSAPP,书和课程配套学习效果最佳!
- 10-605 in Fall 2017 Machine Learning with Large Datasets
- 17-445/645 Software Engineering for AI-Enabled Systems
教育
SCS的研究生教育和人工智能专业全美排名第一,做到如此成就,在教育上自然有其自身的特点,笔者总结为:方向丰富、领域专注、提供交叉专业。
本科
因为SCS是一个大学院,下设七个部门,而且有全美顶尖的专业,所以它不仅为本系学生提供了全面的培养体系,也为CMU的所有学生提供了计算机学习机会。SCS的专业设置大概分为以下几个类型:
- Undergraduate Majors:面向CS系学生的专业
- Undergraduate Additional Majors:类似国内双学位,学生可以修两个专业,这里的CS是第二学位
- Undergraduate Minors:辅修专业,全校的学生只要符合条件都可以选择
基于上面的专业框架,CS系为本科生提供了丰富、灵活的选择:
- Computer Science:计算机科学专业,也是CS领域的核心
- Artificial Intelligence:全美排名第一的人工智能专业
- Human-Computer Interaction:人机交互专业
- Robotics:机器人专业
- Computer Science and the Arts:计算机科学与艺术专业,交叉学科
- Music and Technology:音乐与计算理论专业,交叉学科
- Computational Biology:计算生物专业,交叉学科
丰富的专业下,为了让学生更深入、专注学习某个核心领域,SCS提出了Concentration的概念,让学生能聚焦以下领域:
- Algorithms & Complexity:算法与复杂性,学生学完应该达到申请博士项目的水平。
- Computer Systems:计算机系统,学生能够理解系统的设计和开发,比如内核开发、编译器优化、分布式系统设计等,达到申请博士水平或工业界同等水平。
- Security and Privacy:安全和隐私。
- Software Engineering:教授高效开发现代大规模软件的技巧和知识。
- Computational Biology
老师们考虑周到,在提供丰富、灵活选择的同时,为避免由此带来的广而不精
,为学生们提供了核心领域,让他们能够专注学习,做到广而精
,成为T型人才。
研究生
硕士学位分布在上文提到的7个部和研究所中,这些研究所负责提供学位、培养学生。硕士专业和方向网站上一共有20个专业,非常多!这里笔者列举几个和计算机相关的:
- Computer Science
- Machine Learning
- Computer Vision
- Product Management
- Computational Data Science
- Artificial Intelligence and Innovation
- Intelligent Information Systems
- Language Technologies
- Robotics
每个专业都有专门的培养方案和要求,相关信息都列举在各个专业详细网页里面。
总结
CMU的计算机是单独设院的,并且是全美最大的计算机学院。在向学生提供广泛方案的同时,还帮助学生聚焦在某个领域深入学习,同时提供交叉学科培养方案,使学生成为广而精的顶尖人才。
因此,作为开发者,要能做到致广大而尽精微:广泛阅读学习的同时,要能专注于某个领域。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。