会持续优化和整理,争取成为MIT计算机课程介绍最完备的一篇文章,欢迎点赞关注
麻省理工MIT既是世界顶级名校,在计算机方面也是四大CS名校之一。它的计算机专业隶属于电子工程与计算机学院Electrical Engineering and Computer Science。由于MIT在开放课程上一直做得比较优秀,Syllabus课程表、Readings教材与参考资料、Slides课件、Code代码、video课程视频以及Lab实验课等等都十分齐全,因此十分推荐大家学习MIT CS的课程。
MIT很多课程几年就更新一次,可以尽可能选择最新的,我在整理的过程中也会尽量把最新的开放课程放在课程地址的最前面。有些课程标有“sc”,如“6.00SC”,这个指的是专门为公开课提供的自学课程
MIT EECS介绍
EECS的六个专业方向
EECS分六个方向,下面我们只会系统介绍6-3计算机科学与工程的课程,也就是只介绍CS方面的课程,而不介绍EE的课程:
- 6-1: Electrical Science and Engineering 电子科学与工程
- 6-2: Electrical Engineering and Computer Science 电子工程与计算机科学
- 6-3: Computer Science and Engineering 计算机科学与工程
- 6-7: Computer Science and Molecular Biology 计算机科学与分子生物学
- 6-9: Computation and Cognition 计算与认知
- 6-14: Computer Science, Economics, and Data Science 计算机科学、经济学与数据科学
附件内容为MIT EECS学院各个学科分支的课程路径表,大家可以根据需要各取所需
[
freshman_roadmaps.pdf
100.3K
·
百度网盘
](https://pan.baidu.com/link/zhihu/7Ah1zUueh2iUeyMk1iUHR0UmNmWIxmcwd35m==)
计算机科学与工程的课程安排表
MIT计算机科学与工程的核心是计算结构、人工智能、软件工程、算法和计算机系统。分入门型的导论课程、夯实基础的基础课程以及专业的核心课程:
- 导论课程(♥︎♥︎♥︎):离散数学(6.042)、编程能力(主要是学习python 6.01 Python)、计算机科学导论(6.01sc)
- 基础课程(♦︎♦︎♦︎):计算结构(6.004)、程序设计(6.009 Python,这门课未公开,但是可以看到课表)、算法(6.006)
- 核心课程(♠︎♠︎♠︎):人工智能(6.034)或机器学习(6.046)、计算机系统(6.033)、软件架构(6.031)、算法与可计算性(6.045或6.046)
本科的导论课程
导论课程相当于是大一上学期的课程,没有学习门槛,主要学习的是计算机科学导论、Python编程(MIT围绕Python有多个课程,比如3周入门的课、做嵌入式开发、数据科学等)以及离散数学。
- 6.0001 计算机科学导论与Python ♥︎♥︎♥︎
课程地址:Introduction to Computer Science and Programming in Python
这门课是全美计算机五大名课之一,只学半个学期,学完之后就要继续去学6.0002 关于数据科学相关的课程。
它的参考教材使用的是《Python编程导论》。
[
Python编程导论 第2版(图灵出品)
京东
¥ 54.40
去购买
- 6.0002 计算机思维导论和数据科学(非必修但是要学)
课程地址:Introduction to Computational Thinking and Data Science
教材使用的仍然是《Python编程导论》
- 6.01SC 电子工程导论与计算机科学(Python) ♥︎♥︎♥︎
课程地址:Introduction to Electrical Engineering and Computer Science I (Spring 2011)
电子工程和计算机科学的导论课。
- 6.001/6.821 计算机程序的构造和解释 ★★★★★
课程地址:Structure and Interpretation of Computer Programs、 6.821 Programming Languages (Fall 2002)
SICP这门课以前在很长一段时间都是MIT入门的第一课,配套的教材SICP《计算机程序的构造和解释》也一直被认为是程序设计的经典著作,其中研究生课程MIT 6.821 的参考书也是这本书。本书使用的Lisp编程语言,不过后来MIT改成用Python入门了。
[
计算机程序的构造和解释 原书第2版 典藏版
¥ 67.00起
加州伯克利CS61A的课程名仍然叫SICP,以前使用的也是SICP这本书,现在也改成了Python,建议学习这门课时,去伯克利学。
课程地址:伯克利cs61a SICP
本科基础课程
- 6.004 计算结构 ♦︎♦︎♦︎
课程地址:Computation Structures (Spring 2017)
这门课需要学习8.02的物理课
- 6.005 软件构建(Java)
课程地址:Software Construction (Spring 2016)
Java的基础课程,可以和6.031一起学习。
- 6.006 算法导论 ♦︎♦︎♦︎★★★★★
课程地址:Introduction to Algorithms (Fall 2011)
- 6.008 接口技术导论
课程地址:Introduction to Inference(2014)
- 6.009 程序设计基础 ♦︎♦︎♦︎★★★★★
课程地址:Fundamentals of Programming
主要是Python编程
- 6.033 计算机系统 ★★★★★
课程地址:Computer System Engineering (Spring 2018)
- 6.034 人工智能 ★★★★★
课程地址:Artificial Intelligence (Fall 2010)、Artificial Intelligence (Spring 2005)
- 6.041 概率系统分析和应用概率论
课程地址:Probabilistic Systems Analysis and Applied Probability (Fall 2010)、Probabilistic Systems Analysis and Applied Probability (Fall 2013)
- 6.042J 计算机科学中的数学(离散数学)♥︎♥︎♥︎★★★★★
课程地址:Mathematics for Computer Science (Spring 2015)
本科高级课程
以下课程只需要选择两三门课来学习就可以了。
- 6.031 软件构建(Java)
这门课主要学的是Java,没有参考书,课程链接有比较详细的线上教程;可以和6.005一起学习。
- 6.033 计算机系统工程
课程地址:6.033 Computer Systems Engineering (12)
- 6.035 计算机语言工程 ★★★★★
课程地址:Computer Language Engineering (Spring 2010)、Computer Language Engineering (SMA 5502) (Fall 2005)
这门课主要讲的是编译原理,使用的教材是虎书《现代编译原理》和鲸书 《高级编译器设计与实现》。
[
现代编译原理 C语言描述 修订版(图灵出品)
京东
¥ 64.80
去购买
[
现货正版 高级编译器设计与实现[图书]鲸书 中文版 计
京东
¥ 75.00
去购买
- 6.036 机器学习导论 ★★★★★
课程地址:Introduction to Machine Learning (Fall 2020)
- 6.045J 自动机、可计算性和复杂性
课程地址:Automata, Computability, and Complexity (Spring 2011)
- 6.046J 算法的设计与分析
课程地址:Design and Analysis of Algorithms (Spring 2015)
- 6.073 视频游戏开发
课程地址:Creating Video Games (Fall 2014)
- 6.080/6.089 计算机科学的伟大理论★★★★★
课程地址:Great Ideas in Theoretical Computer Science (Spring 2008)
- 6.170 软件工程(前端开发JavaScript)
课程地址:Software Studio
这门课以前是使用Ruby的Rails和JavaScript来搭建一个全栈开发项目。而现在则完全是使用JavaScript来做全栈开发,内容包含Node、MySQL、React等。
- 6.171 Web应用开发与软件工程
课程地址:Software Engineering for Web Applications (Fall 2003)
这门课可以和6.170一起学,主要如何构建高并发、安全、可靠等的Web应用
- 6.172 软件系统的性能(C语言) ★★★★★
课程地址:Performance Engineering of Software Systems (Fall 2018)
这门课主要教你如何构建大型高性能的软件系统,包含性能分析、高性能、缓存优化、并行程序等,使用的是C语言。这门课没有参考教材,倒是有一堆文章需要你阅读,具体可以去官网的Readings了解。
- 6.175 计算机体系结构 ★★★★★
课程地址:Constructive Computer Architecture
学这门课需要你掌握一门面向对象的编程语言(Java或C++)或函数式编程语言(ML或Haskell),以及6.004、6.005
- 6.207J 计算机网络
- 6.338J 并行计算
课程地址:Parallel Computing (Fall 2011)
- 6.801 机器视觉
课程地址:Machine Vision (Fall 2020)
- 6.803 人工智能事业
课程地址:The Human Intelligence Enterprise (Spring 2019)
- 6.804J 计算人知科学
课程地址:Computational Cognitive Science (Fall 2004)
- 6.811 辅助技术原理与实战
课程地址:Principles and Practice of Assistive Technology (Fall 2014)
- 6.813 用户界面设计与实践
课程地址:User Interface Design and Implementation (Spring 2011)
- 6.815/6.865 数字与计算成像
课程地址:Digital and Computational Photography
- 6.816/6.189 多处理器编程的艺术
课程地址:Multicore Programming Primer (January IAP 2007)
这门课没有对外公开,只了解到它使用的参考教材是《多处理器编程的艺术》
[
现货正版 多处理器编程的艺术(修订版)计算机科学丛书[
¥ 60.00起
- 6.819/6.869:高级计算机视觉
课程地址:Advances in Computer Vision (12)
- 6.820 程序分析基础
课程地址:Fundamentals of Program Analysis (Fall 2015)
- 6.837 计算机图形学
课程地址:Computer Graphics (Fall 2012)
- 18.404/6.840 计算理论导引
课程地址:Theory of Computation (12)
研究生课程
- 6.254 游戏理论的工程应用
课程地址: Game Theory with Engineering Applications (Spring 2010)
- 6.823 计算机系统架构
课程地址:Computer System Architecture (Fall 2005)
- 6.824 分布式计算机系统工程
课程地址:Distributed Computer Systems Engineering (Spring 2006)
这门课的老师之一是Robert Morris,他是蠕虫的制造者,曾被评为5大黑客之一。
- 6.825 人工智能技术
课程地址:Techniques in Artificial Intelligence (SMA 5504) (Fall 2002)
- 6.826 计算机系统理论
课程地址:Principles of Computer Systems (Spring 2002)
- 6.827 多线程并发:语言与编译器
课程地址:Multithreaded Parallelism: Languages and Compilers (Fall 2002)
- 6.828: 操作系统工程
课程地址:Operating System Engineering(2018)、Operating System Engineering (Fall 2012)
前置课程是 6.033 Computer System Engineering、6.170 Software Studio、6.004 Computation Structures
这门课研究的是操作系统的基础设计和实现,包括虚拟内存、线程、上下文切换、内核、中断、系统调用、进程间通信、协调和软件和硬件之间的交互。
- 6.829: 计算机网络
课程地址:Computer Networks, Fall 2020、Computer Networks (Fall 2002)
- 6.830/6.814 数据库系统 ★★★★★
课程地址:Database Systems (Spring 2021)、Database Systems (Fall 2010)
- 6.831 用户接口设计与应用
课程地址:User Interface Design and Implementation (Spring 2011)
- 6.838 计算机动画的算法
课程地址:Algorithms for Computer Animation (Fall 2002)
- 6.840J 计算理论
课程地址:Theory of Computation (Fall 2006)
- 6.841J 计算复杂性理论
课程地址:Advanced Complexity Theory (Spring 2016)
- 6.844 计算复杂性理论(Scheme语言)
课程地址:Computability Theory of and with Scheme (Spring 2003)
- 6.851 高级数据结构
课程地址:Advanced Data Structures (Spring 2012)
- 6.852J 分布式算法
课程地址:Distributed Algorithms (Fall 2009)
- 6.854J 高级算法
课程地址:Advanced Algorithms (Fall 2008)、Advanced Algorithms (Fall 2005)
- 6.855J 网络优化
课程地址:Network Optimization (Fall 2010)
- 6.856J 随机算法
课程地址:Randomized Algorithms (Fall 2002)
- 6.857 网络与计算机安全
课程地址:Network and Computer Security (Spring 2014)
- 6.858 计算机系统安全
课程地址:Computer Systems Security (Fall 2014)
- 6.859J 整数规划与组合优化
课程地址:Integer Programming and Combinatorial Optimization (Fall 2009)
- 6.863J 自然语言与计算机表示
课程地址:Natural Language and the Computer Representation of Knowledge (Spring 2003)
- 6.864 高级自然语言处理
课程地址:Advanced Natural Language Processing (Fall 2005)
- 6.866 机器视觉
课程地址:Machine Vision (Fall 2020)
- 6.867 机器学习
课程地址:Machine Learning (Fall 2006)
- 6.871 知识型应用系统
课程地址:Knowledge-Based Applications Systems (Spring 2005)
- 6.875 密码学与密码分析
课程地址:Cryptography and Cryptanalysis (Spring 2005)
- 6.876J 高级密码学
课程地址:Advanced Topics in Cryptography (Spring 2003)
- 6.881 图像表示与分析方法
课程地址:Representation and Modeling for Image Analysis (Spring 2005)
- 6.883 普遍计算技术
课程地址:Pervasive Human Centric Computing (SMA 5508) (Spring 2006)
- 6.883 程序分析
课程地址:Program Analysis (Fall 2005)
- 6.890 算法复杂度分析
课程地址:Algorithmic Lower Bounds: Fun with Hardness Proofs (Fall 2014)
- 6.892 语篇分析的计算机模型
课程地址:Computational Models of Discourse (Spring 2004)
- 6.895 编码要素理论
课程地址:Essential Coding Theory (Fall 2004)
- 6.895 平行系统理论
课程地址 Theory of Parallel Systems (SMA 5509) (Fall 2003)
- 6.896 平行硬件理论
课程地址:Theory of Parallel Hardware (SMA 5511) (Spring 2004)
- 6.897密码学论文选读
课程地址:Selected Topics in Cryptography (Spring 2004)
实验课
MIT针对不同的编程语言都有配套的实验课Lab,如C语言、Java、C++等
- 6.087 C语言实战
课程地址:Practical Programming in C (January IAP 2010)
- 6.088 C语言内存管理与C++面向对象
课程地址:Introduction to C Memory Management and C++ Object-Oriented Programming (January IAP 2010)
- 6.090 软件开发经验
课程地址:Building Programming Experience: A Lead-In to 6.001 (January IAP 2005)
- 6.092 Java程序导论
课程地址:Introduction to Programming in Java (January IAP 2010) 、Java Preparation for 6.170 (January IAP 2006)
- 6.096 C++程序开发
课程地址:Introduction to C++ (January IAP 2011)
- 6.370 人工智能竞赛
课程地址:The Battlecode Programming Competition (January IAP 2013)