有网友留言想看卡耐基梅隆大学,今天它来了
卡耐基梅隆大学(下文简称为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为学生指引。
课程表
以学期为单位发布当前学年的完整课程表[1],里面列出当前学年的所有课程,但是只有课程信息、上课地点,没有具体的课程页面,适用于本校学生查询。
研究所课程
除了上面的两种方法,在计算机科学学院每个部门、研究所官网上都有详细的课程信息:
•Computer Science Department Course List[2]:计算机科学学院的课程列表 •Machine Learning Department[3]:人工智能系课程• Human-Computer Interaction Institute[4]:人机交互研究所课程• Robotics Institute[5]:机器人研究所课程•Language Technologies Institute[6]:语言技术研究所课程 •Computational Biology Department下的本科课程[7]和研究生课程[8] •Software Engineering Institute Courses[9]:里面的课程偏向培训
课程目录(Catalog)
计算机学院大而全,院系和课程都非常多,Catalog是以学院下属的研究所、部门为单位进行细分的:
•计算机系全部课程列表[10] •人工智能专业下的课程[11]• 计算机科学专业下的课程[12] •机器学习[13] •软件工程[14]• 语言技术[15]
如果上面的课程让你眼花缭乱,你可以到专门的课程搜索页[16]查询课程。
上面介绍的三种方法可以让你找到自己需要的课程,这里总结几个比较出名的课程:
•15-440/640 Distributed Systems[17],这门课有两个版本,Yuvraj Agarwal和Srini Seshan上的Fall学期,以及Satya和Babu上的Spring学期。Fall的15640用Go语言,更加偏向于应用一些(e.g. 实现mapreduce、比特币挖矿),Spring的15640用C和Java,更加偏系统一些。• Fundamentals of Programming and Computer Science[18],全美最好的五门计算机课程之一[19],面向本科生的基础课程,最新课程页面为:https://www.cs.cmu.edu/~112/,目前还没有更新,感兴趣的小伙伴可以持续关注。 •15-213: Introduction to Computer Systems[20],该门课程诞生了著名神书CSAPP[21],书和课程配套学习效果最佳! •10-605 in Fall 2017 Machine Learning with Large Datasets[22]• 17-445/645 Software Engineering for AI-Enabled Systems[23]
教育
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个部和研究所中,这些研究所负责提供学位、培养学生。硕士专业和方向[24]网站上一共有20个专业,非常多!这里笔者列举几个和计算机相关的:
•Computer Science•Machine Learning•Computer Vision•Product Management•Computational Data Science•Artificial Intelligence and Innovation•Intelligent Information Systems •Language Technologies•Robotics
每个专业都有专门的培养方案和要求,相关信息都列举在各个专业详细网页里面。
总结
CMU的计算机是单独设院的,并且是全美最大的计算机学院。在向学生提供广泛方案的同时,还帮助学生聚焦在某个领域深入学习,同时提供交叉学科培养方案,使学生成为广而精的顶尖人才。
因此,作为开发者,要能做到致广大而尽精微:广泛阅读学习的同时,要能专注于某个领域。
Reference
•CMU 计算机选课上有什么特别好的课程推荐?[25] •百度百科-卡耐基梅隆大学[26]
References
[1]
完整课程表: https://enr-apps.as.cmu.edu/open/SOC/SOCServlet/completeSchedule[2]
Computer Science Department Course List: https://csd.cmu.edu/course-profiles/csd-course-list[3]
Machine
Learning Department: https://www.ml.cmu.edu/academics/classes.html [4]
Human-Computer Interaction Institute: https://hcii.cmu.edu/academics/courses[5]
Robotics Institute: https://www.ri.cmu.edu/education/courses/ [6]
Language Technologies Institute: https://www.lti.cs.cmu.edu/learn[7]
本科课程: http://www.cbd.cmu.edu/education/undergraduate-courses/ [8]
研究生课程: http://www.cbd.cmu.edu/courses-offered/graduate-courses/[9]
Software
Engineering Institute Courses: https://www.sei.cmu.edu/education-outreach/courses/index.cfm[10]
计算机系全部课程列表: http://coursecatalog.web.cmu.edu/schools-colleges/schoolofcomputerscience/courses/ [11]
人工智能专业下的课程: http://coursecatalog.web.cmu.edu/schools-colleges/schoolofcomputerscience/artificialintelligence/#curriculumtextcontainer[12]
计算机科学专业下的课程: http://coursecatalog.web.cmu.edu/schools-colleges/schoolofcomputerscience/undergraduatecomputerscience/#bscurriculumtextcontainer [13]
机器学习: http://coursecatalog.web.cmu.edu/schools-colleges/schoolofcomputerscience/addlmajorsminors/#machinelearningminortextcontainer[14]
软件工程: http://coursecatalog.web.cmu.edu/schools-colleges/schoolofcomputerscience/addlmajorsminors/#softwareengineeringminortextcontainer [15]
语言技术: http://coursecatalog.web.cmu.edu/schools-colleges/schoolofcomputerscience/addlmajorsminors/#languagetechnologiesminortextcontainer [16]
课程搜索页: http://coursecatalog.web.cmu.edu/course-search/[17]
15-440/640
Distributed Systems: https://csd.cmu.edu/course-profiles/15-440_640-distributed-systems[18]
Fundamentals of Programming and Computer Science: https://www.cs.cmu.edu/~112n18/[19]
全美最好的五门计算机课程之一: https://www.bloomberg.com/news/articles/2015-06-11/five-of-the-best-computer-science-classes-in-the-country [20]
15-213: Introduction to Computer Systems: https://www.cs.cmu.edu/~213/[21]
CSAPP: https://csapp.cs.cmu.edu/ [22]
10-605 in Fall 2017 Machine Learning with Large
Datasets: http://curtis.ml.cmu.edu/w/courses/index.php/Machine_Learning_with_Large_Datasets_10-605_in_Fall_2017 [23]
17-445/645 Software Engineering for AI-Enabled Systems: https://ckaestne.github.io/seai/[24]
硕士专业和方向: https://www.cs.cmu.edu/masters-programs [25]
CMU 计算机选课上有什么特别好的课程推荐?: https://www.zhihu.com/question/28249230[26]
百度百科-卡耐基梅隆大学: https://baike.baidu.com/item/%E5%8D%A1%E5%86%85%E5%9F%BA%C2%B7%E6%A2%85%E9%9A%86%E5%A4%A7%E5%AD%A6
推荐阅读:
1. UC Berkeley EECS系是如何培养计算机学生的
3. 为了培养计算机学生,这所学校把地租给科技公司,没想到......
4. 后端工程师的技能树
欢迎扫码关注我,专注于计算机科学、阅读分享,程序员认知、学习、成长平台
本文用时10h创作,希望对大家有帮助
点赞和分享支持我继续创作