From e2f8c49f4cddeb5ee18d157eac3fbd0de42f5840 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Mon, 6 Jun 2022 23:52:51 +0800 Subject: [PATCH 01/45] [FIX] fix link for LICENSE --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a306b621..e2d6f000 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > *Everyone should enjoy CS if you have a good teacher to teach you a good course.* -[![License](https://img.shields.io/github/license/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning) +[![License](https://img.shields.io/github/license/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning/blob/master/LICENSE) [![Issues](https://img.shields.io/github/issues/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning/issues) [![Stars](https://img.shields.io/github/stars/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning) From 95c827d5e0663fb99604493831a2edf5e8bf77cd Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 7 Jun 2022 00:07:02 +0800 Subject: [PATCH 02/45] [EDIT] move CS106B/X from data structure course into programming course --- docs/CS学习规划.md | 2 +- docs/{数据结构与算法 => 编程入门}/CS106B_CS106X.md | 0 mkdocs.yml | 8 ++++---- 3 files changed, 5 insertions(+), 5 deletions(-) rename docs/{数据结构与算法 => 编程入门}/CS106B_CS106X.md (100%) diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index ba63ba15..3f4c1712 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -144,6 +144,7 @@ More contents under construction. #### C++ +- [Stanford CS106B/X: Programming Abstractions](编程入门/CS106B_CS106X.md) - [Stanford CS106L: Standard C++ Programming](编程入门/CS106L.md) #### Rust @@ -174,7 +175,6 @@ More contents under construction. #### 数据结构与算法 -- [Stanford CS106B/X: Programming Abstractions](数据结构与算法/CS106B_CS106X.md) - [UCB CS61B: Data Structures and Algorithms](数据结构与算法/CS61B.md) - [Coursera: Algorithms I & II](数据结构与算法/Algo.md) diff --git a/docs/数据结构与算法/CS106B_CS106X.md b/docs/编程入门/CS106B_CS106X.md similarity index 100% rename from docs/数据结构与算法/CS106B_CS106X.md rename to docs/编程入门/CS106B_CS106X.md diff --git a/mkdocs.yml b/mkdocs.yml index c7fce92e..85aeacfc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,9 +62,9 @@ theme: plugins: - search: lang: ja - - git-revision-date-localized - - minify: - minify_html: true +# - git-revision-date-localized +# - minify: +# minify_html: true extra: social: @@ -101,6 +101,7 @@ nav: - "Harvard CS50: This is CS50x": "编程入门/CS50.md" - "UCB CS61A: Structure and Interpretation of Computer Programs": "编程入门/CS61A.md" - "Duke University: Introductory C Programming Specialization": "编程入门/Duke-Coursera-Intro-C.md" + - "Stanford CS106B/X": "编程入门/CS106B_CS106X.md" - "Stanford CS106L: Standard C++ Programming": "编程入门/CS106L.md" - "Stanford CS110L: Safety in Systems Programming": "编程入门/CS110L.md" - 电子基础: @@ -110,7 +111,6 @@ nav: - 数据结构与算法: - "UCB CS61B: Data Structures and Algorithms": "数据结构与算法/CS61B.md" - "Coursera: Algorithms I & II": "数据结构与算法/Algo.md" - - "Stanford CS106B/X": "数据结构与算法/CS106B_CS106X.md" - "UCB CS170: Efficient Algorithms and Intractable Problems": "数据结构与算法/CS170.md" - 软件工程: - "MIT 6.031: Software Construction": "软件工程/6031.md" From 473c9e156c05ad998e0e319889bca8172c5ba151 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 7 Jun 2022 00:20:59 +0800 Subject: [PATCH 03/45] [EDIT] update template --- template.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/template.md b/template.md index 8c070021..5ef9d877 100644 --- a/template.md +++ b/template.md @@ -8,6 +8,14 @@ - 课程难度:🌟🌟🌟 - 预计学时: + + ## 课程资源 - 课程网站: From 6d05b52e9da296b14a3d4cf112d72662039ca1c7 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 7 Jun 2022 01:46:10 +0800 Subject: [PATCH 04/45] [NEW] add NJU OS course --- docs/CS学习规划.md | 25 +++++++++++++++---------- docs/操作系统/CS140e.md | 0 docs/操作系统/NJUOS.md | 30 ++++++++++++++++++++++++++++++ docs/计算机图形学/CS148.md | 2 +- mkdocs.yml | 1 + 5 files changed, 47 insertions(+), 11 deletions(-) create mode 100644 docs/操作系统/CS140e.md create mode 100644 docs/操作系统/NJUOS.md diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index 3f4c1712..c6db8894 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -28,7 +28,7 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 [CMake](必学工具/CMake.md):一款功能比 GNU Make 更为强大的构建工具,建议掌握 GNU Make 之后再加以学习。 -[LaTex](必学工具/LaTeX.md):~~逼格提升~~ 论文排版工具。 +[LaTex](必学工具/LaTeX.md):逼格提升 论文排版工具。 [Docker](必学工具/Docker.md):一款相较于虚拟机更轻量级的软件打包与环境部署工具。 @@ -212,15 +212,17 @@ More contents under construction. ### 操作系统 -操作系统作为所有应用软件和底层硬件交互的掌舵者,了解它的内部原理和设计原则对于一个不满足于调包侠的程序员来说是很有帮助的。同时,国外操统课程的质量也是让上了多年网课的我也感到瞠目结舌。 +操作系统作为各类纷繁复杂的底层硬件虚拟化出一套规范优雅的抽象,给所有应用软件提供丰富的功能支持。了解操作系统的设计原则和内部原理对于一个不满足于当调包侠的程序员来说是大有裨益的。出于对操作系统的热爱,我上过国内外很多操作系统课程,它们各有侧重和优劣,大家可以根据兴趣各取所需。 -[MIT 6.S081: Operating System Engineering](操作系统/MIT6.S081.md),MIT 著名 PDOS 实验室出品,11 个 Project 会让你在一个 2 万多行的教学用迷你操作系统上增加各类功能模块。这门课也让我深刻认识到,做系统不是靠 PPT 念出来的,是得几万行代码一点点累起来的。 +[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。我作为下学期北京大学操作系统实验班的助教,会尝试引入这个 Project,欢迎大家选课尝试,同时课程资源也会全部开源,目前[课程网站](https://pkuos.systems)正在建设当中。 +[UCB CS162: Operating System](操作系统/CS162.md),伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年春季学期操作系统实验班的助教,引入并改善了这个 Project,课程资源也会全部开源,具体参见[课程网站](https://pkuos.systems)。 + +[NJU: Operating System Design and Implementation](操作系统/NJUOS.md),南京大学的蒋炎岩老师开设的操作系统课程。蒋老师以其独到的视角 ### 并行与分布式系统 -想必这两年各类 CS 讲座里最常听到的话就是“摩尔定律正在走向终结”,此话不假。同时如今深度学习的兴起导致对计算机算力与存储的要求都达到了前所未有的高度,因此并行和分布式系统已成为一项热门技术话题。 +想必这两年各类 CS 讲座里最常听到的话就是“摩尔定律正在走向终结”,此话不假,当单核能力达到上限时,多核乃至众核架构如日中天。硬件的变化带来的是上层编程逻辑的适应与改变,要想充分利用硬件性能,编写并行程序几乎成了程序员的必备技能。与此同时,深度学习的兴起对计算机算力与存储的要求都达到了前所未有的高度,大规模集群的部署和优化也成为热门技术话题。 #### 并行计算 @@ -240,7 +242,7 @@ More contents under construction. #### 实践 -掌握这些理论知识之后,还需要在实践中培养和锻炼这些“安全素养”。[CTF 夺旗赛](https://ctf-wiki.org/)是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了[第 0 届和第 1 届](https://geekgame.pku.edu.cn/),也鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源: +掌握这些理论知识之后,还需要在实践中培养和锻炼这些“黑客素养”。[CTF 夺旗赛](https://ctf-wiki.org/)是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了[第 0 届和第 1 届](https://geekgame.pku.edu.cn/),鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源: - [CTF-wiki](https://ctf-wiki.org/) - [CTF-101](https://ctf101.org/) @@ -250,15 +252,15 @@ More contents under construction. 计网著名教材《自顶向下方法》的配套学习资源 [Computer Networking: A Top-Down Approach](计算机网络/topdown.md)。 -没有什么能比自己写个 TCP/IP 协议栈更能加深自己对计算机网络的理解了,所以不妨试试 [Stanford CS144: Computer Network](计算机网络/CS144.md),8 个 Project 带你实现整个协议栈。 +没有什么能比自己写个 TCP/IP 协议栈更能加深对计算机网络的理解了,所以不妨试试 [Stanford CS144: Computer Network](计算机网络/CS144.md),8 个 Project 带你实现整个协议栈。 ### 数据库系统 -没有什么能比自己写个关系型数据库更能加深自己对数据库系统的理解了。 +没有什么能比自己写个关系型数据库更能加深对数据库系统的理解了。 #### C++版 -[CMU 15-445: Introduction to Database System](https://15445.courses.cs.cmu.edu/fall2020/) +[CMU 15-445: Introduction to Database System](数据库系统/15445.md) #### Java版 @@ -266,13 +268,16 @@ More contents under construction. ### 编译原理 -没有什么能比自己写个编译器更能加深自己对编译器的理解了。 +没有什么能比自己写个编译器更能加深对编译器的理解了。 [Stanford CS143: Compilers](编译原理/CS143.md) ### 计算机图形学 +[Stanford CS148](计算机图形学/CS148.md) [Games101](计算机图形学/GAMES101.md) +[Games103](计算机图形学/GAMES103.md) +[Games202](计算机图形学/GAMES202.md) ### Web开发 diff --git a/docs/操作系统/CS140e.md b/docs/操作系统/CS140e.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/操作系统/NJUOS.md b/docs/操作系统/NJUOS.md new file mode 100644 index 00000000..5c5dc57f --- /dev/null +++ b/docs/操作系统/NJUOS.md @@ -0,0 +1,30 @@ +# NJU OS: Operating System Design and Implementation + +## 课程简介 + +- 所属大学:南京大学 +- 先修要求:体系结构 + 扎实的 C 语言功底 +- 编程语言:C 语言 +- 课程难度:🌟🌟🌟🌟 +- 预计学时:150 小时 + +之前一直听说南大的蒋炎岩老师开设的操作系统课程讲得很好,旧闻不如一见,这学期有幸在 B 站观看了蒋老师的课程视频,确实收获良多。蒋老师作为非常年轻的老师,有着丰富的一线代码的经验,因此课程讲授有着满满的 Hacker 风格,课上经常“一言不合”就在命令行里开始写代码,很多重要知识点也都配有生动直白的代码示例。让我印象最为深刻的就是老师为了让学生更好地理解动态链接库的设计思想,甚至专门实现了一个迷你的可执行文件与一系列的二进制工具,让很多困扰我多年的问题都得到了解答。 + +这门课的讲授思路也非常有趣,蒋老师先从“程序就是状态机”这一视角入手,为“万恶之源”并发程序建立了状态机的转化模型,并在此基础上讲授了并发控制的常见手段以及并发bug的应对方法。接着蒋老师将操作系统看作一系列对象(进程/线程、地址空间、文件、设备等等)以及操作它们的 API (系统调用)并结合丰富的实际例子介绍了操作系统是如何利用这系列对象虚拟化硬件资源并给应用软件提供各类服务的。最后的可持久化部分,蒋老师从 1-bit 的存储介质讲起,一步步构建起各类存储设备,并通过设备驱动抽象出一组接口来方便地设计与实现文件系统。我之前虽然上过许多门操作系统的课程,但这种讲法确实独此一家,让我收获了很多独到的视角来看待系统软件。 + +这门课除了在理论知识的讲授部分很有新意外,注重实践也是蒋老师的一大特点。在课堂和编程作业里,蒋老师会有意无意地培养大家阅读源码、查阅手册的能力,这也是计算机从业者必备的技能。在完成第五个 MiniLab 期间,我第一次仔仔细细阅读了微软的 FAT 文件系统手册,收获了一次非常有价值的经历。 + +编程作业共由 5个 MiniLab 和 4个 OSLab 组成。美中不足的是作业的评测机是不对校外开放的,不过在邮件“骚扰”后蒋老师还是非常慷慨地让我成功蹭课。由于课余时间有限我只完成了 5个 MiniLab,总体体验非常棒。尤其是第二个协程实验让我印象最为深刻,在不到百行的小实验里深刻体验了上下文切换的美妙与“可怕”。另外其实几个 MiniLab 都能非常方便地进行本地测试,就算没有评测机也不影响自学,因此希望大家不要聚众“骚扰”老师以图蹭课。 + +最后再次感谢蒋老师设计并开放了这样一门非常棒的操作系统课程,这也是本书收录的第一门国内高校自主开设的计算机课程。正是有蒋老师这些年轻的新生代教师在繁重的 Tenure 考核之余的用爱发电,才让无数学子收获了难忘的本科生涯。也期待国内能有更多这样的良心好课,我也会第一时间收录进本书中让更多人受益。 + +## 课程资源 + +- 课程网站: +- 课程视频: +- 课程教材: +- 课程作业: + +## 资源汇总 + +按蒋老师的要求,我的作业实现没有开源。 diff --git a/docs/计算机图形学/CS148.md b/docs/计算机图形学/CS148.md index 2be01d66..3227b45e 100644 --- a/docs/计算机图形学/CS148.md +++ b/docs/计算机图形学/CS148.md @@ -21,4 +21,4 @@ - 课程网站:[CS148](https://web.stanford.edu/class/cs148/index.html) - 课程视频:无,直接看[lecture](https://web.stanford.edu/class/cs148/lectures.html)就可以了,也可以参考 GAMES101 视频 - 课程教材:Fundamentals of Computer Graphics -- 课程作业:[8 个 hw, 1 个 final project](https://web.stanford.edu/class/cs148/assignments.html) \ No newline at end of file +- 课程作业:[8 个 hw, 1 个 final project](https://web.stanford.edu/class/cs148/assignments.html) diff --git a/mkdocs.yml b/mkdocs.yml index 85aeacfc..e4f08c9c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -123,6 +123,7 @@ nav: - 操作系统: - "MIT 6.S081: Operating System Engineering": "操作系统/MIT6.S081.md" - "UCB CS162: Operating System": "操作系统/CS162.md" + - "NJU OS: Operating System Design and Implementation": "操作系统/NJUOS.md" - 并行与分布式系统: - "CMU 15-418/Stanford CS149: Parallel Computing": "并行与分布式系统/CS149.md" - "MIT 6.824: Distributed System": "并行与分布式系统/MIT6.824.md" From 33fe28b9e99b3a1775d31f1e0df6b5ee1d806da7 Mon Sep 17 00:00:00 2001 From: zll600 <3400692417@qq.com> Date: Tue, 7 Jun 2022 22:18:08 +0800 Subject: [PATCH 05/45] Add some books for C++ --- docs/好书推荐.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 0fe797f3..d6981b7d 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -108,6 +108,10 @@ - The C++ Programming Language, 4th Edition(中文:C++程序设计语言第四版) - C++ Primer, 5th Edition - STL源码剖析 by 侯捷 +- Effective C++ +- More Effective C++ +- Effective STL +- Effective Modern C++ ## 面试 From be00108704df00d7ca8d4eb594146babeb7b1680 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Fri, 10 Jun 2022 15:30:56 +0800 Subject: [PATCH 06/45] [ENHANCE] add google analytics for website --- mkdocs.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index e4f08c9c..17307626 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,14 +62,17 @@ theme: plugins: - search: lang: ja -# - git-revision-date-localized -# - minify: -# minify_html: true + - git-revision-date-localized + - minify: + minify_html: true extra: social: - icon: fontawesome/brands/github link: https://github.com/pkuflyingpig/cs-self-learning/ + analytics: + provider: google + property: G-KJB4RXSKZG nav: - 前言: "index.md" From f2fccba6bb117f66b25387c3fc6a8167adc77bdf Mon Sep 17 00:00:00 2001 From: Jack Chan <87403053+Jack-Chan-2001@users.noreply.github.com> Date: Fri, 10 Jun 2022 16:21:37 +0800 Subject: [PATCH 07/45] fix typing error --- docs/操作系统/NJUOS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/操作系统/NJUOS.md b/docs/操作系统/NJUOS.md index 5c5dc57f..048c908a 100644 --- a/docs/操作系统/NJUOS.md +++ b/docs/操作系统/NJUOS.md @@ -8,7 +8,7 @@ - 课程难度:🌟🌟🌟🌟 - 预计学时:150 小时 -之前一直听说南大的蒋炎岩老师开设的操作系统课程讲得很好,旧闻不如一见,这学期有幸在 B 站观看了蒋老师的课程视频,确实收获良多。蒋老师作为非常年轻的老师,有着丰富的一线代码的经验,因此课程讲授有着满满的 Hacker 风格,课上经常“一言不合”就在命令行里开始写代码,很多重要知识点也都配有生动直白的代码示例。让我印象最为深刻的就是老师为了让学生更好地理解动态链接库的设计思想,甚至专门实现了一个迷你的可执行文件与一系列的二进制工具,让很多困扰我多年的问题都得到了解答。 +之前一直听说南大的蒋炎岩老师开设的操作系统课程讲得很好,久闻不如一见,这学期有幸在 B 站观看了蒋老师的课程视频,确实收获良多。蒋老师作为非常年轻的老师,有着丰富的一线代码的经验,因此课程讲授有着满满的 Hacker 风格,课上经常“一言不合”就在命令行里开始写代码,很多重要知识点也都配有生动直白的代码示例。让我印象最为深刻的就是老师为了让学生更好地理解动态链接库的设计思想,甚至专门实现了一个迷你的可执行文件与一系列的二进制工具,让很多困扰我多年的问题都得到了解答。 这门课的讲授思路也非常有趣,蒋老师先从“程序就是状态机”这一视角入手,为“万恶之源”并发程序建立了状态机的转化模型,并在此基础上讲授了并发控制的常见手段以及并发bug的应对方法。接着蒋老师将操作系统看作一系列对象(进程/线程、地址空间、文件、设备等等)以及操作它们的 API (系统调用)并结合丰富的实际例子介绍了操作系统是如何利用这系列对象虚拟化硬件资源并给应用软件提供各类服务的。最后的可持久化部分,蒋老师从 1-bit 的存储介质讲起,一步步构建起各类存储设备,并通过设备驱动抽象出一组接口来方便地设计与实现文件系统。我之前虽然上过许多门操作系统的课程,但这种讲法确实独此一家,让我收获了很多独到的视角来看待系统软件。 From 41b31eaf4f0ca0eddfd292d4afdf8a5228a0ee19 Mon Sep 17 00:00:00 2001 From: liangminghao Date: Thu, 16 Jun 2022 09:15:50 +0800 Subject: [PATCH 08/45] Add books for Theoretical Computer Science --- docs/好书推荐.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 0fe797f3..84d4ed99 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -50,6 +50,10 @@ - Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems ([开源中文翻译](https://github.com/Vonng/ddia)) +## 理论计算机科学 + +- Introduction to the Theory of Computation,中文版:计算理论导引 + ## 密码学 - Introduction to modern cryptography (second edition) by Jonathon Katz & Yehuda Lindell From 892240a879c2798c2c50fc17b0f79068a371720a Mon Sep 17 00:00:00 2001 From: liangminghao Date: Thu, 16 Jun 2022 09:22:31 +0800 Subject: [PATCH 09/45] Add books for Compiler --- docs/好书推荐.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 84d4ed99..8fa299ab 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -25,6 +25,7 @@ - [My First Language Frontend with LLVM Tutorial](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html) - Compilers: Principles, Techniques, and Tools (Dragon Book) +- Engineering a Compiler ## 计算机语言(PL) From e724045903a70dd372f3ff9ec35aaf4f6011375b Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Sun, 19 Jun 2022 14:41:30 +0800 Subject: [PATCH 10/45] [TOOLS] add thesis tutorial --- docs/CS学习规划.md | 2 ++ docs/必学工具/thesis.md | 15 +++++++++++++++ mkdocs.yml | 7 ++++--- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 docs/必学工具/thesis.md diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index c6db8894..bc829c44 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -30,6 +30,8 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 [LaTex](必学工具/LaTeX.md):逼格提升 论文排版工具。 +[Thesis](必学工具/thesis.md):毕业论文 Word 写作教程。 + [Docker](必学工具/Docker.md):一款相较于虚拟机更轻量级的软件打包与环境部署工具。 [实用工具箱](必学工具/tools.md):除了上面提到的这些在开发中使用频率极高的工具之外,我还收集了很多实用有趣的免费工具,例如一些下载工具、设计工具、学习网站等等。 diff --git a/docs/必学工具/thesis.md b/docs/必学工具/thesis.md new file mode 100644 index 00000000..2c6f1cd1 --- /dev/null +++ b/docs/必学工具/thesis.md @@ -0,0 +1,15 @@ +# 毕业论文 + +## 为什么写这份教程 + +2022年,我本科毕业了。在开始动手写毕业论文的时候,我尴尬地发现,我对 Word 的掌握程度仅限于调节字体、保存导出这些傻瓜功能。曾想转战 Latex,但论文的段落格式要求调整起来还是用 Word 更为方便,经过一番痛苦缠斗之后,总算是有惊无险地完成了论文的写作和答辩。为了不让后来者重蹈覆辙,遂把相关资源整理成一份开箱即用的文档,供大家参考。 + +## 如何用 Word 写毕业论文 + +正如将大象装进冰箱需要三步,用 Word 写毕业论文也只需要简单三步: + +- 确定论文的格式要求:通常学院都会下发毕业论文的格式要求(各级标题的字体字号、图例和引用的格式等等),如果更为贴心的话甚至会直接给出论文模版(如是此情况请直接跳转到下一步)。很不幸的是,我的学院并没有下发标准的论文格式要求,还提供了一份格式混乱几乎毫无用处的论文模版膈应我,被逼无奈之下我找到了北京大学研究生的[论文格式要求](https://github.com/PKUFlyingPig/Thesis-Template/blob/master/%E5%8C%97%E4%BA%AC%E5%A4%A7%E5%AD%A6%E7%A0%94%E7%A9%B6%E7%94%9F%E5%AD%A6%E4%BD%8D%E8%AE%BA%E6%96%87%E5%86%99%E4%BD%9C%E6%8C%87%E5%8D%97.pdf),并按照其要求制作了[一份模版](https://github.com/PKUFlyingPig/Thesis-Template/blob/master/%E8%AE%BA%E6%96%87%E6%A8%A1%E7%89%88.docx),大家需要的话自取,本人不承担无法毕业等任何责任。 + +- 学习 Word 排版:到达这一步的童鞋分为两类,一是已经拥有了学院提供的标准模版,二是只有一份虚无缥缈的格式要求。那现在当务之急就是学习基础的 Word 排版技术,对于前者可以学会使用模版,对于后者则可以学会制作模版。此时切记不要雄心勃勃地选择一个十几个小时的 Word 教学视频开始头悬梁锥刺股,因为生产一份应付毕业的学术垃圾只要学半小时能上手就够了。我当时看的[一个 B 站的教学视频](https://www.bilibili.com/video/BV1YQ4y1M73G?p=1&vd_source=a4d76d1247665a7e7bec15d15fd12349),短小精悍非常实用,全长半小时极速入门。 + +- 生产学术垃圾:最容易的一步,大家八仙过海,各显神通吧,祝大家毕业顺利~~ diff --git a/mkdocs.yml b/mkdocs.yml index 17307626..13934436 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,9 +62,9 @@ theme: plugins: - search: lang: ja - - git-revision-date-localized - - minify: - minify_html: true +# - git-revision-date-localized +# - minify: +# minify_html: true extra: social: @@ -87,6 +87,7 @@ nav: - LaTeX: "必学工具/LaTeX.md" - Docker: "必学工具/Docker.md" - 实用工具箱: "必学工具/tools.md" + - 毕业论文: "必学工具/thesis.md" - 好书推荐: "好书推荐.md" - 数学基础: - "MIT18.01/18.02: Calculus": "数学基础/MITmaths.md" From 591d99fdd69b1fe15f5a4c3f7274d7469c066b1a Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Sun, 19 Jun 2022 14:49:11 +0800 Subject: [PATCH 11/45] [NITS] small modification --- docs/CS学习规划.md | 4 ++-- mkdocs.yml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index bc829c44..b4639ad4 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -30,12 +30,12 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 [LaTex](必学工具/LaTeX.md):逼格提升 论文排版工具。 -[Thesis](必学工具/thesis.md):毕业论文 Word 写作教程。 - [Docker](必学工具/Docker.md):一款相较于虚拟机更轻量级的软件打包与环境部署工具。 [实用工具箱](必学工具/tools.md):除了上面提到的这些在开发中使用频率极高的工具之外,我还收集了很多实用有趣的免费工具,例如一些下载工具、设计工具、学习网站等等。 +[Thesis](必学工具/thesis.md):毕业论文 Word 写作教程。 + ## 好书推荐 > 私以为一本好的教材应当是以人为本的,而不是炫技式的理论堆砌。告诉读者“是什么”固然重要,但更好的应当是教材作者将其在这个领域深耕几十年的经验融汇进书中,向读者娓娓道来“为什么”以及未来应该“怎么做”。 diff --git a/mkdocs.yml b/mkdocs.yml index 13934436..add9e5ec 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,9 +62,9 @@ theme: plugins: - search: lang: ja -# - git-revision-date-localized -# - minify: -# minify_html: true + - git-revision-date-localized + - minify: + minify_html: true extra: social: From aaf267192d83b8e1a31eaaf0c26064e0ebc2bb31 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Sun, 19 Jun 2022 14:53:23 +0800 Subject: [PATCH 12/45] [UPDATE] add recent update --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index ee677420..322f5dd9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ # 前言 -**更新:本书最新网址 [csdiy.wiki](https://csdiy.wiki),欢迎大家访问 ~** +**最近更新:增加南京大学[操作系统课程](操作系统/NJUOS.md),增加毕业论文[写作教程](必学工具/thesis.md) ~** 这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。 From 441c308b07b937e0eb7050da3bd6f20e12ede062 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Sun, 19 Jun 2022 17:30:00 +0800 Subject: [PATCH 13/45] [README] fix contributors image & add star history --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e2d6f000..7b2dbcd3 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,16 @@ 本书支持页面评论功能,因此如果你想自学某课程,可以自己建立群聊后(QQ 微信皆可)在对应的课程页面下方发表评论,注明你的学习目标以及加入交流群的途径。此外,过去已有不少朋友在 issue 里建立了类似群聊,可以自行选择直接加入。 -## 鸣谢 +## Star History -[![contributors](https://opencollective.com/cs-self-learning/contributors.svg?width=890)](https://github.com/PKUFlyingPig/cs-self-learning/graphs/contributors) +[![Star History Chart](https://api.star-history.com/svg?repos=PKUFlyingPig/cs-self-learning&type=Timeline)](https://star-history.com/#PKUFlyingPig/cs-self-learning&Timeline) + +## ✨ 鸣谢 + + + + + ## 许可 From e63cbcf450119a332df33d744a37c6b0f678a29f Mon Sep 17 00:00:00 2001 From: fyoylf Date: Fri, 8 Jul 2022 10:12:46 +0800 Subject: [PATCH 14/45] Fix typo: Cmake.md --- docs/必学工具/CMake.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/必学工具/CMake.md b/docs/必学工具/CMake.md index 3fc75a8f..52ba43ec 100644 --- a/docs/必学工具/CMake.md +++ b/docs/必学工具/CMake.md @@ -2,7 +2,7 @@ ## 为什么学习 CMake -CMake 是类似于 GNU make 的跨平台自动软件构件工具,使用 CMakeLists.txt 定义构建规则,相比于 make 它提供了更多的功能,在各种软件构建上广泛使用。**强烈建议学习使用 GNU Make 和熟悉 `Makefile` 后再学习 CMake**。 +CMake 是类似于 GNU make 的跨平台自动软件构建工具,使用 CMakeLists.txt 定义构建规则,相比于 make 它提供了更多的功能,在各种软件构建上广泛使用。**强烈建议学习使用 GNU Make 和熟悉 `Makefile` 后再学习 CMake**。 ## 如何学习 CMake From 798be473af3b78dc60d7f8e40e7ebce70bd3cac8 Mon Sep 17 00:00:00 2001 From: Flex Zhong Date: Sun, 17 Jul 2022 11:17:33 +0800 Subject: [PATCH 15/45] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b2dbcd3..a5271b38 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ 一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其navigation,当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。 -对于中英混合排版的要点规范,可以参考[这个仓库](https://github.com/lhajh/chinese-copywriting-guidelines/blob/master/README.md),我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/114)。 +对于中英混合排版的要点规范,可以参考[这个仓库](https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.zh-Hans.md),我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/114)。 同时由于个人水平有限,书中难免有笔误甚至概念错误之处,也请各位不吝赐教,在 issue 中提出来。 From ae554df1477c69a4668729758605a183eb052277 Mon Sep 17 00:00:00 2001 From: zxy9815 Date: Mon, 25 Jul 2022 15:47:57 -0400 Subject: [PATCH 16/45] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/好书推荐.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/好书推荐.md b/docs/好书推荐.md index b63df1e3..218d413a 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -105,6 +105,7 @@ - 设计模式: 可复用面向对象软件的基础(Gang of Four) - 大话设计模式 by 程杰 +- [Head First 设计模式](https://awesome-programming-books.github.io/design-pattern/HeadFirst%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.pdf) (比较简单易懂,适合面向对象设计模式的入门) ## C/C++ From 84c225014baea8d63a8ae26e84359df8d1bc78b7 Mon Sep 17 00:00:00 2001 From: zxy9815 Date: Mon, 25 Jul 2022 15:59:29 -0400 Subject: [PATCH 17/45] =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E5=92=8C?= =?UTF-8?q?=E8=A7=86=E8=A7=89=E7=B1=BB=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/好书推荐.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 218d413a..7b63033c 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -119,6 +119,14 @@ - Effective STL - Effective Modern C++ +## 计算机视觉 + +- Multiple View Geometry in Computer Vision + +## 机器人 + +- Probabilistic Robotics(中文:概率机器人,机器人行业圣经) + ## 面试 - Cracking The Coding Interview From f8f72dafc3a382c512a90762eed4e9e5e41f291e Mon Sep 17 00:00:00 2001 From: YoungZM Date: Thu, 4 Aug 2022 17:25:13 +0800 Subject: [PATCH 18/45] [New Course] Add USTC Computer Networking:A Top-Down Approach --- docs/计算机网络/topdown_ustc.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 docs/计算机网络/topdown_ustc.md diff --git a/docs/计算机网络/topdown_ustc.md b/docs/计算机网络/topdown_ustc.md new file mode 100644 index 00000000..b61b1186 --- /dev/null +++ b/docs/计算机网络/topdown_ustc.md @@ -0,0 +1,30 @@ +# USTC Computer Networking:A Top-Down Approach + +## 课程简介 + +- 所属大学:中国科学技术大学 +- 授课教师:郑烇、杨坚 +- 先修要求:操作系统(非必需) +- 编程语言:无 +- 课程难度:🌟🌟🌟 +- 预计学时:40 小时 + +这门课应该是中文互联网上比较火的计算机网络课了,教材采用神书计算机网络(自顶向下方法),授课风格更偏向实际而非纯理论(**强烈建议**先阅读教材预习再看课,否则上课时*可能*会有些懵圈)。 + +课程内容包括**大部分**自顶向下方法里的内容,同时**涵盖**考试内容,可放心观看。 + +课程视频是郑烇老师本人在哔哩哔哩上上传的,且从2020年至今一直坚持在评论区答疑,属实负责且认真。 + +## 课程资源 + +- 课程网站: +- 课程视频: +- 课程教材:计算机网络(自顶向下方法 第7版),机械工业出版社,2016 + +## 资源汇总 + +课程课件: + +## 备注 + +根据[USTC评课社区](https://icourse.club/course/6266/)里对该课的评价,该课有实验且有一半课会点名,科大学生慎选。 \ No newline at end of file From 2c870b545e4fb2f5760e6ffaecaed50e83449df1 Mon Sep 17 00:00:00 2001 From: YoungZM Date: Thu, 4 Aug 2022 21:19:18 +0800 Subject: [PATCH 19/45] Fixed mkdocs.yml for new pull --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index add9e5ec..65b07b6b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -135,6 +135,7 @@ nav: - "UCB CS161: Computer Security": "系统安全/CS161.md" - "MIT 6.858: Computer System Security": "系统安全/MIT6.858.md" - 计算机网络: + - "USTC Computer Networking:A Top-Down Approach": "计算机网络/topdown_ustc.md" - "Computer Networking: A Top-Down Approach": "计算机网络/topdown.md" - "Stanford CS144: Computer Network": "计算机网络/CS144.md" - 数据库系统: From ab5c7342ef9a409eefdad270e2ac239c221dbc10 Mon Sep 17 00:00:00 2001 From: MedivhGO Date: Sat, 6 Aug 2022 13:23:01 +0800 Subject: [PATCH 20/45] add course and book --- docs/好书推荐.md | 1 + docs/数据库系统/CS122.md | 24 ++++++++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 26 insertions(+) create mode 100644 docs/数据库系统/CS122.md diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 7b63033c..0937ab5e 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -69,6 +69,7 @@ - Database System Concepts - [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf) +- [Readings in Database Systems, 5th Edition](http://www.redbook.io/) ## 计算机图形学 diff --git a/docs/数据库系统/CS122.md b/docs/数据库系统/CS122.md new file mode 100644 index 00000000..127bfefd --- /dev/null +++ b/docs/数据库系统/CS122.md @@ -0,0 +1,24 @@ +# 加州理工学院 Caltech CS 122: Database System Implementation + +## 课程简介 + +- 所属大学:Caltech +- 先修要求:无 +- 编程语言:Java +- 课程难度:🌟🌟🌟🌟🌟 +- 预计学时:150 小时 + +加州理工的这门课, 不同于CMU15445(没有提供SQL层的功能), CS122课程lab的侧重点在于SQL的层的相关实现, 涉及查询优化器的各个模块, 比如SQL的解析, Translate, 如何实现Join, 统计信息以及代价估计, 子查询实现, Agg, Group By的实现等. 除此之外, 还有B+树, WAL相关实验. 本门课程适合在学完CMU15445课程之后, 对查询优化相关内容有兴趣的同学. + +每个实验的需要实现的功能点很多, 是查询优化相关内容非常好练习. + +推荐使用Idea打开工程, Maven构建, 注意日志配置. + +## 课程资源 + +- 课程网站: +- 课程代码: +- 课程教材:无 +- 课程作业:7 Assignments + 2 Challenges + +## 资源汇总 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 65b07b6b..8a4f6170 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -141,6 +141,7 @@ nav: - 数据库系统: - "UCB CS186: Introduction to Database System": "数据库系统/CS186.md" - "CMU 15-445: Database Systems": "数据库系统/15445.md" + - "Caltech CS122: Database System Implementation": "数据库系统/CS122.md" - 编译原理: - "Stanford CS143: Compilers": "编译原理/CS143.md" - 计算机图形学: From 1260551acfa72d7954c5f64f96f6d9e6a097ae31 Mon Sep 17 00:00:00 2001 From: MedivhGO Date: Sat, 6 Aug 2022 22:36:39 +0800 Subject: [PATCH 21/45] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=20Assignment=20=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/数据库系统/CS122.md | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/docs/数据库系统/CS122.md b/docs/数据库系统/CS122.md index 127bfefd..163d6d38 100644 --- a/docs/数据库系统/CS122.md +++ b/docs/数据库系统/CS122.md @@ -1,4 +1,4 @@ -# 加州理工学院 Caltech CS 122: Database System Implementation +# Caltech CS 122: Database System Implementation ## 课程简介 @@ -8,17 +8,33 @@ - 课程难度:🌟🌟🌟🌟🌟 - 预计学时:150 小时 -加州理工的这门课, 不同于CMU15445(没有提供SQL层的功能), CS122课程lab的侧重点在于SQL的层的相关实现, 涉及查询优化器的各个模块, 比如SQL的解析, Translate, 如何实现Join, 统计信息以及代价估计, 子查询实现, Agg, Group By的实现等. 除此之外, 还有B+树, WAL相关实验. 本门课程适合在学完CMU15445课程之后, 对查询优化相关内容有兴趣的同学. +加州理工的这门课,不同于没有提供 SQL 层功能的 CMU15-445 课程。CS122 课程 Lab 的侧重点在于 SQL 层的相关实现,涉及查询优化器的各个模块,比如SQL的解析,Translate,如何实现 Join,统计信息以及代价估计,子查询实现,Agg,Group By 的实现等。除此之外,还有 B+树,WAL 相关实验。本门课程适合在学完 CMU15-445 课程之后,对查询优化相关内容有兴趣的同学。 -每个实验的需要实现的功能点很多, 是查询优化相关内容非常好练习. +下面介绍一下这门课的前 3 个 Assignment 也就是实验 Lab 所要实现的功能: -推荐使用Idea打开工程, Maven构建, 注意日志配置. +### Assignment1: +- 为 NanoDB 提供 delete,update 语句的支持。 +- 为 Buffer Pool Manager 添加合适的 pin/unpin 代码。 +- 提升 insert 语句的性能, 同时不使数据库文件大小过分膨胀。 + +### Assignment2: + +- 实现一个简单的计划生成器,将各种已经 Parser 过的 SQL 语句转化为可执行的执行计划。 +- 使用 nested-loop join 算法,实现支持 inner- and outer-join 的 Join 计划节点。 +- 添加一些单元测试, 保证 inner- and outer-join 功能实现正确。 + +### Assignment3: + +- 完成收集表的统计信息。 +- 完成各种计划节点的计划成本计算。 +- 计算可出现在执行计划中的各种谓词的选择性。 +- 根据谓词更新计划节点输出的元组统计信息。 + +剩余 Assignment 和 Challenges 可以查看课程介绍,推荐使用 IDEA 打开工程,Maven 构建,注意日志相关配置。 ## 课程资源 - 课程网站: - 课程代码: - 课程教材:无 -- 课程作业:7 Assignments + 2 Challenges - -## 资源汇总 \ No newline at end of file +- 课程作业:7 Assignments + 2 Challenges \ No newline at end of file From 19c8ba0fc9e03d44e9e263a4ab1f9a1f5fd96129 Mon Sep 17 00:00:00 2001 From: MedivhGO Date: Sat, 6 Aug 2022 22:42:34 +0800 Subject: [PATCH 22/45] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/数据库系统/CS122.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/数据库系统/CS122.md b/docs/数据库系统/CS122.md index 163d6d38..e0d12ec4 100644 --- a/docs/数据库系统/CS122.md +++ b/docs/数据库系统/CS122.md @@ -18,13 +18,11 @@ - 提升 insert 语句的性能, 同时不使数据库文件大小过分膨胀。 ### Assignment2: - - 实现一个简单的计划生成器,将各种已经 Parser 过的 SQL 语句转化为可执行的执行计划。 - 使用 nested-loop join 算法,实现支持 inner- and outer-join 的 Join 计划节点。 - 添加一些单元测试, 保证 inner- and outer-join 功能实现正确。 ### Assignment3: - - 完成收集表的统计信息。 - 完成各种计划节点的计划成本计算。 - 计算可出现在执行计划中的各种谓词的选择性。 From c70a33e8c892328a1342b09d6b6fc3c20f5a5d98 Mon Sep 17 00:00:00 2001 From: Jack Chan Date: Tue, 16 Aug 2022 00:06:11 +0800 Subject: [PATCH 23/45] [COURSE] Add CS161 Textbook (#201) * Delete CS140e.md * [COURSE] Add Textbook --- docs/操作系统/CS140e.md | 0 docs/系统安全/CS161.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 docs/操作系统/CS140e.md diff --git a/docs/操作系统/CS140e.md b/docs/操作系统/CS140e.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/系统安全/CS161.md b/docs/系统安全/CS161.md index c7036515..04cd421d 100644 --- a/docs/系统安全/CS161.md +++ b/docs/系统安全/CS161.md @@ -24,7 +24,7 @@ - 课程网站: - 课程视频:参见课程网站 -- 课程教材:无 +- 课程教材: - 课程作业:7 个在线 HW + 3 个 Lab + 3 个 Project ## 资源汇总 From c9187dfa7013e003d219ad9e7ac1bd008c5007be Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Wed, 24 Aug 2022 13:49:46 +0800 Subject: [PATCH 24/45] [BOOKS] reorganize to the united format --- README.md | 4 +- docs/好书推荐.md | 179 +++++++++++++++++++++++------------------------ 2 files changed, 89 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index a5271b38..395ae0e6 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ ## 如何成为贡献者 -一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其navigation,当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。 +一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其navigation,当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。如果你有想推荐的书籍,请参考 [好书推荐](./docs/好书推荐.md) 模块上方的注释按相应格式添加内容。 对于中英混合排版的要点规范,可以参考[这个仓库](https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.zh-Hans.md),我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/114)。 @@ -40,10 +40,10 @@ ## ✨ 鸣谢 + - ## 许可 diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 0937ab5e..6c544c67 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -1,133 +1,128 @@ # 好书推荐 -由于版权原因,下面列举的图书中除了开源书籍提供了链接,其他的资源请大家自行通过 [libgen](http://libgen.is/) 查找。 + + +由于版权原因,下面列举的图书中除了开源资源提供了链接,其他的资源请大家自行通过 [libgen](http://libgen.is/) 查找。 + +## 资源汇总 +- [Free Programming Books](https://github.com/EbookFoundation/free-programming-books): 开源编程书籍资源汇总 +- [CS Textbook Recommendations](https://4chan-science.fandom.com/wiki/Computer_Science_and_Engineering): 计算机科学方向推荐教材列表 +- [C Book Guide and List](https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list): C语言相关的编程书籍推荐列表 +- [C++ Book Guide and List](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list): C++语言相关的编程书籍推荐列表 +- [Python Book Guide and List](https://pythonbooks.org/): Python语言相关的编程书籍推荐列表 ## 系统入门 -- Principles of Computer System Design: An Introduction -- Computer Systems: A Programmer's Perspective +- Computer Systems: A Programmer's Perspective [[豆瓣](https://book.douban.com/subject/26912767/)] +- Principles of Computer System Design: An Introduction [[豆瓣](https://book.douban.com/subject/3707841/)] ## 操作系统 -- [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) -- Operating Systems: Principles and Practice (2nd Edition) -- [现代操作系统: 原理与实现 (银杏书)](https://ipads.se.sjtu.edu.cn/mospi/) -- Modern Operating Systems +- [现代操作系统: 原理与实现](https://ipads.se.sjtu.edu.cn/mospi/) [[豆瓣](https://book.douban.com/subject/35208251/)] +- [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) [[豆瓣](https://book.douban.com/subject/19973015/)] +- Modern Operating Systems [[豆瓣](https://book.douban.com/subject/27096665/)] +- Operating Systems: Principles and Practice [[豆瓣](https://book.douban.com/subject/25984145/)] ## 计算机网络 -- [Computer Networks: A Systems Approach](https://book.systemsapproach.org/foreword.html) -- Computer Networking: A Top-Down Approach - -## 编译原理 - -- [My First Language Frontend with LLVM Tutorial](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html) -- Compilers: Principles, Techniques, and Tools (Dragon Book) -- Engineering a Compiler - -## 计算机语言(PL) - -- [Essentials of Programming Languages (EOPL)](https://eopl3.com/) -- [Types and Programming Languages (TAPL)](https://www.cis.upenn.edu/~bcpierce/tapl/) ([北大相关课程](https://xiongyingfei.github.io/DPPL/2021/main.htm)) -- [Practical Foundations for Programming Languages (PFPL)](https://www.cs.cmu.edu/~rwh/pfpl.html) -- [Software Foundations (SF)](https://softwarefoundations.cis.upenn.edu/) ([北大相关课程](https://xiongyingfei.github.io/SF/2021/)) - -## 体系结构 - -- Computer Architecture: A Quantitative Approach 5th Edition -- Computer Organization and Design: The Hardware/Software Interface -- [计算机体系结构基础(第三版)](https://github.com/foxsen/archbase) -- 超标量处理器设计(姚永斌) -- CPU 设计实战 (汪文祥 邢金璋) +- [Computer Networks: A Systems Approach](https://book.systemsapproach.org/foreword.html) [[豆瓣](https://book.douban.com/subject/26417896/)] +- Computer Networking: A Top-Down Approach [[豆瓣](https://book.douban.com/subject/30280001/)] ## 分布式系统 -- [Patterns of Distributed System](https://github.com/dreamhead/patterns-of-distributed-systems) -- [Distributed Systems for fun and profit](http://book.mixu.net/distsys/index.html) - -## 数据密集型系统设计 - -- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems ([开源中文翻译](https://github.com/Vonng/ddia)) - -## 理论计算机科学 - -- Introduction to the Theory of Computation,中文版:计算理论导引 - -## 密码学 - -- Introduction to modern cryptography (second edition) by Jonathon Katz & Yehuda Lindell -- Cryptography Engineering: Design Principles and Practical Applications - -## 逆向工程 - -- [Reverse engineering for beginners by Dennis Yurichev](https://beginners.re/) 有中文版,中文:逆向工程权威指南 -- 리버싱 핵심원리 by 李承远 有中文版,中文:逆向工程核心原理 +- [Patterns of Distributed System (Blog)](https://github.com/dreamhead/patterns-of-distributed-systems) +- [Distributed Systems for Fun and Profit (Blog)](http://book.mixu.net/distsys/index.html) +- [Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems](https://github.com/Vonng/ddia) [[豆瓣](https://book.douban.com/subject/26197294/)] ## 数据库系统 -- Database System Concepts -- [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf) -- [Readings in Database Systems, 5th Edition](http://www.redbook.io/) +- [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf) [[豆瓣](https://book.douban.com/subject/17665384/)] +- [Readings in Database Systems](http://www.redbook.io/) [[豆瓣](https://book.douban.com/subject/2256069/)] +- Database System Concepts [[豆瓣](https://book.douban.com/subject/10548379/)] + +## 编译原理 + +- Engineering a Compiler [[豆瓣](https://book.douban.com/subject/5288601/)] +- Compilers: Principles, Techniques, and Tools [[豆瓣](https://book.douban.com/subject/1866231/)] + +## 计算机编程语言 + +- [Essentials of Programming Languages](https://eopl3.com/) [[豆瓣](https://book.douban.com/subject/3136252/)] +- [Practical Foundations for Programming Languages](https://www.cs.cmu.edu/~rwh/pfpl.html) [[豆瓣](https://book.douban.com/subject/26782198/)] +- [Software Foundations](https://softwarefoundations.cis.upenn.edu/) [[豆瓣](https://book.douban.com/subject/25712292/)] [[北大相关课程](https://xiongyingfei.github.io/SF/2021/)] +- [Types and Programming Languages](https://www.cis.upenn.edu/~bcpierce/tapl/) [[豆瓣](https://book.douban.com/subject/1761910/)] [[北大相关课程](https://xiongyingfei.github.io/DPPL/2021/main.htm)] + +## 体系结构 + +- 超标量处理器设计: Superscalar RISC Processor Design [[豆瓣](https://book.douban.com/subject/26293546/)] +- Computer Organization and Design RISC-V Edition [[豆瓣](https://book.douban.com/subject/27103952/)] +- Computer Organization and Design: The Hardware/Software Interface [[豆瓣](https://book.douban.com/subject/26604008/)] +- Computer Architecture: A Quantitative Approach [[豆瓣](https://book.douban.com/subject/6795919/)] + +## 理论计算机科学 + +- Introduction to the Theory of Computation [[豆瓣](https://book.douban.com/subject/1852515/)] + +## 密码学 + +- Cryptography Engineering: Design Principles and Practical Applications [[豆瓣](https://book.douban.com/subject/26416592/)] +- Introduction to Modern Cryptography [[豆瓣](https://book.douban.com/subject/2678340/)] + +## 逆向工程 + +- 逆向工程核心原理 [[豆瓣](https://book.douban.com/subject/25866389/)] ## 计算机图形学 -- Fundamentals of Computer Graphics -- Fluid Simulation for Computer Graphics -- Real-Time Rendering, 4th edition -- Physically Based Rendering: From Theory To Implementation -- Advanced global illumination, 2nd Edition - [Monte Carlo theory, methods and examples](https://artowen.su.domains/mc/) -- GPU Pro 系列 +- Advanced Global Illumination [[豆瓣](https://book.douban.com/subject/2751153/)] +- Fundamentals of Computer Graphics [[豆瓣](https://book.douban.com/subject/26868819/)] +- Fluid Simulation for Computer Graphics [[豆瓣](https://book.douban.com/subject/2584523/)] +- Physically Based Rendering: From Theory To Implementation [[豆瓣](https://book.douban.com/subject/4306242/)] +- Real-Time Rendering [[豆瓣](https://book.douban.com/subject/30296179/)] -## 游戏性&游戏引擎 -- Game Engine Architecture, 3rd Edition by Jason Gregory (中文:游戏引擎架构,第二版有中文) -- Game Engine Gems 系列 -- 游戏编程模式 by Robert Nystrom -- Game Programming Gems 系列 -- Game Audio Programming 3: Principles and Practices by Guy Somberg -- 实时碰撞检测算法技术 by Christer Ericson -- AI for Games, 3rd edition by Ian Millington -- [Game AI Pro 系列](http://www.gameaipro.com/) +## 游戏引擎 -## 深度学习 - -- [动手学深度学习](http://tangshusen.me/Dive-into-DL-PyTorch/#/) -- [Speech and Language Processing](https://web.stanford.edu/~jurafsky/slp3/) -- [神经网络与深度学习](https://nndl.github.io/) -- [简单粗暴 TensorFlow 2](https://tf.wiki/) +- 游戏编程模式: Game Programming Patterns [[豆瓣](https://book.douban.com/subject/26880704/)] +- 实时碰撞检测算法技术 [[豆瓣](https://book.douban.com/subject/4861957/)] +- [Game AI Pro Series](http://www.gameaipro.com/) [[豆瓣](https://search.douban.com/book/subject_search?search_text=Game+AI+Pro&cat=1001)] +- Artificial Intelligence for Games [[豆瓣](https://book.douban.com/subject/3836472/)] +- Game Engine Architecture [[豆瓣](https://book.douban.com/subject/25815142/)] +- Game Programming Gems Series [[豆瓣](https://search.douban.com/book/subject_search?search_text=Game+Programming+Gems&cat=1001)] ## 软件工程 -- [Software Engineering at Google](https://abseil.io/resources/swe_at_google.2.pdf) +- [Software Engineering at Google](https://abseil.io/resources/swe_at_google.2.pdf) [[豆瓣](https://book.douban.com/subject/34875994/)] ## 设计模式 -- 设计模式: 可复用面向对象软件的基础(Gang of Four) -- 大话设计模式 by 程杰 -- [Head First 设计模式](https://awesome-programming-books.github.io/design-pattern/HeadFirst%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.pdf) (比较简单易懂,适合面向对象设计模式的入门) +- 设计模式: 可复用面向对象软件的基础 [[豆瓣](https://book.douban.com/subject/1052241/)] +- 大话设计模式 [[豆瓣](https://book.douban.com/subject/2334288/)] +- [Head First 设计模式](https://awesome-programming-books.github.io/design-pattern/HeadFirst%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.pdf) [[豆瓣](https://book.douban.com/subject/2243615/)] -## C/C++ +## 深度学习 -- The ANSI C Programming Language, 2nd Edition(中文:C程序设计语言第二版,C语言最经典的一本书) -- C Primer Plus, 6th Edition(有中文版,适合0基础学习) -- The C++ Programming Language, 4th Edition(中文:C++程序设计语言第四版) -- C++ Primer, 5th Edition -- STL源码剖析 by 侯捷 -- Effective C++ -- More Effective C++ -- Effective STL -- Effective Modern C++ +- [动手学深度学习](http://tangshusen.me/Dive-into-DL-PyTorch/#/) [[豆瓣](https://book.douban.com/subject/33450010/)] +- [神经网络与深度学习](https://nndl.github.io/) [[豆瓣](https://book.douban.com/subject/35044046/)] +- [简单粗暴 TensorFlow 2 (Tutorial)](https://tf.wiki/) +- [Speech and Language Processing](https://web.stanford.edu/~jurafsky/slp3/) [[豆瓣](https://book.douban.com/subject/5373023/)] ## 计算机视觉 -- Multiple View Geometry in Computer Vision +- Multiple View Geometry in Computer Vision [[豆瓣](https://book.douban.com/subject/1841346/)] ## 机器人 -- Probabilistic Robotics(中文:概率机器人,机器人行业圣经) +- Probabilistic Robotics [[豆瓣](https://book.douban.com/subject/2861227/)] ## 面试 -- Cracking The Coding Interview +- Cracking The Coding Interview [[豆瓣](https://book.douban.com/subject/10436668/)] From 23706f1285627e8df15e46aa21e2dba3cc075a5f Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Wed, 24 Aug 2022 14:05:45 +0800 Subject: [PATCH 25/45] [UPDATE] change recent update --- README.md | 2 +- docs/index.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 395ae0e6..76b7d983 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ ## 如何成为贡献者 -一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其navigation,当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。如果你有想推荐的书籍,请参考 [好书推荐](./docs/好书推荐.md) 模块上方的注释按相应格式添加内容。 +一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其navigation,当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。如果你有想推荐的书籍,请参考 [好书推荐](https://raw.githubusercontent.com/PKUFlyingPig/cs-self-learning/master/docs/%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90.md) 模块上方的注释按相应格式添加内容。 对于中英混合排版的要点规范,可以参考[这个仓库](https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.zh-Hans.md),我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/114)。 diff --git a/docs/index.md b/docs/index.md index 322f5dd9..e32d63b3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,7 @@ # 前言 -**最近更新:增加南京大学[操作系统课程](操作系统/NJUOS.md),增加毕业论文[写作教程](必学工具/thesis.md) ~** + +**最近更新:增加[Caltech CS 122: Database System Implementation](./数据库系统/CS122.md) ,重新整理[好书推荐](./%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90.md)模块 ~** 这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。 From a356c1cb6b2e24d02e3886422c4b39e1e6ba8640 Mon Sep 17 00:00:00 2001 From: AsukaMinato Date: Thu, 25 Aug 2022 20:40:45 +0800 Subject: [PATCH 26/45] [BOOKS] Add more CS books (#204) * add cs books * Add sicp in book recommendation * fix * change position * put book to the third position * put sicp to pl section --- docs/好书推荐.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 6c544c67..af91f1f7 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -10,9 +10,10 @@ 先中文后英文,同种语言先开源后闭源,最后按从基础到深入或者字母序。 --> -由于版权原因,下面列举的图书中除了开源资源提供了链接,其他的资源请大家自行通过 [libgen](http://libgen.is/) 查找。 +由于版权原因,下面列举的图书中除了开源资源提供了链接,其他的资源请大家自行通过 [libgen](http://libgen.is/) 或 [z-lib](https://z-lib.org/) 查找。 ## 资源汇总 + - [Free Programming Books](https://github.com/EbookFoundation/free-programming-books): 开源编程书籍资源汇总 - [CS Textbook Recommendations](https://4chan-science.fandom.com/wiki/Computer_Science_and_Engineering): 计算机科学方向推荐教材列表 - [C Book Guide and List](https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list): C语言相关的编程书籍推荐列表 @@ -55,6 +56,7 @@ ## 计算机编程语言 +- 计算机程序的构造和解释 [[豆瓣](https://book.douban.com/subject/1148282/)] - [Essentials of Programming Languages](https://eopl3.com/) [[豆瓣](https://book.douban.com/subject/3136252/)] - [Practical Foundations for Programming Languages](https://www.cs.cmu.edu/~rwh/pfpl.html) [[豆瓣](https://book.douban.com/subject/26782198/)] - [Software Foundations](https://softwarefoundations.cis.upenn.edu/) [[豆瓣](https://book.douban.com/subject/25712292/)] [[北大相关课程](https://xiongyingfei.github.io/SF/2021/)] @@ -79,6 +81,7 @@ ## 逆向工程 - 逆向工程核心原理 [[豆瓣](https://book.douban.com/subject/25866389/)] +- 加密与解密 [[豆瓣](https://book.douban.com/subject/30288807/)] ## 计算机图形学 @@ -112,6 +115,7 @@ - [动手学深度学习](http://tangshusen.me/Dive-into-DL-PyTorch/#/) [[豆瓣](https://book.douban.com/subject/33450010/)] - [神经网络与深度学习](https://nndl.github.io/) [[豆瓣](https://book.douban.com/subject/35044046/)] +- 深度学习入门 [[豆瓣](https://book.douban.com/subject/30270959/)] - [简单粗暴 TensorFlow 2 (Tutorial)](https://tf.wiki/) - [Speech and Language Processing](https://web.stanford.edu/~jurafsky/slp3/) [[豆瓣](https://book.douban.com/subject/5373023/)] @@ -125,4 +129,5 @@ ## 面试 +- 剑指 Offer:名企面试官精讲典型编程题 [[豆瓣](https://book.douban.com/subject/27008702/)] - Cracking The Coding Interview [[豆瓣](https://book.douban.com/subject/10436668/)] From 977113f05d1efe6b38ce62ca20df379a2b5ce974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9D=E5=81=A5=E8=81=AA?= <68471954+Chasing1020@users.noreply.github.com> Date: Thu, 1 Sep 2022 23:05:20 +0800 Subject: [PATCH 27/45] [Fix] fix link for Software Engineering at Google (#207) --- docs/好书推荐.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/好书推荐.md b/docs/好书推荐.md index af91f1f7..b202b472 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -103,7 +103,7 @@ ## 软件工程 -- [Software Engineering at Google](https://abseil.io/resources/swe_at_google.2.pdf) [[豆瓣](https://book.douban.com/subject/34875994/)] +- [Software Engineering at Google](https://abseil.io/resources/swe-book) [[豆瓣](https://book.douban.com/subject/34875994/)] ## 设计模式 From c5fe8267e8152c596559c4dcc92bb82782be2e58 Mon Sep 17 00:00:00 2001 From: Wu ChenXu Date: Sun, 4 Sep 2022 16:53:01 +0800 Subject: [PATCH 28/45] [Fix] fix link for Hacker-101 (#208) --- docs/CS学习规划.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index b4639ad4..923cfc03 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -248,7 +248,7 @@ More contents under construction. - [CTF-wiki](https://ctf-wiki.org/) - [CTF-101](https://ctf101.org/) -- [Hacker-101](https://ctf.hacker101.com/auth?error=0) +- [Hacker-101](https://ctf.hacker101.com/) ### 计算机网络 From 31281bebea92bf39354919453ae129828e05b9db Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 6 Sep 2022 01:18:56 +0800 Subject: [PATCH 29/45] [COURSE] add MLC & MLSys(TBA) --- docs/机器学习系统/MLC.md | 32 ++++++++++++++++++++++++++++++++ docs/机器学习系统/MLSys.md | 29 +++++++++++++++++++++++++++++ mkdocs.yml | 3 +++ 3 files changed, 64 insertions(+) create mode 100644 docs/机器学习系统/MLC.md create mode 100644 docs/机器学习系统/MLSys.md diff --git a/docs/机器学习系统/MLC.md b/docs/机器学习系统/MLC.md new file mode 100644 index 00000000..71be0d70 --- /dev/null +++ b/docs/机器学习系统/MLC.md @@ -0,0 +1,32 @@ +# Machine Learning Compilation + +## 课程简介 + +- 所属大学:Bilibili 大学 +- 先修要求:机器学习/深度学习基础 +- 编程语言:Python +- 课程难度:🌟🌟🌟 +- 预计学时:30小时 + + + +这门课是机器学习编译领域的顶尖学者陈天奇在2022年暑期开设的一门在线课程。其实机器学习编译无论在工业界还是学术界仍然是一个非常前沿且快速更迭的领域,国内外此前还没有为这个方向专门开设的相关课程。因此如果对机器学习编译感兴趣想有个全貌性的感知的话,可以学习一下这门课。 + +本课程主要以 [Apache TVM](https://tvm.apache.org/) 这一主流的机器学习编译框架为例(陈天奇是这个框架的创始人之一),聚焦于如何将开发模式下(如 Tensorflow, Pytorch, Jax)的各类机器学习模型,通过一套普适的抽象和优化算法,变换为拥有更高性能并且适配各类底层硬件的部署模式。课程讲授的知识点都是相对 High-Level 的宏观概念,同时每节课都会有一个配套的 Jupyter Notebook 来通过具体的代码讲解知识点,因此如果从事 TVM 相关的编程开发的话,这门课有丰富且规范的代码示例以供参考。 + +所有的课程资源全部开源并且有中文和英文两个版本,B站和油管分别有中文和英文的课程录影。 + +## 课程资源 + +- 课程网站: +- 课程视频:[Bilibili][Bilibili_link] +- 课程笔记: +- 课程作业: + +[Bilibili_link]: https://www.bilibili.com/video/BV15v4y1g7EU?spm_id_from=333.337.search-card.all.click&vd_source=a4d76d1247665a7e7bec15d15fd12349 diff --git a/docs/机器学习系统/MLSys.md b/docs/机器学习系统/MLSys.md new file mode 100644 index 00000000..e2770d6e --- /dev/null +++ b/docs/机器学习系统/MLSys.md @@ -0,0 +1,29 @@ +# Machine Learning System + +## 课程简介 + +- 所属大学:CMU +- 先修要求:系统入门、深度学习入门 +- 编程语言:N/A +- 课程难度:N/A +- 预计学时:N/A + + +这是 CMU 2022年秋季学期开设的一门新课,聚焦于深度学习框架的具体实现,课程 Project 会实现一个迷你的类似于 Pytorch 深度学习框架。课程免费提供了面向非 CMU 学生的在线版本,9月13日正式授课,作者持续跟进中。 + +## 课程资源 + +- 课程网站: +- 课程视频:N/A +- 课程教材:N/A +- 课程作业:TBA + +## 资源汇总 + +TBA diff --git a/mkdocs.yml b/mkdocs.yml index 8a4f6170..b9d2d0bf 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -162,6 +162,9 @@ nav: - "Coursera: Machine Learning": "机器学习/ML.md" - "Stanford CS229: Machine Learning": "机器学习/CS229.md" - "UCB CS189: Introduction to Machine Learning": "机器学习/CS189.md" + - 机器学习系统: + - "Machine Learning Compilation": "机器学习系统/MLC.md" + - "Machine Learning System": "机器学习系统/MLSys.md" - 深度学习: - "Coursera: Deep Learning": "深度学习/CS230.md" - "国立台湾大学:李宏毅机器学习": "深度学习/LHY.md" From b0b8c6dfd355efa60bac9fbfcd43489b16624c4e Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 6 Sep 2022 01:21:53 +0800 Subject: [PATCH 30/45] [NEWS]: Add MLC & MLSys Course --- docs/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index e32d63b3..a451d244 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,7 +1,8 @@ # 前言 +**最近更新:增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/MLSys.md) ~** + -**最近更新:增加[Caltech CS 122: Database System Implementation](./数据库系统/CS122.md) ,重新整理[好书推荐](./%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90.md)模块 ~** 这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。 From 3fc326c91bca0ac1be8521146f5f054ab6be8039 Mon Sep 17 00:00:00 2001 From: Zhangzhi Peng <59241275+pengzhangzhi@users.noreply.github.com> Date: Tue, 6 Sep 2022 16:33:54 +0800 Subject: [PATCH 31/45] [ENHANCE] Add assignment code/note link to course MIT 6.031: Software Construction (#212) --- docs/软件工程/6031.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/软件工程/6031.md b/docs/软件工程/6031.md index 8b49b518..8f80f588 100644 --- a/docs/软件工程/6031.md +++ b/docs/软件工程/6031.md @@ -30,3 +30,5 @@ ## 资源汇总 我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.031-software-construction - GitHub](https://github.com/PKUFlyingPig/MIT6.031-software-construction) 中。 + +@pengzhangzhi完成了这门课的作业并记录了笔记。代码开源在[self-taught-CS/Software Construction at main · pengzhangzhi/self-taught-CS (github.com)](https://github.com/pengzhangzhi/self-taught-CS/tree/main/Software Construction)。 From 3f680edd99bed327c1dd415bbca186a20a6c5c51 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 6 Sep 2022 16:46:34 +0800 Subject: [PATCH 32/45] [FIX] simplify the link --- docs/软件工程/6031.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/软件工程/6031.md b/docs/软件工程/6031.md index 8f80f588..f8637c2f 100644 --- a/docs/软件工程/6031.md +++ b/docs/软件工程/6031.md @@ -29,6 +29,6 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.031-software-construction - GitHub](https://github.com/PKUFlyingPig/MIT6.031-software-construction) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.031-software-construction - GitHub](https://github.com/PKUFlyingPig/MIT6.031-software-construction) 中。 -@pengzhangzhi完成了这门课的作业并记录了笔记。代码开源在[self-taught-CS/Software Construction at main · pengzhangzhi/self-taught-CS (github.com)](https://github.com/pengzhangzhi/self-taught-CS/tree/main/Software Construction)。 +@pengzhangzhi 完成了这门课的作业并记录了笔记, 代码开源在[pengzhangzhi/self-taught-CS/Software Construction - Github](https://github.com/pengzhangzhi/self-taught-CS/tree/main/Software%20Construction)。 From 926e6ce17e205ed1ceff64868ca4c47e3dbe8478 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 6 Sep 2022 16:48:04 +0800 Subject: [PATCH 33/45] [TEMPLATE] Mention contributor's name in the resource collection section --- template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template.md b/template.md index 5ef9d877..08ade2c3 100644 --- a/template.md +++ b/template.md @@ -25,7 +25,7 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [user/repo - GitHub](https://github.com/user/repo) 中。 +@XXX 在学习这门课中用到的所有资源和作业实现都汇总在 [user/repo - GitHub](https://github.com/user/repo) 中。 ## 备注 From cf5dc5497d640e04b91993a9aa6a212484c07648 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 6 Sep 2022 17:38:48 +0800 Subject: [PATCH 34/45] [EDIT] Modify resource collection section according to the new template --- docs/人工智能/CS50.md | 2 +- docs/人工智能/CYJ.md | 20 ++++++++++---------- docs/体系结构/CS61C.md | 2 +- docs/体系结构/CSAPP.md | 1 - docs/体系结构/DDCA.md | 7 +++---- docs/体系结构/N2T.md | 2 +- docs/并行与分布式系统/CS149.md | 2 +- docs/并行与分布式系统/MIT6.824.md | 4 +++- docs/操作系统/MIT6.S081.md | 4 +++- docs/数学进阶/CS126.md | 2 +- docs/数学进阶/CS70.md | 2 +- docs/数学进阶/convex.md | 2 +- docs/数学进阶/numerical.md | 2 +- docs/数据库系统/15445.md | 18 ++++++++---------- docs/数据库系统/CS122.md | 11 +++++++---- docs/数据库系统/CS186.md | 2 +- docs/数据结构与算法/Algo.md | 2 +- docs/数据结构与算法/CS170.md | 2 +- docs/数据结构与算法/CS61B.md | 19 +------------------ docs/机器学习/CS229.md | 2 +- docs/深度学习/CS224n.md | 2 +- docs/电子基础/EE16.md | 2 +- docs/电子基础/signal.md | 2 +- docs/系统安全/CS161.md | 2 +- docs/编程入门/CS106L.md | 2 +- docs/编程入门/CS110L.md | 2 +- docs/编程入门/CS61A.md | 2 +- docs/编程入门/Duke-Coursera-Intro-C.md | 2 +- docs/编译原理/CS143.md | 2 +- docs/计算机图形学/GAMES101.md | 3 +-- docs/计算机图形学/GAMES103.md | 4 +--- docs/计算机网络/CS144.md | 6 +----- docs/计算机网络/topdown.md | 2 +- docs/计算机网络/topdown_ustc.md | 9 +-------- docs/软件工程/6031.md | 2 +- docs/软件工程/CS169.md | 2 +- 36 files changed, 63 insertions(+), 91 deletions(-) diff --git a/docs/人工智能/CS50.md b/docs/人工智能/CS50.md index 2d89a6bf..7705e233 100644 --- a/docs/人工智能/CS50.md +++ b/docs/人工智能/CS50.md @@ -19,4 +19,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/cs50_ai - GitHub](https://github.com/PKUFlyingPig/cs50_ai) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/cs50_ai - GitHub](https://github.com/PKUFlyingPig/cs50_ai) 中。 diff --git a/docs/人工智能/CYJ.md b/docs/人工智能/CYJ.md index ef395301..69047553 100644 --- a/docs/人工智能/CYJ.md +++ b/docs/人工智能/CYJ.md @@ -10,7 +10,15 @@ 智能计算系统是智能的核心物质载体,每年全球要制造数以十亿计的智能计算系统(包括智能手机、智能服务器、智能可穿戴设备等),需要大量的智能计算系统的设计者和开发者。智能计算系统人才的培养直接关系到我国智能产业的核心竞争力。因此,对智能计算系统的认识和理解是智能时代计算机类专业学生培养方案中不可或缺的重要组成部分,是计算机类专业学生的核心竞争力。 -国内的陈云霁老师开的课,在其他若干个大学也都有开对应的课程(比如我们这里)。这门课用一个个实验带大家以一个完整的视野理解人工智能的技术栈。从上层的深度学习框架,到用底层语言编写算子,再到硬件中MLU的设计,让大家形成系统思维,体会自上而下,融会贯通的乐趣。 +国内的陈云霁老师开的课,在其他若干个大学也都有开对应的课程。这门课用一个个实验带大家以一个完整的视野理解人工智能的技术栈。从上层的深度学习框架,到用底层语言编写算子,再到硬件中 MLU 的设计,让大家形成系统思维,体会自上而下,融会贯通的乐趣。 + +我做了其中的 2,3,4,5 这几个实验,其中综合实验和硬件实验没有做,如果有做了的同学欢迎大家补上你的链接。 + +个人体会是第三章实现算子的实验让我对深度学习框架的了解加深了很多。第五章的实验BCL语言编写算子如果了解 CUDA 的话会感觉很熟悉。 + +推荐去买一本教材看一看,会让我们理解整体的技术栈。熟悉深度学习的同学可以直接从第五章开始看,看看深度学习框架底层到底是什么样的。 + +我因为这门课的启发,参考一本书(书名在仓库中)写了一个简易的[深度学习框架](https://github.com/ysj1173886760/PyToy)。在这个框架里可以看到智能计算系统实验中的一些影子。同时受到 build-your-own-x 系列的启发,我也打算写一下教程,教大家写一个自己的深度学习框架。代码用 Python 写的,代码量较少,适合有一定基础的同学阅读。之后打算添加更多的算子,有望实现一个较为全面的框架,并希望移植到 C++ 中,以兼顾性能与开发效率。 ## 课程资源 @@ -23,12 +31,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: ai-system - GitHub](https://github.com/ysj1173886760/Learning/tree/master/ai-system) 中。 - -我做了其中的 2,3,4,5 这几个实验,其中综合实验和硬件实验没有做,如果有做了的同学欢迎大家补上你的链接 - -个人体会是第三章实现算子的实验让我对深度学习框架的了解加深了很多。第五章的实验BCL语言编写算子如果了解 CUDA 的话会感觉很熟悉。 - -推荐去买一本教材看一看,会让我们理解整体的技术栈。熟悉深度学习的同学可以直接从第五章开始看,看看深度学习框架底层到底是什么样的。 - -我因为这门课的启发,参考一本书(书名在仓库中)写了一个简易的[深度学习框架](https://github.com/ysj1173886760/PyToy)。在这个框架里可以看到智能计算系统实验中的一些影子。同时受到 build-your-own-x 系列的启发,我也打算写一下教程,教大家写一个自己的深度学习框架。代码用 Python 写的,代码量较少,适合有一定基础的同学阅读。之后打算添加更多的算子,有望实现一个较为全面的框架,并希望移植到 C++ 中,以兼顾性能与开发效率。 +@ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: ai-system - GitHub](https://github.com/ysj1173886760/Learning/tree/master/ai-system) 中。 diff --git a/docs/体系结构/CS61C.md b/docs/体系结构/CS61C.md index d608dbe3..b0b1328c 100644 --- a/docs/体系结构/CS61C.md +++ b/docs/体系结构/CS61C.md @@ -26,4 +26,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61C-summer20 - GitHub](https://github.com/PKUFlyingPig/CS61C-summer20) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61C-summer20 - GitHub](https://github.com/PKUFlyingPig/CS61C-summer20) 中。 diff --git a/docs/体系结构/CSAPP.md b/docs/体系结构/CSAPP.md index 8af3b79d..affee24d 100644 --- a/docs/体系结构/CSAPP.md +++ b/docs/体系结构/CSAPP.md @@ -25,5 +25,4 @@ CMU 大名鼎鼎的镇系神课,以其内容庞杂,Project 巨难而闻名 - 课程教材:Computer Systems: A Programmer's Perspective, 3/E - 课程作业:11 个 Project,[代码框架全部开源](http://csapp.cs.cmu.edu/3e/labs.html) -补充: 英语有困难的同学可以参考B站UP主[九曲阑干](https://space.bilibili.com/354767108/)对 CSAPP 的[中文讲解](https://www.bilibili.com/video/BV1cD4y1D7uR)(据说CMU的中国留学生也在CMU的课堂上看这个视频呢)。另外如果大家在看完 CSAPP 后对书中的第七章链接有一定的疑问,推荐阅读《程序员的自我修养》这本书,书的副标题是链接,装载与库。这本书能够帮助我们完善对程序链接的理解,相信你在看完这本书以后可以对程序的链接,ELF 文件,动态库都将有一个更加深入的理解。十分推荐在读完 CSAPP,对计算机系统有一定的了解以后作为补充资料来阅读。 diff --git a/docs/体系结构/DDCA.md b/docs/体系结构/DDCA.md index f82fca61..26c0cd6a 100644 --- a/docs/体系结构/DDCA.md +++ b/docs/体系结构/DDCA.md @@ -10,13 +10,12 @@ 体系结构领域的大牛 Onur Mutlu 来教你数字电路和计算机体系结构。课程完全从计算机设计的角度出发,从晶体管、逻辑门开始,一直讲解到微架构、缓存和虚拟内存,还会介绍 很多体系结构领域最新的研究进展。课程共有 9 个 lab,使用 Basys 3 FPGA 开发板(可自行购买)和 Xilinx 公司的 [Vivado 软件](https://china.xilinx.com/products/design-tools/vivado.html)(可在官网免费下载使用)进行电路设计,从组合电路 -和时序电路开始,一直到最后部署一个完整的 CPU。课程资料除了 lab 答案和当期考试答案之外全部开源,学完之后你可以掌握计算机相关的数字电路,Verilog 硬件描述语言,MIPS 与 C -之间的转换关系,MIPS 单周期多周期流水线 CPU 的设计和性能分析,缓存,虚拟内存等重要概念。 +和时序电路开始,一直到最后部署一个完整的 CPU。课程资料除了 lab 答案和当期考试答案之外全部开源,学完之后你可以掌握计算机相关的数字电路,Verilog 硬件描述语言,MIPS 与 C 之间的转换关系,MIPS 单周期多周期流水线 CPU 的设计和性能分析,缓存,虚拟内存等重要概念。 ## 课程资源 - 课程网站: - 课程视频: -- 课程教材1:Patt and Patel, Introduction to Computing Systems +- 课程教材1:Patt and Patel, Introduction to Computing Systems - 课程教材2:Harris and Harris, Digital Design and Computer Architecture (MIPS Edition) -- 课程实验:9 个实验从零开始设计 MIPS CPU,详见课程网站 \ No newline at end of file +- 课程实验:9 个实验从零开始设计 MIPS CPU,详见课程网站 diff --git a/docs/体系结构/N2T.md b/docs/体系结构/N2T.md index 835a4d56..f2a629f3 100644 --- a/docs/体系结构/N2T.md +++ b/docs/体系结构/N2T.md @@ -25,4 +25,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/NandToTetris - GitHub](https://github.com/PKUFlyingPig/NandToTetris) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/NandToTetris - GitHub](https://github.com/PKUFlyingPig/NandToTetris) 中。 diff --git a/docs/并行与分布式系统/CS149.md b/docs/并行与分布式系统/CS149.md index eda9a732..fdbb0db6 100644 --- a/docs/并行与分布式系统/CS149.md +++ b/docs/并行与分布式系统/CS149.md @@ -21,4 +21,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS149-parallel-computing - GitHub](https://github.com/PKUFlyingPig/CS149-parallel-computing) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS149-parallel-computing - GitHub](https://github.com/PKUFlyingPig/CS149-parallel-computing) 中。 diff --git a/docs/并行与分布式系统/MIT6.824.md b/docs/并行与分布式系统/MIT6.824.md index 3ea0bc56..2f190e52 100644 --- a/docs/并行与分布式系统/MIT6.824.md +++ b/docs/并行与分布式系统/MIT6.824.md @@ -23,4 +23,6 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.824 - GitHub](https://github.com/PKUFlyingPig/MIT6.824) 中。此外也可以参考 [OneSizeFitsQuorum](https://github.com/OneSizeFitsQuorum) 的 [Lab 文档](https://github.com/OneSizeFitsQuorum/MIT6.824-2021),其较为清晰地介绍了实现 lab 1-4 和 challenge 1-2 需要考虑的许多细节,在遇到瓶颈期时可以阅读一下~ +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.824 - GitHub](https://github.com/PKUFlyingPig/MIT6.824) 中。 + +@[OneSizeFitsQuorum](https://github.com/OneSizeFitsQuorum) 的 [Lab 文档](https://github.com/OneSizeFitsQuorum/MIT6.824-2021) 较为清晰地介绍了实现 lab 1-4 和 challenge 1-2 时需要考虑的许多细节,在遇到瓶颈期时可以阅读一下~~ diff --git a/docs/操作系统/MIT6.S081.md b/docs/操作系统/MIT6.S081.md index 740a94e7..524902b3 100644 --- a/docs/操作系统/MIT6.S081.md +++ b/docs/操作系统/MIT6.S081.md @@ -33,7 +33,9 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.S081-2020fall - GitHub][github_pkuflyingpig] 中。此外也可以参考 [KuangjuX] 实现的 MIT 6.S081 的几个 lab 的[题解][solution_kuangjux],里面亦有详细的解法和补充知识,另外,[KuangjuX] 还使用 Rust 语言重新实现过 xv6-riscv 操作系统:[xv6-rust],里面对于 xv6-riscv 有更为详细的思考和讨论,感兴趣的同学可以看一下哦。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.S081-2020fall - GitHub][github_pkuflyingpig] 中。 + +@[KuangjuX] 编写了 MIT 6.S081 的 lab 的[题解][solution_kuangjux],里面有详细的解法和补充知识。另外,@[KuangjuX] 还使用 Rust 语言重新实现了 xv6-riscv 操作系统:[xv6-rust],里面对于 xv6-riscv 有更为详细的思考和讨论,感兴趣的同学可以看一下哦。 [github_pkuflyingpig]: https://github.com/PKUFlyingPig/MIT6.S081-2020fall [KuangjuX]: https://github.com/KuangjuX diff --git a/docs/数学进阶/CS126.md b/docs/数学进阶/CS126.md index e7dc915f..604c2ca5 100644 --- a/docs/数学进阶/CS126.md +++ b/docs/数学进阶/CS126.md @@ -28,4 +28,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/EECS126 - GitHub](https://github.com/PKUFlyingPig/EECS126) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/EECS126 - GitHub](https://github.com/PKUFlyingPig/EECS126) 中。 diff --git a/docs/数学进阶/CS70.md b/docs/数学进阶/CS70.md index 37876965..3020f88f 100644 --- a/docs/数学进阶/CS70.md +++ b/docs/数学进阶/CS70.md @@ -28,4 +28,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS70 - GitHub](https://github.com/PKUFlyingPig/UCB-CS70) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS70 - GitHub](https://github.com/PKUFlyingPig/UCB-CS70) 中。 diff --git a/docs/数学进阶/convex.md b/docs/数学进阶/convex.md index 1623411f..34836d20 100644 --- a/docs/数学进阶/convex.md +++ b/docs/数学进阶/convex.md @@ -21,4 +21,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Standford_CVX101 - GitHub](https://github.com/PKUFlyingPig/Standford_CVX101) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Standford_CVX101 - GitHub](https://github.com/PKUFlyingPig/Standford_CVX101) 中。 diff --git a/docs/数学进阶/numerical.md b/docs/数学进阶/numerical.md index 987a60a0..6d4af48d 100644 --- a/docs/数学进阶/numerical.md +++ b/docs/数学进阶/numerical.md @@ -22,4 +22,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT18.330 - GitHub](https://github.com/PKUFlyingPig/MIT18.330) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT18.330 - GitHub](https://github.com/PKUFlyingPig/MIT18.330) 中。 diff --git a/docs/数据库系统/15445.md b/docs/数据库系统/15445.md index 34eeacee..1862798f 100644 --- a/docs/数据库系统/15445.md +++ b/docs/数据库系统/15445.md @@ -18,22 +18,20 @@ - 课程教材:Database System Concepts - 课程作业:4 个 Project -在 Fall2019 中,第二个 Project 是做哈希索引,第四个 Project 是做日志与恢复 +在 Fall2019 中,第二个 Project 是做哈希索引,第四个 Project 是做日志与恢复。 -在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制 +在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制。 如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。 -我在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: db - GitHub](https://github.com/ysj1173886760/Learning/tree/master/db) 中。 +## 资源汇总 -由于 Andy 的要求,仓库中没有 Project 的实现,只有 Homework 的 Solution。特别的,对于 Homework1,我还写了一个 Shell 脚本来帮大家执行自动判分 +@ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: db - GitHub](https://github.com/ysj1173886760/Learning/tree/master/db) 中。 -另外在课程结束后,我十分推荐阅读一篇论文 [Architecture Of a Database System](https://github.com/ysj1173886760/paper_notes/tree/master/db),对应的中文版我上传到了链接中的仓库。论文里综述了数据库系统的整体架构,让大家可以对数据库有一个更加全面的视野。 +由于 Andy 的要求,仓库中没有 Project 的实现,只有 Homework 的 Solution。特别的,对于 Homework1,@ysj1173886760 还写了一个 Shell 脚本来帮大家执行自动判分。 + +另外在课程结束后,推荐阅读一篇论文 [Architecture Of a Database System](https://github.com/ysj1173886760/paper_notes/tree/master/db),对应的中文版也在上述仓库中。论文里综述了数据库系统的整体架构,让大家可以对数据库有一个更加全面的视野。 ## 后续课程 -[CMU15-721](https://15721.courses.cs.cmu.edu/spring2020/) - -主要讲主存数据库有关的内容,每节课都有对应的 paper 要读,推荐给希望进阶数据库的小伙伴 - -我目前也在跟进这门课,完成后会在这里提 PR 以提供进阶的指导 +[CMU15-721](https://15721.courses.cs.cmu.edu/spring2020/) 主要讲主存数据库有关的内容,每节课都有对应的 paper 要读,推荐给希望进阶数据库的小伙伴。@ysj1173886760 目前也在跟进这门课,完成后会在这里提 PR 以提供进阶的指导。 diff --git a/docs/数据库系统/CS122.md b/docs/数据库系统/CS122.md index e0d12ec4..a14165d4 100644 --- a/docs/数据库系统/CS122.md +++ b/docs/数据库系统/CS122.md @@ -12,17 +12,20 @@ 下面介绍一下这门课的前 3 个 Assignment 也就是实验 Lab 所要实现的功能: -### Assignment1: +### Assignment1 + - 为 NanoDB 提供 delete,update 语句的支持。 - 为 Buffer Pool Manager 添加合适的 pin/unpin 代码。 - 提升 insert 语句的性能, 同时不使数据库文件大小过分膨胀。 -### Assignment2: +### Assignment2 + - 实现一个简单的计划生成器,将各种已经 Parser 过的 SQL 语句转化为可执行的执行计划。 - 使用 nested-loop join 算法,实现支持 inner- and outer-join 的 Join 计划节点。 - 添加一些单元测试, 保证 inner- and outer-join 功能实现正确。 -### Assignment3: +### Assignment3 + - 完成收集表的统计信息。 - 完成各种计划节点的计划成本计算。 - 计算可出现在执行计划中的各种谓词的选择性。 @@ -35,4 +38,4 @@ - 课程网站: - 课程代码: - 课程教材:无 -- 课程作业:7 Assignments + 2 Challenges \ No newline at end of file +- 课程作业:7 Assignments + 2 Challenges diff --git a/docs/数据库系统/CS186.md b/docs/数据库系统/CS186.md index 2b82b251..77bc2423 100644 --- a/docs/数据库系统/CS186.md +++ b/docs/数据库系统/CS186.md @@ -21,4 +21,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS186 - GitHub](https://github.com/PKUFlyingPig/CS186) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS186 - GitHub](https://github.com/PKUFlyingPig/CS186) 中。 diff --git a/docs/数据结构与算法/Algo.md b/docs/数据结构与算法/Algo.md index 3ea96da1..1fc8cbb2 100644 --- a/docs/数据结构与算法/Algo.md +++ b/docs/数据结构与算法/Algo.md @@ -34,4 +34,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Princeton-Algorithm - GitHub](https://github.com/PKUFlyingPig/Princeton-Algorithm) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Princeton-Algorithm - GitHub](https://github.com/PKUFlyingPig/Princeton-Algorithm) 中。 diff --git a/docs/数据结构与算法/CS170.md b/docs/数据结构与算法/CS170.md index 354447c4..40100838 100644 --- a/docs/数据结构与算法/CS170.md +++ b/docs/数据结构与算法/CS170.md @@ -21,4 +21,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS170 - GitHub](https://github.com/PKUFlyingPig/UCB-CS170) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS170 - GitHub](https://github.com/PKUFlyingPig/UCB-CS170) 中。 diff --git a/docs/数据结构与算法/CS61B.md b/docs/数据结构与算法/CS61B.md index ecbe95da..70432e8d 100644 --- a/docs/数据结构与算法/CS61B.md +++ b/docs/数据结构与算法/CS61B.md @@ -27,21 +27,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61B - GitHub](https://github.com/PKUFlyingPig/CS61B) 中。 -Algorithms, 4th Edition: -CS61B Exams and Solutions: -COS226 Spring 2008 Midterm Solution: -COS226 Fall 2008 Midterm Solution: -COS226 Fall 2009 Midterm Solution: -CS61B Fall 2009 Exam Solutions (Final, Midterm, Midterm2, Midterm3): -COS226 Fall 2010 Midterm Solution: -COS226 Fall 2011 Midterm Solution: -COS226 Spring 2012 Midterm Solution: -COS226 Fall 2012 Midterm Solution: -COS226 Spring 2013 Midterm Solution: -CS61B Fall 2014 Test Solutions (Final, Final2, Final3, Midterm, Midterm2): -CS61B Spring 2016 Midterm2 Walkthrough: -CS61B Spring 2017 Midterm2 Walkthrough: -CS61B Spring 2016 MT1, Spring 2017 Exam Prep, Spring 2018 MT1, Spring 2019 MT1, Spring 2019 MT2, Fall 2020 MT1: -CS61B Spring 2019 Discussion: -CS61B Fall 2020 Discussion: +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61B - GitHub](https://github.com/PKUFlyingPig/CS61B) 中。 diff --git a/docs/机器学习/CS229.md b/docs/机器学习/CS229.md index 3f4bb776..97c3d178 100644 --- a/docs/机器学习/CS229.md +++ b/docs/机器学习/CS229.md @@ -19,4 +19,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS229 - GitHub](https://github.com/PKUFlyingPig/CS229) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS229 - GitHub](https://github.com/PKUFlyingPig/CS229) 中。 diff --git a/docs/深度学习/CS224n.md b/docs/深度学习/CS224n.md index ccae3eb4..a6351f25 100644 --- a/docs/深度学习/CS224n.md +++ b/docs/深度学习/CS224n.md @@ -23,4 +23,4 @@ Stanford 的 NLP 入门课程,由自然语言处理领域的巨佬 Chris Manni ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS224n - GitHub](https://github.com/PKUFlyingPig/CS224n) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS224n - GitHub](https://github.com/PKUFlyingPig/CS224n) 中。 diff --git a/docs/电子基础/EE16.md b/docs/电子基础/EE16.md index cb886d03..ca559038 100644 --- a/docs/电子基础/EE16.md +++ b/docs/电子基础/EE16.md @@ -19,4 +19,4 @@ UC Berkeley 电子系学生的大一入门课,通过电路基础知识的讲 ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/EE16A - GitHub](https://github.com/PKUFlyingPig/EE16A) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/EE16A - GitHub](https://github.com/PKUFlyingPig/EE16A) 中。 diff --git a/docs/电子基础/signal.md b/docs/电子基础/signal.md index c60bfae8..ee5aa178 100644 --- a/docs/电子基础/signal.md +++ b/docs/电子基础/signal.md @@ -18,4 +18,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-EE120 - GitHub](https://github.com/PKUFlyingPig/UCB-EE120) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-EE120 - GitHub](https://github.com/PKUFlyingPig/UCB-EE120) 中。 diff --git a/docs/系统安全/CS161.md b/docs/系统安全/CS161.md index 04cd421d..777cbf01 100644 --- a/docs/系统安全/CS161.md +++ b/docs/系统安全/CS161.md @@ -29,4 +29,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS161 - GitHub](https://github.com/PKUFlyingPig/UCB-CS161) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS161 - GitHub](https://github.com/PKUFlyingPig/UCB-CS161) 中。 diff --git a/docs/编程入门/CS106L.md b/docs/编程入门/CS106L.md index 7233e495..addc3b75 100644 --- a/docs/编程入门/CS106L.md +++ b/docs/编程入门/CS106L.md @@ -29,4 +29,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS106L - GitHub](https://github.com/PKUFlyingPig/CS106L) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS106L - GitHub](https://github.com/PKUFlyingPig/CS106L) 中。 diff --git a/docs/编程入门/CS110L.md b/docs/编程入门/CS110L.md index 0da4ff83..9d361b16 100644 --- a/docs/编程入门/CS110L.md +++ b/docs/编程入门/CS110L.md @@ -25,4 +25,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L) 中。 diff --git a/docs/编程入门/CS61A.md b/docs/编程入门/CS61A.md index 412cb34f..3b94bfa2 100644 --- a/docs/编程入门/CS61A.md +++ b/docs/编程入门/CS61A.md @@ -31,4 +31,4 @@ CS61B 和 CS61C 在本书中均有收录。 ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPic/CS61A - GitHub](https://github.com/PKUFlyingPig/CS61A) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPic/CS61A - GitHub](https://github.com/PKUFlyingPig/CS61A) 中。 diff --git a/docs/编程入门/Duke-Coursera-Intro-C.md b/docs/编程入门/Duke-Coursera-Intro-C.md index 55a0e582..f9097263 100644 --- a/docs/编程入门/Duke-Coursera-Intro-C.md +++ b/docs/编程入门/Duke-Coursera-Intro-C.md @@ -27,4 +27,4 @@ ## 资源汇总 -我在学习这门课中的作业实现都汇总在 [Duke Coursera Intro C](https://code.haidongji.com/Duke_Coursera_Intro_C/) 中。因为时间关系,我最后一课最后一周的几个作业到目前还没有完成。 \ No newline at end of file +@haidongji 在学习这门课中的作业实现都汇总在 [Duke Coursera Intro C](https://code.haidongji.com/Duke_Coursera_Intro_C/) 中。因为时间关系,我最后一课最后一周的几个作业到目前还没有完成。 diff --git a/docs/编译原理/CS143.md b/docs/编译原理/CS143.md index e5c5320f..4a53357c 100644 --- a/docs/编译原理/CS143.md +++ b/docs/编译原理/CS143.md @@ -21,4 +21,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [skyzluo/CS143-Compilers-Stanford - GitHub](https://github.com/skyzluo/CS143-Compilers-Stanford) 中。 +@skyzluo 在学习这门课中用到的所有资源和作业实现都汇总在 [skyzluo/CS143-Compilers-Stanford - GitHub](https://github.com/skyzluo/CS143-Compilers-Stanford) 中。 diff --git a/docs/计算机图形学/GAMES101.md b/docs/计算机图形学/GAMES101.md index 078b205b..105424b2 100644 --- a/docs/计算机图形学/GAMES101.md +++ b/docs/计算机图形学/GAMES101.md @@ -11,7 +11,6 @@ 官方介绍: > 本课程将全面而系统地介绍现代计算机图形学的四大组成部分:(1)光栅化成像,(2)几何表示,(3)光的传播理论,以及(4)动画与模拟。每个方面都会从基础原理出发讲解到实际应用,并介绍前沿的理论研究。通过本课程,你可以学习到计算机图形学背后的数学和物理知识,并锻炼实际的编程能力。 - > 作为入门,本课程会尽可能的覆盖图形学的方方面面,把每一部分的基本概念都尽可能说清楚,让大家对计算机图形学有一个完整的、自上而下的全局把握。全局的理解很重要,学完本课程后,你会了解到图形学不等于 OpenGL,不等于光线追踪,而是一套生成整个虚拟世界的方法。从本课程的标题,大家还可以看到“现代”二字,也就是说,这门课所要给大家介绍的都是现代化的知识,也都是现代图形学工业界需要的图形学基础。 GAMES101 是国内相当有名的图形学公开课。和大家印象中满是数学和算法的图形学不同,这门课以十分生动的方式带我们进入了图形学这个领域的大门。 @@ -31,4 +30,4 @@ GAMES101 是国内相当有名的图形学公开课。和大家印象中满是 ## 资源汇总 -我们在学习这门课中用到的所有资源和作业实现都汇总在[ysj1173886760/Learning: graphics/GAMES101 - GitHub](https://github.com/ysj1173886760/Learning/tree/master/graphics/GAMES101) 中。 +@ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在[ysj1173886760/Learning: graphics/GAMES101 - GitHub](https://github.com/ysj1173886760/Learning/tree/master/graphics/GAMES101) 中。 diff --git a/docs/计算机图形学/GAMES103.md b/docs/计算机图形学/GAMES103.md index 7bc2d102..6ae938e1 100644 --- a/docs/计算机图形学/GAMES103.md +++ b/docs/计算机图形学/GAMES103.md @@ -27,7 +27,5 @@ - 课程作业:共四次作业,可见官方BBS小程序或非官方的Repo:[GAMES103 HW](https://github.com/indevn/GAMES103/tree/main/HW) ## 资源汇总 -我在学习这门课中用到的所有资源和作业要求都汇总在 [GAMES103 Unoffical](https://github.com/indevn/GAMES103) 中。对于作业的具体实现,在知乎上有很多相关文章进行了细致讲解可以参考。 - - +@indevn 在学习这门课中用到的所有资源和作业要求都汇总在 [GAMES103 Unoffical](https://github.com/indevn/GAMES103) 中。对于作业的具体实现,在知乎上有很多相关文章进行了细致讲解可以参考。 diff --git a/docs/计算机网络/CS144.md b/docs/计算机网络/CS144.md index a550e493..1e797f7e 100644 --- a/docs/计算机网络/CS144.md +++ b/docs/计算机网络/CS144.md @@ -21,10 +21,7 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS144-Computer-Network - GitHub](https://github.com/PKUFlyingPig/CS144-Computer-Network) 中。 - -### 一些可以参考的博客 - +- [PKUFlyingPig](https://github.com/PKUFlyingPig/CS144-Computer-Network) - [Lexssama's Blogs](https://lexssama.github.io/tags/CS144/) - [huangrt01](https://github.com/huangrt01/CS-Notes/blob/master/Notes/Output/Computer-Networking-Lab-CS144-Stanford.md) - [kiprey](https://kiprey.github.io/tags/CS144/) @@ -33,7 +30,6 @@ - [ViXbob's libsponge](https://vixbob.moe/25.html) - [吃着土豆坐地铁的博客](https://www.epis2048.net/categories/Code/Stanford-CS144/) - [Smith](https://www.inlighting.org/archives/2021-cs144-notes/) -- [PKUFlyingPig](https://github.com/PKUFlyingPig/CS144-Computer-Network) - [星遥见](https://www.cnblogs.com/weijunji/tag/CS144/) - [EIMadrigal](https://www.cnblogs.com/EIMadrigal/p/15500472.html) - [Joey](http://yuzijun.life/2021-02/CS144) diff --git a/docs/计算机网络/topdown.md b/docs/计算机网络/topdown.md index d4fa2815..40a19468 100644 --- a/docs/计算机网络/topdown.md +++ b/docs/计算机网络/topdown.md @@ -19,4 +19,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Computer-Network-A-Top-Down-Approach - GitHub](https://github.com/PKUFlyingPig/Computer-Network-A-Top-Down-Approach) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Computer-Network-A-Top-Down-Approach - GitHub](https://github.com/PKUFlyingPig/Computer-Network-A-Top-Down-Approach) 中。 diff --git a/docs/计算机网络/topdown_ustc.md b/docs/计算机网络/topdown_ustc.md index b61b1186..39c45b7d 100644 --- a/docs/计算机网络/topdown_ustc.md +++ b/docs/计算机网络/topdown_ustc.md @@ -19,12 +19,5 @@ - 课程网站: - 课程视频: +- 课程课件: - 课程教材:计算机网络(自顶向下方法 第7版),机械工业出版社,2016 - -## 资源汇总 - -课程课件: - -## 备注 - -根据[USTC评课社区](https://icourse.club/course/6266/)里对该课的评价,该课有实验且有一半课会点名,科大学生慎选。 \ No newline at end of file diff --git a/docs/软件工程/6031.md b/docs/软件工程/6031.md index f8637c2f..2dd84ad7 100644 --- a/docs/软件工程/6031.md +++ b/docs/软件工程/6031.md @@ -31,4 +31,4 @@ @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.031-software-construction - GitHub](https://github.com/PKUFlyingPig/MIT6.031-software-construction) 中。 -@pengzhangzhi 完成了这门课的作业并记录了笔记, 代码开源在[pengzhangzhi/self-taught-CS/Software Construction - Github](https://github.com/pengzhangzhi/self-taught-CS/tree/main/Software%20Construction)。 +@pengzhangzhi 完成了这门课的作业并记录了笔记, 代码开源在 [pengzhangzhi/self-taught-CS/Software Construction - Github](https://github.com/pengzhangzhi/self-taught-CS/tree/main/Software%20Construction)。 diff --git a/docs/软件工程/CS169.md b/docs/软件工程/CS169.md index aaee0ab3..7b73e4f4 100644 --- a/docs/软件工程/CS169.md +++ b/docs/软件工程/CS169.md @@ -23,4 +23,4 @@ ## 资源汇总 -我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS169-Software-Engineering - GitHub](https://github.com/PKUFlyingPig/CS169-Software-Engineering) 中。 +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS169-Software-Engineering - GitHub](https://github.com/PKUFlyingPig/CS169-Software-Engineering) 中。 From f43581c11aa636943d308299a78c251a560c5dcb Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Tue, 6 Sep 2022 17:59:52 +0800 Subject: [PATCH 35/45] [TOOLS]: Add new tools for programmers --- docs/必学工具/tools.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/必学工具/tools.md b/docs/必学工具/tools.md index a05306e9..eb6810ee 100644 --- a/docs/必学工具/tools.md +++ b/docs/必学工具/tools.md @@ -15,8 +15,22 @@ - [iconfont](https://www.iconfont.cn/): 国内最大的图标和插画资源库,可用于开发或绘制系统架构图。 - [turbosquid](https://www.turbosquid.com/): 可以购买各式各样的模型。 +## 编程相关 + +- [sqlfiddle](http://www.sqlfiddle.com/): 一个简易的在线 SQL Playground。 +- [godbolt](https://godbolt.org/): 非常方便的编译器探索工具。你可以写一段 C/C++ 代码,选择一款编译器,然后便可以观察生成的具体汇编代码。 +- [explainshell](https://explainshell.com/): 你是否曾为一段 shell 代码的具体含义感到困扰?manpage 看半天还是不明所以?试试这个网站! +- [regex101](https://regex101.com/): 正则表达式调试网站,支持各种编程语言的匹配标准。 +- [typingtom](https://www.typingtom.com/lessons): 针对程序员的打字练习/测速网站。 + ## 学习网站 - [HFS](https://hepsoftwarefoundation.org/training/curriculum.html): 各类软件教程。 - [os-wiki](https://wiki.osdev.org/Main_Page): 操作系统技术资源百科全书。 - [Shadertoy](https://www.shadertoy.com/): 编写各式各样的 shader。 + +## 杂项 + +- [tophub](https://tophub.today/): 新闻热榜合集(综合了知乎、微博、百度、微信等)。 +- [speedtest](https://www.speedtest.net/zh-Hans): 在线网络测速网站。 +- [public-apis](https://github.com/public-apis/public-apis): 公共 API 合集列表。 From f54e9982cd0a6ba5e8d11fb6b87acd60c7cfc8c4 Mon Sep 17 00:00:00 2001 From: BarbarossaWang <40034814+BarbarossaWang@users.noreply.github.com> Date: Tue, 6 Sep 2022 22:55:47 +0800 Subject: [PATCH 36/45] [FIX]: update latest link for UCB CS186 (#213) --- docs/数据库系统/CS186.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/数据库系统/CS186.md b/docs/数据库系统/CS186.md index 77bc2423..7bb326f5 100644 --- a/docs/数据库系统/CS186.md +++ b/docs/数据库系统/CS186.md @@ -14,7 +14,7 @@ ## 课程资源 -- 课程网站: +- 课程网站: - 课程视频: - 课程教材:无 - 课程作业:6 个 Project From 8a03c3ee808a8d3c981f12e857f997cf46ded427 Mon Sep 17 00:00:00 2001 From: BarbarossaWang <40034814+BarbarossaWang@users.noreply.github.com> Date: Wed, 7 Sep 2022 10:45:11 +0800 Subject: [PATCH 37/45] [Course] Add CMU 15-445 Fall2021 Course Resources (#215) --- docs/数据库系统/15445.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/数据库系统/15445.md b/docs/数据库系统/15445.md index 1862798f..b09ce245 100644 --- a/docs/数据库系统/15445.md +++ b/docs/数据库系统/15445.md @@ -13,7 +13,7 @@ ## 课程资源 -- 课程网站:[Fall2019](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [Fall2020](https://15445.courses.cs.cmu.edu/fall2020/schedule.html) +- 课程网站:[Fall2019](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [Fall2020](https://15445.courses.cs.cmu.edu/fall2020/schedule.html), [Fall2021](https://15445.courses.cs.cmu.edu/fall2021/schedule.html) - 课程视频:课程网站免费观看 - 课程教材:Database System Concepts - 课程作业:4 个 Project @@ -22,6 +22,8 @@ 在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制。 +在 Fall2021 中,第二个 Project 是做缓存池管理,第三个 Project 是做哈希索引,第四个 Project 是做并发控制。 + 如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。 ## 资源汇总 From 47a98a680cf2bf311404eef8e2792c4273eb336e Mon Sep 17 00:00:00 2001 From: BarbarossaWang <40034814+BarbarossaWang@users.noreply.github.com> Date: Wed, 7 Sep 2022 16:56:01 +0800 Subject: [PATCH 38/45] [New Course] University of Helsinki: Full Stack open 2022 (#217) * [New Course] UHE Deep Dive Into Modern Web Development * fix course title * fix mkdocs.yml --- docs/Web开发/fullstackopen.md | 20 ++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 21 insertions(+) create mode 100644 docs/Web开发/fullstackopen.md diff --git a/docs/Web开发/fullstackopen.md b/docs/Web开发/fullstackopen.md new file mode 100644 index 00000000..f9ef333b --- /dev/null +++ b/docs/Web开发/fullstackopen.md @@ -0,0 +1,20 @@ +# University of Helsinki: Full Stack open 2022 + +## 课程简介 + +- 所属大学:University of Helsinki +- 先修要求:具备良好的编程技能、基本的网络编程和数据库知识,并且了解使用 Git 这个版本控制系统的基础知识。 +- 编程语言:JavaScript/HTML/CSS/NoSQL/SQL +- 课程难度:🌟🌟 +- 预计学时:因人而异 + +本课程是介绍如何使用 JavaScript 开发现代Web应用程序。 课程的重点是使用 ReactJS 构建单页面应用程序(SPA),并使用由 Node.js 构建 REST API。该课程还包含介绍 GraphQL 的部分,这是 REST API 的现代替代方案。 + +课程还包括测试、配置和环境管理,以及使用 MongoDB 来存储应用的数据。 + +## 课程资源 + +- 课程网站: +- 课程作业:参见课程网站 +- 课程 Discord 群组: +- 课程 Telegram 群组: diff --git a/mkdocs.yml b/mkdocs.yml index b9d2d0bf..5f3cf79a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -152,6 +152,7 @@ nav: - Web开发: - "MIT web development course": "Web开发/mitweb.md" - "Stanford CS142: Web Applications": "Web开发/CS142.md" + - "University of Helsinki: Full Stack open 2022": "Web开发/fullstackopen.md" - 数据科学: - "UCB Data100: Principles and Techniques of Data Science": "数据科学/Data100.md" - 人工智能: From 89f411639a805465a7bf2aa9c9625973e6533ee8 Mon Sep 17 00:00:00 2001 From: AlexSpace <74698401+IndifferentArea@users.noreply.github.com> Date: Thu, 8 Sep 2022 00:35:37 +0800 Subject: [PATCH 39/45] [Edit] Correct some basic information for CMU10-414 (#219) * Correct some basic information. Correct Course Name & Code & Prerequisite as https://dlsyscourse.org/ shows. * correct file name * Rename MLSys.md to CMU10-414.md --- docs/机器学习系统/{MLSys.md => CMU10-414.md} | 6 +++--- mkdocs.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename docs/机器学习系统/{MLSys.md => CMU10-414.md} (80%) diff --git a/docs/机器学习系统/MLSys.md b/docs/机器学习系统/CMU10-414.md similarity index 80% rename from docs/机器学习系统/MLSys.md rename to docs/机器学习系统/CMU10-414.md index e2770d6e..b0b873b0 100644 --- a/docs/机器学习系统/MLSys.md +++ b/docs/机器学习系统/CMU10-414.md @@ -1,10 +1,10 @@ -# Machine Learning System +# CMU 10-414/714: Deep Learning Systems ## 课程简介 - 所属大学:CMU -- 先修要求:系统入门、深度学习入门 -- 编程语言:N/A +- 先修要求:系统入门(eg.15-213)、深度学习入门、基本的数学知识 +- 编程语言:N/A(据课程主页,要求熟悉Python、C/C++) - 课程难度:N/A - 预计学时:N/A diff --git a/mkdocs.yml b/mkdocs.yml index 5f3cf79a..b082fdde 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -165,7 +165,7 @@ nav: - "UCB CS189: Introduction to Machine Learning": "机器学习/CS189.md" - 机器学习系统: - "Machine Learning Compilation": "机器学习系统/MLC.md" - - "Machine Learning System": "机器学习系统/MLSys.md" + - "CMU 10-414/714: Deep Learning Systems": "机器学习系统/CMU10-414.md" - 深度学习: - "Coursera: Deep Learning": "深度学习/CS230.md" - "国立台湾大学:李宏毅机器学习": "深度学习/LHY.md" From 621e7491691e23a6acea91f5d94aaa8eb5d9d8bd Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Fri, 9 Sep 2022 16:58:39 +0800 Subject: [PATCH 40/45] [LOGO] Add logo && favicon for website --- README.md | 5 +++++ docs/images/csdiy-blue.png | Bin 0 -> 113473 bytes docs/images/favicon16x16.png | Bin 0 -> 963 bytes docs/index.md | 4 ++++ mkdocs.yml | 7 +++++-- 5 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 docs/images/csdiy-blue.png create mode 100644 docs/images/favicon16x16.png diff --git a/README.md b/README.md index 76b7d983..f791d98c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +
+ +
+ # CS 自学指南 > *Everyone should enjoy CS if you have a good teacher to teach you a good course.* @@ -40,6 +44,7 @@ ## ✨ 鸣谢 +特别感谢 @[AlfredThiel](https://github.com/AlfredThiel) 为项目制作了精美的 Logo。 diff --git a/docs/images/csdiy-blue.png b/docs/images/csdiy-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..6438bdaca977d963347f1caa8ead6936dafa474d GIT binary patch literal 113473 zcmeFZhd{hwU+db}^SWN1>fBJHp=6^ZAt9l;e(j1b2?=Q% z_+BAD2A))z)RvQw9J%A5qN3xZqNd{J?B=28e#hG8ii4-S^Bq4OaS{^#SJsx6y4NrA zx8Av9Y1!H-C_w4qqZ=L`scRYBT7Tk64Yd_D<zsBW$&epc zW&xNiWoyb&t1Ol8?C|At!t_Si|ypkH(}M#5}ZLz&>hw*YP`&flSSkKjVV$Jnzyke%4d0iQ=LUznp%z z=gB2~@l;b6S7RbtT=e@Y9(=hzNf-(`7Wy3i)=ZAxijA3?`q3CQHJ>;0IcDBRAqj{C z0ioxJ={}ER$0n{FJ2p)PSLkhWXufLccl8Y4v15b&czmz{AQZBre$D3#9$&|DfXDlY z>1=Ww3q9&ba+2F-RidSLAJE*_#^}1OmKMnc@R^*1?8q^aqu|pK5*YZ0jf9NwnS@0B z2>aj9x<~l`^G=up3F+ZGCg3OZ6$ieL{QU__h5dPhv@P}M-_I-1tJum1$H5N@_iM(U zBqS^h(DxBL?x>`?|P8qe$d^Wx+=moBMaTd|jMf zJ!O3r&Jx~`1)rhEB4@b>uiST1IBTS(!=>WpVZ$XUEGjH|R*{m6i%Z_)uC1)@m8*xt z!EXv@?eE`rmlYB5@$nJ%5f^szuoDrJk&zJ*y(Dt!k`Q=9$kWgD{vBT-S5F?|B!A|) zV&iG;;oyGX!OfKmn)i;Co7a7XvuB}&{(cendEdeIKP$O<9v%xEPz3rP5iwy=k-u|; zq4LmESz}!rPd8^TXnsX82~l~%yZ`m{KPwSO82!JF`1jNQJ3`0a?YD>pzR%a&@?`_-BIu^Z0O-ya+_Hf02;LAHq|>AVo@fk-yAV zq|6u7n;;>9lU%>@kG}7b<#CFKZ*BbeaXSZH9e1rgvptRomgu`U)RyUUM^Ud f3J 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�gt+P?e0m3Yu27xn`Zu!9H@~2V^T|DAjv!5 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%0ASW`e<-e`Pl~eH5$S8Q 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 literal 0 HcmV?d00001 diff --git a/docs/images/favicon16x16.png b/docs/images/favicon16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..ad631627fcdb691c5ff796db299c3cda5030eff3 GIT binary patch literal 963 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>b&t1H;W?SWkQx4{P_8)pszG<$;f$xty z&)<6XZlm0Vr&aNZQ{2?2em?v2WP>ux)?+6O_^f$!?@n0`w1zRs+ubGQ(5)SuKn{C} zr>`sfGfqx+Hm>u6>NkNx`#fD7LnJOICmi6Ch>W;-LsBq?&rdH;F3!)cLqJ)1f5UBa+@Y_hsHv)}tgNlRegTI_Vn|R}U}*653s)vxxpwg>1LuktoUf%Nq$Fq0 zI5oR5bVhVUROD@s8&bD8Z#A>Z$VkrRnUfp)B$l-`k*O!o?cFE2d2s@a`JD1@p~~g_ z{PFhn6BvRUHkKt!SigJYoVkexM-&woUP^qpPjF)3#WMlhk8L=5?C5J1jf1s^Pt4Gm zHRa5Sj;oIuHl$0<3H?)FK#IZ0z{p6~z!Hc;49u+z%&ZIz zv<(cb3=HNPdwoFBkei>9nO2Eg!<)QMK0poORUr{2L5bxG1x5L3nK`KnC6xuK3Yi5Z z$qWn?a~^-<;V2B#&^YCP`i$q(AO>b-ZoOn~VP#?O$s)|c3N8&Mhf|o9H-{*kzH#Nm lkuyhRj + ![Image title](./images/csdiy-blue.png){ width="400" } + + **最近更新:增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/MLSys.md) ~** diff --git a/mkdocs.yml b/mkdocs.yml index b082fdde..3c10e22f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,10 +12,9 @@ copyright: Copyright © 2021-present - + # CS 自学指南 diff --git a/docs/images/csdiy-blue.png b/docs/images/logo.png similarity index 100% rename from docs/images/csdiy-blue.png rename to docs/images/logo.png diff --git a/docs/images/title.png b/docs/images/title.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d71489ac201c63b8b305066cdc72786dba15a8 GIT binary patch literal 250471 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%0DvxKj)OnWZOy~^u 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

uKpzU~9 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

t!`Sxt_O&9D-x8m2V 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\M+EVe5e8L9yePVQ&0-cZR@?rzRj$af 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�l34oedvA=z`^pWnI_2D|%MW75<4 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 583d2b09..ca2aec6f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,10 +1,10 @@ -# 前言 -

- ![Image title](./images/csdiy-blue.png){ width="400" } + ![Image title](./images/title.png){ width="600" }
-**最近更新:增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/MLSys.md) ~** +# 前言 + +**最近更新:增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/CMU10-414.md) ~** From b878dace1d79e9a041962d4626bae089e359a3a0 Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Sun, 11 Sep 2022 00:51:15 +0800 Subject: [PATCH 42/45] [EDIT] update environment setup guide && fix some typos --- docs/CS学习规划.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index 923cfc03..7000a15e 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -12,9 +12,9 @@ [MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。 -[翻墙](必学工具/翻墙.md):由于一些众所周知的原因,谷歌、GitHub 等网站在大陆无法访问。然而很多时候,谷歌和 StackOverflow 可以解决你在开发过程中遇到的 95% 的问题。因此,学会翻墙几乎是一个内地 CSer 的必备技能。(考虑到法律问题,这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用)。 +[翻墙](必学工具/翻墙.md):由于一些众所周知的原因,谷歌、GitHub 等网站在大陆无法访问。然而很多时候,谷歌和 StackOverflow 可以解决你在开发过程中遇到的 99% 的问题。因此,学会翻墙几乎是一个内地 CSer 的必备技能。(考虑到法律问题,这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用)。 -命令行:熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高极大地提高你作为工程师的灵活性以及生产力。[命令行的艺术](https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md)是一份非常经典的教程,它源于 Quora 的一个提问,但在各路大神的贡献努力下已经成为了一个 GitHub 十万 stars 的顶流项目,被翻译成了十几种语言。教程不长,非常建议大家反复通读,在实践中内化吸收。同时,掌握 shell 脚本编程也是一项不容忽视的技术,可以参考这个[教程](https://www.shellscript.sh/)。 +命令行:熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会极大地提高你作为工程师的灵活性以及生产力。[命令行的艺术](https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md)是一份非常经典的教程,它源于 Quora 的一个提问,但在各路大神的贡献努力下已经成为了一个 GitHub 十万 stars 的顶流项目,被翻译成了十几种语言。教程不长,非常建议大家反复通读,在实践中内化吸收。同时,掌握 Shell 脚本编程也是一项不容忽视的技术,可以参考这个[教程](https://www.shellscript.sh/)。 IDE (Integrated Development Environment):集成开发环境,说白了就是你写代码的地方。作为一个码农,IDE 的重要性不言而喻,但由于很多 IDE 是为大型工程项目设计的,体量较大,功能也过于丰富。其实如今一些轻便的文本编辑器配合丰富的插件生态基本可以满足日常的轻量编程需求。个人常用的编辑器是 VS Code 和 Sublime(前者的插件配置非常简单,后者略显复杂但颜值很高)。当然对于大型项目我还是会采用略重型的 IDE,例如 Pycharm (Python),IDEA (Java) 等等(免责申明:所有的 IDE 都是世界上最好的 IDE)。 @@ -48,13 +48,17 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 > > 实际上的开发 —— 配环境配几天还没开始写代码。 -推荐一个非常不错的 GitHub 项目 [DevOps-Guide](https://github.com/Tikam02/DevOps-Guide),其中涵盖了非常多的运维方面的基础知识和教程,例如 Docker, Kubernetes, Linux, CI-CD, GitHub Actions 等等。 +### PC 端环境配置 + +如果你是 Mac 用户,那么你很幸运,这份[指南](https://sourabhbajaj.com/mac-setup/) 将会手把手地带你搭建起整套开发环境。如果你是 Windows 用户,可以参考这个相对简略的[教程](https://github.com/orlp/dev-on-windows/wiki)。 另外大家可以参考一份灵感来自 [6.NULL MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 的 [环境配置指南][guide],重点在于终端的美化配置。此外还包括常用软件源(如 GitHub, Anaconda, PyPI 等)的加速与替换以及一些 IDE 的配置与激活教程。 [guide]: https://taylover2016.github.io/%E6%96%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%89%8B%E6%8C%87%E5%8D%97%EF%BC%88%E6%96%B0%E6%89%8B%E5%90%91%EF%BC%89/index.html -More contents under construction. +### 服务器端环境配置 + +推荐一个非常不错的 GitHub 项目 [DevOps-Guide](https://github.com/Tikam02/DevOps-Guide),其中涵盖了非常多的运维方面的基础知识和教程,例如 Docker, Kubernetes, Linux, CI-CD, GitHub Actions 等等。 ## 课程地图 @@ -62,7 +66,7 @@ More contents under construction. 以下课程类别中除了含有 *基础* 和 *入门* 字眼的以外,并无明确的先后次序,大家只要满足某个课程的先修要求,完全可以根据自己的需要和喜好选择想要学习的课程。 -另外由于贡献者的不断增加,这份课程地图已经从最初我的学习经历,发展成为很多 CS 自学者的资源合集,其中难免有内容交叉甚至重复的。但之所以都列出来,还是希望集百家之长,给大家尽可能多的选择与参考。 +另外由于贡献者的不断增加,这份课程地图已经从最初我的学习经历,发展成为很多 CS 自学者的资源合集,其中难免有内容交叉甚至重复的。之所以都列出来,还是希望集百家之长,给大家尽可能多的选择与参考。 ### 数学基础 @@ -80,7 +84,7 @@ More contents under construction. 集合论、图论、概率论等等是算法推导与证明的重要工具,也是后续高阶数学课程的基础。但我觉得这类课程的讲授很容易落入理论化与形式化的窠臼,让课堂成为定理结论的堆砌,而无法使学生深刻把握理论的本质,进而造成学了就背,考了就忘的怪圈。如果能在理论教学中穿插算法运用实例,学生在拓展算法知识的同时也能窥见理论的力量和魅力。 -[UCB CS70 : discrete Math and probability theory](./数学进阶/CS70.md) 和 [UCB CS126 : Probability theory](./数学进阶/CS126.md) 是 UC Berkeley 的概率论课程,前者覆盖了离散数学和概率论基础,后者则涉及随机过程以及深入的理论内容。两者都非常注重理论和实践的结合,有丰富的算法实际运用实例,后者还有大量的Python编程作业来让学生运用概率论的知识解决实际问题。 +[UCB CS70 : discrete Math and probability theory](./数学进阶/CS70.md) 和 [UCB CS126 : Probability theory](./数学进阶/CS126.md) 是 UC Berkeley 的概率论课程,前者覆盖了离散数学和概率论基础,后者则涉及随机过程以及深入的理论内容。两者都非常注重理论和实践的结合,有丰富的算法实际运用实例,后者还有大量的 Python 编程作业来让学生运用概率论的知识解决实际问题。 #### 数值分析 @@ -90,7 +94,7 @@ More contents under construction. 上完上面的体验课之后,如果意犹未尽的话,不妨试试 MIT 的 [18.330 : Introduction to numerical analysis](./数学进阶/numerical.md),这门课的编程作业同样会用 Julia 编程语言,不过难度和深度上都上了一个台阶。内容涉及了浮点编码、Root finding、线性系统、微分方程等等方面,整门课的主旨就是让你利用离散化的计算机表示去估计和逼近一个数学上连续的概念。这门课的教授还专门撰写了一本配套的开源教材 [Fundamentals of Numerical Computation](https://fncbook.github.io/fnc/frontmatter.html),里面附有丰富的 Julia 代码实例和严谨的公式推导。 -如果你还意犹未尽的话,还有 MIT 的研究生课程 [18.335: Introduction to numerical method][18.335] 供你参考。 +如果你还意犹未尽的话,还有 MIT 的数值分析研究生课程 [18.335: Introduction to numerical method][18.335] 供你参考。 [18.335]: https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm @@ -141,7 +145,7 @@ More contents under construction. #### Python -- [Harvard CS50: This is CS50x](编程入门/CS50.md) 最好的计算机基础入门课,你绝对会爱上的。 +- [Harvard CS50: This is CS50x](编程入门/CS50.md) - [UCB CS61A: Structure and Interpretation of Computer Programs](编程入门/CS61A.md) #### C++ @@ -220,7 +224,7 @@ More contents under construction. [UCB CS162: Operating System](操作系统/CS162.md),伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年春季学期操作系统实验班的助教,引入并改善了这个 Project,课程资源也会全部开源,具体参见[课程网站](https://pkuos.systems)。 -[NJU: Operating System Design and Implementation](操作系统/NJUOS.md),南京大学的蒋炎岩老师开设的操作系统课程。蒋老师以其独到的视角 +[NJU: Operating System Design and Implementation](操作系统/NJUOS.md),南京大学的蒋炎岩老师开设的操作系统课程。蒋老师以其独到的系统视角结合丰富的代码示例将众多操作系统的概念讲得深入浅出,此外这门课的全部课程内容都是中文的,非常方便大家学习。 ### 并行与分布式系统 From 03284e0438c2a892aab5256b581a272fdc9d9853 Mon Sep 17 00:00:00 2001 From: BarbarossaWang <40034814+BarbarossaWang@users.noreply.github.com> Date: Thu, 15 Sep 2022 13:19:05 +0800 Subject: [PATCH 43/45] [FEATURE] English version support using mkdocs-static-i18n (#224) * feat: i18n support * add nav translation * add English template * fix translations * fix en site_name --- docs/index.en.md | 11 +++++++ docs/编程入门/MIT-Missing-Semester.en.md | 17 +++++++++++ mkdocs.yml | 39 ++++++++++++++++++++++++ requirements.txt | 1 + template.en.md | 19 ++++++++++++ 5 files changed, 87 insertions(+) create mode 100644 docs/index.en.md create mode 100644 docs/编程入门/MIT-Missing-Semester.en.md create mode 100644 template.en.md diff --git a/docs/index.en.md b/docs/index.en.md new file mode 100644 index 00000000..523f8b88 --- /dev/null +++ b/docs/index.en.md @@ -0,0 +1,11 @@ +# Self Learning Computer Science Roadmap + +I'm an undergraduate student majored in Computer Science in Peking University. Tired of the boring courses, I began self-learning totally after my fresh year. This repository contains all the resources I used to self-learning. The links below will take you either to another repository which contains my solution for homework and course projects or to the course website where you can get full guidance. + +If you feel quite painful to take the courses at unversity. Trust me, there is high possibility that it's not your duty. Computer Science is so interesting and everyone should enjoy it if you have a good teacher to teach you a good course. + +All the courses in this repository are developed in MIT, UC Berkeleys, Princeton, Harvard ...... , and I guarantee you will have a completely different experience to take these courses ! + +Let's self-learning together and get better together ! + +If you find this repo helpful for you, your star is the best gift for me ~ \ No newline at end of file diff --git a/docs/编程入门/MIT-Missing-Semester.en.md b/docs/编程入门/MIT-Missing-Semester.en.md new file mode 100644 index 00000000..5889b489 --- /dev/null +++ b/docs/编程入门/MIT-Missing-Semester.en.md @@ -0,0 +1,17 @@ +# MIT: The Missing Semester of Your CS Education + +## Descriptions + +- Offered by: MIT +- Prerequisites: None +- Programming lanuages: Shell +- Difficulty: 🌟🌟 +- Class Hour: 10 hours + +Just as the course name indicated, this course will teach the missing things in the university courses. It will cover shell programming, git, vim editor, tmux, ssh, sed, awk and even how to beautify your terminal. Trust me, this will be your first step to become a hacker! + +## Resources + +- Homepage: +- Records: +- Assignments: Some exercises behind each lecture. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 3c10e22f..858e8d4a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -63,6 +63,45 @@ markdown_extensions: - md_in_html plugins: + - i18n: + default_language: zh + material_alternate: true + languages: + zh: + name: 简体中文 + build: true + en: + name: English + build: true + site_name: CSDIY.wiki + nav_translations: + en: + 前言: Foreword + 一个仅供参考的CS学习规划: Guideline + 必学工具: Productivity Toolkit + 好书推荐: Book Recommendation + 数学基础: Fundamental Mathematics + 数学进阶: Advanced Mathematics + 编程入门: Fundamental Programming + 电子基础: Fundamental Electronics + 数据结构与算法: Data Structures and Algorithms + 软件工程: Software Engineering + 体系结构: Computer Architecture + 操作系统: Operating Systems + 并行与分布式系统: Distributed Systems + 计算机系统安全: Computer Security + 计算机网络: Computer Networking + 数据库系统: Database Systems + 编译原理: Compilers + 计算机图形学: Computer Graphics + Web开发: Web Development + 数据科学: Data Science + 人工智能: Artificial Intelligence + 机器学习: Machine Learning + 机器学习系统: Machine Learning Systems + 深度学习: Deep Learning + 机器学习进阶: Advanced Machine Learning + 后记: Postscript - search: lang: ja - git-revision-date-localized diff --git a/requirements.txt b/requirements.txt index c1ab8361..f4b94b3c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ mkdocs-material==7.3.6 mkdocs-minify-plugin >= 0.4.0 mkdocs-git-revision-date-localized-plugin >= 0.9.3 jinja2==3.0.0 +mkdocs-static-i18n==0.46 diff --git a/template.en.md b/template.en.md new file mode 100644 index 00000000..4c0226ca --- /dev/null +++ b/template.en.md @@ -0,0 +1,19 @@ +# Course Code: Course Name + +## Descriptions + +- Offered by: +- Prerequisites: +- Programming lanuages: +- Difficulty: +- Class Hour: + + + +## Resources + +- Homepage: +- Records: +- Textbooks & Notes & Slides: +- Assignments: +- ... \ No newline at end of file From 89bf93c577e16518756830d9450d555663500fea Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Thu, 15 Sep 2022 14:28:42 +0800 Subject: [PATCH 44/45] [README] English version contribution guide --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5ed9b4bf..6af27ab0 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ 对于中英混合排版的要点规范,可以参考[这个仓库](https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.zh-Hans.md),我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/114)。 +本书的英文版也正在翻译中,如果你想参与到翻译的队伍里,可以参考这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/222)。 + 同时由于个人水平有限,书中难免有笔误甚至概念错误之处,也请各位不吝赐教,在 issue 中提出来。 ## 关于交流社区的建立 From 70ac2f50ea32c0635f6ee1ed6e9535e7f96260aa Mon Sep 17 00:00:00 2001 From: zhongyinmin Date: Thu, 15 Sep 2022 17:00:19 +0800 Subject: [PATCH 45/45] [ENGLISH] translate the foreword into English --- docs/index.en.md | 87 ++++++++++++++++++++++++++++++++++++++++++++---- docs/index.md | 8 ++--- 2 files changed, 85 insertions(+), 10 deletions(-) diff --git a/docs/index.en.md b/docs/index.en.md index 523f8b88..bdaa674a 100644 --- a/docs/index.en.md +++ b/docs/index.en.md @@ -1,11 +1,86 @@ -# Self Learning Computer Science Roadmap +
+ ![Image title](./images/title.png){ width="600" } +
-I'm an undergraduate student majored in Computer Science in Peking University. Tired of the boring courses, I began self-learning totally after my fresh year. This repository contains all the resources I used to self-learning. The links below will take you either to another repository which contains my solution for homework and course projects or to the course website where you can get full guidance. +# Foreword -If you feel quite painful to take the courses at unversity. Trust me, there is high possibility that it's not your duty. Computer Science is so interesting and everyone should enjoy it if you have a good teacher to teach you a good course. +**The English version is still under development, please check [this issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/222) if you want to contribute.** -All the courses in this repository are developed in MIT, UC Berkeleys, Princeton, Harvard ...... , and I guarantee you will have a completely different experience to take these courses ! +This is a self-learning guide to computer science, and a memento of my three years of self-learning at university. -Let's self-learning together and get better together ! +It is also a gift to the young students at Peking University. It would be a great encouragement and comfort to me if this book could be of even the slightest help to you in your college life. -If you find this repo helpful for you, your star is the best gift for me ~ \ No newline at end of file +The book is currently organized to include the following sections (if you have other good suggestions, or would like to join the ranks of contributors, please feel free to email [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn) or ask questions in the issue). + +- Productivity Toolkit: IDE, VPN, StackOverflow, Git, Github, Vim, Latex, GNU Make and so on. +- Environment configuration: PC/Server development environment setup, DevOps tutorials and so on. +- Book recommendations: Those who have read the CSAPP must have realized the importance of good books. I will list links to books and resources in different areas of Computer Science that I find rewarding to read. +- **List of high quality CS courses**: I will summarize all the high quality foreign CS courses I have taken into different categories and give relevant self-learning advice. Most of them will have a separate repository containing relevant resources as well as my homework/project implementations. + +## The place where dreams start —— CS61A + +In my freshman year, I was a novice who knew nothing about computers. I installed a giant IDE Visual Studio and fight with OJ every day. With my high school maths background, I did pretty well in maths courses, but I felt struggled to learn courses in my major. When it came to programming, all I could do was open up that clunky IDE, create a new project that I didn't know exactly what it was for, and then `cin`, `cout`, `for` loops, and then CE, RE, WA loops. I was in a state where I was desperately trying to learn well but I didn't know how to learn. I listened carefully in class but I couldn't solve the homework problems. I spent almost all my spare time doing the homework after class, but the results were disappointing. I still retain the source code of the project for Introduction to Computing course —— a single 1200-line C++ file with no header files, no class abstraction, no unit tests, no makefile, no version control. The only good thing is that it can run, the disadvantage is the complement of "can run". For a while I wondered if I wasn't cut out for computer science, as all my childhood imaginings of geekiness had been completely ruined by my first semester's experience. + +It all turned around during the winter break of my freshman year, when I had a hankering to learn Python. I overheard someone recommend CS61A, a freshman introductory course at UC Berkeley on Python. I'll never forget that day, when I opened the [CS61A](https://cs61a.org/) course website. It was like Columbus discovering a new continent, and I opened the door to a new world. + +I finished the course in 3 weeks and for the first time I felt that CS could be so fulfilling and interesting, and I was shocked that there existed such a great course in the world. + +To avoid any suspicion of pandering to foreign courses, I will tell you about my experience of studying CS61A from the perspective of a pure student. + +- ***Course website developed by course staffs***: The course website integrates all the course resources into one, with a well organised course schedule, links to all slides, recorded videos and homework, detailed and clear syllabus, list of exams and solutions from previous years. Aesthetics aside, this website is so convenient for students. + +- ***Textbook written by course instructor***: The course instructor has adapted the classic MIT textbook *Structure and Interpretation of Computer Programs* (SICP) into Python (the original textbook was based on Scheme). This is a great way to ensure that the classroom content is consistent with the textbook, while adding more details. The entire book is open source and can be read directly online. + +- ***Various, comprehensive and interesting homework***: There are 14 labs to reinforce the knowledge gained in class, 10 homework assignments to practice, and 4 projects each with thousands of lines of code, all with well-organized skeleton code and babysitting instructions. Unlike the old-school OJ and Word document assignments, each lab/homework/project has a detailed handout document, fully automated grading scripts, and CS61A staffs have even developed an [automated assignment submission and grading system](https://okpy.org/). Of course, one might say "How much can you learn from a project where most of code are written by your teaching assistants?" . For someone who is new to CS and even stumbling over installing Python, this well-developed skeleton code allows students to focus on reinforcing the core knowledge they've learned in class, but also gives them a sense of achievement that they already can make a little game despite of learning Python only for a month. It also gives them the opportunity to read and learn from other people's high quality code so that they can reuse it later. I think in the freshman year, this kind of skeleton code is absolutely beneficial. The only bad thing perhaps is for the instructors and teaching assistants, as developing such assignments can conceivably require a considerable time commitment. + +- ***Weekly discussion sessions***: The teaching assistants will explain the difficult knowledge in class and add some supplementary materials which may not be covered in class. Also, there will be exercises from exams of previous years. All the exercises are written in LaTeX with solutions. + +In CS61A, You don't need any prerequesites about CS at all. You just need to pay attention, spend time and work hard. The feeling that you do not know what to do, that you are not getting anything in return for all the time you put in, is gone. It suited me so well that I fell in love with self-learning. + +Imagine that if someone could chew up the hard knowledge and present it to you in a vivid and straightforward way, with so many fancy and varied projects to reinforce your theoretical knowledge, you'd think they were really trying their best to make you fully grasp the course, and it was even an insult to the course builders not to learn it well. + +If you think I'm exaggerating, start with [CS61A](https://cs61a.org/), because it's where my dreams began. + +## Why write this book? + +In the 2020 Fall semester, I worked as a teaching assistant for the class Introduction to Computer Systems at Peking University. At that time, I had been studying totally on my own for over a year. I enjoyed this style of learning immensely. To share this joy, I have made a [CS Self-learning Materials List](https://github.com/PKUFlyingPig/Self-learning-Computer-Science) for students in my seminar. It was purely on a whim at the time, as I wouldn't dare to encourage my students to skip classes and study on their own. + +But after another year of maintenance, the list has become quite comprehensive, covering most of the courses in Computer Science, Artificial Intelligence and Soft Engineering, and I have built separate repositories for each course, summarising the self-learning materials that I used. + +In my last college year, when I opened up my curriculum book, I realized that it was already a subset of my self-learning list. By then, it was only two and a half years after I had started my self-learning journey. Then, a bold idea came to my mind: perhaps I could create a self-learning book, write down the difficulty I encountered and the interest I found during these years of self-learning, hoping to make it easy for students who may also enjoy self-learning to start their wonderful self-learning journey. + +If you can build up the whole CS foundation in less than three years, have relatively solid mathematical skills and coding ability, experience dozens of projects with thousands of lines of code, master at least C/C++/Java/JS/Python/Go/Rust and other mainstream programming languages, have a good understanding of algorithms, circuits, architectures, networks, operating systems, compilers, artificial intelligence, machine learning, computer vision, natural language processing, reinforcement learning, cryptography, information theory, game theory, numerical analysis, statistics, distributed systems, parallel computing, database systems, computer graphics, web development, cloud computing, supercomputing etc. I think you will be confident enough to choose the area you are interested in, and you will be quite competitive in both industry and academia. + +I firmly believe that if you have read to this line, you do not lack the ability and committment to learn CS well, you just need a good teacher to teach you a good course. And I will try my best to pick such courses for you, based on my three years of experience. + +## Pros + +For me, the biggest advantage of self-learning is that I can adjust the pace of learning entirely according to my own progress. For difficult parts, I can watch the videos over and over again, Google it online and ask questions on StackOverflow until I have it all figured out. For those that I mastered relatively quickly, I could skip them at twice or even three times the speed. + +Another great thing about self-learning is that you can learn from different perspectives. I have taken core courses such as architectures, networking, operating systems, and compilers from different universities. Different instructors may have different views on the same knowledge, which will broaden your horizon. + +A third advantage of self-learning is that you do not need to go to the class, listening to the boring lectures. + +## Cons + +Of course, as a big fan of self-learning, I have to admit that it has its disadvantages. + +The first is the difficulty of communication. I'm actually a very keen questioner, and I like to follow up all the points I don't understand. But when you're facing a screen and you hear a teacher talking about something you don't understand, you can't go to the other end of the network and ask him or her for clarification. I try to mitigate this by thinking independently and making good use of Google, but it would be great to have a few friends to study together. You can refer to `README` for more information on participating a community group. + +The second thing is that these courses are basically in English. From the videos to the slides to the assignments, all in English. You may struggle at first, but I think it's a challenge that if you overcome, it will be extremely rewarding. Because at the moment, as reluctant as I am, I have to admit that in computer science, a lot of high quality documentation, forums and websites are all in English. + +The third, and I think the most difficult one, is self-discipline. Because have no DDL can sometimes be a really scary thing, especially when you get deeper, many foreign courses are quite difficult. You have to be self-driven enough to force yourself to settle down, read dozens of pages of Project Handout, understand thousands of lines of skeleton code and endure hours of debugging time. With no credits, no grades, no teachers, no classmates, just one belief - that you are getting better. + +## Who is this book for? + +As I said in the beginning, anyone who is interested in learning computer science on their own can refer to this book. If you already have some basic skills and are just interested in a particular area, you can selectively pick and choose what you are interested in to study. Of course, if you are a novice who knows nothing about computers like I did back then, and just begin your college journey, I hope this book will be your cheat sheet to get the knowledge and skills you need in the least amount of time. In a way, this book is more like a course search engine ordered according to my experience, helping you to learn high quality CS courses from the world's top universities without leaving home. + +Of course, as an undergraduate student who has not yet graduated, I feel that I am not in a position nor have the right to preach one way of learning. I just hope that this material will help those who are also self-motivated and persistent to gain a richer, more varied and satisfying college life. + +## Special thanks + +I would like to express my sincere gratitude to all the professors who have made their courses public for free. These courses are the culmination of decades of their teaching careers, and they have chosen to selflessly make such a high quality CS education available to all. Without them, my university life would not have been as fulfilling and enjoyable. Many of the professors would even reply with hundreds of words in length after I had sent them a thank you email, which really touched me beyond words. They also inspired me all the time that if decide to do something, do it with all heart and soul. + +## Want to join as a contributor? + +There is a limit to how much one person can do, and this book was written by me under a heavy research schedule, so there are inevitably imperfections. In addition, as I work in the area of systems, many of the courses focus on systems, and there is relatively little content related to advanced mathematics, computing theory, and advanced algorithms. If any of you would like to share your self-learning experience and resources in other areas, you can directly initiate a Pull Request in the project, or feel free to contact me by email ([zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn)). diff --git a/docs/index.md b/docs/index.md index ca2aec6f..0c513bb9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,7 +4,7 @@ # 前言 -**最近更新:增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/CMU10-414.md) ~** +**最近更新:英文版正在[建设中](https://github.com/PKUFlyingPig/cs-self-learning/issues/222),增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/CMU10-414.md), ~** @@ -12,12 +12,12 @@ 这同时也是一份献给北大信科学弟学妹们的礼物。如果这本书能对你们的信科生涯有哪怕一丝一毫的帮助,都是对我极大的鼓励和慰藉。 -本书目前规划了以下部分(如果你有其他好的建议,或者想加入贡献者的行列,欢迎邮件 [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn) 或者在 issue 里提问): +本书目前包括了以下部分(如果你有其他好的建议,或者想加入贡献者的行列,欢迎邮件 [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn) 或者在 issue 里提问): - 必学工具:IDE, 翻墙, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, 实用工具 ... -- **国外高质量 CS 课程汇总**:我将把我上过的所有高质量的国外 CS 课程分门别类进行汇总,并给出相关的自学建议,大部分课程都会有一个独立的仓库维护相关的资源以及我的作业实现。 -- 环境配置:Linux 基础,`bash`,环境变量,Anaconda ... +- 环境配置:PC端以及服务器端开发环境配置、各类运维相关教材及资料 ... - 经典书籍推荐:看过 CSAPP 这本书的同学一定感叹好书的重要,我将列举推荐自己看过的计算机领域的必看好书与资源链接。 +- **国外高质量 CS 课程汇总**:我将把我上过的所有高质量的国外 CS 课程分门别类进行汇总,并给出相关的自学建议,大部分课程都会有一个独立的仓库维护相关的资源以及我的作业实现。 ## 梦开始的地方 —— CS61A