Skip to content

😏国内外计算机的优秀课程,包含MIT、CMU等世界CS名校,🔥🔥其中包含计算机基础学科(操作系统、计算机网络、编译器、数据库、数据结构与算法等)以及人工智能&AI等高级科目,欢迎通过PR形式贡献!

forthespada/Awsome-Courses

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 

Repository files navigation

loading

“ 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

编程资源分享

学习计算机这么多年以来,慢慢的也收集到一些不错的学习资源,现在免费分享一下。

1、我自己的学习笔记网站

从校园->职场多年的计算机自学总结,包括但不限计算机基础知识、算法、前端后端、校招&社招、互联网一线大厂中的工作体验等记录,坚持学习,持续成长! 传送门

2、各类精品编程资源分享

传送门

  • 速来!浙江大学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开始学会编程,而是通过不断的抽象从底层到上层进行讲解,从高层次上纵览一系列的计算机话题。

img

在这期间也会穿插着很多有意思的历史故事,比如在存储器的时候就会以算盘为楔子引入,告诉你算法大约出现在公元前2500年。

img

适当穿插历史故事,确保小白不会枯燥&中途放弃,当讲到计算机网络的时候,则是以动图的形式告诉你交换机上是如何工作的;

img

交换机是如何工作的

只能说看起来不是一般的爽,而是特别的很爽。

地址: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 编程语言。

地址:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/

  • 6.821 计算机程序的构造和解释

课程地址:Structure and Interpretation of Computer Programs6.821 Programming Languages (Fall 2002)

SICP这门课以前在很长一段时间都是MIT入门的第一课,配套的教材SICP《计算机程序的构造和解释》也一直被认为是程序设计的经典著作,其中研究生课程MIT 6.821 的参考书也是这本书。

  • 6.042: Mathematics for Computer Science

本课程提供面向计算机科学和工程的离散数学的交互式介绍。主题覆盖范围大致分为三部分:

  • 数学的基本概念:定义,证明,集合,函数,关系。
  • 离散结构:图形,状态机,模块化算术,计数。
  • 离散概率理论。

地址:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/

基础科目

基础课程大多是位本科生开设的。

  • 6.004: Computation Structures

本课程介绍了数字系统和计算机架构的设计。强调以高级硬件语言表达所有硬件设计并综合设计,主题包括组合电路和顺序电路、可编程硬件指令集抽象、单周期和管道处理器实现、多级内存层次结构、虚拟内存、异常和 I/O 以及并行系统。

地址:https://6004.mit.edu/web/spring20

  • 6.006: Introduction to Algorithms

本课程介绍了计算问题的数学建模。它涵盖了用于解决这些问题的常见算法,算法范例和数据结构。该课程强调算法与编程之间的关系,并介绍针对这些问题的基本性能指标和分析技术。

地址:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/

  • 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)

课程地址:Software Construction

这门课主要学的是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 计算机网络

课程地址:Networks (Spring 2018)

  • 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://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-034-artificial-intelligence-fall-2010/

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

高效算法的设计与分析技术,强调在实践中有用的方法。主题包括排序;搜索树、堆和哈希;分而治之;动态编程;贪婪算法;摊销分析;图形算法;和最短的路径。高级主题可能包括网络流;计算几何;数字理论算法;多项式和矩阵计算;缓存;和并行计算。

地址:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2015/

高级科目

高级科目很多,这里只推荐一些比较知名&个人感兴趣的:

  • 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

人工智能&AI

操作系统

程序语言

编译器

数据库系统

分布式系统

数据结构与算法

计算机网络

计算机系统设计

研究生课程

  • 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 Engineering6.170 Software Studio6.004 Computation Structures

这门课研究的是操作系统的基础设计和实现,包括虚拟内存、线程、上下文切换、内核、中断、系统调用、进程间通信、协调和软件和硬件之间的交互。

  • 6.829: 计算机网络

课程地址:Computer Networks, Fall 2020Computer 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

https://www.zhihu.com/question/20571226/answer/1901441044

https://zhuanlan.zhihu.com/p/39030715

About

😏国内外计算机的优秀课程,包含MIT、CMU等世界CS名校,🔥🔥其中包含计算机基础学科(操作系统、计算机网络、编译器、数据库、数据结构与算法等)以及人工智能&AI等高级科目,欢迎通过PR形式贡献!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published