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大名课之一。
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的教材《计算机科学中的数学》

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《深入理解计算机系统》,也是国内计算机专业想学习国外课程最为推荐的一门课。《深入理解计算机系统》也是哈工大、北大等名校计算机专业的指定教材。

这门课的教学视频有很多个版本值得推荐,如:
21-241 Matrices and Linear Transformations
线性代数
大二下学期#
这个学期官方推荐的主修课只有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计算机科学的一些伟大理论。这门课使用的参考书特别多,主要推荐的是以下两本《算法导论》以及《算法设计》,其余的参考书都比较老(算法几十年都在保质期),国内没有出版,也不太好找,这里就不全部收集了。

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

以下为计算机专业选修方向#
通常情况国内计算机专业本科主要是学软件系统方向,结合国内计算机专业学习情况,一般来说除了官方指定的必修课程以外,还建议学软件系统方向的课程。
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 计算机视觉
跨领域选修#
比较建议选修人机交互、计算机安全、软件工程、计算复杂性、计算机图形学的课程,尤其是软件工程,可以说是程序员找工作必修。
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版都可以)。

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》


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

15-640推荐的教材有四本,这里找到了两本:
《Distributed Systems: Principles and Paradigms》,作者Andrew S. Tanenbaum出版过“神书”《现代操作系统》以及国内其他影印版书《计算机网络》、《操作系统设计与实现》;这本书本文附上了电子书下载地址。
《分布式系统:概念与设计》,这本书也是计算机专业最为推荐的一本书;
Tannenbaum-distributed_systems_principles_and_paradigms_2nd_edition.pdf

15-441 Networking and the Internet 计算机网络 ★★★★★
课程地址:15-441/641: Computer Networks (Fall 2017)

15-445/15-645 Database Systems 数据库系统 ★★★★★
课程地址:Intro to Database Systems (Fall 2021)

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](