“ MIT是所有理工科学子的圣殿,素以顶尖的工程学和计算机科学而著名。“
最初打算总结一份MIT的计算课程列表,没想到后来越看越多,MIT、CMU、PKU、THU....让你看到头秃...
👉 推荐:如果小伙伴访问Github仓库速度较慢,可以访问码云,我在码云上也放了一份,同步更新
📙 仓库贡献指南
- 点击右上角
fork
按钮,将项目fork
到自己的Github账户里。 - 使用
git clone
将项目克隆到本地。
git clone https://github.com/forthespada/Awsome-Courses.git
- 用编辑器打开进行贡献,然后提交到
fork
的仓库。
code .
git add .
git commit -m "What did you do?"
git push origin master
- 提交
Pull request
学习计算机这么多年以来,慢慢的也收集到一些不错的学习资源,现在免费分享一下。
- 速来!浙江大学CS本科生课程开源了
- 大格局!清华大学计算机系课程攻略共享计划!
- 1000+计算机经典PDF电子书
- Java/C++/Golang等版本的LeetCode算法题解
- 侯捷老师C++&陈硕老师Linux网络编程全套视频
- 阿里、百度、字节、腾讯等互联网一二线中厂校招面试PDF合集
- 计算机经典图书TOP50 PDF版本合集
- Github 上的各种硬核技术学习路线思维导图~
- 图解操作系统、网络、计算机组成PDF下载!那些让你起飞的计算机基础知识~
- 后端必备!SQL语法速成手册!~
- 10套简历模板!Word格式,白嫖可用~
- 《Pro Git 中文版》PDF,带你学会git的骚操作~
- ....
如果你挑花眼了,不知道该学哪个?
过来人推荐你去看看本页面的Crash Course Computer Science(计算机科学速成课)、哈佛大学的CS-50、MIT的 6.828 、MIT 的6.824以及清华大学的OS课程。
这5门课程对于大多数人都绝对受用!
其实国内也有很多优秀编程视频,以前阿秀就曾经总结过三期,今天一起分享出来吧!
第一期:点击直达
第二期:点击直达
第三期:点击直达
- Crash Course Computer Science,计算机科学速成课
这门课有很多地方都适合小白,比如视频内容精炼但不冗余,该介绍到的都介绍到了,如果你担心这门课程过于简单,那你就大错特错了。
- 从继电器讲到真空管,最后再到晶体管和集成电路;
- 从最原始的纸袋打孔到机器语言的出现,再到汇编语言和高级语言,如Java、C++等;
- 从与或非的逻辑运算到CPU运算是如何处理的;
- 还有机器学习、深度学习以及人工智能等最新领域的介绍
如果说唯一美中不足的点,那就是其中部分环节语速过快,对于大多数国人来说看起来比较吃力,建议英语不太好的同学看的时候调成0.75倍速去观看。
这门课并不会教你如何从0开始学会编程,而是通过不断的抽象从底层到上层进行讲解,从高层次上纵览一系列的计算机话题。
在这期间也会穿插着很多有意思的历史故事,比如在存储器的时候就会以算盘为楔子引入,告诉你算法大约出现在公元前2500年。
适当穿插历史故事,确保小白不会枯燥&中途放弃,当讲到计算机网络的时候,则是以动图的形式告诉你交换机上是如何工作的;
交换机是如何工作的
只能说看起来不是一般的爽,而是特别的很爽。
地址:https://www.bilibili.com/video/BV1EW411u7th?p=28&vd_source=3fc05c3b7f095e12a12ea9850e2e0a35
- CS-50
哈佛大学公开课:计算机科学cs50是经典的计算机入门课程,他还有一个广为人知的外号:计算机速成课。
只要是正常高中毕业的同学应该都能听懂,应该算是面向零基础的课程。
这门课一共20集,一天看一集也就只需要20天,这门课的内容包括基本的计算机知识以及基础算法,常见的编程语言等等,还会探讨最新的计算机科学领域的成果,课程发散性思维强。
多说一句,CS50课程的讲课形式让人耳目一新,真正做到了“快乐学习”。。
地址:https://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fcs50.html
- 6.0001: Introduction to Computer Science and Programming in Python
该课程适合很少或根本没有编程经验的学生。它旨在让学生了解计算在解决问题方面可以发挥的作用,并帮助所有专业的学生都有理由相信他们有能力编写小程序并使他们能够完成有用的目标。
值得注意的是该课程使用 Python 3.5 编程语言。
- 6.821 计算机程序的构造和解释
课程地址:Structure and Interpretation of Computer Programs、 6.821 Programming Languages (Fall 2002)
SICP这门课以前在很长一段时间都是MIT入门的第一课,配套的教材SICP《计算机程序的构造和解释》也一直被认为是程序设计的经典著作,其中研究生课程MIT 6.821 的参考书也是这本书。
- 6.042: Mathematics for Computer Science
本课程提供面向计算机科学和工程的离散数学的交互式介绍。主题覆盖范围大致分为三部分:
- 数学的基本概念:定义,证明,集合,函数,关系。
- 离散结构:图形,状态机,模块化算术,计数。
- 离散概率理论。
基础课程大多是位本科生开设的。
- 6.004: Computation Structures
本课程介绍了数字系统和计算机架构的设计。强调以高级硬件语言表达所有硬件设计并综合设计,主题包括组合电路和顺序电路、可编程硬件指令集抽象、单周期和管道处理器实现、多级内存层次结构、虚拟内存、异常和 I/O 以及并行系统。
地址:https://6004.mit.edu/web/spring20
- 6.006: Introduction to Algorithms
本课程介绍了计算问题的数学建模。它涵盖了用于解决这些问题的常见算法,算法范例和数据结构。该课程强调算法与编程之间的关系,并介绍针对这些问题的基本性能指标和分析技术。
- 6.009: Fundamentals of Programming
本课程介绍编程的基本概念。旨在培养将基本方法从编程语言应用于抽象问题的技能。主题包括编程和 Python 基础知识、计算概念、软件工程、算法技术、数据类型和递归。实验组件包括软件设计、施工和设计实施。
地址:https://py.mit.edu/spring20
- 6.004 计算结构
课程地址:Computation Structures (Spring 2017)
- 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
- 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)
- 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)
这门课没有对外公开,只了解到它使用的参考教材是《多处理器编程的艺术》
- 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.034: Artificial Intelligence
本课程向学生介绍人工智能的基本知识表现、问题解决和学习方法。完成 6.034 后,学生应该能够通过组装解决方案来开发智能系统,从而解决具体的计算问题;了解知识表现、问题解决和学习在智能系统工程中的作用;并理解解决问题、视觉和语言在从计算角度理解人类智力方面的作用。
https://ai6034.mit.edu/wiki/index.php?title=Main_Page
- 6.033: Computer Systems Engineering (CI-M)
本课程包括有关计算机软件和硬件系统工程的主题。主题包括控制复杂性的技术;使用客户端 - 服务器设计、操作系统的强大模块化;性能,网络;命名;安全和隐私;容错系统、并发活动的原子性和协调性以及恢复;计算机系统对社会的影响。
地址:https://web.mit.edu/6.033/www/
- 6.031: Elements of Software Construction
介绍软件开发的基本原则和技术:如何编写安全无错误、易于理解且易于更改的软件。主题包括规范和不变;测试、测试用例生成和覆盖范围;抽象数据类型和表示独立性;面向对象编程的设计模式;并发编程,包括消息传递和共享内存并发,死锁;函数编程,具有不可变的数据和高阶函数。
地址:https://web.mit.edu/6.031/www/sp20/
- 6.036 Introduction to Machine Learning
从建模和预测的角度介绍机器学习的原则、算法和应用;制定学习问题;代表性、过度拟合、概括性;聚类、分类、概率建模;和诸如支持向量机、隐式马尔科夫模型和神经网络等方法。
地址:https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.036+1T2019/about
- 6.045: Automata, Computability, and Complexity
关于计算定义问题的数学介绍,以及计算机可以解决的问题。考虑通过有限的自动机,电路,图灵机和通信复杂性可以有效解决哪些问题。在某些情况下,为问题提供完整,严格的答案。建立根据难度对计算问题进行分类的技能。讨论其他基本问题,包括 Church-Turing 论文,P 与 NP 问题以及随机性。
地址:https://people.csail.mit.edu/rrw/6.045-2020/
- 6.046: Design and Analysis of Algorithms
高效算法的设计与分析技术,强调在实践中有用的方法。主题包括排序;搜索树、堆和哈希;分而治之;动态编程;贪婪算法;摊销分析;图形算法;和最短的路径。高级主题可能包括网络流;计算几何;数字理论算法;多项式和矩阵计算;缓存;和并行计算。
高级科目很多,这里只推荐一些比较知名&个人感兴趣的:
- 6.824: Distributed Systems
本课程介绍分布式系统设计的抽象和实现技术。主题包括:服务器设计、网络编程、命名、存储系统、安全性和容错能力。
地址:https://pdos.csail.mit.edu/6.824/
- 6.828: Operating System Engineering
本课程研究操作系统工程的基本设计和实现理念。讲座以 UNIX 和研究论文的研究为基础。主题包括虚拟内存、线程、上下文切换、内核、中断、系统调用、进程间通信、协调和软件和硬件之间的交互。单个实验室任务涉及在 C 中实施小型操作系统,并带有一些 x86 组件。
地址:https://pdos.csail.mit.edu/6.828/2019/schedule.html
- 6.829: Computer Networks
全球网络基础设施如何工作,其基础是什么设计原则?在实践中,这些设计原则在哪些方面受到了损害?我们如何使它在当今世界更好地工作?面对快速增长的规模和异质性,我们如何确保它在未来运作良好?应该如何编写 Internet 应用程序,以便它们能够为自己和使用基础结构的其他人获得最佳性能?这些是本课程中正在处理的一些问题。本课程将侧重于大型联网系统的设计、实施、分析和评估。
地址:https://web.mit.edu/6.829/www/currentsemester/
- 6.830/6.814: Database Systems
本课程依托数据库社区的主要阅读资料,向研究生介绍数据库系统的基础,重点介绍关系代数和数据模型、架构规范化、查询优化和事务。
地址:http://db.csail.mit.edu/6.830/index.phpdb.csail.mit.edu/6.830/index.php
-
Amazon 李沐大神出的《动手学深度学习》
-
台湾大学《Applied Deep Learning/Machine Learning and Having It Deep and Structured》
-
NJU ICS PA Bilibili链接
-
上海交通大学 操作系统 (陈海波、夏虞斌) BiliBili链接
- 数据结构 by 邓公 from 清华:MOOC
- MIT 6.824
- Stanford CS244b: Distributed systems
- CMU 15-440/640, Spring 2016: Distributed Systems
-
普林斯顿在 Coursera 上也公开了两门对应课程:Algorithms, Part I 和 Algorightmsm, Part2
-
斯坦福 CS106b (broken link)
- 计算机科学 哈佛: B站
- CMU-15441
- cs144
- top to down approach
- myk's top-to-down
- 伯克利 EE122
- Gate Lectures 计网
- 斯坦福 CS144
- 麻省理工MIT 计算机安全与网络安全 国内B站链接
- 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)
https://zhuanlan.zhihu.com/p/112763953
https://www.zhihu.com/question/57532048
https://www.zhihu.com/question/29597104