CMU的计算机课程#

  • 15-112:主要是用Python入门,大一上学期或高中生推荐学习的课程;

  • 15-213/15-513 :CMU镇校神课,推荐《深入理解计算机系统》+视频+习题,进行系统性学习

  • 15-122:命令式编程,CMU使用的是C语言(以及C0语言)

  • 15-319/15-619/15-719:云计算,这门课是互联网企业的在职程序员也非常推荐去学习的课程;

  • 15-410:操作系统

  • 15-411:编译原理

  • 15-418/15-618:计算机体系结构

  • 15-440/15-640/15-740:分布式系统,是互联网企业程序员最为推荐的课程之一。

  • 15-441:计算机网络

  • 15-445/15-645/15-745:数据库系统

  • 15-451/15-651/15-751:算法设计与分析

官方指定必修核心课程#

  • 07-128 First Year Immigration Course 新生入学交流课 ☆

  • 15-122 Principles of Imperative Computation 命令式编程C语言(需先修15-112的Python课)★

  • 15-150 Principles of Functional Programming 函数式编程 ★★

  • 15-210 Parallel and Sequential Data Structures and Algorithms 数据结构与算法 ★★★

  • 15-213 Introduction to Computer Systems 深入理解计算机系统 ★★★★★★

  • 15-251 Great Ideas in Theoretical Computer Science 伟大的计算机科学理论★★★

  • 15-451 Algorithm Design and Analysis 算法设计与分析 ★★★

以下为官方比较推荐的核心课程教学安排,你可以参考一下它们的教学进度:

大一上学期课程#

大一上学期需要学好Python、C语言、离散数学、微积分以及一些人文科学课,还有新生入学交流、CMU计算机介绍等。

  • 15-112: Fundamentals of Programming and Computer Science

课程地址:Fundamentals of Programming

主要是学Python编程语言。虽然不是必修核心课程,但是学15-122时需要先修这门课。15-112是全美5大名课之一。

盘点美国名校计算机专业的5大名课

  • 15-122 Principles of Imperative Computation命令式语言编程

课程地址:https://www.cs.cmu.edu/~15122/home.shtml

前置课程为15-112,官方强烈建议同步学习15-151。这门课主要是学C语言和Unix命令,主要掌握三方面的知识:计算机思维、编程技巧以及数据结构和算法。

  • 15-151 Mathematical Foundations of Computer Science计算机科学中的数学

课程地址:15-151 and 21-128, Fall 2020

主要的参考教材是《纯数学的无穷递降An infinite descent into pure mathematics》,这本书没有中文版,英文版下载链接如下。这本书有600多页,书名虽然听起来很高大上,但是内容却很简单,国内高中数学的难度。备选的书籍有《Everything You Always Wanted To Know About Mathematics》以及《Mathematical Thinking: Problem-Solving and Proofs》。

infdesc.pdfEverything You Always_Wanted_To_Know_About_Mathematics.pdfMathematical Thinking_Problem_Solving_and_Proofs.pdf

不习惯看英文的,推荐阅读一下MIT的教材《计算机科学中的数学》

img

  • 21-120 Differential & Integral Calculus

课程地址:Math 21-120, Spring 2016, Calculus

微积分,参考教材是James Stewart的Calculus: Early Transcendentals, 8th edition

  • 76-101 Interpretation and Argument 理解与争论

课程地址:http://www.andrew.cmu.edu/course/76-101AA/

就是甩一堆文章让你看以及每周会有一些主题演讲与讨论,主要是关于科学、计算机科学方面的观点、文章。

fa21-pathway-2-course-descriptions-dzw.pdf

  • 15-131 计算机科学家的一些实战经验

课程地址:Great Practical Ideas for Computer Scientists

这门课只有2个学分,主课一般都是9到12个学分,属于选修,主要是掌握Linux的一些操作,如编辑器Emacs、命令行、Git、Latex、Bash、包管理、Makefiles以及React Native等,相当于是教一些计算机的基础操作。

大一下学期课程#

以前15-213是放在大一下学期的,现在放到大二上学期来学了,大一下学期需要选修两门大课,一门科学/工程课,一门人文/艺术课。

  • 15-150 Principles of Functional Programming 函数式编程

课程地址:15-150

CMU使用的是SML编程语言来教函数式编程

  • 15-251 Great Theoretical Ideas in Computer Science 计算机科学的一些伟大理论

课程地址:https://www.cs.cmu.edu/~15251/

主要是讲计算机科学里面有里程碑意义的理论,比如状态机、图灵机、哥德尔不完全定理、NP完全问题、密码学等。

  • 21-122 Integration, Differential Equations, and Approximation

继续学习大一上学期的微积分教材

大二上学期

  • 15-213/15-513 Introduction to Computer Systems 计算机系统导论★★★★★★

课程地址:Introduction to Computer Systems

需学习前置课程15-122,也就是C语言。这门课是CMU的招牌课程,使用的教材是大名鼎鼎的CSAPP《深入理解计算机系统》,也是国内计算机专业想学习国外课程最为推荐的一门课。《深入理解计算机系统》也是哈工大、北大等名校计算机专业的指定教材。

深入理解计算机系统(原书第3版)

这门课的教学视频有很多个版本值得推荐,如:

线性代数

大二下学期#

这个学期官方推荐的主修课只有15-210,也就是数据结构与算法,其余需要你自选4门主修课,其中一门为计算机科学15-** 的课程,一门科学工程课、一门人文艺术课,还有一门任意自选。

  • 15-210 Parallel and Sequential Data Structures and Algorithms数据结构与算法

课程地址:Parallel and Sequential Data Structures and Algorithms

这门课不怎么对外公开,内容都在这门课自建的一套交互式软件体系diderot里面。

大三上学期#

这个学期官方推荐的主修课只有15-451这门课,其余需要你自选4门主修课,其中一门为概率论、一门计算机科学15-** 的课程,一门技术交流课,还有一门任意自选。

  • 15-451 Algorithm Design and Analysis算法设计与分析★★★★

课程地址:15-451

前置课程课程为15-210数据结构与算法以及15-251计算机科学的一些伟大理论。这门课使用的参考书特别多,主要推荐的是以下两本《算法导论》以及《算法设计》,其余的参考书都比较老(算法几十年都在保质期),国内没有出版,也不太好找,这里就不全部收集了。

算法导论(原书第3版)/计算机科学丛书

算法设计 [美] 乔恩·克莱因伯格(Jon Kleinberg)

img

以下为计算机专业选修方向#

通常情况国内计算机专业本科主要是学软件系统方向,结合国内计算机专业学习情况,一般来说除了官方指定的必修课程以外,还建议学软件系统方向的课程。

AI人工智能#

如果你是程序员,或者非211、985计算机名校,基本上这些课程可以都不必学习,因为这些方向找工作很看学校、学历。

  • 10-315 Introduction to Machine Learning 计算学习导论

课程地址:10-315: ML

  • 11-411/11-611 Natural Language Processing 自然语言处理

课程地址:http://demo.clab.cs.cmu.edu/NLP/

  • 11-485/11-785 Introduction to Deep Learning 深度学习导论

课程地址:11-785 Deep Learning

  • 15-281 Artificial Intelligence: Representation and Problem Solving 人工智能

课程地址:15-281: AI

  • 15-386/15-686 Neural Computation 神经计算

课程地址:https://www.cnbc.cmu.edu/~tai/nc19.html

  • 16-384 Robot Kinematics and Dynamics 机器人动力学

课程地址:16-384: Robot Kinematics and Dynamics

  • 16-385 Computer Vision 计算机视觉

课程地址:16-385 Computer Vision, Spring 2020

跨领域选修#

比较建议选修人机交互、计算机安全、软件工程、计算复杂性、计算机图形学的课程,尤其是软件工程,可以说是程序员找工作必修。

  • 02-251 Great Ideas in Computational Biology 计算生物学

  • 05-391 Designing Human Centered Software 人机交互

  • 15-322 Introduction to Computer Music 计算机音乐导论

  • 15-330 Introduction to Computer Security 计算机安全

  • 15-455 Undergraduate Complexity Theory 计算复杂性

  • 15-462 Computer Graphics 计算机图形学

  • 17-313 Foundations of Software Engineering 软件工程基础

逻辑/编程语言理论#

关于编程语言本身,国内开设这方面课程的学校比较少,部分学校会有形式语言与自动机理论相关的课程。

  • 15-312 Foundations of Programming Languages 程序语言理论基础

  • 15-314 Programming Language Semantics 程序语言的语义学

  • 15-316 Software Foundations of Security and Privacy 软件安全与隐私基础

  • 15-317 Constructive Logic 构造逻辑

  • 15-414 Bug Catching: Automated Program Verification 计算机自动化验证

  • 15-424 Logical Foundations of Cyber-Physical Systems网络物理系统的逻辑基础

  • 17-355 Program Analysis 程序分析

  • 80-413 Category Theory 范畴论

软件系统方向#

软件系统方向的课程非常推荐国内计算机专业的学生学习。

  • 15-410 Operating System Design and Implementation 操作系统 ★★★★★

  • 15-411 Compiler Design 编译原理 ★★★★★

  • 15-418 Parallel Computer Architecture and Programming 计算机体系结构 ★★★★★

  • 15-440 Distributed Systems 分布式理论 ★★★★★★

  • 15-441 Networking and the Internet 计算机网络 ★★★★★

  • 15-445 Database Systems 数据库系统 ★★★★★

课程资料整理与说明

  • 15-410 Operating System Design and Implementation 操作系统 ★★★★★

课程地址:https://www.cs.cmu.edu/~410/

参考教材为Silberschatz的《操作系统概念Operating System Concepts》,目前已经出到第10版,国内目前有第9版的翻译(用第6版-10版都可以)。

img

  • 15-411 Compiler Design 编译原理 ★★★★★

课程地址:15-411

  • 15-418/15-618 Parallel Computer Architecture and Programming 计算机体系结构 ★★★★★

课程地址:15-418/15-618: Parallel Computer Architecture and Programming, Spring 2021

这门课有本科课程15-418和研究生课程15-618,推荐的教材有《计算机体系结构:量化研究方法》、《大规模并行处理器程序设计》(目前没有中文版)、Jason Sanders等所著的书《CUDA By Example an Introduction to General Purpose GPU Programming》、David E. Culler《 Parallel Computer Architecture: A Hardware/Software Approach》

img

img

  • 15-440/15-640 Distributed Systems 分布式理论 ★★★★★★

课程地址:Distributed Systems

分布式理论除了有本科15-440的课程,还有15-640研究生的课程,全套课程是大厂程序员最值得学习的一门课。15-440 推荐的教材有《计算机网络:系统方法》、《Unix环境高级编程》、《UNIX网络编程 卷1 套接字联网API》、《操作系统概念》

img

15-640推荐的教材有四本,这里找到了两本:

  1. 《Distributed Systems: Principles and Paradigms》,作者Andrew S. Tanenbaum出版过“神书”《现代操作系统》以及国内其他影印版书《计算机网络》、《操作系统设计与实现》;这本书本文附上了电子书下载地址。

  2. 《分布式系统:概念与设计》,这本书也是计算机专业最为推荐的一本书;

Tannenbaum-distributed_systems_principles_and_paradigms_2nd_edition.pdf

img

  • 15-441 Networking and the Internet 计算机网络 ★★★★★

课程地址:15-441/641: Computer Networks (Fall 2017)

img

  • 15-445/15-645 Database Systems 数据库系统 ★★★★★

课程地址:Intro to Database Systems (Fall 2021)

img

  • 15-319/15-619 Cloud Computing 云计算 ★★★★★

课程地址:CMU 15-619 Spring 2020 Home Page

先修课程与知识:《深入理解计算机系统》以及熟练掌握一门编程语言(如Java、Python)

非常推荐国内程序员学习的一门课,主要会通过项目部署实战来学习AWS、Azure、GCP等云计算机厂商的服务,MapReduce、虚拟机技术、Docker、K8s、FaaS、分布式等等。

还有一些选修类的课程,这些都不是计算机专业的核心课程:

  • 15-453 Formal Languages, Automata, and Computability 形式语言、自动机和可计算性

  • 15-456 Computational Geometry 计算机几何学

  • 15-348 Embedded Systems 嵌入式系统

  • 15-462 Computer Graphics 计算机图形学

  • 15-458 Discrete Differential Geometry 离散微分几何

  • 15-487 Introduction to Computer & Network Security & Applied Cryptography 应用密码学

博士生课程#

  • 15-712 Advanced Operating Systems and Distributed Systems 高级操作系统与分布式系统

课程地址:15-712 Advanced Operating Systems and Distributed Systems, Spring 2021

  • 15-719:Advanced Cloud Computing 高级云计算

课程地址:15-719/18-709 Advanced Cloud Computing (Spring 2021)

前置课程:15-213/18-213/15-513/18-600 ,也就是这门课的前置课程为《深入理解计算机系统》,成绩至少为B 或者15-619云计算,成绩至少为A-

  • 15-721:Advanced Database Systems 高级数据库系统

课程地址:CMU 15-721 :: Advanced Database Systems (Spring 2020)

  • 15-740:Computer Architecture 计算机体系结构

课程地址:start - 15-740/18-740 Computer Architecture

  • 15-745:Optimizing Compilers 编译器优化

课程地址:15-745 Spring ‘20 Home Page

  • 15-746:Storage Systems 存储系统

课程地址:18-746/15-746: Storage Systems (Fall 2016)

  • 15-750:Graduate Algorithms 研究生算法

课程地址:CMU Graduate Algorithms, Spring 2021

  • 15-751: A Theorist’s Toolkit 计算机科学数学理论

课程地址:[15-751: A Theorist’s Toolkit 2016](