From 2268ff6ed1a224920af22bac0588cfcefd760666 Mon Sep 17 00:00:00 2001 From: Lingkang Date: Tue, 18 Oct 2022 16:15:50 +0800 Subject: [PATCH 1/7] [TRANSLATION] translate cs189.md (#276) * translate cs189 * update cs189.en.md --- docs/机器学习/CS189.en.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 docs/机器学习/CS189.en.md diff --git a/docs/机器学习/CS189.en.md b/docs/机器学习/CS189.en.md new file mode 100644 index 00000000..4f665b46 --- /dev/null +++ b/docs/机器学习/CS189.en.md @@ -0,0 +1,18 @@ +# CS189: Introduction to Machine Learning + +## Descriptions + +- Offered by: UC Berkeley +- Prerequisites: CS188, CS70 +- Programming Languages: Python +- Difficulty: 🌟🌟🌟🌟 +- Class Hour: 100 Hours + +I did not take this course but used its lecture notes as reference books. From the course website, I think it is better than CS299 because all the assignments and autograder are open source. Also, this course is quite theoretical and in-depth. + +## Course Resources + +- Course Website: +- Recordings: +- Textbooks: +- Assignments: From 5f33a331149e3da51cb1dcae2d86fb2df7470b96 Mon Sep 17 00:00:00 2001 From: Vacodwave <45873697+HardwayLinka@users.noreply.github.com> Date: Fri, 21 Oct 2022 23:22:21 +0800 Subject: [PATCH 2/7] [TOOLS] Add learning workflow article in tools (#278) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 在 必学工具 内添加了关于工作流的文章 * 修改了《学习工作流的构建思路》的文章内容 * update workflow * update index.md Co-authored-by: Yinmin Zhong --- docs/index.md | 2 +- docs/必学工具/workflow.md | 120 ++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 docs/必学工具/workflow.md diff --git a/docs/index.md b/docs/index.md index 01b16491..2d8c7bd7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,7 +4,7 @@ # 前言 -**最近更新:英文版正在[建设中](https://github.com/PKUFlyingPig/cs-self-learning/issues/222),增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/CMU10-414.md)** +**最近更新:英文版正在[建设中](https://github.com/PKUFlyingPig/cs-self-learning/issues/222),增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/CMU10-414.md), 增加 [学习工作流](必学工具/workflow.md)** diff --git a/docs/必学工具/workflow.md b/docs/必学工具/workflow.md new file mode 100644 index 00000000..14a6d5cf --- /dev/null +++ b/docs/必学工具/workflow.md @@ -0,0 +1,120 @@ +> Contributed by [@HardwayLinka](https://github.com/HardwayLinka) + +计算机领域的知识覆盖面很广并且更新速度很快,因此保持终身学习的习惯很重要。但在日常开发和学习的过程中,我们获取知识的来源相对复杂且细碎。有成百上千页的文档手册,也有寥寥数语的博客,甚至闲暇时手机上划过的某则新闻和公众号都有可能包含我们感兴趣的知识。因此,如何利用现有的各类工具,形成一套适合自己的学习工作流,将不同来源的知识碎片整合进属于自己的知识库,方便之后的查阅与复习,就显得尤为重要。经过两年工作之余的学习后,我磨合出了以下学习工作流: + +![](https://raw.githubusercontent.com/HardwayLinka/image/master/Drawing 2022-10-20 11.23.41.excalidraw.png) + +## 底层核心逻辑 + +一开始我学习新知识时会参考中文博客,但在代码实践时往往会发现漏洞和bug。我逐渐意识到我参考的信息可能是错误的,毕竟发博客的门槛低,文章可信度不高,于是我开始查阅一些相关的中文书籍。 + +中文书籍的确是比较全面且系统地讲解了知识点,但众所周知,计算机技术更迭迅速,又因为老美在 CS 方面一直都是灯塔,所以一般中文书籍里的内容会滞后于当前最新的知识,导致我跟着中文书籍实践会出现软件版本差异的问题。这时我开始意识到一手信息的重要性,有些中文书籍是翻译英文书籍的,一般翻译一本书也要一两年,这会导致信息传递的延迟,还有就是翻译的过程中信息会有损失。如果一本中文书籍不是翻译的呢,那么它大概率也参考了其他书籍,参考的过程会带有对英文原著中语义理解的偏差。 + +于是我就顺其自然地开始翻阅英文书籍。不得不说,英文书籍内容的质量整体是比中文书籍高的。后来随着学习的层层深入,以知识的时效性和完整性出发,我发现 `源代码` > `官方文档` > `英文书籍` > `英文博客` > `中文博客`,最后我得出了一张 `信息损失图`: + +![](https://cdn.sspai.com/2022/10/11/bf07c1965a2e5bdf3f00644737789e2e.png) + +虽然一手信息很重要,但后面的 N 手信息并非一无是处,因为这 N 手资料里包含了作者对源知识的转化——例如基于某种逻辑的梳理(流程图、思维导图等)或是一些自己的理解(对源知识的抽象、类比、延伸到其他知识点),这些转化可以帮助我们更快地掌握和巩固知识的核心内容,就如同初高中学习时使用的辅导书。 此外,学习的过程中和别人的交流十分重要,这些 N 手信息同时起了和其他作者交流的作用,让我们能采百家之长。所以这提示我们学习一个知识点时先尽量选择质量更高的,信息损失较少的信息源,同时不妨参考多个信息源,让自己的理解更加全面准确。 + +现实工作生活中的学习很难像学校里一样围绕某个单一知识点由浅入深,经常会在学习过程中涉及到其他知识点,比如一些新的专有名词,一篇没有读过的经典论文,一段未曾接触过的代码等等。这就要求我们勤于思考,刨根究底地“递归”学习,给多个知识点之间建立联系。 + +## 选择合适的笔记软件 + +工作流的骨架围绕 `单个知识点多参考源,勤于提问给多个知识点之间建立联系` 的底层核心逻辑建立。我们写论文其实就是遵循这个底层逻辑的。论文一般会有脚注去解释一些关键字,并且论文末尾会有多个参考的来源,但是我们平时写笔记会随意得多,因此需要更灵活的方式。 + +平时写代码习惯在 IDE 里一键跳转,把相关的函数和实现很好地联系在了一起。你也许会想,如果笔记也能像代码那样可以跳转就好了。现在市面上 `双链笔记软件` 就可以很好地解决这一痛点,例如 Roam Research、Logseq、Notion 和 Obsidian。Roam Research 和 Logseq 都是基于大纲结构的笔记软件,而 `大纲结构` 是劝退我使用这两款软件的原因。一是 `大纲结构` 做笔记容易使文章纵向篇幅太长,二是如果嵌套结构过多会占横向的篇幅。Notion 页面打开慢,弃之。最终我选择了 Obsidian,原因如下: + +* Obsidian 基于本地,打开速度快,且可存放很多电子书。我的笔记本是 32g 内存的华硕天选一代,拿来跑 Obsidian 可以快到飞起 +* Obsidian 基于 Markdown。这也是一个优势,如果笔记软件写的笔记格式是自家的编码格式,那么不方便其他第三方拓展,也不方便将笔记用其他软件打开,比如 qq 音乐下载歌曲有自己的格式,其他播放器播放不了,这挺恶心人的 +* Obsidian 有丰富的插件生态,并且这个生态既大又活跃,即插件数量多,且热门插件的 star 多,开发者会反馈用户 issue,版本会持续迭代。借助这些插件,可以使 Osidian 达到 `all in one` 的效果,即各类知识来源可以统一整合于一处 + +## 信息的来源 + +Obsidian 的插件使其可以支持 pdf 格式,而其本身又支持 Markdown 格式。如果想要 `all in one`,那么可以基于这两个格式,将其他格式文件转换为 pdf 或者 Markdown。 那么现在就面临着两个问题: + +* 有什么格式 +* 怎么转换为 pdf 或 Markdown + +![](https://cdn.sspai.com/2022/10/11/3801b1c9b94286566fe677e3b12cc7b0.png) + +### 有什么格式 + +文件格式依托于其展示的平台,所以在看有什么格式之前,可以罗列一下我平时获取信息的来源: + +![](https://cdn.sspai.com/2022/10/11/07e97f372850054958d4961a3787a93f.png) + + +可以看到主要分为`文章`、`论文`、`电子书`、`课程`四类,包含的格式主要有 `网页`、`pdf` 、`mobi`、`azw`、`azw3`。 + +### 怎么转换为 pdf 或 Markdown + +在线的文章和课程等大多以网页形式呈现,而将网页转换为 Markdown 可以使用剪藏软件,它可以将网页文章转换为多种文本格式文件。我选择的工具是简悦,使用简悦可以将几乎所有平台的文章很好地剪藏为 Markdown 并且导入到 Obsidian。 + +![](https://cdn.sspai.com/2022/10/11/211cffa78f20a9e7286a7419e9e0b878.png) + +对于论文和电子书而言如果格式本身就是 pdf 则万事大吉,但如果是其他格式则可以使用 calibre 进行转换: + +![](https://cdn.sspai.com/2022/10/11/51575f65f6f4c6edfa6c5b97fd16d625.png) + +现在利用 Obsidian 的 pdf 插件和其原生的 markdown 支持就可以畅快无比地做笔记并且在这些文章的对应章节进行无缝衔接地引用跳转啦(具体操作参考下文的“信息的处理”模块)。 + +![](https://cdn.sspai.com/2022/10/11/d64a9a2d6406d2d367dcb505ede69c83.png) + +### 如何统一管理信息来源 + +对于 pdf 等文件类资源可以本地或者云端存储,而网页类资源则可以分门别类地放入浏览器的收藏夹,或者剪藏成 markdown 格式的笔记,但是网页浏览器不能实现移动端的网页收藏。为了实现跨端网页收藏我选用了 Cubox,在手机端看到感兴趣的网页时只需小手一划,便能将网页统一保存下来。虽然免费版只能收藏 100 个网页,但其实够用了,还可以在收藏满时督促自己赶紧剪藏消化掉这些网页,让收藏不吃灰。 + +![](https://cdn.sspai.com/2022/10/11/ad7ebfcb4619f64a41d328b88e0e3a12.png) + +除此之外,回想一下我们平时收藏的网页,就会发现有很多并不是像知乎、掘金这类有完整功能的博客平台,更多的是个人建的小站,而这些小站往往没有移动端应用,这样平时刷手机的时候也看不到,放到浏览器的收藏夹里又容易漏了看,有新文章发布我们也不能第一时间收到通知,这个时候就需要一种叫 `RSS` 的通信协议。 + +`RSS`(英文全称:RDF Site Summary 或 Really Simple Syndication),中文译作简易信息聚合,也称聚合内容,是一种消息来源格式规范,用以聚合多个网站更新的内容并自动通知网站订阅者。电脑端可以借助 `RSSHub Radar` 来快速发现和生成 `RSS` 订阅源,接着使用 `Feedly` 来订阅这些 `RSS` 订阅源(`RSSHub Radar` 和 `Feedly` 在 chrome 浏览器中均有官方插件)。 + +![](https://cdn.sspai.com/2022/10/11/5df6cd9d967f190df35928e781f9185f.png) + +到这里为止,收集信息的流程已经比较完备了。但资料再多,分类规整得再漂亮,也得真正内化成自己的才管用。因此在收集完信息后就得进一步地处理信息,即阅读这些信息,如果是英文信息的话还得搞懂英文的语义,加粗高亮重点句子段落,标记有疑问的地方,发散联想相关的知识点,最后写上自己的总结。那么在这过程中需要使用到什么工具呢? + +## 信息的处理 + +### 英文信息 + +面对英文的资料,我以前是用 `有道词典` 来划词翻译,遇到句子的话就使用谷歌翻译,遇到大段落时就使用 `deepl`,久而久之,发现这样看英语文献太慢了,得用三个工具才能满足翻译这一个需求,如果有一个工具能够同时实现对单词、句子和段落的划词翻译就好了。我联想到研究生们应该会经常接触英语文献,于是我就搜 `研究生` + `翻译软件`,在检索结果里我最终选择了 `Quicker` + `沙拉查词` 这个搭配来进行划词翻译。 + +![](https://cdn.sspai.com/2022/10/11/a7ebb1d3c46702b56bd6d171dfcfc075.png) + +使用这套组合可以实现在浏览器外的其他软件内进行划词翻译,并且支持单词、句子和段落的翻译,以及每次的翻译会有多个翻译平台的结果。btw,如果查单词时不着急的话,可以顺便看看 `科林斯高阶` 的翻译,这个词典的优点就是会用英文去解释英文,可以提供多个上下文帮助你理解,对于学习英文单词也有帮助,因为用英文解释英文才更接近英语的思维。 + +![](https://cdn.sspai.com/2022/10/11/article/827c9a8048c83e504ccb15893702bf09) + +### 多媒体信息 + +处理完文本类的信息后,我们还得思考一下怎么处理多媒体类的信息。此处的多媒体我特指英文视频,因为我没有用播客或录音学习的习惯,而且我已经基本不看中文教程了。现在很多国外名校公开课都是以视频的形式,如果能对视频进行做笔记会不会有帮助呢?不知道大家有没这样的想法,就是如果能把老师上课讲的内容转换成文本就好了,因为平时学习时我们看书的速度往往会比老师讲课的速度快。刚好 `Language Reactor` 这个软件可以将油管和网飞内视频的字幕导出来,同时附上中文翻译。 + +我们可以把 `Language Reactor` 导出的字幕复制到 `Obsidian` 里面作为文章来读。除了出于学习的需求,也可以在平时看油管的视频时打开这个插件,这个插件可以同时显示中英文字幕,并且可以单击选中英文字幕中你认为生僻的单词后显示单词释义。 + +![](https://cdn.sspai.com/2022/10/11/364c8e6ed263affa84d9eee61338b4af.png) + +但阅读文本对于一些抽象的知识点来说并不是效率最高的学习方式。俗话说,一图胜千言,能不能将某一段知识点的文本和对应的图片甚至视频画面操作联系起来呢?我在浏览 `Obsidian` 的插件市场时,发现了一个叫 `Media Extended` 的插件,这个插件可以在你的笔记里添加跳转到视频指定时间进度的链接,相当于把你的笔记和视频连接起来了!这刚好可以和我上文提到的生成视频中英文字幕搭配起来,即每一句字幕对应一个时间,并且能根据时间点跳转到视频的指定进度,如此一来如果需要在文章中展示记录了操作过程的视频的话,就不需要自己去截取对应的视频片段,而是直接在文章内就能跳转! + +![](https://cdn.sspai.com/2022/10/11/17554cfdf662d5719ada453674012fdb.gif) + +`Obsidian` 里还有一个很强大的插件,叫 `Annotator`,它可以实现笔记内跳转到 pdf 原文 + +![](https://cdn.sspai.com/2022/10/11/article/b56994bf9a306830d8b0b8112677d3ec) + +现在,使用 `Obsidian` 自带的双链功能,可以实现笔记间相互跳转,结合上述两个插件,可以实现笔记到多媒体的跳转,信息的处理过程已经完备。一般我们学习的过程相当于上山和下山,刚学的时候就好像上山,很陌生、吃力,所谓学而时习之,复习或练习的过程就像下山,没有陌生感,不见得轻松,但非走不可。那么如何把复习这一过程纳入工作流的环节里呢? + +## 信息的回顾 + +`Obsidian` 内已经有一个连接 `Anki` 的插件,`Anki` 就是大名鼎鼎的、基于间隔重复的记忆软件。使用该插件可以截取笔记的片段导出到 `Anki` 并变成一张卡片,卡片内也有跳转回笔记原文的链接 + +![](https://cdn.sspai.com/2022/10/11/1f7cebd8dd28f664d77cbf0ab228c406.gif) + +## 总结 + +这个工作流是在我这两年业余时间学习时所慢慢形成的,在学习过程中因为对一些重复性的过程而感到厌倦,正是这种厌倦产生了某种特定的需求,恰好在平时网上冲浪时了解到的一些工具满足了我这些需求。不要为了虚无的满足感而将工具强行拼凑到自己的工作流中,人生苦短,做实事最紧要。 + +btw,此篇文章是讲解工作流的演化思路,如果对此工作流的实现细节感兴趣,建议阅读完本文后再按顺序阅读以下文章 + +1. [3000 + 小时积累的学习工作流](https://sspai.com/post/75969) +2. [Obsidian 的高级玩法 | 打造能跳转到任何格式文件的笔记](https://juejin.cn/post/7145351315705577485) \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 858e8d4a..514776b5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -128,6 +128,7 @@ nav: - CMake: "必学工具/CMake.md" - LaTeX: "必学工具/LaTeX.md" - Docker: "必学工具/Docker.md" + - 日常学习工作流: "必学工具/workflow.md" - 实用工具箱: "必学工具/tools.md" - 毕业论文: "必学工具/thesis.md" - 好书推荐: "好书推荐.md" From aa42aa4c6eb16f6f22770c3b9564abec600e4547 Mon Sep 17 00:00:00 2001 From: smxm <695335574@qq.com> Date: Fri, 21 Oct 2022 23:30:04 +0800 Subject: [PATCH 3/7] [TRANSLATION] translate CS149.md (#279) * [TRANSLATION] translate CS149.md * Update CS149.en.md --- docs/并行与分布式系统/CS149.en.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docs/并行与分布式系统/CS149.en.md diff --git a/docs/并行与分布式系统/CS149.en.md b/docs/并行与分布式系统/CS149.en.md new file mode 100644 index 00000000..e79de46c --- /dev/null +++ b/docs/并行与分布式系统/CS149.en.md @@ -0,0 +1,24 @@ +# CMU 15-418/Stanford CS149: Parallel Computing + +## Descriptions + +- Offered by: CMU and Stanford +- Prerequisites: Computer Architecture, C++ +- Programming Languages: C++ +- Difficulty: 🌟🌟🌟🌟🌟 +- Class Hour: 150 hours + +The professor [Kayvon Fatahalian](http://www.cs.cmu.edu/~kayvonf) used to teach course 15-418 at CMU. After he became an assistant professor at Stanford, he offered a similar course, CS149 at Stanford. In general, the 15-418 version is more comprehensive and has lecture recordings, but CS149's programming assignments are more fashionable. Personally, I watched the recordings of 15-418 but completed the assignments of CS149. + +The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems, as well as to teach how to utilize hardwares and software programming frameworks (such as CUDA, MPI, OpenMP, etc.) for writing high-performance parallel programs. Due to the complexity of parallel computing architecture, this course involves a lot of advanced computer architecture and network communication content, the knowledge is quite low-level and hardcore. Meanwhile, the five assignments develop your understanding and application of upper-level abstraction through software, specifically by analyzing bottlenecks in parallel programs, writing multi-threaded synchronization code, learning CUDA programming, OpenMP programming, and the popular Spark framework, etc. It really combines theory and practice perfectly. + +## Resources + +- Course Website: [CMU15418](http://15418.courses.cs.cmu.edu/spring2016/), [CS149](https://gfxcourses.stanford.edu/cs149/fall21) +- Recordings: +- Textbook: None +- Assignments: , 5 assignments + +## Personal Resources + +All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS149-parallel-computing - GitHub](https://github.com/PKUFlyingPig/CS149-parallel-computing) From 2df0613da671d28a7d7e11bbfac667a867ad5ac8 Mon Sep 17 00:00:00 2001 From: Yinmin Zhong Date: Sat, 22 Oct 2022 20:34:00 +0800 Subject: [PATCH 4/7] [FIX] fix link for pkuos --- docs/CS学习规划.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index 5782fc69..3e192010 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -217,7 +217,7 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 [MIT 6.S081: Operating System Engineering](操作系统/MIT6.S081.md),MIT 著名 PDOS 实验室出品,11 个 Project 让你在一个实现非常优雅的类Unix操作系统xv6上增加各类功能模块。这门课也让我深刻认识到,做系统不是靠 PPT 念出来的,是得几万行代码一点点累起来的。 -[UCB CS162: Operating System](操作系统/CS162.md),伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年春季学期操作系统实验班的助教,引入并改善了这个 Project,课程资源也会全部开源,具体参见[课程网站](https://pkuos.systems)。 +[UCB CS162: Operating System](操作系统/CS162.md),伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年春季学期操作系统实验班的助教,引入并改善了这个 Project,课程资源也会全部开源,具体参见[课程网站](https://https://pku-os.github.io/sp22/)。 [NJU: Operating System Design and Implementation](操作系统/NJUOS.md),南京大学的蒋炎岩老师开设的操作系统课程。蒋老师以其独到的系统视角结合丰富的代码示例将众多操作系统的概念讲得深入浅出,此外这门课的全部课程内容都是中文的,非常方便大家学习。 From f3e63d89c1bcebc59d064b0dfed923d26905344b Mon Sep 17 00:00:00 2001 From: Yinmin Zhong Date: Sat, 22 Oct 2022 22:24:20 +0800 Subject: [PATCH 5/7] [UPDATE] update CS plan --- docs/CS学习规划.md | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index 3e192010..b909a026 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -1,6 +1,6 @@ # 一个仅供参考的 CS 学习规划 -计算机领域方向庞杂,知识浩如烟海,每个细分领域如果深究下去都可以说学无止境。因此,一个清晰明确的学习规划是非常重要的。这一节的内容是对后续整本书的内容的一个概览,你可以将其看作是这本书的目录,按需选择自己感兴趣的内容进行学习。 +计算机领域方向庞杂,知识浩如烟海,每个细分领域如果深究下去都可以说学无止境。因此,一个清晰明确的学习规划是非常重要的。我在多年自学的尝试中也走过不少弯路,最终提炼出了下面的内容,供大家参考。 不过,在开始学习之前,先向小白们强烈推荐一个科普向系列视频 [Crash Course: Computer Science](https://www.bilibili.com/video/BV1EW411u7th),在短短 8 个小时里非常生动且全面地科普了关于计算机科学的方方面面:计算机的历史、计算机是如何运作的、组成计算机的各个重要模块、计算机科学中的重要思想等等等等。正如它的口号所说的 *Computers are not magic!*,希望看完这个视频之后,大家能对计算机科学有个全貌性地感知,从而怀着兴趣去面对下面浩如烟海的更为细致且深入的学习内容。 @@ -66,8 +66,6 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 以下课程类别中除了含有 *基础* 和 *入门* 字眼的以外,并无明确的先后次序,大家只要满足某个课程的先修要求,完全可以根据自己的需要和喜好选择想要学习的课程。 -另外由于贡献者的不断增加,这份课程地图已经从最初我的学习经历,发展成为很多 CS 自学者的资源合集,其中难免有内容交叉甚至重复的。之所以都列出来,还是希望集百家之长,给大家尽可能多的选择与参考。 - ### 数学基础 #### 微积分与线性代数 @@ -292,35 +290,24 @@ Berkeley 作为著名开源数据库 postgres 的发源地也不遑多让,[UCB ### 数据科学 -[UCB Data100: Principles and Techniques of Data Science](数据科学/Data100.md) +其实数据科学和机器学习与深度学习有着很紧密的联系,但可能更侧重于实践。Berkeley 的 [UCB Data100: Principles and Techniques of Data Science](数据科学/Data100.md) 通过丰富的编程练习让你在实践中掌握各类数据分析工具和算法,并带领你体验从海量的数据集中提取出想要的结果,并对未来的数据或用户的行为做出相应的预测。但这只是一门基础课,如果想学习工业级别的数据挖掘与分析技术,可以尝试 Stanford 的大数据挖掘课程 [CS246: Mining Massive Data Sets](https://web.stanford.edu/class/cs246/)。 ### 人工智能 -#### 入门课 - -[Harvard CS50’s Introduction to AI with Python](人工智能/CS50.md) - -#### 专业课 - -[UCB CS188: Introduction to Artificial Intelligence](人工智能/CS188.md) +近十年人工智能应该算是计算机界最火爆的领域。如果你不满足于整日听各路媒体争相报道人工智能相关的进展,而想真正一探究竟,那么非常推荐学习 Harvard 神课 CS50 系列的人工智能课程 [Harvard CS50: Introduction to AI with Python](人工智能/CS50.md)。课程短小精悍,覆盖了传统人工智能领域的几大分支,并配有丰富有趣的 Python 编程练习来巩固你对人工智能算法的理解。美中不足的是这门课因为面向在线自学者的缘故内容较为精简,并且不会涉及特别深入的数学理论,如果想要系统深入地学习还需要一门本科生难度的课程,例如 Berkeley 的 + [UCB CS188: Introduction to Artificial Intelligence](人工智能/CS188.md)。这门课的 Project 复刻了经典游戏糖豆人,让你运用人工智能算法玩游戏,非常有趣。 ### 机器学习 -#### 入门课 +机器学习领域近些年最重要的进展就是发展出了基于神经网络的深度学习分支,但其实很多基于统计学习的算法依然在数据分析领域有着广泛的应用。如果你之前从未接触过机器学习的相关知识,而且不想一开始就陷入艰深晦涩的数学证明,那么不妨先从 Andrew Ng (吴恩达)的 [Coursera: Machine Learning](机器学习/ML.md) 学起。这门课在机器学习领域基本无人不晓,吴恩达以其深厚的理论功底和出色的表达能力把很多艰深的算法讲得深入浅出,并且非常实用。其配套的作业也是质量相当上乘,可以帮助你快速入门。 -[Coursera: Machine Learning](机器学习/ML.md) - -#### 专业课 - -- [Stanford CS229: Machine Learning](机器学习/CS229.md) -- [UCB CS189: Introduction to Machine Learning](机器学习/CS189.md) +但上过这门课只能让你从宏观上对机器学习这一领域有一定了解,如果想真正理解那些“神奇”算法背后的数学原理甚至从事相关领域的科研工作,那么还需要一门更“数学”的课程,例如 [Stanford CS229: Machine Learning](机器学习/CS229.md) 或者 [UCB CS189: Introduction to Machine Learning](机器学习/CS189.md)。 ### 深度学习 -#### 入门课 +前几年 AlphaGo 的大热让深度学习进入了大众的视野,不少大学甚至专门成立了相关专业。很多计算机的其他领域也会借助深度学习的技术来做研究,因此基本不管你干啥多少都会接触到一些神经网络、深度学习相关的技术需求。如果想快速入门,同样推荐 Andrew Ng (吴恩达)的 [Coursera: Deep Learning](深度学习/CS230.md),质量无需多言,Coursera 上罕见的满分课程。此外如果你觉得英文课程学习起来有难度,推荐李宏毅老师的 [国立台湾大学:机器学习](深度学习/LHY.md) 课程。这门课打着机器学习的名号,却囊括了深度学习领域的几乎所有方向,非常全面,很适合你从宏观上对这个领域有一个大致的了解。而且老师本人也非常幽默,课堂金句频出。 -- [Coursera: Deep Learning](深度学习/CS230.md) -- [国立台湾大学:李宏毅机器学习](深度学习/LHY.md) +当然因为深度学习领域发展非常迅速,已经拥有了众多研究分支,如果想要进一步深入,可以按需学习下面罗列的代表课程, #### 计算机视觉 From af8b9ee1f8e53769a0a832296838aaf66408f42a Mon Sep 17 00:00:00 2001 From: Yinmin Zhong Date: Sat, 22 Oct 2022 23:28:20 +0800 Subject: [PATCH 6/7] [FIX] fix ci failure --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index f4b94b3c..42d42686 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ mkdocs-material==7.3.6 -mkdocs-minify-plugin >= 0.4.0 -mkdocs-git-revision-date-localized-plugin >= 0.9.3 +mkdocs-minify-plugin == 0.4.0 +mkdocs-git-revision-date-localized-plugin == 0.9.3 jinja2==3.0.0 mkdocs-static-i18n==0.46 From a48885dddc8ba429585bb3fddbcae567cc0b68b9 Mon Sep 17 00:00:00 2001 From: smxm <695335574@qq.com> Date: Sat, 22 Oct 2022 23:32:15 +0800 Subject: [PATCH 7/7] [TRANSLATION] translate MIT6.824.md (#282) * [TRANSLATION] translate MIT6.824.md * Update MIT6.824.en.md --- docs/并行与分布式系统/MIT6.824.en.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 docs/并行与分布式系统/MIT6.824.en.md diff --git a/docs/并行与分布式系统/MIT6.824.en.md b/docs/并行与分布式系统/MIT6.824.en.md new file mode 100644 index 00000000..11e8f91f --- /dev/null +++ b/docs/并行与分布式系统/MIT6.824.en.md @@ -0,0 +1,28 @@ +# MIT6.824: Distributed System + +## Descriptions + +- Offered by: MIT +- Prerequisites: Computer Architecture, Parallel Computing +- Programming Languages: Go +- Difficulty: 🌟🌟🌟🌟🌟🌟 +- Class Hour: 200 hours + +This course, the same as MIT 6.S081, comes from the renowned MIT PDOS Lab. The instructor, Professor Robert Morris, was once a famous hacker who created 'Morris', the first worm virus in the world. + +Each lecture will discuss a classic paper in the field of distributed systems, teaching you the important principles and key techniques of distributed systems design and implementation. The Project is known for its difficulty. In four programming assignments, you will implement a KV-store framework step by step based on the Raft consensus algorithm, allowing you to experience the randomness and complexity to implement and debug a distributed system. + +This course is so famous that you can easily have access to the project solutions on the Internet. It is highly recommended to implement the projects on your own. + +## Resources + +- Course Website: +- Assignments: refer to the course website +- Textbook: None +- Assignments: 4 torturing projects, the course website has specific requirements + +## Personal Resources + +All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/MIT6.824 - GitHub](https://github.com/PKUFlyingPig/MIT6.824) + +@[OneSizeFitsQuorum](https://github.com/OneSizeFitsQuorum) has written a [Lab Documentation](https://github.com/OneSizeFitsQuorum/MIT6.824-2021) that quite clearly describes many of the details to be considered when implementing lab 1-4 and challenge 1-2, you can read when you encounter bottlenecks ~ ~