复杂凌乱阅读版⭐以下:
——##——很多内容都更新到上面清爽版链接了。这篇有些内容没更新。
- 启
- 提示:英文文章阅读有困难,可借用谷歌翻译或者彩云小译。
- #
- #
- 本文参考材料:
- 计算机科学:
- 自学者:
- 技术债(Technical Debt):
- 文章末尾 :
- 美国大学CS课程路线⭐
- 大学课程安排普遍Python入门–数据结构和算法–计算机架构–计算机网络–操作系统
- 推荐课程路线CS61A – 61B -61C,推荐原因已在本文阐述。
- #
- #
- 计算机历史:
- ##
- ##
- Reddit 从零学编程 常见问题大全 (超适合零基础)⭐⭐
- ##
- ##
- CS相关⭐
- CS专栏 EECS 村委会-CS SE EE MIS专业分会|一亩三分地 ⭐
- 1亩3分地—介绍和点评你上过的公开课 (国外公开课建议上这个论坛)
- 上海交通大学 18 级计算机系第一名「迟先生」—-CS自救指北
- Badger4us:编程入门指南 v1.5
- ##
- ##
自学路线:
简略版
1、程序抽象:伯克利CS61A
----(偏重:软件)(语言:Python Scheme SQL)(教材《SICP》Python版)
----
2、计算机架构:Nand2tetris从与非门到俄罗斯方块
----(偏重:硬件+软件)(语言:硬件描述语言HDL 机器语言Hack 汇编 高级语言 Python Java可选)
----(教材《计算机系统要素》
----
3、数据结构和算法:伯克利CS61B
----(偏重:软件)(语言:Java)
----(教材:这门课没有必需教材)(本课程5-14周的选修教材是Wayne和Sedgewick的《算法》第四版。)
----
4、计算机架构进阶:
----伯克利CS61C 《计算机组成与设计RISC-V版》COD
--------(偏重:硬件+软件)(语言:C)(C语言教材 :The C Programming Language)
----CMU 15-213 《深入理解计算机系统》CSAPP
--------(偏重:硬件+软件)(语言:C)(C语言教材 :The C Programming Language)
----
5、计算机网络:《计算机网络:自顶向下方法》
----相关课程看详细版 和 文末CS课程索引
6、操作系统:《操作系统导论Operating Systems: Threee Easy Pieces》
----相关课程看详细版 和 文末CS课程索引
详细版
- ①入门(可跳过进入②)
- ②程序抽象 //课程对应SICP ⭐
- //《SICP》也就是《计算机程序的构造与解释》这本书,Python版SICP
- ①伯克利CS 61A √⭐⭐Python 偏重:软件
- ##
- 相关链接:
- 课程介绍
- CS 61A 专注于抽象的概念,允许程序员以适合问题的方式思考,而不是由计算机硬件决定的低级操作.在 cs61a 中,我们感兴趣的是教你如何编程,而不是如何使用一种特定的编程语言。我们考虑了一系列控制程序复杂性的技术,如函数式编程、抽象化编程和面向对象程序设计编程。61A 主要使用 Python 3编程语言。在本课程的后半部分,我们还将使用另外两种语言: Scheme 编程语言和 SQL 语言。掌握一门特定的编程语言是 cs61a 的一个非常有用的副作用。然而,我们的目标不是指定你在未来的努力中使用什么语言。相反,我们希望一旦你学会了编程中涉及的概念,你会发现学习一门新的编程语言只是几天的工作。
- CS61A教科书作者:John DeNero
- 他于2010年获得了斯坦福大学的哲学硕士学位以及加州大学伯克利分校的电气工程和计算机科学博士学位。在成为教授之前,约翰是Google的高级研究科学家,主要从事Google Translate和自然语言处理。
- 2015年CS 61A荣登 美国最好的五门计算机科学课程(彭博社)
- ##
- ##
- ②计算机架构入门(可跳过进入CSAPP,但不建议,对硬件和软件有帮助,重点很有趣)
- ③Amazon《计算机系统要素》2021版⭐⭐ 偏重:硬件 + 软件
- 官网也叫nand2tetris,或者叫从与非门到俄罗斯方块
- coursera上免费,建议cs61a和《系统要素》同步进行,为后面课程打下基础。
- ##
- 相关链接:
- 静源:Nand2tetris__计算机系统要素第二版__The Elements of Computing Systems__从与非门到俄罗斯方块⭐⭐
- 静源:Nand2tetris《计算机系统要素》__相关资料__关于学习计算机架构结构__从教师的角度
- 工匠的计算机科学课程 ⭐⭐
- 为复杂的课程做好「承先启后」的设计,让学习过程不会迷路。
- ##
- 课程介绍:
- cs61a讲的是程序的抽象,《系统要素》讲的是计算机架构自底向上的抽象。两门课可以达到相辅相成的效果。两门课都没有学习前提要求,很适合。这门课属于比较基础,比较全面的课程,对细节没有过多的涉及。它的特色在于将计算机基础串联了起来。解开了底层的神秘面纱。
- 这门课对于后面CSAPP课程有很大帮助。可以当作CSAPP先修课。
- 理解计算机如何工作的最好方法是从头开始构建一个计算机,这本教科书引导学习者通过12章和项目逐步构建一个简单但强大的计算机系统的硬件平台和软件层次。在此过程中,学员可以获得硬件、架构、操作系统、编程语言、编译器、数据结构和算法以及软件工程方面的实际知识。使用这种建设性的方法,这本书向学习者介绍了一个重要的计算机科学知识体系,并演示了如何理论和应用技术教授其他计算机科学课程,以适应整体图景。
- 教授学生如何从一个最基础的nand 逻辑闸开始,一路往上建构出所有基础元件,像是and, or, xor, not, MUX, DMUX, Adder, Memory 等等,接着建构出CPU 与整台电脑,然后再学习如何在建构出这台电脑上的『组译器、编译器、作业系统』等等,最后在这个具备软硬体的电脑上写一个小型的方块游戏。
- 同样是从系统面开始去介绍Computer Science,几年之后接触到CMU 的Computer Systems: A Programmer’s Perspective,难度就完全不一样,因为它是设计给未来想要以Computer Science 作为工作的人;而NAND to Tetris 则是设计给兴趣使然的自学者,我们虽然有兴趣,但内心都还是很脆弱的呜呜。
- ##
- ##
- ③Amazon《计算机系统要素》2021版⭐⭐ 偏重:硬件 + 软件
- ③数据结构和算法⭐
- ①伯克利cs61b■⭐⭐Java 偏重:软件
- //看网上评论,据说 刷完cs61b基本就可以leetcode刷题了。
- 或者斯坦福cs106b
- 或者CSE 373 《The Algorithm Design Manual》
- 或者Tim Roughgarden’s course
- 或者CMU 15-210
- 或者MIT 6.00.6
- 或者普林斯顿 算法红皮书 豆瓣9.4分算法圣经
- ##
- 相关链接:
- ##
- ##
- ①伯克利cs61b■⭐⭐Java 偏重:软件
- ④计算机架构、程序员的视角 //课程对应《CSAPP》⭐
- 51-213用的是《深入理解计算机系统》CSAPP这本书 偏重:硬件 + 软件
- 61C用的是《计算机组成与设计RISC-V版》偏重:硬件 + 软件
- 两门课程C语言教材《The C Programming Language》必备
- 伯克利CS61C⭐⭐
- 或者CMU 15-213 有Lab ⭐⭐
- 或者MIT 6.004
- 或者斯坦福CS107 ➡ CS110
- 哈佛CS61
- 普林斯顿COS375
- 威尔斯利CS240
- #
- 相关链接:
- ##
- CS61C:CS61A 及 CS61B (或等同项目)。如果您对基于 c 语言的编程语言有扎实的经验,那么可以绕过 CS61B 的要求。但是CS61B数据结构和算法非常重要!
- 学CS61A中后期和CS61B过程中,空闲时间可以多看看CS61C教程或者教材书提前预习,加快进度。
- CSAPP是计算机架构导论,对后面学习操作系统有非常大的帮助。
- ##
- ④计算机网络:自顶向下方法 ⭐
- 书官网《计算机网络:自顶向下方法Computer Networking: a Top Down Approach》
- 斯坦福 CS144
- 普林斯顿COS461
- 威尔斯利CS242
- 其他计算机网络课程可以参考 文章末尾 大学CS课程公开索引。
- ##
- ##
- ⑤CSAPP➡深入OS 操作系统
- 书籍在线官网《Operating Systems: Three Easy Pieces》
- 伯克利 cs162
- xv6
- MIT 6.S081 ➡ 6.828
- WISC Operating Systems: Three Easy Pieces 配套课
- ##
- 操作系统导论
- ##
- ⑥算法
- 伯克利cs170
- 算法设计手册书和课程
- ##
- ##
- ⑥数据库
- 伯克利CS186
- the databases “Red Book”
- ##
- ##
- ⑥分布式系统
- 书Designing Data-Intensive Applications.
- 书Distributed Systems, 3rd Edition.
- MIT 6.824
- 阅读论文
- ##
- ##
- ⑥AI/ML/Graphics
- AI
- 伯克利CS126 ➡ CS188
- ML
- Andrew Ng’s Coursera course
- 伯克利CS127 ➡ CS189
- Graphics
- 伯克利CS184
- ##
- ##
- AI
- ⑦其他资料自行摸索,谷歌搜索技巧,GitHub搜索技巧
- ##
- ##
- Teach Yourself Computer Science高亮笔记(机翻)
- 我们认为你是一个自学成才的软件工程师,训练营的毕业生或者早熟的高中生,或者是一个希望通过自学来补充正规教育的大学生。
- ##
- 例如,我们注意到,如果学生已经专业地使用过数据库,他们就喜欢学习数据库系统; 如果学生参与过一两个网络项目,他们就喜欢学习计算机网络。
- ##
- 首先学习数学可以帮助你更深入地分析和理解你的算法,但首先学习算法将为离散数学提供更大的动力和背景。
- ##
- 因此,我们建议的顺序基本上是帮助你刚刚开始…
- 我们认为最重要的“先决条件”是: 在操作系统或数据库之前的计算机体系结构,以及在分布式系统之前的网络和操作系统。
- ##
- This guide was originally written byOz NovaandMyles Byrne, with 2020 updates by Oz.
- 本指南最初由 Oz Nova 和 Myles Byrne 撰写,2020年更新由 Oz 完成。
- ##
- ##
- 全栈Full Stack ⭐
- 计算机基础、计算机科学CS⭐
- 程序抽象-数据结构和算法-计算机架构-计算机网络-操作系统
- 前端
- 后端
- 后端基础(理论+实践)
- 计算机基础、计算机科学CS ⭐
- 特定的工具与技术(应用)
- 项目
- 数据分析Excel
- ##
- ##
- 后端基础(理论+实践)
- 计算机基础、计算机科学CS⭐
- 其他收藏资源
- 计算机教育研究论文:
- 计算机科学资源(合集大全,精挑细选):
- 这是1000个 YouTube 视频中的整个计算机科学课程
- GitHub -OSSU
- GitHub – My Computer Science Curriculu
- GitHub -ForrestKnight/open-source-cs
- GitHub -计算机科学与编程-版本4.0
- 超赞合集 awesome list chinese
- 我的10步自学计算机科学课程 — 有什么建议吗?
- Stanford Code in Place 团队共享了一个路线图
- 如何学习计算机科学?[大量的分步指南] ⭐
- 美国高校第一门计算机课程调研情况分析
- 自学CS路线、资源推荐 ⭐
- 研究了美国四大计算机名校的培养方案,核心课程都在这了 – 云+社区 – 腾讯云
- 计算机公开课推荐 · 语雀
- #
- #
- 相关经验:
- 前端
- Python
- 英语
- Chrome插件-沙拉查词 ⭐
- 彩云小译—中英对照 ⭐
- 沙拉查词+quicker全局查词. ⭐
- 文献翻译利器:沙拉查词+ Quicker,这或许是 Windows上的聚合翻译方案
- 对英语语法不熟悉,可选《Great Writing》和《Grammar In Context》。⭐
- 语法工具书查阅可选《Grammar In Use》
- 程序猿该如何培养自己的英语能力,可以达到阅读英文文档的水平?
- 菜鸟怎么快速背单词?
- PC端好用的英语查词工具?
- 有什么查单词软件查完能收录在一起可以背诵?
- 亚马逊Amazon英语学习畅销书排名和英语教材书选择
- ##
- ##
- 数学
- 哔哩哔哩-3Blue1Brown ⭐⭐
- 可汗学院-Khan Academy ⭐⭐(不同级别数学、编程课程都包含)
- OpenStax ⭐⭐
- maths is fun
- betterexplained学会理解数学,而不是死记硬背
- Online Math Help And Learning Resources ⭐⭐
- ##
- ##
- 对我启发最大的数学学习方法(转自知乎) – xitingxie – 博客园
- 国外优秀数学教材选评(序言)
- 《How to Solve It》
- 线性代数
- 微积分相关
- 离散数学
- ##
- ##
上面内容 · 补充细节描述
本文作者起初制作的图,仅作参考
《计算机系统要素》nand2tetris教学路线图
英语
如何看英文文档
https://video.zhihu.com/video/1331402154641645568?player=%7B%22shouldShowPageFullScreenButton%22%3Atrue%7D编程英语自学英语阅读英语文档工具方法资源我要面包的视频 · 1780 播放https://video.zhihu.com/video/1354731304785838080?player=%7B%22shouldShowPageFullScreenButton%22%3Atrue%7D①英语生词理解摘录②用词仿写句子英语写作我要面包的视频 · 552 播放
彩云小译-中英对照-中文字转换颜色和加粗
F12开发者工具—Sources面板—Snippets
document.querySelectorAll(".cyxy-trs-target").forEach(item => {
//颜色
item.style.color = "rgb(236 57 0)";
//加粗
item.style.fontWeight = 'bold';
})
CS书籍对应课程
SICP
- 2020伯克利CS 61A———对应SICP———-Brian Harvey’s Berkeley CS 61A
- 学习CS61A的前提:
- 数学1A 被列为 CS 61A 的共同要求。(也就是说,可以同时执行)数学10A 或数学16A 也可以。在不知道或不学习微积分的情况下学习 CS 61A 是可能的; 所有旧的微积分的例子已经在这些年里被移除了。然而,学习微积分是复习算术和代数的一个很好的方法,这两门课程经常出现在 cs61a 课程中。
- CS 61A 没有正式的编程先决条件,但它不是所有学生的正确的第一门课程。许多 CS 61A 的学生有丰富的编程经验,包括之前的课程。一些学生在没有任何编程经验的情况下参加了这门课程,但是他们通常必须更加努力地学习来掌握这些材料,也许仅仅是因为他们在编程方面缺乏实践经验。
- 2011伯克利61A视频讲座(英文) 英语超强的可以看一看
- MIT视频讲座 好像有点老
CSAPP
- 伯克利CS 61C———对应CSAPP———–Berkeley CS 61C
- 学习61C前提:CS61A 和 CS61B (或者等价物)。如果你对基于 c 的编程语言有丰富的经验,可以绕过 CS61B 的要求。
- 2015伯克利61C课程
- 2015伯克利61C视频讲座
- ##
- 15-213/18-213/14-513/15-513/18-613: Introduction to Computer Systems (ICS)—15-213 计算机系统简介
- 这是 ICS + 课程,CS: APP 文本的主要灵感来源
- 学习前提:15-122
- 摘要:1998年秋季,我们引进了一个新的本科生CMU的课程名为“计算机系统简介”(ICS)。 以来然后,每学期向400名学生提供ICS,大多数是计算机科学和计算机工程专业的大二学生。 ICS是CMU有史以来收视率最高的二年级CS课程,学生对上学期的平均评价为4.77 / 5.0,中位数为5.0 / 5.0。 它也已成为大多数高层的先决条件CS和ECE中的系统课程。
- ICS的成功促使我们写了一本教材,《计算机系统:《程序员的视角》(CSAPP),现在是普利蒂斯霍尔出版社出版的第三版。
计算机网络:自顶向下方法
- 斯坦福CS 144———对应计算机网络:自顶向下方法——Stanford CS 144
- 学习CS144前提: ↑
- CS110: Principles of Computer Systems C++
- 学习CS110前提: ↑
- CS107 Computer Organization & Systems C and C++, Unix/Linux
- 学习CS107前提: ↑
- CS106B Programming Abstractions C/C++
- 学习CS106B前提: ↑
- CS106A: Programming Methodologies Python
- CS106A\B\107\110也算CSAPP的子集
- Youtube视频
美国哪些大学CS课程公开?
伯克利 Berkeley
计算机科学技能需求量很大,你不需要为了计算机科学的职业生涯而主修计算机科学。如果你计划从事计算机科学的职业,你应该至少参加计算机科学61A/AS 和61B/BL。另外,学习 cs61c 可以确保你理解完整的堆栈。Cs10 和/或 cs8 在为 CS61A/AS 做准备时很有用,如果您以前没有或很少有编程背景的话。数学技能也很重要; 一个关键的要求是离散数学和概率,cs70。其他的数学课程对于计算机科学的特定领域是有帮助的; 例如,计算机图形学使用了大量的线性代数和多元微积分对于机器学习是有用的。完成 CS61ABC 和 CS70课程,再加上生物学或化学背景,将为你在生物信息学和计算生物学研究方面的高级部门工作打下良好的基础。你甚至可以去研究生院在 CS 完成后,在这里的 CS 或 EECS 副课程!Math 1A 1B(微积分)
斯坦福计算机科学计划
CS106A 是我们第一季度的程序设计课程。它教授广泛使用的 Python 和优秀的软件工程原理。如果你有兴趣学习如何编程计算机,这是一个开始的地方。CS106A 没有任何先决条件-它对每个人开放!这门课程的设计明确地吸引了人文学者、社会科学家以及核心技术人员。事实上,大多数 CS 106A 的毕业生最终都选择了工程学院以外的专业。本课程不要求有编程背景,但需要相当的投入和努力学习。 CS106B 假设你有 CS106A 级别的编程经验,虽然你不一定非要选修 CS106A 课程才能选修 CS106B。如果您对基本的控制结构(条件、循环)、变量、数组/列表、映射和程序分解有经验,那么您应该准备接受 CS106B 106b 使用 C++程式语言语言教学,但是 c + + 更多的是作为思想的载体,而不是作为研究对象。如果你对深入研究 c + + 感兴趣,可以考虑研究一下 CS106L。
- CS106A 是编程和计算机科学的第一门课程,为那些没有任何经验的人开设。CS106B 是第二门课程,为那些懂得基本编程的人讲授更高级的编程和计算机科学。
- CS106A 为以前没有编过程序的人介绍了代码和计算机编程。
- 我们将涵盖 Python 中基本编程的所有重要主题: 类型、数字、字符串、函数、线性集合、字典、逻辑、分解、良好的编程风格、整个程序结构、文本、文件处理、调试和性能。我们还将介绍一些将来可能需要的更高级的主题,包括 lambdas、 comprehension、 modules 和 Jupyter 笔记本。
- CS106B 编程抽象是我们编程序列入门课程的第二门课程。
- 前提条件 CS106A 为 Python 的编程方法和问题解决奠定了坚实的基础。有了这些,CS106B 会让你熟悉 C++程式语言,并介绍先进的编程技术,如递归,算法分析,抽象化,探索经典的数据结构和算法,并给你实践应用这些工具来解决复杂的问题。
- C + + 基础
- 抽象数据结构
- 递归
- 课程和面向对象程序设计
- 内存管理和实现级抽象
- 链接数据结构
- 高级算法
- CS107是斯坦福编程序列入门课程的第三门课程。
- CS106课程为您提供了编程方法论和抽象方面的坚实基础,CS107以此为基础建立并扩展了您的编程经验和技术的广度和深度。本课程将从 c 语言到微处理器来解开机器的神秘面纱。随着对计算机系统如何执行程序和操作数据的完全理解,你将成为一个更高效的程序员,尤其是在处理调试、性能、内存和健壮性等问题时。课程包括: c 语言,数据表示,机器级代码,计算机算法,代码编译的元素,内存和运行时性能的优化,内存的组织和管理。
- CS107的先决条件是 CS106B/x (或同等学历)。你应该具备使用递归、动态数据结构(指针、链表、树、图)、抽象化、经典数据结构(列表、堆栈、队列、集合、映射)和标准算法(搜索、排序、散列)的实用 c/c + + 技能。您应该了解良好的工程和设计的内在价值,并且期望生成分解良好、可读的代码。如果你需要帮助来决定你的正确位置与我们谈话。
- CS107和 CS110都是 b & o 教科书《CSAPP》的子集
- Computer Systems: A Programmer’s Perspective 计算机系统: 程序员的视角 by Bryant and O’Hallaron, either the 2nd or 3rd edition
CMU卡内基梅隆大学 计算机科学
MIT OpenCourseWare (OCW)
这个想法很简单: 把我们所有的课程材料都发布到网上,让每个人都能广泛地获得。”麻省理工学院工程学院教授 Dick k.p. Yue 麻省理工学院 MIT开放课程是一个基于网络的出版物,几乎涵盖了麻省理工学院的所有课程内容。开放式课程对全世界开放,并且是麻省理工学院的永久活动。 通过开放式课程,教育工作者改进课程和课程,使学校更加有效; 学生找到额外的资源来帮助他们成功; 独立学习者丰富他们的生活,并使用内容来应对我们世界上最困难的挑战,包括可持续发展、气候变化和根除癌症。