69 Commits

Author SHA1 Message Date
MContour
e4c3efd2d3 [ENHANCE] Add additional resources for CS110L (#463) 2023-06-12 20:45:11 +08:00
Asensia
c2ab954368 [COURSE] Add UW–Madison CS571 for Web/Mobile Development (#464)
* add CS571 (Web)

* edit

* elaborate

* format & elaborate & add entry

* react.dev link in eng

* add UX
2023-06-08 18:41:56 +08:00
Na Chen
039a0f9b63 [COURSE] Add HIT OS Course (#461)
* [COURSE] Add HIT OS

* minor and update translation
2023-05-30 21:38:40 +08:00
ulic-youthlic
bb0dae6618 [ENHANCE] Add more tools in tools.md (#459) 2023-05-29 18:50:55 +08:00
ulic-youthlic
0e9e0f143c [ENHANCE] Add Chinese subtitles video group for The Missing Semester (#457) 2023-05-24 19:20:23 +08:00
flyingpig
e459a3abf5 [FIX] fix link to PKU OS course (#446) 2023-05-03 01:05:47 +08:00
Yanshi XU
0cb267247b [ENHANCE] Fix prerequisites of Data 100. (#442)
* Update Data100.md

Prerequisites
While we are working to make this class widely accessible we currently require the following (or equivalent) prerequisites:

Foundations of Data Science: Data 8 covers much of the material in Data 100 but at an introductory level. Data8 provides basic exposure to python programming and working with tabular data as well as visualization, statistics, and machine learning.

Computing: The Structure and Interpretation of Computer Programs CS 61A or Computational Structures in Data Science CS 88. These courses provide additional background in python programming (e.g., for loops, lambdas, debugging, and complexity) that will enable Data 100 to focus more on the concepts in Data Science and less on the details of programming in python.

Math: Linear Algebra (Math 54, EE 16A, or Stat 89A): We will need some basic concepts like linear operators and derivatives to enable statistical inference and derive new prediction algorithms. This may be satisfied concurrently to Data 100.

* Update Data100.en.md

Prerequisites
While we are working to make this class widely accessible we currently require the following (or equivalent) prerequisites:

Foundations of Data Science: Data 8 covers much of the material in Data 100 but at an introductory level. Data8 provides basic exposure to python programming and working with tabular data as well as visualization, statistics, and machine learning.

Computing: The Structure and Interpretation of Computer Programs CS 61A or Computational Structures in Data Science CS 88. These courses provide additional background in python programming (e.g., for loops, lambdas, debugging, and complexity) that will enable Data 100 to focus more on the concepts in Data Science and less on the details of programming in python.

Math: Linear Algebra (Math 54, EE 16A, or Stat 89A): We will need some basic concepts like linear operators and derivatives to enable statistical inference and derive new prediction algorithms. This may be satisfied concurrently to Data 100.

* Update Data100.en.md
2023-04-24 03:07:11 +08:00
ulic-youthlic
b9c2b4ca35 [ENHANCE] Add Chinese resources for MIT-Missing-Semester (#437) 2023-04-14 19:23:30 +08:00
Pavinberg
e83dda6987 [TOOLS] Recommendation for Emacs (#434)
* [TOOLS] Recommendation for Emacs

* [TOOLS] Add entry for Emacs

* [TRANSLATION] Emacs recommendation
2023-04-11 14:14:16 +08:00
Vollate
ad55ca142b [TOOLS] update vim tutor (#433) 2023-04-10 00:00:12 +08:00
Vollate
bcf34cbb19 [TOOLS] add draw.io (#432)
* add tool draw.io

* fix(punctuation marks error)
2023-04-07 20:37:08 +08:00
莫胜文
884e169f05 [VIM] make caps as ctrl & esc (#429)
language formatting
2023-04-04 16:16:01 +08:00
littlefattiger
e8154bf526 Update links for tow books, newer version (#428) 2023-04-03 09:44:23 +08:00
mancuoj
05020aa566 [UPDATE] Add link for CS61A textbook translation (#420)
暂时还没翻译完成,添加是希望能有更多小伙伴可以参与进来
2023-03-11 22:46:43 +08:00
mancuoj
a3d210c3a3 [UPDATE] Add personal resources for CS50 (#417) 2023-03-06 20:59:18 +08:00
zztaki
ae5126de3e [EDIT] Add MIT6.824 Chinese document (#415) 2023-03-02 23:00:18 +08:00
Echoo
46d3d537e1 [UPDATE]Add new course link for CS50 (#414)
* Updates the Course link to 2023

* Updates the course link to latest

* Updates the course link to latest
2023-03-02 22:59:01 +08:00
mancuoj
7a347e599a [FIX] fix format (#412) 2023-02-28 17:17:31 +08:00
Lee
d6cf088463 [FIX] fix format (#408) 2023-02-13 22:18:02 +08:00
Jax Young
ed15d52383 [UPDATE] Add 2022 fall course link for CMU 15-445 (#401) 2023-02-07 20:30:58 +08:00
Leo Xie
d3a237b172 [COURSE] Add CMU 15-799 (#396)
* Create 15799.md

* Update mkdocs.yml
2023-01-30 22:59:51 +08:00
Elijah Zhang
13c0b7e001 [FIX] Fix the cover image for Linear Algebra textbook (#394) 2023-01-29 22:45:35 +08:00
crud
71dcf414a4 [FIX] minor fix (#391) 2023-01-27 02:37:50 +08:00
Tony Zhang
2b59f44ebd [UPDATE] Add navigations for the newly added courses (#389) 2023-01-18 21:05:21 +08:00
smxm
a89fc1507f [TRANSLATION] translate CS229.md and add a missing translation in Vim.en.md (#384)
* Update Vim.en.md, added the missing translations

* [TRANSLATION] translate CS229.md

* add space

* Update CS229.en.md

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号

* 加句号
2023-01-18 11:31:23 +08:00
Tony Zhang
af82c1fe48 [COURSE] Harvard CS50P, MIT6.006, and MIT6.046 (#387)
* Typo fixed

* Add MIT 6.006

* Add MIT 6.006 (En)

* Add MIT 6.046

* Add MIT 6.046

* Add MIT 6.006 (en)

* Add MIT 6.006 (en)

* Add MIT 6.046 (en)

* Add Harvard CS50P

* Add Harvard CS50P

* Add Harvard CS50P(En)

* MIT Missing Semester timeline

* CS50P added

* Algorithms related courses added

* Space added
2023-01-18 11:29:28 +08:00
flyingpig
afa5d5a0a1 [Release] v1.0.1 (#382) 2023-01-08 00:23:17 +08:00
flyingpig
f3adbc38b3 [COURSE] Add system administration course (#381) 2023-01-07 23:53:47 +08:00
flyingpig
6ea9a7a5da [UPDATE] Update machine learning system course resources (#380)
* Add CMU dlsys course resources

* move AICS into mlsys section

* nits
2023-01-07 20:30:25 +08:00
Lingkang
2c4cc3a6b5 [TRANSLATE] Haskell MOOC (#376)
* create haskell-mooc.en.md

* translation done

* fix a typo in CN version

* translation done

* update

* fix typo
2023-01-04 22:50:52 +08:00
Lingkang
64934f642f [FIX] Fix Z-library Link & Add Its Tor Address (#378)
* update z-library link

* add tor link
2023-01-04 22:50:26 +08:00
FDUZS
35eab85983 [UPDATE] Add some LaTeX resources (#372)
* add some LaTeX resources

* resolve conversion
2023-01-03 11:18:22 +08:00
Lee
7f20ea01c1 [BOOKS] Add more information for Crafting Interpreters (#377) 2023-01-03 11:17:53 +08:00
QQ
d87ab836b9 [BOOKS] Add Crafting Interpreters for compiler principle (#373) 2023-01-02 23:03:00 +08:00
mancuoj
d678019357 [FIX] Fix giscus dark mode in new page (#371) 2022-12-28 23:46:29 +08:00
jihongyu
71049ff92c [FIX] Fix link in the N2T.md (#369) 2022-12-28 20:34:20 +08:00
Lee
0fbdaf37e2 [TOOLS] Add PlantUML (#368)
* add plantuml tool

* modify expression
2022-12-28 20:34:03 +08:00
showthesunli
6b0d175d80 [COURSE] Add Haskell MOOC (#367)
* Add Haskell MOOC (#356)

* follow Chinese copywriting guidelines
2022-12-27 19:00:04 +08:00
junyu33
855dd9f7ff [COURSE]: Add ASU web/system security courses CSE365&CSE466 (#366) 2022-12-26 17:37:16 +08:00
wuqi
9194c47455 [NEW] Information retrieval tutorial (#348)
* 添加信息检索

添加信息检索

* Update 信息检索.md

更新格式和部分文字
2022-12-23 11:22:49 +08:00
mancuoj
86ad554095 [FEATURE] Dynamic theme change for giscus (#362)
* feat(giscus): dynamic theme change

* reformat and update giscus theme color to protanopia
2022-12-21 20:26:13 +08:00
NoDocCat
e71d7badd8 [FIX] Fix scoop command error (#361) 2022-12-21 10:29:36 +08:00
烏丸千歲
0e229b7586 [COURSE] Add CMU 15-462(Computer Graphics) and fix link to zlib (#353)
* Add a course cmu 15-462

* [FIX]fix link to zlib

* [FIX]fix typo
2022-12-15 11:26:37 +08:00
HJ-Ranch
32b7ee3161 [UPDATE] update icons and tools (#352)
* [UPDATE] update icons

* [TOOLS] Add new tool websites

* [UPDATE] update tool websites
2022-12-14 23:13:34 +08:00
乐之叶
08aae35dd8 [UPDATE] Add CS 188 Fall 2022 (#349)
* [Course] Add CS 188 Fall 2022

* [Course] Add CS 188 Fall 2022
2022-12-06 15:29:58 +08:00
Koril33
0365e0c736 [TOOLS]: Add new tool websites (#346)
* [TOOLS]: Add new tool websites
2022-12-05 21:47:12 +08:00
Zeeland
d6c78902d1 [FIX] polish the example of IDE (#345) 2022-12-05 15:10:30 +08:00
Shaofeng
a8a2f26a69 [FIX] Add links in CS110L (#344) 2022-12-05 02:19:22 +08:00
Shaofeng
f8808df2ea [UPDATE] Add resources in CS110L (#343) 2022-12-05 01:41:29 +08:00
MoeMagicMango
dfb22efaff [BOOKS] add a book about computer network principle (#340)
* Update 好书推荐.md
2022-11-30 13:19:37 +08:00
ArtieLiu
365ca2265f [TOOLS] fix link to z-lib and add two new tools (#341) 2022-11-30 12:54:05 +08:00
XeLavend
52c7ce7ce1 [TRANSLATE] Translate Harvard's AI Course (#326)
* Create CS50.en.md

* Update the translation of CS50
2022-11-30 10:50:26 +08:00
ArtieLiu
36bb20bd5e [UPDATE] add key mapping in vim.md (#333) 2022-11-29 21:16:26 +08:00
shelton
260b2c5ad0 [FIX]: fix typo (#332) 2022-11-29 10:35:58 +08:00
xhldtc
a3c35fa662 [TRANSLATE] Translate Vim.md (#317)
* add Vim.en.md

* enhance Vim.en.md according to review comments
2022-11-21 19:24:48 +08:00
XeLavend
8c7de67e04 [TRANSLATE] Translate Stanford's Compiler Course (#315)
* Create CS143.en.md

* Improve the translation
2022-11-17 16:45:03 +08:00
莫思潋
3d0bd2eb0d [FIX] Replace an invalid link in CYJ.md (#313)
replace invalid link
2022-11-14 23:08:13 +08:00
seudonam
78c4b9e69d [FIX] fix typo in CS61A.md (#310) 2022-11-12 12:31:29 +08:00
zzwalala
54f07dfb7e [UPDATE] Update CS285.md (#309) 2022-11-11 15:34:44 +08:00
NeroHin
56b3e9c066 [FEAT]Update the textbook resource (#305)
* [FEAT]Update the textbook resource

* [FIX]:remove the redundant "[" and "]"
2022-11-05 14:08:13 +08:00
祝健聪
f05042c1fd [FIX] fix format for AUT1400.md (#304) 2022-11-04 23:56:40 +08:00
NoDocCat
62bf51517d [TOOLS] Add scoop article in tools (#302)
* [TOOLS] Add scoop article in tools

* [UPDATE] Add scoop link in environment configuration
2022-11-02 14:02:28 +08:00
smxm
319c1544e2 [TRANSLATION] translate 15445.md and fix a typo (#301)
* [TRANSLATION] translate 15445.md

* Update 15445.en.md
2022-11-01 02:06:45 +08:00
Darius Huang
01304508cc [ENHANCE] Added MIT6.S081 xv6 support resource (#291)
* added xv6 support resource

* fixed typo
2022-10-29 00:27:51 +08:00
Lee
b9cc133598 [COURSE] Add course CS346 && AUT1400 (#295)
* add course cs346

* add course AUT1400
2022-10-28 22:51:17 +08:00
YunShu
7ab5f4ee2c [FIX] fix a typo in tool (#294) 2022-10-28 17:15:51 +08:00
smxm
39f55c74ae [TRANSLATION] translate mitweb.md (#290)
* [TRANSLATION] translate mitweb.md

* Update mitweb.en.md
2022-10-26 00:55:55 +08:00
Erkai Yu
865cbc97a2 [TRANSLATION] translate CS230.md (#289) 2022-10-25 15:51:59 +08:00
Vacodwave
dac40922c3 [TOOLs] Add some practical tools (#288) 2022-10-25 10:53:05 +08:00
76 changed files with 1285 additions and 100 deletions

View File

@@ -10,7 +10,7 @@
学会提问:也许你会惊讶,提问也算计算机必备技能吗,还放在第一条?我觉得在开源社区中,学会提问是一项非常重要的能力,它包含两方面的事情。其一是会变相地培养你自主解决问题的能力,因为从形成问题、描述问题并发布、他人回答、最后再到理解回答这个周期是非常长的,如果遇到什么鸡毛蒜皮的事情都希望别人最好远程桌面手把手帮你完成,那计算机的世界基本与你无缘了。其二,如果真的经过尝试还无法解决,可以借助开源社区的帮助,但这时候如何通过简洁的文字让别人瞬间理解你的处境以及目的,就显得尤为重要。推荐阅读[提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)这篇文章,这不仅能提高你解决问题的概率和效率,也能让开源社区里无偿提供解答的人们拥有一个好心情。
[MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。
[MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。不过需要注意的一点是,在课程中会不时提到一些与开发流程相关的术语。因此推荐至少在学完计算机导论级别的课程之后进行学习。
[翻墙](必学工具/翻墙.md)由于一些众所周知的原因谷歌、GitHub 等网站在大陆无法访问。然而很多时候,谷歌和 StackOverflow 可以解决你在开发过程中遇到的 99% 的问题。因此,学会翻墙几乎是一个内地 CSer 的必备技能。(考虑到法律问题,这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用)。
@@ -20,6 +20,8 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
[Vim](必学工具/Vim.md):一款命令行编辑工具。这是一个学习曲线有些陡峭的编辑器,不过学会它我觉得是非常有必要的,因为它将极大地提高你的开发效率。现在绝大多数 IDE 也都支持 Vim 插件让你在享受现代开发环境的同时保留极客的炫酷yue
[Emacs](必学工具/Emacs.md):与 Vim 齐名的经典编辑器,同样具有极高的开发效率,同时具有更为强大的扩展性,它既可以配置为一个轻量编辑器,也可以扩展成一个个人定制的 IDE甚至可以有更多奇技淫巧。
[Git](必学工具/Git.md)一款代码版本控制工具。Git的学习曲线可能更为陡峭但出自 Linux 之父 Linus 之手的 Git 绝对是每个学 CS 的童鞋必须掌握的神器之一。
[GitHub](必学工具/GitHub.md):基于 Git 的代码托管平台。全世界最大的代码开源社区,大佬集聚地。
@@ -50,7 +52,7 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
### PC 端环境配置
如果你是 Mac 用户,那么你很幸运,这份[指南](https://sourabhbajaj.com/mac-setup/) 将会手把手地带你搭建起整套开发环境。如果你是 Windows 用户,可以参考这个相对简略的[教程](https://github.com/orlp/dev-on-windows/wiki)。
如果你是 Mac 用户,那么你很幸运,这份[指南](https://sourabhbajaj.com/mac-setup/) 将会手把手地带你搭建起整套开发环境。如果你是 Windows 用户,在开源社区的努力下,你同样可以获得与其他平台类似的体验:[Scoop](/必学工具/Scoop)。
另外大家可以参考一份灵感来自 [6.NULL MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 的 [环境配置指南][guide],重点在于终端的美化配置。此外还包括常用软件源(如 GitHub, Anaconda, PyPI 等)的加速与替换以及一些 IDE 的配置与激活教程。
@@ -58,7 +60,9 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
### 服务器端环境配置
推荐一个非常不错的 GitHub 项目 [DevOps-Guide](https://github.com/Tikam02/DevOps-Guide),其中涵盖了非常多的运维方面的基础知识和教程,例如 Docker, Kubernetes, Linux, CI-CD, GitHub Actions 等等
服务器端的运维需要掌握 Linux或者其他类 Unix 系统)的基本使用以及进程、设备、网络等系统相关的基本概念,小白可以参考中国科学技术大学 Linux 用户协会编写的[《Linux 101》在线讲义](https://101.lug.ustc.edu.cn/)。如果想深入学习系统运维相关的知识,可以参考 [Aspects of System Administration](https://stevens.netmeister.org/615/) 这门课程
另外,如果需要学习某个具体的概念或工具,推荐一个非常不错的 GitHub 项目 [DevOps-Guide](https://github.com/Tikam02/DevOps-Guide),其中涵盖了非常多的运维方面的基础知识和教程,例如 Docker, Kubernetes, Linux, CI-CD, GitHub Actions 等等。
## 课程地图
@@ -143,6 +147,7 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
#### Python
- [CS50P: CS50's Introduction to Programming with Python](编程入门/CS50P.md)
- [Harvard CS50: This is CS50x](编程入门/CS50.md)
- [UCB CS61A: Structure and Interpretation of Computer Programs](编程入门/CS61A.md)
@@ -177,7 +182,11 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
### 数据结构与算法
算法是计算机科学的核心,也是几乎一切专业课程的基础。如何将实际问题通过数学抽象转化为算法问题,并选用合适的数据结构在时间和内存大小的限制下将其解决是算法课的永恒主题。如果你受够了老师的照本宣科,那么我强烈推荐伯克利的 [UCB CS61B: Data Structures and Algorithms](数据结构与算法/CS61B.md) 和普林斯顿的 [Coursera: Algorithms I & II](数据结构与算法/Algo.md),这两门课的都讲得深入浅出并且会有丰富且有趣的编程实验将理论与知识结合起来。此外,对一些更高级的算法以及 NP 问题感兴趣的同学可以学习伯克利的算法设计与分析课程 [UCB CS170: Efficient Algorithms and Intractable Problems](数据结构与算法/CS170.md)。
算法是计算机科学的核心,也是几乎一切专业课程的基础。如何将实际问题通过数学抽象转化为算法问题,并选用合适的数据结构在时间和内存大小的限制下将其解决是算法课的永恒主题。如果你受够了老师的照本宣科,那么我强烈推荐伯克利的 [UCB CS61B: Data Structures and Algorithms](数据结构与算法/CS61B.md) 和普林斯顿的 [Coursera: Algorithms I & II](数据结构与算法/Algo.md),这两门课的都讲得深入浅出并且会有丰富且有趣的编程实验将理论与知识结合起来。
以上两门课程都是基于 Java 语言,如果你想学习 C/C++ 描述的版本,可以参考斯坦福的数据结构与基础算法课程 [Stanford CS106B/X: Programming Abstractions](编程入门/CS106B_CS106X.md)。偏好 Python 的同学可以学习 MIT 的算法入门课 [MIT 6.006: Introduction to Algorithms](数据结构与算法/6.006.md)
对一些更高级的算法以及 NP 问题感兴趣的同学可以学习伯克利的算法设计与分析课程 [UCB CS170: Efficient Algorithms and Intractable Problems](数据结构与算法/CS170.md) 或者 MIT 的高阶算法 [MIT 6.046: Design and Analysis of Algorithms](数据结构与算法/6.046.md)。
### 软件工程
@@ -215,10 +224,12 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
[MIT 6.S081: Operating System Engineering](操作系统/MIT6.S081.md)MIT 著名 PDOS 实验室出品11 个 Project 让你在一个实现非常优雅的类Unix操作系统xv6上增加各类功能模块。这门课也让我深刻认识到做系统不是靠 PPT 念出来的,是得几万行代码一点点累起来的。
[UCB CS162: Operating System](操作系统/CS162.md),伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年春季学期操作系统实验班的助教引入并改善了这个 Project课程资源也会全部开源具体参见[课程网站](https://https://pku-os.github.io/sp22/)。
[UCB CS162: Operating System](操作系统/CS162.md),伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年和2023年春季学期操作系统实验班的助教,引入并改善了这个 Project课程资源也会全部开源具体参见[课程网站](https://pku-os.github.io)。
[NJU: Operating System Design and Implementation](操作系统/NJUOS.md),南京大学的蒋炎岩老师开设的操作系统课程。蒋老师以其独到的系统视角结合丰富的代码示例将众多操作系统的概念讲得深入浅出,此外这门课的全部课程内容都是中文的,非常方便大家学习。
[HIT OS: Operating System](操作系统/HITOS.md),哈尔滨工业大学的李治军老师开设的中文操作系统课程。李老师的课程基于 Linux 0.11 源码,十分注重代码实践,并站在学生视角将操作系统的来龙去脉娓娓道来。
### 并行与分布式系统
想必这两年各类 CS 讲座里最常听到的话就是“摩尔定律正在走向终结”,此话不假,当单核能力达到上限时,多核乃至众核架构如日中天。硬件的变化带来的是上层编程逻辑的适应与改变,要想充分利用硬件性能,编写并行程序几乎成了程序员的必备技能。与此同时,深度学习的兴起对计算机算力与存储的要求都达到了前所未有的高度,大规模集群的部署和优化也成为热门技术话题。
@@ -239,6 +250,10 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
[UCB CS161: Computer Security](系统安全/CS161.md) 是伯克利的系统安全课程,会涵盖栈攻击、密码学、网站安全、网络安全等等内容。
[ASU CSE365: Introduction to Cybersecurity](系统安全/CSE365.md) 亚利桑那州立大学的 Web 安全课程,主要涉及注入、汇编与密码学的内容。
[ASU CSE466: Computer Systems Security](系统安全/CSE466.md) 亚利桑那州立大学的系统安全课程,涉及内容全面。门槛较高,需要对 Linux, C 与 Python 充分熟悉。
#### 实践课程
掌握这些理论知识之后,还需要在实践中培养和锻炼这些“黑客素养”。[CTF 夺旗赛](https://ctf-wiki.org/)是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了[第 0 届和第 1 届](https://geekgame.pku.edu.cn/),鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源:

View File

@@ -0,0 +1,25 @@
# CS571 Building UI (React & React Native)
## Course Overview
- University: University of Wisconsin, Madison
- Prerequisites: CS400 (Advanced Java. But in my opinion you only need to master one programming language)
- Programming Languages: JavaScript/HTML/CSS
- Course Difficulty: 🌟🌟🌟
- Estimated Time Commitment: 2 hrs/week (lecture) + 410 hrs/week (HW), 12 weeks
This course provides a comprehensive but concise introduction to the best practices of React front-end development and React Native mobile development. It focuses on the latest versions of React and React Native and is updated every semester. It is a valuable resource for tackling the complexities of front-end development.
The course also offers a good training ground. Be prepared for a significant workload throughout the semester. The techniques and knowledge points involved in the homework will be explained in class, but code won't be written hand by hand (I personally think that hand-holding code writing is very inefficient, and most courses on Udemy are of this type). As this isn't a hand-holding course, if you are unsure about how to write React code when doing homework, I recommend spending extra time carefully reading the relevant chapters on [react.dev](https://react.dev/reference/react) before diving in. The starter code also provides you with a great starting point, saving you from coping with Node.js environment settings.
Although this course doesn't require prior knowledge of Javascript/HTML/CSS, the classroom introduction to syntax is relatively limited. It's recommended to frequently consult resources and ask questions when encountering syntax issues during learning and coding.
This course also includes an introduction to and practices for Dialog Flow, a ChatBot development tool by Google. You can also find content related to UX development (on the practical side) in this course.
All course materials and assignments are open-source, but you will need to request an X-CS571-ID header from the instructor, Cole Nelson (ctnelson2@wisc.edu). The header will be necessary for API request. When sending an email, it is advisable to include a brief self-introduction. It is unclear whether the instructor is willing to give everyone an ID. If you got turned down, please [raise an issue for this GitHub repo](https://github.com/PKUFlyingPig/cs-self-learning/issues/new/choose).
## Course Resources
- Course Website: <https://cs571.org>
- Course Videos: Refer to the links labeled "R" on the course website.
- Course Assignments: Refer to the course website for more information.

25
docs/Web开发/CS571.md Normal file
View File

@@ -0,0 +1,25 @@
# CS571 Building UI (React & React Native)
## 课程简介
- 所属大学威斯康星大学麦迪逊分校University of Wisconsin, Madison
- 先修要求CS400高级 Java但个人觉得先修不必要掌握至少一门编程语言即可
- 编程语言JavaScript/HTML/CSS
- 课程难度:🌟🌟🌟
- 预计学时:每周 2 小时(讲座)+ 每周 410 小时(作业),持续 12 周
该课程提供了 React 前端开发和 React Native 移动端开发的最佳实践介绍,完整的同时又提纲挈领。采用 React 和 React Native 的最新版本,课程网站每学期都会更新。对于各门工具迭出的前端开发难能可贵。
同时,该课程也提供了很好的训练机会。在整个学期中,需要为较大作业量做好准备。作业所涉及的技术和知识点会在课上讲解,但不会手把手写代码(个人认为手把手写代码效率非常低,而 Udemy 上多为此类型)。由于不是保姆级课程,如果写作业时对于 React 的某些功能不确定怎么写,建议在动手之前多花些时间仔细阅读 [react.dev](https://react.dev/reference/react) 上的相关章节。作业的 starter code 提供的训练起点也恰好合适,不用为配 Node.js 环境伤脑筋。
尽管这门课程不要求预先会 Javascript/HTML/CSS课堂上对 syntax 的介绍比较有限,建议学习和写码遇到语法问题时勤查勤问。
此外,本课程还对 Google 旗下的 ChatBot 开发工具 Dialog Flow 有较为深入的介绍和练习。还对 UX Design 的实用原则和技术有所讲解。
所有课程资料和作业都是开源的,但你需要向授课教师 Cole Nelson (ctnelson2@wisc.edu) 发送电子邮件以获取 X-CS571-ID。该 ID 是向 API 发送 request 必需。在发送邮件时建议附上自我介绍。目前还不清楚老师是否愿意给所有人提供ID如果老师表示无法分享请[在 GitHub repo 里提一个 issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/new/choose)。
## 课程资源
- 课程网站:<https://cs571.org>
- 课程视频请参考课程网站上标有“R”的链接
- 课程作业:请参考课程网站上的相关信息

View File

@@ -0,0 +1,19 @@
# MIT Web Development Crash Course
## Descriptions
- Offered by: MIT
- Prerequisites: better if you are already proficient in a programming language
- Programming Languages: JavaScript/HTML/CSS/NoSQL
- Difficulty: 🌟🌟🌟
- Class Hour: Varying according to the learner
[Independent Activities Period](https://elo.mit.edu/iap/) (IAP) is a four-week period in January during which faculty and students are freed from the rigors of regularly scheduled classes for flexible teaching and learning and for independent study and research, and that's how this web development course was born.
Within a month, you will master the core content of designing, building, beautifying, and publishing a website from scratch, basically covering full-stack web development. If you don't need to learn web development systematically, but just want to add it to your toolkit out of interest, then this class will be perfect for you.
## Resources
- Course Website: <https://weblab.mit.edu/schedule/>
- Recordings: refer to the course website.
- Assignments: refer to the course website.

BIN
docs/images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 963 B

BIN
docs/images/mobile_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -4,9 +4,7 @@
# 前言
**最近更新:英文版正在[建设中](https://github.com/PKUFlyingPig/cs-self-learning/issues/222),增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/CMU10-414.md), 增加 [学习工作流](必学工具/workflow.md)**
<!-- **最近更新:增加[Caltech CS 122: Database System Implementation](./数据库系统/CS122.md) ,重新整理[好书推荐](./%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90.md)模块 ~** -->
<!-- **最近更新:增加南京大学[操作系统课程](操作系统/NJUOS.md),增加毕业论文[写作教程](必学工具/thesis.md) ** -->
**最近更新:[Release v1.0.1](https://github.com/PKUFlyingPig/cs-self-learning/releases/tag/v1.0.1) 已发布 🎉**
这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。

View File

@@ -14,7 +14,7 @@
## 课程资源
- 课程网站:<https://inst.eecs.berkeley.edu/~cs188/fa18/index.html>
- 课程视频:<https://inst.eecs.berkeley.edu/~cs188/fa18/index.html>,每节课的链接详见课程网站
- 课程网站:[Fall 2022](https://inst.eecs.berkeley.edu/~cs188/fa22/)[Fall 2018](https://inst.eecs.berkeley.edu/~cs188/fa18/index.html)
- 课程视频:[Fall 2022](https://inst.eecs.berkeley.edu/~cs188/fa22/)[Fall 2018](https://inst.eecs.berkeley.edu/~cs188/fa18/index.html),每节课的链接详见课程网站
- 课程教材Artificial intelligence: A Modern Approach
- 课程作业:<https://inst.eecs.berkeley.edu/~cs188/fa18/index.html>14个在线测评书面作业和 6 个Project
- 课程作业:在线测评书面作业和 Projects详见课程网站

View File

@@ -0,0 +1,22 @@
# Harvard's CS50: Introduction to AI with Python
## Descriptions
- Offered by: Harvard University
- Prerequisites: Basic knowledge of probability theory and Python
- Programming Languages: Python
- Difficulty: 🌟🌟🌟
- Class Hour: 30
A very basic introductory AI course, what makes it stand out is the 12 well-designed programming assignments, all of which will use the learned knowledge to implement a simple game AI, such as using reinforcement learning to play Nim game, using max-min search with alpha-beta pruning to sweep mines, and so on. It's perfect for newbies to get started or bigwigs to relax.
## Course Resources
- Course Website: <https://cs50.harvard.edu/ai/2020/>
- Recordings: <https://cs50.harvard.edu/ai/2020/>
- Textbooks: No textbook is needed in this course.
- Assignments: <https://cs50.harvard.edu/ai/2020/> with 12 programming labs of high quality mentioned above.
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/cs50_ai - GitHub](https://github.com/PKUFlyingPig/cs50_ai).

View File

@@ -3,12 +3,12 @@
## 课程简介
- 所属大学Harvard
- 先修要求:基本概率论 + Python基础
- 先修要求:基本概率论 + Python 基础
- 编程语言Python
- 课程难度:🌟🌟🌟
- 预计学时30 小时
一门非常基础的AI入门课让人眼前一亮的是12个设计精巧的编程作业都会用学到的AI知识去实现一个简易的游戏AI比如用强化学习训练一个Nim游戏的AI用alpha-beta剪枝去扫雷等等非常适合新手入门或者大佬休闲。
一门非常基础的 AI 入门课,让人眼前一亮的是 12 个设计精巧的编程作业,都会用学到的 AI 知识去实现一个简易的游戏 AI比如用强化学习训练一个 Nim 游戏的 AI alpha-beta 剪枝去扫雷等等,非常适合新手入门或者大佬休闲。
## 课程资源

View File

@@ -19,8 +19,8 @@ In a word, this is the best computer architecture course I have ever taken.
- Course Website: <https://cs61c.org/su20/>
- Recordings: [Youtube](https://www.youtube.com/playlist?list=PLDoI-XvXO0aqgoMQvogzmf7CKiSMSUS3M)
- Textbook: None
- Assignments: 11 Labs, 4 Projects, the course website has specific requirements
- Assignments: 11 Labs, 4 Projects, the course website has specific requirements.
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS61C-summer20 - GitHub](https://github.com/PKUFlyingPig/CS61C-summer20)
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS61C-summer20 - GitHub](https://github.com/PKUFlyingPig/CS61C-summer20).

View File

@@ -23,6 +23,6 @@ After completing this course, your understanding of computer systems will defini
- Course Website: <http://csapp.cs.cmu.edu/>
- Recordings: <https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=%22b96d90ae-9871-4fae-91e2-b1627b43e25e%22>
- Textbook: Computer Systems: A Programmer's Perspective, 3/E
- Assignments: 11 Projects, [skeleton code all open source](http://csapp.cs.cmu.edu/3e/labs.html)
- Assignments: 11 Projects, [skeleton code all open source](http://csapp.cs.cmu.edu/3e/labs.html).
If you have trouble with Chapter 7 Linking, I recommend reading the book *Programmer's Self-Cultivation*, subtitled link. load and library. This book can complete our understanding of program linking, and I believe after reading this book you will have a deeper comprehension of program linking, ELF files, and dynamic libraries. It is highly recommended to be read as a supplementary material after reading CSAPP and having a certain understanding of computer systems.

View File

@@ -18,4 +18,4 @@ There are 9 labs in the course. You will use the Basys 3 FPGA board and [Vivado]
- Recordings: <https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2>
- Textbook1: Patt and Patel, Introduction to Computing Systems
- Textbook2: Harris and Harris, Digital Design and Computer Architecture (MIPS Edition)
- Assignments: refer to the course website
- Assignments: refer to the course website.

View File

@@ -18,7 +18,7 @@
- 课程网站:[Nand2Tetris I](https://www.coursera.org/learn/build-a-computer/home/week/1), [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2/home/welcome)
- 课程视频:详见课程网站
- 课程教材:[计算机系统要素:从零开始构建现代计算机](book)
- 课程教材:[计算机系统要素:从零开始构建现代计算机][book]
- 课程作业10 个 Project 带你造台计算机,具体要求详见课程网站
[book]: https://github.com/PKUFlyingPig/NandToTetris/blob/master/%5B%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E8%A6%81%E7%B4%A0%EF%BC%9A%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E6%9E%84%E5%BB%BA%E7%8E%B0%E4%BB%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%5D.(%E5%B0%BC%E8%90%A8).%E5%91%A8%E7%BB%B4.%E6%89%AB%E6%8F%8F%E7%89%88.pdf

View File

@@ -19,6 +19,9 @@
- [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语言相关的编程书籍推荐列表
- [Computer Vision Textbook Recommendations](https://www.folio3.ai/blog/best-computer-vision-books/): 计算机视觉方向推荐教材列表
- [Deep Learning Textbook Recommendations](https://www.mostrecommendedbooks.com/lists/best-deep-learning-books): 深度学习方向推荐教材列表
## 系统入门
@@ -35,7 +38,8 @@
## 计算机网络
- [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/)]
- [Computer Networking: A Top-Down Approach](https://www.ucg.ac.me/skladiste/blog_44233/objava_64433/fajlovi/Computer%20Networking%20_%20A%20Top%20Down%20Approach,%207th,%20converted.pdf) [[豆瓣](https://book.douban.com/subject/30280001/)]
- How Networks Work [[豆瓣](https://book.douban.com/subject/26941639/)]
## 分布式系统
@@ -47,12 +51,13 @@
- [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/)]
- Database System Concepts : 7th Edition [[豆瓣](https://book.douban.com/subject/30345517/)]
## 编译原理
- Engineering a Compiler [[豆瓣](https://book.douban.com/subject/5288601/)]
- Compilers: Principles, Techniques, and Tools [[豆瓣](https://book.douban.com/subject/1866231/)]
- [Crafting Interpreters](https://craftinginterpreters.com/contents.html)[[豆瓣]](https://book.douban.com/subject/35548379/)[[开源中文翻译]](https://github.com/GuoYaxiang/craftinginterpreters_zh)
## 计算机编程语言
@@ -85,12 +90,12 @@
## 计算机图形学
- [Monte Carlo theory, methods and examples](https://artowen.su.domains/mc/)
- [Monte Carlo theory, methods and examples](https://artowen.su.domains/mc/)[[豆瓣](https://book.douban.com/subject/6089923/)]
- 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/)]
- [Fluid Simulation for Computer Graphics](http://wiki.cgt3d.cn/mediawiki/images/4/43/Fluid_Simulation_for_Computer_Graphics_Second_Edition.pdf) [[豆瓣](https://book.douban.com/subject/2584523/)]
- [Physically Based Rendering: From Theory To Implementation](https://research.quanfita.cn/files/Physically_Based_Rendering_Third_Edition.pdf) [[豆瓣](https://book.douban.com/subject/4306242/)]
- [Real-Time Rendering](https://research.quanfita.cn/files/Real-Time_Rendering_4th_Edition.pdf) [[豆瓣](https://book.douban.com/subject/30296179/)]
## 游戏引擎
@@ -109,7 +114,7 @@
- 设计模式: 可复用面向对象软件的基础 [[豆瓣](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/)]
- Head First Design Patterns 2nd ed. [[豆瓣](https://book.douban.com/subject/35097022/)]
## 深度学习
@@ -121,11 +126,10 @@
## 计算机视觉
- Multiple View Geometry in Computer Vision [[豆瓣](https://book.douban.com/subject/1841346/)]
- [Multiple View Geometry in Computer Vision](https://github.com/DeepRobot2020/books/blob/master/Multiple%20View%20Geometry%20in%20Computer%20Vision%20(Second%20Edition).pdf) [[豆瓣](https://book.douban.com/subject/1841346/)]
## 机器人
- Probabilistic Robotics [[豆瓣](https://book.douban.com/subject/2861227/)]
- [Probabilistic Robotics](https://docs.ufpr.br/~danielsantos/ProbabilisticRobotics.pdf) [[豆瓣](https://book.douban.com/subject/2861227/)]
## 面试

View File

@@ -17,8 +17,8 @@ The goal of this course is to provide a deep understanding of the fundamental pr
- Course Website: [CMU15418](http://15418.courses.cs.cmu.edu/spring2016/), [CS149](https://gfxcourses.stanford.edu/cs149/fall21)
- Recordings: <http://15418.courses.cs.cmu.edu/spring2016/lectures>
- Textbook: None
- Assignments: <https://gfxcourses.stanford.edu/cs149/fall21>, 5 assignments
- Assignments: <https://gfxcourses.stanford.edu/cs149/fall21>, 5 assignments.
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS149-parallel-computing - GitHub](https://github.com/PKUFlyingPig/CS149-parallel-computing)
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS149-parallel-computing - GitHub](https://github.com/PKUFlyingPig/CS149-parallel-computing).

View File

@@ -17,12 +17,12 @@ This course is so famous that you can easily have access to the project solution
## Resources
- Course Website: <https://pdos.csail.mit.edu/6.824/schedule.html>
- Assignments: refer to the course website
- Assignments: refer to the course website.
- Textbook: None
- Assignments: 4 torturing projects, the course website has specific requirements
- Assignments: 4 torturing projects, the course website has specific requirements.
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/MIT6.824 - GitHub](https://github.com/PKUFlyingPig/MIT6.824)
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/MIT6.824 - GitHub](https://github.com/PKUFlyingPig/MIT6.824).
@[OneSizeFitsQuorum](https://github.com/OneSizeFitsQuorum) has written a [Lab Documentation](https://github.com/OneSizeFitsQuorum/MIT6.824-2021) that quite clearly describes many of the details to be considered when implementing lab 1-4 and challenge 1-2, you can read when you encounter bottlenecks ~ ~

View File

@@ -18,6 +18,7 @@
- 课程网站:<https://pdos.csail.mit.edu/6.824/schedule.html>
- 课程视频:参见课程网站链接
- 课程视频中文翻译:<https://mit-public-courses-cn-translatio.gitbook.io/mit6-824/>
- 课程教材:无,以阅读论文为主
- 课程作业4 个非常虐的 Project具体要求参见课程网站

View File

@@ -2,8 +2,8 @@
## Why CMake
Similar to GNU make, CMake is a cross-platform tool designed to build, test and package software. It uses CMakeLists.txt to define build configuration, and have more functionalities compared to GNU make. It is highly recommanded to learn GNU Make and get familiar with Makefile first before learning CMake.
Similar to GNU make, CMake is a cross-platform tool designed to build, test and package software. It uses CMakeLists.txt to define build configuration, and have more functionalities compared to GNU make. It is highly recommended to learn GNU Make and get familiar with Makefile first before learning CMake.
## How to learn CMake
Compare to `Makefile`, `CMakeLists.txt` is more obscure and difficult to understand and use. Nowadays many IDEs (e.g., Visual Studio, CLion) offer functionalities to generate `CMakeLists.txt` automaticly, but it's still necessary to manage basic usage of `CMakeLists.txt`. Besides [Official CMake Tutorial](https://cmake.org/cmake/help/latest/guide/tutorial/index.html), [this one-hour video tutorial (in Chinese)](https://www.bilibili.com/video/BV14h41187FZ) presented by IPADS group at SJTU is also a good learning resource.
Compare to `Makefile`, `CMakeLists.txt` is more obscure and difficult to understand and use. Nowadays many IDEs (e.g., Visual Studio, CLion) offer functionalities to generate `CMakeLists.txt` automatically, but it's still necessary to manage basic usage of `CMakeLists.txt`. Besides [Official CMake Tutorial](https://cmake.org/cmake/help/latest/guide/tutorial/index.html), [this one-hour video tutorial (in Chinese)](https://www.bilibili.com/video/BV14h41187FZ) presented by IPADS group at SJTU is also a good learning resource.

View File

@@ -0,0 +1,25 @@
# Emacs
## Why Emacs
Emacs is a powerful editor as famous as Vim. Emacs has almost all the benefits of Vim, such as:
- Everything can be done with keyboard only, as there are a large number of shortcuts to improve the efficiency of code editing.
- Supporting both graphical and non-graphical interface in various scenarios.
Besides, the biggest difference between Emacs and most other editors lies in its powerful extensibility. Emacs kernel imposes no restrictions on users behaviors. With Emacs Lisp programming language, users is able to write any plugins to extend the functionality. After decades of development, Emacs' plugin ecosystem is arguably one of the richest and most powerful in the editor world. There is a joke saying that "Emacs is an OS that lacks a decent text editor". Futhermore, you can also write your own Emacs extensions with only a small amount of effort.
Emacs is friendly to Vim users as there is an extension called [evil](https://github.com/emacs-evil/evil) that migrate Vim operations into Emacs. Users can switch from Vim to Emacs with minimum effort. Statistics show that a considerable number of users would switch from Vim to Emacs, but there were almost no users who would switch from Emacs to Vim. In fact, the only weaknesss of Emacs is that it is not as efficient as Vim in pure text editing because of Vim's multi-modal editing. However, with Emacs' powerful extensibility, it can make up for its weaknesses by combining the strengths of both.
## How to learn Emacs
Same as Vim, Emacs also has a steep learning curve. But once you understand the basic underlying logic, you will never live without it.
There are plenty of tutorials for Emacs. Since Emacs is highly customizable, every user has their own learning path. Here are some good starting points:
- [This tutorial](https://www.masteringemacs.org/article/beginners-guide-to-emacs) is a brief guide to the basic logic of Emacs.
- [Awesome Emacs](https://github.com/emacs-tw/awesome-emacs) lists a large number of useful Emacs packages, utilities, and libraries.
## Keyboard remapping
One of the most shortcomings of Emacs is the excessive use of the Ctrl key, which is a burden on your left little finger. It is highly recommended to change the keyboard mapping of the Ctrl key. Please refer to [Vim](Vim.en.md) for details to remapping.

View File

@@ -0,0 +1,23 @@
# Emacs
## 为什么学习 Emacs
Emacs 是一个与 Vim 齐名的强大编辑器,事实上 Emacs 几乎具有 Vim 的所有好处,例如:
- 只需要键盘就可以完成所有操作,大量使用快捷键,具有极高的编辑效率。
- 既可以在终端无图形界面的场景下使用,也可使用有图形界面的版本获得更现代、更美观的体验。
此外Emacs 与其它大部分编辑器最大的不同就在于其强大的扩展性。Emacs 的内核没有对用户做出任何限制,使用 Emacs Lisp 编程语言可以为 Emacs 编写任意逻辑的插件来扩展 Emacs 的功能。经过几十年的积累Emacs 的插件生态可谓编辑器中最为丰富和强大的生态之一。有一种说法是“Emacs 表面上是个编辑器,其实是一个操作系统”。只要稍作学习,你也可以编写属于自己的 Emacs 扩展。
Emacs 对 Vim 用户也十分友好,有一个叫 [evil](https://github.com/emacs-evil/evil) 的插件可以让用户在 Emacs 中使用 Vim 的基本操作,只需要很低的迁移成本即可从 Vim 转到 Emacs。曾经有统计显示有相当一部分用户会从 Vim 转到 Emacs但几乎没有用户从 Emacs 转到 Vim。事实上Emacs 相对 Vim 最大的不足是纯文本编辑方面不如 Vim 的多模态编辑效率高但凭借其强大的扩展性Emacs 可以扬长避短,把 Vim 吸收进来,结合了二者的长处。
## 如何学习 Emacs
与 Vim 相同Emacs 的学习曲线也比较陡峭,但一旦理解了 Emacs 的使用逻辑,就会爱不释手。然而,网上的 Emacs 资料大多不细致、不够准确,甚至有哗众取宠的嫌疑。
这里给大家推荐一个较新的中文教程[《专业 Emacs 入门》](https://www.zhihu.com/column/c_1440829147212279808),这篇教程比较系统和全面,且讲述相对比较耐心细致,在讲解 Emacs 基本逻辑的同时也给出了成套的插件推荐,读完后可以获得一个功能完善的、接近 IDE 的 Emacs因此值得一读。学完教程只是刚刚开始学会之后要经常使用在使用中遇到问题勤于搜索和思考最终才能得心应手。
## 关于键位映射
Emacs 的唯一缺点便是对 Ctrl 键的使用过多,对小手指不是很友好,强烈建议更改 Ctrl 键的键盘映射。更改映射的方式与 [Vim 教程](Vim.md)中的方法相同,这里不做赘述。

View File

@@ -6,7 +6,7 @@
LaTeX 是一种基于 TeX 的排版系统,由图灵奖得主 Lamport 开发,而 Tex 则是由 Knuth 最初开发,这两位都是计算机界的巨擘。当然开发者强并不是我们学习 LaTeX 的理由LaTeX 和常见的所见即所得的 Word 文档最大的区别就是用户只需要关注写作的内容,而排版则完全交给软件自动完成。这让没有任何排版经验的普通人得以写出排版非常专业的论文或文章。
Berkeley计算机系教授 Christos Papadimitriou 曾说过一句半开玩笑的话:
Berkeley 计算机系教授 Christos Papadimitriou 曾说过一句半开玩笑的话:
> Every time I read a LaTeX document, I think, wow, this must be correct!
@@ -22,3 +22,11 @@ Berkeley计算机系教授 Christos Papadimitriou 曾说过一句半开玩笑的
[Part-1]: https://www.overleaf.com/latex/learn/free-online-introduction-to-latex-part-1
[Part-2]: https://www.overleaf.com/latex/learn/free-online-introduction-to-latex-part-2
[Part-3]: https://www.overleaf.com/latex/learn/free-online-introduction-to-latex-part-3
其他值得推荐的入门学习资料如下:
- 一份简短的安装 LaTeX 的介绍 [[GitHub](https://github.com/OsbertWang/install-latex-guide-zh-cn)] 或者 TEX Live 指南texlive-zh-cn[[PDF](https://www.tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf)] 可以帮助你完成安装和环境配置过程
- 一份(不太)简短的 LaTeX2ε 介绍lshort-zh-cn[[PDF](https://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf)] [[GitHub](https://github.com/CTeX-org/lshort-zh-cn)] 是由 CTEX 开发小组翻译的,可以帮助你快速准确地入门,建议通读一遍
- 刘海洋的《LaTeX 入门》,可以当作工具书来阅读,有问题再查找,跳过 CTEX 套装部分
- [现代 LaTeX 入门讲座](https://github.com/stone-zeng/latex-talk)
- [一份其实很短的 LaTeX 入门文档](https://liam.page/2014/09/08/latex-introduction/)

View File

@@ -0,0 +1,51 @@
# Scoop
## 为什么使用 Scoop
在 Windows 下,搭建开发环境一直是一个复杂且困难的问题。由于没有一个统一的标准,导致各种开发环境的安装方式差异巨大,需要付出很多不必要的时间成本。而 Scoop 可以帮助你统一安装并管理常见的开发软件,省去了手动下载安装,配置环境变量等繁琐步骤。
例如安装 python 和 nodejs 只需要执行:
```powershell
scoop install python
scoop install nodejs
```
## 安装 Scoop
Scoop 需要 [Windows PowerShell 5.1](https://aka.ms/wmf5download) 或者 [PowerShell](https://aka.ms/powershell) 作为运行环境,如果你使用的是 Windows 10 及以上版本Windows PowerShell 是内置在系统中的。而 Windows 7 内置的 Windows PowerShell 版本过于陈旧,你需要手动安装新版本的 PowerShell。
> 由于发现很多同学在设置 Windows 用户时使用了中文用户名,导致了用户目录也变成了中文名。如果按照 Scoop 的默认方式将软件安装到用户目录下,可能会造成部分软件执行错误。所以这里推荐安装到自定义目录,如果需要其他安装方式请参考: [ScoopInstaller/Install](https://github.com/ScoopInstaller/Install)
```powershell
# 设置 PowerShell 执行策略
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 下载安装脚本
irm get.scoop.sh -outfile 'install.ps1'
# 执行安装, --ScoopDir 参数指定 Scoop 安装路径
.\install.ps1 -ScoopDir 'C:\Scoop'
```
## 使用 Scoop
Scoop 的官方文档对于新手非常友好,相对于在此处赘述更推荐阅读 [官方文档](https://github.com/ScoopInstaller/Scoop) 或 [快速入门](https://github.com/ScoopInstaller/Scoop/wiki/Quick-Start) 。
## Q&A
### Scoop 能配置镜像源吗?
Scoop 社区仅维护安装配置,所有的软件都是从该软件官方提供的下载链接进行下载,所以无法提供镜像源。如果因为你的网络环境导致多次下载失败,那么你需要一点点 [魔法](/必学工具/翻墙/)。
### 为什么找不到 Java8
原因同上,官方已不再提供 Java8 的下载链接,推荐使用 [ojdkbuild8](https://github.com/ScoopInstaller/Java/blob/master/bucket/ojdkbuild8.json) 替代。
### 我需要安装 python2 该如何操作?
对于已经过时弃用的软件Scoop 社区会将其从 [ScoopInstaller/Main](https://github.com/ScoopInstaller/Main) 中移除并将其添加到 [ScoopInstaller/Versions](https://github.com/ScoopInstaller/Versions) 中。如果你需要这些软件的话需要手动添加 bucket
```powershell
scoop bucket add versions
scoop install python27
```

View File

@@ -0,0 +1,42 @@
# Vim
## Why Vim
In my opinion, the Vim editor has the following benefits:
- It keeps your finger on the keyboard throughout the development and moving the cursor without the arrow keys keeps your fingers in the best position for typing.
- Convenient file switching and panel controls allow you to edit multiple files simultaneously or even different locations of the same file.
- Vim's macros can batch repeat operations (e.g. add tabs to multi-lines, etc.)
- Vim is well-suited for Linux servers without GUI. When you connect to a remote server through `ssh`, you can only develop from the command line because there is no GUI (of course, many IDEs such as PyCharm now provide `ssh` plugins to solve this problem).
- A rich ecology of plugins gives you the world's most fancy command-line editor.
## How to learn Vim
Unfortunately Vim does have a pretty steep learning curve and it took me a few weeks to get used to developing with Vim. You'll feel very uncomfortable at first, but once you get past the initial stages, trust me, you'll fall in love with Vim.
There is a vast amount of learning material available on Vim, but the best way to master it is to use it in your daily development, no need to learn all the fancy advanced Vim tricks right away. The recommended learning path is as follows:
- Read [This tutorial](https://missing.csail.mit.edu/2020/editors/) first to understand the basic Vim concepts and usage.
- Use Vim's own `vimtutor` to practice. After installing Vim, type `vimtutor` directly into the command line to enter the practice program.
- Then you can force yourself to use Vim for development, and you can install Vim plugins in your favorite IDE.
- Once you're fully comfortable with Vim, a new world opens up to you, and you can configure your own Vim on demand (by modifying the `.vimrc` file), and there are countless resources on the Internet to learn from.
- If you want to know more about how to customize Vim to suit your needs, [_Learn Vim Script the Hard Way_](https://learnvimscriptthehardway.stevelosh.com/) is a perfect start point.
## Remapping Keys
Ctrl and Esc keys are probably two of the most used keys in Vim. However, these two keys are pretty far away from home row.
In order to make it easier to reach these keys, you can remap CapsLock to Esc or Ctrl.
On Windows, [Powertoys](https://learn.microsoft.com/en-us/windows/powertoys/) or [AutoHotkey](https://www.autohotkey.com/) can be used to achieve this goal.
On macOS, you can remap keys in system settings, see this [page](https://vim.fandom.com/wiki/Map_caps_lock_to_escape_in_macOS). [Karabiner-Elements](https://karabiner-elements.pqrs.org/) also works.
A better solution is to make CapsLock function as Esc and Ctrl simultaneously. Click CapsLock to send Esc, hold CapsLock to use it as Ctrl key. Here's how to do it on different systems:
- [Windows](https://gist.github.com/sedm0784/4443120)
- [MacOS](https://ke-complex-modifications.pqrs.org/#caps_lock_tapped_escape_held_left_control)
- [Linux](https://www.jianshu.com/p/6fdc0e0fb266)
## Recommended References
- Neil, Drew. Practical Vim: Edit Text at the Speed of Thought. N.p., Pragmatic Bookshelf, 2015.
- Neil, Drew. Modern Vim: Craft Your Development Environment with Vim 8 and Neovim. United States, Pragmatic Bookshelf.

View File

@@ -7,7 +7,7 @@
- 让你的整个开发过程手指不需要离开键盘,而且光标的移动不需要方向键使得你的手指一直处在打字的最佳位置。
- 方便的文件切换以及面板控制可以让你同时开发多份文件甚至同一个文件的不同位置。
- Vim 的宏操作可以批量化处理重复操作(例如多行 tab批量加双引号等等
- Vim 是很多服务器自带的命令行编辑器,当你通过 `ssh` 连接远程服务器之后,由于没有图形界面,只能在命令行里进行开发(当然现在很多 IDE 如 VS Code 提供了 `ssh` 插件可以解决这个问题)。
- Vim 是很多服务器自带的命令行编辑器,当你通过 `ssh` 连接远程服务器之后,由于没有图形界面,只能在命令行里进行开发(当然现在很多 IDE 如 PyCharm 提供了 `ssh` 插件可以解决这个问题)。
- 异常丰富的插件生态,让你拥有世界上最花里胡哨的命令行编辑器。
## 如何学习 Vim
@@ -16,10 +16,24 @@
Vim 的学习资料浩如烟海,但掌握它最好的方式还是将它用在日常的开发过程中,而不是一上来就去学各种花里胡哨的高级 Vim 技巧。个人推荐的学习路线如下:
- 先阅读[这篇 tutorial](https://missing.csail.mit.edu/2020/editors/),掌握基本的 Vim 概念和使用方式。
- 先阅读[这篇 tutorial](https://missing.csail.mit.edu/2020/editors/),掌握基本的 Vim 概念和使用方式,不想看英文的可以阅读[这篇教程](https://github.com/wsdjeg/vim-galore-zh_cn)
- 用 Vim 自带的 `vimtutor` 进行练习,安装完 Vim 之后直接在命令行里输入 `vimtutor` 即可进入练习程序。
- 最后就是强迫自己使用 Vim 进行开发IDE 里可以安装 Vim 插件。
- 等你完全适应 Vim 之后新的世界便向你敞开了大门,你可以按需配置自己的 Vim修改 `.vimrc` 文件),网上有数不胜数的资源可以借鉴。
- 如果你想对配置 Vim 有更加深入的了解,[_Learn Vim Script the Hard Way_](https://learnvimscriptthehardway.stevelosh.com/) 是一个很好的资源。
## 关于键位映射
用 Vim 编辑代码的时候会频繁用到 ESC 和 CTRL 键, 但是这两个键都离 home row 很远, 可以把 CapsLock 键映射到 Esc 或者 Ctrl 键,让手更舒服一些。
Windows 系统可以使用 [Powertoys](https://learn.microsoft.com/en-us/windows/powertoys/) 或者 [AutoHotkey](https://www.autohotkey.com/) 重映射键位。
MacOS 系统提供了重映射键位的[设置](https://vim.fandom.com/wiki/Map_caps_lock_to_escape_in_macOS),另外也可以使用 [Karabiner-Elements](https://karabiner-elements.pqrs.org/) 重映射。
但更佳的做法是同时将 CapsLock 映射为 Ctrl 和 Esc点按为 Esc按住为 Ctrl。这是不同系统下的实现方法
- [Windows](https://gist.github.com/sedm0784/4443120)
- [MacOS](https://ke-complex-modifications.pqrs.org/#caps_lock_tapped_escape_held_left_control)
- [Linux](https://www.jianshu.com/p/6fdc0e0fb266)
## 推荐参考资料

View File

@@ -2,36 +2,97 @@
## 下载工具
- [Libgen](http://libgen.is/): PDF电子书下载网站。
- [z-epub](https://z-epub.com/): ePub电子书下载网站。
- [bitdownloader](https://bitdownloader.io/): 油管视频下载器
- [zlibrary](https://1lib.limited/): 电子书下载网站(可能需要翻墙)
- [Sci-Hub](https://sci-hub.se/): Elbakyan 女神向你挥手,旨在打破知识壁垒的革命性网站。
- [Library Genesis](http://libgen.is/): 电子书下载网站。
- [Z-library](https://z-lib.is/): 电子书下载网站(在 [Tor](https://www.torproject.org/) 下运行较佳,[链接](http://loginzlib2vrak5zzpcocc3ouizykn6k5qecgj2tzlnab5wcbqhembyd.onion/)
- [Z-ePub](https://z-epub.com/): ePub 电子书下载网站
- [PDF Drive](https://www.pdfdrive.com/): PDF 电子书搜索引擎。
- [MagazineLib](https://magazinelib.com/): PDF 电子杂志下载网站。
- [BitDownloader](https://bitdownloader.io/): 油管视频下载器。
- [qBittorrent](https://www.qbittorrent.org/download.php): BitTorrent 客户端。
- [uTorrent](https://www.utorrent.com): BitTorrent 客户端。
- [全国标准信息公共服务平台](https://std.samr.gov.cn/):各类标准查询和下载官方平台。
- [标准知识服务系统](http://www.standards.com.cn/):检索与阅读所需标准。
- [MSDN,我告诉你](https://msdn.itellyou.cn/): Windows 操作系统镜像下载站,也有许多其他软件的下载。
## 设计工具
- [excalidraw](https://excalidraw.com/): 一款手绘风格的绘图工具非常适合绘制课程报告或者PPT内的示意图。
- [tldraw](https://www.tldraw.com/): 一个绘图工具,适合画流程图,架构图等。
- [draw.io](https://app.diagrams.net/): 强大简洁的在线的绘图网站支持流程图UML图架构图原型图等等支持 Onedrive, Google Drive, Github 导出,同时提供离线客户端。
- [origamiway](https://www.origamiway.com/paper-folding-crafts-step-by-step.shtml): 手把手教你怎么折纸。
- [thingiverse](https://www.thingiverse.com/): 囊括各类 2D/3D 设计资源,其 STL 文件下载可直接 3D 打印。
- [iconfont](https://www.iconfont.cn/): 国内最大的图标和插画资源库,可用于开发或绘制系统架构图。
- [turbosquid](https://www.turbosquid.com/): 可以购买各式各样的模型。
- [flaticon](https://www.flaticon.com/): 可下载免费且高质量的图标。
- [标准地图服务系统](http://bzdt.ch.mnr.gov.cn/): 可以下载官方标准地图。
- [PlantUML](https://plantuml.com/zh/): 可以使用代码快速编写 UML 图。
## 编程相关
- [sqlfiddle](http://www.sqlfiddle.com/): 一个简易的在线 SQL Playground。
- [sqlzoo](https://sqlzoo.net/wiki/SQL_Tutorial):在线练习 sql 语句。
- [godbolt](https://godbolt.org/): 非常方便的编译器探索工具。你可以写一段 C/C++ 代码,选择一款编译器,然后便可以观察生成的具体汇编代码。
- [explainshell](https://explainshell.com/): 你是否曾为一段 shell 代码的具体含义感到困扰manpage 看半天还是不明所以?试试这个网站!
- [regex101](https://regex101.com/): 正则表达式调试网站,支持各种编程语言的匹配标准。
- [typingtom](https://www.typingtom.com/lessons): 针对程序员的打字练习/测速网站。
- [wrk](https://github.com/wg/wrk): 网站压测工具
- [wrk](https://github.com/wg/wrk): 网站压测工具
- [gbmb](https://www.gbmb.org/): 数据单位转换。
- [tools](https://tools.fun/): 在线工具合集。
- [github1s](https://github1s.com/): 用网页版 VS Code 在线阅读 GitHub 代码。
- [visualgo](https://visualgo.net/en): 算法可视化网站。
- [DataStructureVisual](http://www.rmboot.com/): 数据结构可视化网站。
- [Data Structure Visualizations](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html): 数据结构与算法的可视化网站。
- [learngitbranching](https://learngitbranching.js.org/?locale=zh_CN): 可视化学习 git。
- [UnicodeCharacter](https://unicode-table.com/en/): Unicode 字符集网站。
## 学习网站
- [HFS](https://hepsoftwarefoundation.org/training/curriculum.html): 各类软件教程。
- [os-wiki](https://wiki.osdev.org/Main_Page): 操作系统技术资源百科全书。
- [Shadertoy](https://www.shadertoy.com/): 编写各式各样的 shader。
- [comments-for-awesome-courses](https://conanhujinming.github.io/comments-for-awesome-courses/): 名校公开课评价网。
- [codetop](https://codetop.cc/home): 企业题库。
- [cs-video-courses](https://github.com/Developer-Y/cs-video-courses): 带有视频讲座的计算机科学课程列表。
- [bootlin](https://elixir.bootlin.com/linux/v2.6.39.4/source/include/linux): 在线阅读 Linux 源码。
- [ecust-CourseShare](https://github.com/tianyilt/ecnu-PGCourseShare): 华东师范大学研究生课程攻略共享计划。
- [REKCARC-TSC-UHT](https://github.com/PKUanonym/REKCARC-TSC-UHT): 清华大学计算机系课程攻略。
- [seu-master](https://github.com/oneman233/seu-master): 东南大学研究生课程资料整理。
- [菜鸟教程](https://www.runoob.com/): 计算机相关知识的简要的教程。
- [FreeBSD 从入门到跑路](https://book.bsdcn.org/): 一本 FreeBSD 的中文教程。
- [MDN Web Docs](https://developer.mozilla.org/zh-CN/docs/Learn): MDN 网络开发入门手册。
- [Hello 算法](https://www.hello-algo.com/): 动画图解、能运行、可提问的数据结构与算法快速入门教程。
## 百科网站/词典性质的网站
- [os-wiki](https://wiki.osdev.org/Main_Page): 操作系统技术资源百科全书。
- [FreeBSD Documentation](https://docs.freebsd.org/en/): FreeBSD 官方文档。
- [Python3 Documentation](https://docs.python.org/zh-cn/3/): Python3 官方中文文档。
- [C++ Reference](https://en.cppreference.com/w/): C++ 参考手册。
- [OI Wiki](https://oi-wiki.org/): 编程竞赛知识整合站点。
- [Microsoft Learn](https://learn.microsoft.com/zh-cn/): 微软官方的学习平台,包含了绝大多数微软产品的文档。
- [Arch Wiki](https://wiki.archlinux.org/): 专为 Arch Linux 而写的 Wiki包含了大量 Linux 相关的知识。
- [Qt Wiki](https://wiki.qt.io/Main): Qt 官方 Wiki。
- [OpenCV 中文文档](https://opencv.apachecn.org/#/): OpenCV 的社区版中文文档。
- [npm Docs](https://docs.npmjs.com/): npm 官方文档。
## 交流平台
- [GitHub](https://github.com/): 许多开源项目的托管平台,也是许多开源项目的主要交流平台,通过查看 issue 可以解决许多问题。
- [StackExchange](https://stackexchange.com/): Stack Exchange 是由 181 个问答社区组成(其中包括 Stack Overflow的编程社区。
- [StackOverflow](https://stackoverflow.com/): Stack Overflow 是一个与程序相关的 IT 技术问答网站。
- [Gitee](https://gitee.com/): 一个类似于 GitHub 的代码托管平台,可以在对应项目的 issue 里查找一些常见问题的解答。
- [知乎](https://www.zhihu.com/): 一个类似于 Quora 的问答社区,可以在其中提问,一些问答包含有计算机的知识。
- [博客园](https://www.cnblogs.com/): 一个面向开发者的知识分享社区,拥有一些常见问题的博客,正确率不能保证,请谨慎使用。
- [CSDN](https://blog.csdn.net/): 拥有一些常见问题的博客,正确率不能保证,请谨慎使用。
## 杂项
- [tophub](https://tophub.today/): 新闻热榜合集(综合了知乎、微博、百度、微信等)。
- [feedly](https://feedly.com/): 著名的 RSS 订阅源阅读器。
- [speedtest](https://www.speedtest.net/zh-Hans): 在线网络测速网站。
- [public-apis](https://github.com/public-apis/public-apis): 公共 API 合集列表。
- [numberempire](https://zh.numberempire.com/derivativecalculator.php): 函数求导工具。
- [sustech-application](https://sustech-application.com/#/grad-application/computer-science-and-engineering/README): 南方科技大学经验分享网。
- [vim-adventures](https://vim-adventures.com/): 一款基于 vim 键盘快捷键的在线游戏。
- [vimsnake](https://vimsnake.com/): 利用 vim 玩贪吃蛇。
- [keybr](https://www.keybr.com/): 学习盲打的网站。
- [Awesome C++](https://cpp.libhunt.com/): 很棒的 C/C++ 框架、库、资源精选列表。
- [HelloGitHub](https://hellogithub.com/): 分享 GitHub 上有趣、入门级的开源项目。

View File

@@ -0,0 +1,122 @@
# 信息检索
## 前言
<em>碰到问题,记住第一件事是 **翻阅文档** 不要一开始就直接搜索或者找人问翻阅FAQ可能会快速找到答案。</em>
信息检索,我的理解来说,实际上就是灵活运用搜索引擎中,方便快捷的搜到需要的信息,包括但不限于编程。
编程最重要的,就是 STFW(search the fucking web) 和 RTFM(read the fucking Manual) ,首先要读文档,第二要学会搜索,网上那么多资源,怎么用,就需要信息检索。
要搜索,我们首先要搞清楚搜索引擎是如何工作的:
## 搜索引擎工作原理
搜索引擎的工作过程大体可以分成三阶段:[^1]
1. 爬行和抓取:搜索引擎蜘蛛通过跟踪链接访问网页,获取网页 HTML 代码存入数据库。
1. 预处理:索引程序对抓取来的网页数据进行文字提取,中文分词,索引等处理,以备排名程序调用。
1. 排名:用户输入关键词后,排名程序调用索引库数据,计算相关性,然后按一定格式生成搜索结果页面。
第一步,就是大家经常听说的网络爬虫,一般 Python 卖课的都会吹这个东西。简单可以理解为,我用一个自动的程序,下载网站中的所有文本、图片等相关信息,然后存入本地的磁盘。
第二步是搜索引擎的核心,但是对于我们使用来说,并不是特别关键,大致可以理解为洗干净数据,然后入库页面,每个页面加入关键字等信息方便我们查询。
第三步跟我们息息相关,不管是什么搜索网站, google 、百度、 Bing ,都一样,输入关键字或者需要查询的内容,搜索引擎会给你返回结果。本文就是教你如何获取更好的结果。
## 基础搜索技巧
根据上述的工作原理,我们大致就能明白,其实可以把搜索引擎当作一个比较聪明的数据库,更好的使用查询条件就能更快速的找到你想要的信息,下面介绍一些搜索的技巧:
### 使用英文
首先我们要知道一件事,编程中,最好使用英文搜索。原因主要有几点:
1. 编程和各种软件操作中,英文资料质量比中文资料和其他语言资料高,英文通用性还是更好些
2. 因为翻译问题,英文的名词比中文准确通用
3. 中文搜索中,分词系统不准会导致歧义,比如 Google 搜中文可能会搜不出几条有用结果
如果你英文不好,用百度翻译或者搜狗翻译,足够了。
当然下面的文档为了举例方便,都还是用中文例子。
### 提炼关键词
搜索时不要搜索整句话,虽然搜索引擎会自动帮助我们分词检索,但是整句和关键字搜索出来的结果再准确度和顺序上会有很大差别。搜索引擎是机器,并不是你的老师或者同事,看上面的流程,搜索实际上是去检索搜索引擎爬出来的数据库,你可以理解为关键字比模糊检索要快而且准确。
我们需要提炼问题,确定我们到底需要解决什么问题。
例如,我想知道 vcpkg 如何集成到工程上而不是全局中,那么搜索 `vcpkg如何集成到工程上而不是全局中` 这种长句可能无法找到相关的结果,最好是拆分成单词,`vcpkg 集成到 工程 全局` 这样的搜索。其实这里只是举个例子,针对本条其实都能搜索出相关信息,但是越具体的问题,机器分词越可能出问题,所以最好是拆分关键字,使用词组或者断句来进行搜索。
### 替换关键字
还是上面那个例子,如果搜不出来,可以试试把工程换成项目,或者移出集成,如果不行,试一下高级搜索。
### 高级搜索
普通搜索引擎一般都支持高级搜索,包括 google bing ,百度, ecosia ,等等,大部分都支持,不过可能语法不同,一般通用的表示:
* 精准匹配: 精准匹配能保证搜索关键词完全被匹配上,一般是用双引号括起来
* 比如搜索线性代数,可以在输入框内输入 "线性代数",搜索引擎将只匹配完整包含 “线性代数” 的页面,而不会搜索拆分成线性和代数两个词的页面
* 不包含关键字: 用 - 减号连接关键字,用于排除某些干扰词
* 包含关键字: 用 + 加号连接关键字
* 搜索特定文件类型: `filetype:pdf` 直接搜索 pdf 文件
* 搜索特定网址: `site:stackoverflow.com` 只搜索特定网站内的页面
一般可以参照网站说明,比如百度可以参照 [高级搜索](https://baike.baidu.com/item/高级搜索/1743887?fr=aladdin) Bing 可以参照 [高级搜索关键字](https://help.bing.microsoft.com/#apex/bing/zh-CHS/10001/-1) 和 [高级搜索选项](https://help.bing.microsoft.com/apex/index/18/zh-CHS/10002)。
#### GitHub 的高级搜索
可以直接用 [高级搜索页面](https://github.com/search/advanced) 进行搜索,也可以参照 [Github查询语法](https://zhuanlan.zhihu.com/p/273766377) 进行查找,简单说几个:
* `in:name <关键字>` 仓库名称带关键字查询
* `in:description <关键字>` 仓库描述带关键字查询
* `in:readme <关键字>` README 文件带关键字查询
* `stars(fork): >(=) <数字> <关键字>` star 或 fork 数大于(或等于)指定数字的带关键字查询
* `stars(fork): 10..20 <关键词>` star 或 fork 数在 10 到 20 之间的带关键字查询
* `size:>=5000 <关键词>` 限定仓库大于等于 5000K 的带关键字查询
* `pushed(created):>2019-11-15 <关键字>` 更新 或 创建 日期在 2019 年 11 月 16 日之后的带关键字查询
* `license:apache-2.0 <关键字>` LICENSE 为 apache-2.0 的带关键字查询
* `language:java <关键词>` 仓库语言为 Java 的带关键字查询
* `user:<用户名>` 查询某个用户的项目
* `org:<组织名>` 查询某个组织的项目
这些可以混合使用,也可以先查找某一类的 awesome 仓库,然后从 awesome 库里找相关的资源github 里有很多归纳仓库,可以先看看已有的收集,有时候会节省很多时间
### 更多技巧
使用中,实际上我会去特定网站找一些问题:
* 如果是语言本身相关,比如 c++/Qt/OpenGL 如何实现什么功能,可以直接加上 `site:stackoverflow.com`
* 如果是具体的业务/开发环境或者软件相关,可以先在 BugList 、IssueList ,或者相关论坛里先找一下,比如 Qt 的问题就可以直接去 Qt 论坛QGis 或者 GDAL 相关问题可以在 stackExchange 里去搜
* QQ 群也是一个提问的地方,但是需要你提的问题有意义,否则大部分人不会回你,而且 QQ 群回复并不及时。
* 知乎专栏、简书、博客园、 CSDN 中有大量中文笔记,这些都是别人嚼烂了的东西,基本是别人踩坑的经验
### 关于百度
大部分编程人都会告诉你别用百度,用 Google 或者 Bing 国际版,但是 Bing 中文搜索的准确率并不高, Google 需要科学上网,如果真的需要,可以使用 Ecosia 、 Yandex 之类的搜索引擎。而且中文搜索来说,百度可能还真是最好的。
百度的问题主要在于排序算法,可能两页都没啥对的内容,但是收录比 Bing 还是好一些的(百度以前并不遵守 robots.txt ,会抓取所有页面,所以有些个人网站甚至专门对百度做了屏蔽),甚至有时候比 Google 好。从数据库来说,百度比 Google 和 Bing 收录的中文内容要多,如果你碰到的时中文相关的问题而且确实找不到相关内容,那么就用百度,搜索引擎是工具,能用好用才是王道。
## 代码搜索
我们除了搜索引擎查找问题,还有可能会搜一些代码,可能是自己写的,也可能是项目中的,下面推荐一些工具:
代码检索有两种,第一是本地的代码检索,第二是要写个啥算法,需要在网上搜索
### 本地代码搜索
* ACK 或者 ACK2老牌搜索工具perl 写的
* The Silver Searcher c 实现的
* The Platinum Searcher go 实现的
* FreeCommander 自带的搜索,如果是固态硬盘速度还不错
* IDE 自带的,搜索有些时候并不太好用
### 开源代码搜索
* [Searchcode](https://searchcode.com) 搜索开源代码,速度比较快
* [一行代码](https://www.alinecode.com) 国产的,有些国产工具很好用
[^ 1]: [搜索引擎工作原理简介 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/301641935)

View File

@@ -25,7 +25,7 @@ Although it is tough, Stanford, Berkeley, JHU and many other top U.S. colleges h
- Course Website: <https://cs162.org/>
- Lecture Videos: <https://www.youtube.com/watch?v=YfHY0pvpRkk>, videos for each lecture can be found on the course website.
- Textbook: [Operating Systems: Principles and Practice (2nd Edition)](http://ospp.cs.washington.edu/)
- Assignments: <https://cs162.org/>, 6 Homework, 3 Projects, the course website has specific requirements
- Assignments: <https://cs162.org/>, 6 Homework, 3 Projects, the course website has specific requirements.
## Personal Resources

View File

@@ -0,0 +1,29 @@
# HIT OS: Operating System
## Course Introduction
- University: Harbin Institute of Technology
- Prerequisites: C Language
- Programming Languages: C Language, Assembly
- Course Difficulty: 🌟🌟🌟🌟
- Estimated Study Hours: 100 hours+
If you search on Zhihu for questions like "how to self-study operating systems", "recommended open courses for operating systems", "computer courses you wish you had discovered earlier", etc., the operating systems course by Professor Li Zhijun of Harbin Institute of Technology (HIT) is likely to appear in the high-rated answers. It's a relatively well-known and popular Chinese computer course.
This course excels at gently guiding students from their perspective. For instance, it starts from "humbly asking, what is an operating system" to "lifting the lid of the operating system piano", deriving the concept of processes from intuitive CPU management, and introducing memory management by initially "letting the program enter memory".
The course emphasizes the combination of theory and practice. Operating systems are tangible, and Professor Li repeatedly stresses the importance of doing experiments. You won't fully grasp operating systems if you just watch videos and theorize. The course explains and conducts experiments based on actual Linux 0.11 source code (around 20,000 lines in total), with eight small labs and four projects.
Of course, this course also has minor imperfections. For example, Linux 0.11 is very early industrial code and not designed for teaching. Thus, there are some unavoidable obscure and difficult parts of the codebase in the projects, but they don't contribute much to the understanding of operating systems.
## Course Resources
- Course Website: <https://www.icourse163.org/course/HIT-1002531008>
- Course Videos: <https://www.bilibili.com/video/BV19r4y1b7Aw/?p=1>
- Course Textbook 1: [Complete Annotation of Linux Kernel](https://book.douban.com/subject/1231236//)
- Course Textbook 2: [Operating System Principles, Implementation, and Practice](https://book.douban.com/subject/30391722/)
- Course Assignments: <https://www.lanqiao.cn/courses/115>
## Complementary Resources
@NaChen95 has compiled the principles and implementations of the eight experimental assignments in this course at [NaChen95 / Linux0.11](https://github.com/NaChen95/Linux0.11).

View File

@@ -0,0 +1,29 @@
# HIT OS: Operating System
## 课程简介
- 所属大学:哈尔滨工业大学
- 先修要求C 语言
- 编程语言C 语言、汇编
- 课程难度:🌟🌟🌟🌟
- 预计学时100 小时+
如果你在知乎上搜索“操作系统如何自学”、“操作系统的公开课推荐”、“有哪些让你相见恨晚的计算机课程”等问题,哈工大李治军老师的操作系统课程大概率都会在某条高赞回答的推荐里。这是一门知名度较高、颇受欢迎的中文计算机课程。
这门课善于站在学生角度循循善诱。例如,课程从“弱弱地问,什么是操作系统”来“揭开操作系统钢琴的盖子”,从 CPU 的直观管理引出进程概念,从“那就首先让程序进入内存”引出内存管理。
这门课注重理论和实践相结合。操作系统是看得见摸得着的东西,李老师反复强调一定要做实验,如果只看视频纸上谈兵,是学不好操作系统的。课程基于实际的 Linux 0.11 源码(总代码量约两万行)进行讲解和实验,共有八个小实验,四个大实验。
当然这门课也有一些瑕不掩瑜的地方。例如Linux 0.11 是很早期工业界的代码,不是为了教学而设计的。因此在实验过程中会有一些避不开的晦涩难懂的原生代码,但它们对理解操作系统其实并没有太大帮助。
## 课程资源
- 课程网站:<https://www.icourse163.org/course/HIT-1002531008>
- 课程视频:<https://www.bilibili.com/video/BV19r4y1b7Aw/?p=1>
- 课程教材一:[《Linux 内核完全注释》](https://book.douban.com/subject/1231236//)
- 课程教材二:[《操作系统原理、实现与实践》](https://book.douban.com/subject/30391722/)
- 课程作业:<https://www.lanqiao.cn/courses/115>
## 资源汇总
@NaChen95 在学习这门课中的八个实验作业的原理分析和实现都汇总在 [NaChen95 / Linux0.11](https://github.com/NaChen95/Linux0.11) 中。

View File

@@ -30,6 +30,7 @@ In the second half of the course, the instructors will discuss a couple of class
- [Detailed Explanation of xv6](https://space.bilibili.com/1040264970/)
- [xv6 Documentation(Chinese)](https://th0ar.gitbooks.io/xv6-chinese/content/index.html)
- [line-by-line walk-through of key xv6 source codes](https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB)
## Complementary Resources

View File

@@ -30,6 +30,7 @@
- [xv6 操作系统的深入讲解](https://space.bilibili.com/1040264970/)
- [xv6 中文文档](https://th0ar.gitbooks.io/xv6-chinese/content/index.html)
- [xv6 关键源码逐行解读 + 整体架构分析](https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB)
## 资源汇总

View File

@@ -10,7 +10,7 @@
之前一直听说南大的蒋炎岩老师开设的操作系统课程讲得很好,久闻不如一见,这学期有幸在 B 站观看了蒋老师的课程视频,确实收获良多。蒋老师作为非常年轻的老师,有着丰富的一线代码的经验,因此课程讲授有着满满的 Hacker 风格,课上经常“一言不合”就在命令行里开始写代码,很多重要知识点也都配有生动直白的代码示例。让我印象最为深刻的就是老师为了让学生更好地理解动态链接库的设计思想,甚至专门实现了一个迷你的可执行文件与一系列的二进制工具,让很多困扰我多年的问题都得到了解答。
这门课的讲授思路也非常有趣蒋老师先从“程序就是状态机”这一视角入手为“万恶之源”并发程序建立了状态机的转化模型并在此基础上讲授了并发控制的常见手段以及并发bug的应对方法。接着蒋老师将操作系统看作一系列对象进程/线程、地址空间、文件、设备等等)以及操作它们的 API (系统调用)并结合丰富的实际例子介绍了操作系统是如何利用这系列对象虚拟化硬件资源并给应用软件提供各类服务的。最后的可持久化部分,蒋老师从 1-bit 的存储介质讲起,一步步构建起各类存储设备,并通过设备驱动抽象出一组接口来方便地设计与实现文件系统。我之前虽然上过许多门操作系统的课程,但这种讲法确实独此一家,让我收获了很多独到的视角来看待系统软件。
这门课的讲授思路也非常有趣,蒋老师先从“程序就是状态机”这一视角入手,为“万恶之源”并发程序建立了状态机的转化模型,并在此基础上讲授了并发控制的常见手段以及并发 bug 的应对方法。接着蒋老师将操作系统看作一系列对象(进程/线程、地址空间、文件、设备等等)以及操作它们的 API (系统调用)并结合丰富的实际例子介绍了操作系统是如何利用这系列对象虚拟化硬件资源并给应用软件提供各类服务的。最后的可持久化部分,蒋老师从 1-bit 的存储介质讲起,一步步构建起各类存储设备,并通过设备驱动抽象出一组接口来方便地设计与实现文件系统。我之前虽然上过许多门操作系统的课程,但这种讲法确实独此一家,让我收获了很多独到的视角来看待系统软件。
这门课除了在理论知识的讲授部分很有新意外,注重实践也是蒋老师的一大特点。在课堂和编程作业里,蒋老师会有意无意地培养大家阅读源码、查阅手册的能力,这也是计算机从业者必备的技能。在完成第五个 MiniLab 期间,我第一次仔仔细细阅读了微软的 FAT 文件系统手册,收获了一次非常有价值的经历。

View File

@@ -10,7 +10,7 @@
Gilbert Strang, a great mathematician at MIT, still insists on teaching in his eighties. His classic text book [Introduction to Linear Algebra](https://math.mit.edu/~gs/linearalgebra/) has been adopted as an official textbook by Tsinghua University. After reading the PDF version, I felt deeply guilty and spent more than 200 yuan to purchase a genuine version in English as collection. The cover of this book is attached below. If you can fully understand the mathematical meaning of the cover picture, then your understanding of linear algebra will definitely reach a new height.
![image](https://math.mit.edu/~gs/linearalgebra/linearalgebra5_Front.jpg)
![image](https://math.mit.edu/~gs/linearalgebra/ila5/linearalgebra5_Front.jpg)
In addition to the course materials, the famous Youtuber **3Blue1Brown**'s video series [The Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) are also great learning resources.

View File

@@ -10,7 +10,7 @@
数学大牛 Gilbert Strang 老先生年逾古稀仍坚持授课,其经典教材 [Introduction to Linear Algebra](https://math.mit.edu/~gs/linearalgebra/) 已被清华采用为官方教材。我当时看完盗版 PDF 之后深感愧疚,含泪花了两百多买了一本英文正版收藏。下面附上此书封面,如果你能完全理解封面图的数学含义,那你对线性代数的理解一定会达到新的高度。
![image](https://math.mit.edu/~gs/linearalgebra/linearalgebra5_Front.jpg)
![image](https://math.mit.edu/~gs/linearalgebra/ila5/linearalgebra5_Front.jpg)
配合油管数学网红 **3Blue1Brown** 的[线性代数的本质](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)系列视频食用更佳。

View File

@@ -1,4 +1,4 @@
# The Information Theory, Patter Recognition, and Neural Networks
# The Information Theory, Pattern Recognition, and Neural Networks
## Descriptions

View File

@@ -1,4 +1,4 @@
# The Information Theory, Patter Recognition, and Neural Networks
# The Information Theory, Pattern Recognition, and Neural Networks
## 课程简介

View File

@@ -0,0 +1,39 @@
# CMU 15-445: Database Systems
## Descriptions
- Offered by: CMU
- Prerequisites: C++, Data Structures and Algorithms
- Programming Languages: C++
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 100 hours
This is an introductory course on databases at CMU taught by Andy Pavlo, a great expert in the field of databases. It teaches the basic topics of database systems from the bottom up, covering storage management, indexing, query processing, concurrency control, transactions, and so on.
The course project [Bustub](https://github.com/cmu-db/bustub) is an educational database system developed at CMU by the course instructors. During the semester, you will modify this database to implement the functions mentioned above. Moreover, as a well-written project in C++, Bustub obeys many modern development best practices, such as code specification, unit testing, cmake module build, etc. So it can be an excellent open source project to study.
## Resources
- Course Website: [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)
- Recording: refer to the course website.
- Textbook: Database System Concepts
- Assignments: 4 Projects
In Fall 2019, the second Project is to implement a hash table, and the fourth Project is to implement Logging, Recovery, and Checkpoints in your database system.
In Fall 2020, the second Project is to implement B+Tree dynamic index structure, and the fourth Project is to implement concurrency control.
In Fall 2021, the first Project is to implement a buffer pool, the second Project is to implement a hash table, and the fourth Project is to implement concurrency control.
If you have more time you can try them all, and when you do not understand the textbook very well, trying to implement the real system will deepen your understanding.
## Personal Resources
All the resources and assignments used by [@ysj1173886760](https://github.com/ysj1173886760) in this course are maintained in [ysj1173886760/Learning:db - GitHub](https://github.com/ysj1173886760/Learning/tree/master/db).
Due to Andy's request, the repository does not contain the source code for the project, only the solution for homework. In particular, for Homework1, [@ysj1173886760](https://github.com/ysj1173886760) wrote a shell script to help you evaluate your solution automatically.
After the course, it is recommended to read the paper [Architecture Of a Database System](https://github.com/ysj1173886760/paper_notes/tree/master/db). This paper provides an overview of the overall architecture of database systems so that you can have a more comprehensive view of the database.
## Advanced courses
[CMU15-721](https://15721.courses.cs.cmu.edu/spring2020/) is a graduate-level course on advanced database system topics. It mainly focuses on the in-memory database, and each class has a corresponding paper to read. It is suitable for those who wish to do research in the field of databases. [@ysj1173886760](https://github.com/ysj1173886760) is currently following up on this course and will create a pull request here after completing it to provide advanced guidance.

View File

@@ -13,7 +13,7 @@
## 课程资源
- 课程网站:[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)
- 课程网站:[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), [Fall2022](https://15445.courses.cs.cmu.edu/fall2022/schedule.html)
- 课程视频:课程网站免费观看
- 课程教材Database System Concepts
- 课程作业4 个 Project
@@ -22,7 +22,9 @@
在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制。
在 Fall2021 中,第个 Project 是做缓存池管理,第个 Project 是做哈希索引,第四个 Project 是做并发控制。
在 Fall2021 中,第个 Project 是做缓存池管理,第个 Project 是做哈希索引,第四个 Project 是做并发控制。
在 Fall2022 中,与 Fall2021 相比只有哈希索引换成了 B+ 树索引,其余都一样。
如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。

View File

@@ -0,0 +1,31 @@
# CMU 15-799: Special Topics in Database Systems
## 课程简介
- 所属大学CMU
- 先修要求CMU 15-445
- 编程语言C++
- 课程难度:🌟🌟🌟
- 预计学时80 小时
    这门课目前只开了两次fall2013 和 spring2022讨论了数据库领域的一些前沿主题。fall2013 讨论了 Streaming、Graph DB、NVM 等spring2022 主要讨论 Self-Driving DBMS都提供有相关论文。
    spring2022 版课程任务:
    任务一:基于 `PostgreSQL` 进行手动性能调优;
    任务二:基于 [NoisePage Pilot](https://github.com/cmu-db/noisepage-pilot) 改进 Self-Driving DBMS不限特性。
    授课更贴近讲座的形式,编程任务较少。对一般同学可以开拓一下视野,对专精数据库的同学可能帮助较大。
## 课程资源
- 课程主页
- [CMU15-799 - Special Topics in Database Systems](https://15799.courses.cs.cmu.edu/fall2013)
- [CMU15-799 - Special Topics: Self-Driving Database Management Systems](https://15799.courses.cs.cmu.edu/spring2022/)
- 课程视频:暂无
- 课程作业2 Projects + 1 Group Project

View File

@@ -0,0 +1,30 @@
# Stanford CS 346: Database System Implementation
## 课程简介
- 所属大学Stanford
- 先修要求:无
- 编程语言C++
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时150 小时
RedBase 是 cs346 的一个项目,实现了一个简易的数据库系统,项目是高度结构化的。整个项目能够被分为以下几个部分(同时也是 4 个需要完善的 lab
1. The record management component记录管理组件。
2. The index componentB+ 索引管理。
3. The System Management Componentddl语句、命令行工具、数据加载命令、元数据管理。
4. The Query Language Component在这个部分需要实现 RQL Redbase 查询语言。RQL 要实现 select、insert、delete、update 语句。
5. Extension Component除了上述数据库系统的基本功能组件还需要实现一个扩展组件可以是 Blob 类型、 网络模块、连接算法、CBO 优化器、OLAP、事务等。
RedBase 适合在学完 CMU-15445 后继续学习数据库系统中的其他组件,因为其代码量不多,可以方便的根据需要扩展代码。同时代码完全由 C++ 编写,也可以用于练习 C++ 编程技巧。
## 课程资源
- 课程网站:<https://web.stanford.edu/class/cs346/2015/>
- 课程代码:<https://github.com/junkumar/redbase.git>
- 课程教材:无
- 课程作业4 Projects + 1 Extension

View File

@@ -3,7 +3,7 @@
## Description
- Offered by: UC Berkeley
- Prerequisites: CS61A, Linear Algebra
- Prerequisites: Data8, CS61A, Linear Algebra
- Programming Languages: Python
- Difficulty: 🌟🌟🌟
- Class Hour: 80 hours
@@ -11,7 +11,7 @@
This is Berkeley's introductory course in data science, covering the basics of data cleaning, feature extraction, data visualization, machine learning and inference, as well as common data science tools such as Pandas, Numpy, and Matplotlib. The course is also rich in interesting programming assignments, which is one of the highlights of the course.
## Resources
- Course Website: <https://ds100.org/fa21/>
- Course Website: <https://ds100.org>
- Records: refer to the course website
- Textbook: <https://www.textbook.ds100.org/intro.html>
- Assignments: refer to the course website

View File

@@ -3,7 +3,7 @@
## 课程简介
- 所属大学UC Berkeley
- 先修要求CS61A线性代数
- 先修要求:Data8, CS61A线性代数
- 编程语言Python
- 课程难度:🌟🌟🌟
- 预计学时80 小时
@@ -12,7 +12,7 @@
## 课程资源
- 课程网站:<https://ds100.org/fa21/>
- 课程网站:<https://ds100.org/>
- 课程视频:参见课程网站
- 课程教材:<https://www.textbook.ds100.org/intro.html>
- 课程作业:参见课程网站

View File

@@ -0,0 +1,20 @@
# MIT 6.006: Introduction to Algorithms
## Descriptions
- Offered by: MIT
- Prerequisites: Introductory level courses of programming (CS50/CS61A/CS106A or equivalent)
- Programming Languages: Python
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 100 hours+
Probably the most precious course from the EECS department of MIT. Taught by Erik Demaine, one of the geniuses in Algorithms.
Compared with CS106B/X (Data structures and algorithms using C++), 6.006 emphasizes the algorithms more. It also covers several classical data structures such as AVL trees. You may use it to learn more about algorithms after CS106B/X.
## Course Resources
- Course Website: [Fall 2011](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/)
- Recordings: [Fall 2011](https://www.bilibili.com/video/BV1b7411e7ZP)
- Textbooks: Introduction to Algorithms (CLRS)
- Assignments: [Fall 2011](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/pages/assignments/)

View File

@@ -0,0 +1,20 @@
# MIT 6.006: Introduction to Algorithms
## 课程简介
- 所属大学MIT
- 先修要求:计算机导论(CS50/CS61A or equivalent)
- 编程语言Python
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时100h+
MIT-EECS 系的瑰宝。授课老师之一是算法届的奇才 Erik Demaine. 相比较于斯坦福的 [CS106B/X](../编程入门/CS106B_CS106X.md)(基于 C++ 的数据结构与算法课程),该课程更侧重于算法方面的详细讲解。课程也覆盖了一些经典的数据结构,如 AVL 树等。个人感觉在讲解方面比 CS106B 更加详细,也弥补了 CS106B 在算法方面讲解的不足。适合在 CS106B 入门之后巩固算法知识。
不过该课程也是出了名的难,大家需要做好一定的心理准备。
## 课程资源
- 课程网站:[Fall 2011](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/)
- 课程视频:[Fall 2011](https://www.bilibili.com/video/BV1b7411e7ZP)
- 课程教材Introduction to Algorithms (CLRS)
- 课程作业:[Fall 2011](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/pages/assignments/)

View File

@@ -0,0 +1,22 @@
# MIT 6.046: Design and Analysis of Algorithms
## Descriptions
- Offered by: MIT
- Prerequisites: Introductory level courses of Algorithms (6.006/CS61B/CS106B/CS106X or equivalent)
- Programming Languages: Python
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 100 hours+
Part 2 of the MIT Algorithms Trilogy. Taught by Erik Demaine, Srini Devadas, and Nancy Lynch.
Compared with 6.006 where you just learn and use the algorithms directly, in 6.046 you will be required to learn a methodology to "Design and analyze" algorithms to solve certain problems. There are few programming exercises in this course, and most of the assignmnets are about proposing an algorithm and do some mathematical proofs. Therefore, it would be much harder than 6.006.
Part 3 of the MIT Algorithms Trilogy is 6.854 Advanced Algorithms. But for the most of the exercises you'll encounter in tests and job-hunting, 6.046 is definitely enough.
## Course Resources
- Course Website: [Spring 2015](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/)
- Recordings: [Spring 2015](https://www.bilibili.com/video/BV1A7411E737)
- Textbooks: Introduction to Algorithms (CLRS)
- Assignments: [Spring 2015](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/pages/assignments/)

View File

@@ -0,0 +1,22 @@
# MIT 6.046: Design and Analysis of Algorithms
## 课程简介
- 所属大学MIT
- 先修要求:算法入门(6.006/CS61B/CS106B/CS106X or equivalent)
- 编程语言Python
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时100h+
6.006的后续课程。授课老师依旧是 Erik Demaine 和 Srini Devadas此外还有一位新老师 Nancy Lynch.
相比较于“现学现用”的6.0066.046更加侧重于如何运用课上所学到的内容举一反三,设计出一套完备的算法并能够证明该算法能解决相应的问题。虽然该课程在板书以及作业中的编程语言为 Python但基本上没有编程作业绝大部分的作业都是提出要求然后需要学生进行算法设计以及合理性证明。所以该课程的难度又提高了一大截:)
在该门课程后还有一门 6.854 高级算法但对于绝大多数考试以及应聘来说学完该课程基本上已经能覆盖99%的题目了。
## 课程资源
- 课程网站:[Spring 2015](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/)
- 课程视频:[Spring 2015](https://www.bilibili.com/video/BV1A7411E737)
- 课程教材Introduction to Algorithms (CLRS)
- 课程作业:[Spring 2015](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/pages/assignments/)

View File

@@ -0,0 +1,22 @@
# CS229: Machine Learning
## Descriptions
- Offered by: Stanford
- Prerequisite requirements: Advanced Mathematics, Probability Theory, Python, Solid mathematics skills
- Programming Languages: None
- Difficulty:🌟🌟🌟🌟
- Class Hour: 100 hours
This is another ML course offered by Andrew Ng. Since it is graduate-level, it focuses more on the mathematical theory behind machine learning. If you are not satisfied with using off-the-shelf tools but want to understand the essence of the algorithm, or aspire to engage in theoretical research on machine learning, you can take this course. All the lecture notes are provided on the course website, written in a professional and theoretical way, requiring a solid mathematical background.
## Resources
- Course Website: <http://cs229.stanford.edu/syllabus.html>
- Recordings: <https://www.bilibili.com/video/BV1JE411w7Ub>
- Textbook: None, but the lecture notes is excellent.
- Assignments: Not open to the public.
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS229 - GitHub](https://github.com/PKUFlyingPig/CS229).

View File

@@ -26,7 +26,7 @@
- 课程视频:[bilibili](https://space.bilibili.com/494117284)
- 课程教材:智能计算系统(陈云霁)
- 课程作业6 个实验(包括编写卷积算子,为 TensorFlow 添加算子,用 BCL 编写算子并集成到 TensorFlow 中等)(具体内容在官网可以找到)
- 实验手册:<http://forum.cambricon.com/show-8-708-1.html>,实验 2.0 指导手册
- 实验手册:[实验 2.0 指导手册](https://forum.cambricon.com/index.php?m=content&c=index&a=show&catid=155&id=708)
- 学习笔记:<https://sanzo.top/categories/AI-Computing-Systems/>,参考实验手册总结的笔记
## 资源汇总

View File

@@ -4,9 +4,9 @@
- 所属大学CMU
- 先修要求:系统入门(eg.15-213)、深度学习入门、基本的数学知识
- 编程语言:N/A据课程主页要求熟悉Python、C/C++
- 课程难度:N/A
- 预计学时:N/A
- 编程语言Python, C++
- 课程难度:🌟🌟🌟
- 预计学时:100小时
<!-- 用一两段话介绍这门课程,内容包括但不限于:
1课程覆盖的知识点范围
@@ -15,15 +15,20 @@
4自学这门课的注意点踩过的坑、难度预警等等
5... ...
-->
这是 CMU 2022年秋季学期开设的一门新课聚焦于深度学习框架的具体实现课程 Project 会实现一个迷你的类似于 Pytorch 深度学习框架。课程免费提供了面向非 CMU 学生的在线版本9月13日正式授课作者持续跟进中
深度学习的快速发展和广泛使用很大程度上得益于一系列简单好用且强大的编程框架,例如 Pytorch 和 Tensorflow 等等。但大多数从业者只是这些框架的“调包侠”,对于这些框架内部的细节实现却了解甚少。如果你希望从事深度学习底层框架的开发,或者只是像我一样好奇这些框架的内部实现,那么这门课将会是一个很好的起点
课程的内容大纲覆盖了深度学习系统“全栈”的知识体系。从现代深度学习系统框架的顶层设计到自微分算法的原理和实现再到底层硬件加速和实际生产部署。为了更好地掌握理论知识学生将会在5个课程作业中从头开始设计和实现一个完整的深度学习库 Needle使其能对计算图进行自动微分能在 GPU 上实现硬件加速,并且支持各类损失函数、数据加载器和优化器。在此基础上,学生将实现几类常见的神经网络,包括 CNNRNNLSTMTransformer 等等。
即使你是深度学习领域的小白也不必过于担心,课程将会循序渐进地从简单分类问题和反向传播优化讲起,一些相对复杂的神经网络都会有配套的 jupyter notebook 详细地描述实现细节。如果你有一定的相关基础知识,那么在学习完自微分部分的内容之后便可以直接上手课程作业,难度虽然不大但相信一定会给你带来新的理解。
这门课两位授课教师 [Zico Kolter](https://zicokolter.com/) 和 [Tianqi Chen](https://tqchen.com/) 将所有课程内容都发布了对应的开源版本,但在线评测账号和课程论坛的注册时间已经结束,只剩下框架代码里的本地测试供大家调试代码。或许可以期待明年秋季学期的课程还会发布相应的在线版本供大家学习。
## 课程资源
- 课程网站:<https://dlsyscourse.org>
- 课程视频:N/A
- 课程教材N/A
- 课程作业TBA
- 课程视频:<https://www.youtube.com/watch?v=qbJqOFMyIwg>
- 课程作业:<https://dlsyscourse.org/assignments/>
## 资源汇总
TBA
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CMU10-714 - GitHub](https://github.com/PKUFlyingPig/CMU10-714) 中。

View File

@@ -0,0 +1,18 @@
# Coursera: Deep Learning
## Descriptions
- Offered by: Stanford
- Prerequisites: fundamental machine learning + Python
- Programming Language: Python
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 80 hours
Yet another popular online course offered by Andrew Ng on Coursera. It has attracted many learners and can be seen as the Bible of fundamental deep learning. The course provides well-covered projects, with clear but thorough instructions. The course starts from basic neural networks, to CNN, RNN, and all the way to Transformer, which has been a hot topic these days. After learning this course, you'll be equipped with the basic knowledge and skills for deep learning, and you may want to participate in [Kaggle](https://www.kaggle.com/) competitions to practice your skills with real tasks.
## Couse Resources
- Course Website: <https://www.coursera.org/specializations/deep-learning>
- Lecture Videos: <https://www.coursera.org/specializations/deep-learning>, can be found on Bilibili
- Text Book: none
- Assignments: <https://www.coursera.org/specializations/deep-learning>

View File

@@ -8,11 +8,17 @@
- 课程难度:🌟🌟🌟🌟
- 预计学时80 小时
伯克利的强化学习研究生课程所有课程录影、slides、作业代码均在网站开源。在我的收藏夹里吃灰很久了一直想找机会学习一下
CS285 这一课程现由 Sergey Levine 教授讲授课程内容覆盖了深度强化学习领域的各方面内容适合有一定机器学习基础的同学进行学习具体要求包括了解马尔可夫决策过程MDP等。整门课程中含有较多的公式上课前需要有一定的心理准备。此外教授会根据每年最新的研究进展更新课程内容以及作业课程中能感受到教授尝试将深度强化学习领域的所有基础知识以及最近的发展在短短的数节课中进行传达
有关课程内容获取22Fall 的授课方式为课前观看提前录制的视频,课上主要为 Q&A 环节教授选择部分或者所有视频内的知识进行讲解同时回答学生现场提出的问题因此所提供的课程视频链接实际上是已经包含了所有内容。课程作业则由5个编程作业组成每一次作业主要为复现经典模型以及进行模型间的对比偶尔也包含一些对最近提出的模型的复现最后递交一份报告。考虑到作业本身已经提供了框架且都是根据 hint 进行代码填空,因此作业难度并不大。
总的来说,该课程适合新手入门深度强化学习。虽然学到后面越来越感觉到难,但整门课下来个人感觉还是收获颇丰。
(另外 Levine 教授人真的很 nice
## 课程资源
- 课程网站:<http://rail.eecs.berkeley.edu/deeprlcourse/>
- 课程视频:<https://youtube.com/playlist?list=PL_iWQOsE6TfXxKgI1GgyV1B_Xa0DxE5eH>
- 课程视频:<https://www.youtube.com/playlist?list=PL_iWQOsE6TfX7MaC6C3HcdOf1g337dlC9>
- 课程教材:无
- 课程作业:<http://rail.eecs.berkeley.edu/deeprlcourse/>5个编程作业

View File

@@ -0,0 +1,38 @@
# ASU CSE365: Introduction to Cybersecurity
## Descriptions
- Offered by: Arizona State University
- Prerequisites: None
- Programming Languages: C, Python, x86 assembly
- Difficulty: 🌟🌟🌟🌟
- Class Hour: Varying from person to person
An introductory course on web security at Arizona State University, the course contains several modules, mainly including:
- Program Misuse: Linux commandline, privilege escalation
- Web fundamentals: http, server, intercept
- Assembly: registers, memory, control flow
- Cryptography: Symmetric/Asymmetric encryption, hashing, trust
- Web security: Command/HTML/SQL/Stack injection
The course is mainly based on challenges, supplemented by lectures and reading materials. The challenges are developed in the form of CTF, and the difficulty increases in order.
For hackers with weak foundations, getting stuck is a normal phenomenon. If you encounter difficulties in solving the problem, you can seek help from the Discord Server given in the Chat column on the homepage.
## Course Resources
- Course Website: <https://dojo.pwn.college/cse365/>
- Recordings: See course website
- Textbooks: None
- Assignments: 7 modules (167 challenges)
## Personal Resources
- Lectures on YouTube: <https://youtube.com/pwncollege>
- Live Broadcasts on Twitch: <https://twitch.tv/pwncollege>
- Chat on Discord: <https://pwn.college/discord>
- Open Source on GitHub: <https://github.com/pwncollege>
- Contact us via Email: <pwn-college@asu.edu>
In addition, due to an important factor in evaluating ASU students' course grades, the course does not encourage uploading problem-solving ideas, except for the first two challenges of each module.

View File

@@ -0,0 +1,38 @@
# ASU CSE365: Introduction to Cybersecurity
## 课程简介
- 所属大学Arizona State University
- 先修要求:无
- 编程语言C, Python, x86 assembly
- 课程难度:🌟🌟🌟🌟
- 预计学时:因人而异
亚利桑那州立大学 Web 安全的导论课,课程以模块化的形式构成,主要包含以下方面:
- Program Misuse: Linux commandline, privilege escalation
- Web fundamentals: http, server, intercept
- Assembly: registers, memory, control flow
- Cryptography: Symmetric/Asymmetric encryption, hashing, trust
- Web security: Command/HTML/SQL/Stack injection
课程以 Challenge 为主Lectures and Reading 为辅。Challenge 中的习题以 CTF 的形式展开,难度依次递增。
对于基础较弱的学习者,卡关是正常现象。如果在解题过程中遇到困难,可以在首页 Chat 栏目中给出的 Discord Server 寻求帮助。
## 课程资源
- 课程网站:<https://dojo.pwn.college/cse365/>
- 课程视频:参见课程网站
- 课程教材:无
- 课程作业7 个模块167 个 challenge
## 资源汇总
- Lectures on YouTube: <https://youtube.com/pwncollege>
- Live Broadcasts on Twitch: <https://twitch.tv/pwncollege>
- Chat on Discord: <https://pwn.college/discord>
- Open Source on GitHub: <https://github.com/pwncollege>
- Contact us via Email: <pwn-college@asu.edu>
另外,出于评定 ASU 学生课程成绩的重要因素,官方不鼓励上传解题思路,每个模块的前两题除外。

View File

@@ -0,0 +1,39 @@
# ASU CSE466: Computer Systems Security
## Descriptions
- Offered by: Arizona State University
- Prerequisites: None
- Programming Languages: C, Python, x86 assembly
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: Varying from person to person
A hard-core course on system security at Arizona State University, the course contains several modules, mainly including:
- Linux commandline: Program misuse, program interaction
- Shellcoding: Assembly, shellcode injection, prevention
- Reverse Engineering: Function frame, static/dynamic reversing tools
- Program Exploitation: Hijacking to shellcode, JIT spray
- System Exploitation: Kernel modules, privilege escalation
- Miscellaneous: Sandboxing, Memory Errors, Race conditions
Like CSE365, the course is also based on challenges, supplemented by lectures and reading materials. The challenges are developed in the form of CTF, and the difficulty increases in order.
The quality of the exercises is excellent, but some modules are quite difficult, especially the parts involving the kernel. Sometimes you'll spend a whole day struggling at one challenge with no progress. If you encounter difficulties in solving the problem, you can seek help from the Discord Server given in the Chat column on the homepage.
## Course Resources
- Course Website: <https://dojo.pwn.college/cse466/>
- Recordings: See course website
- Textbooks: None
- Assignments: 13 modules (358 challenges)
## Personal Resources
- Lectures on YouTube: <https://youtube.com/pwncollege>
- Live Broadcasts on Twitch: <https://twitch.tv/pwncollege>
- Chat on Discord: <https://pwn.college/discord>
- Open Source on GitHub: <https://github.com/pwncollege>
- Contact us via Email: <pwn-college@asu.edu>
In addition, due to an important factor in evaluating ASU students' course grades, the course does not encourage uploading problem-solving ideas, except for the first two challenges of each module and challenge 16 in the reversing module.

View File

@@ -0,0 +1,39 @@
# ASU CSE466: Computer Systems Security
## 课程简介
- 所属大学Arizona State University
- 先修要求:无
- 编程语言C, Python, x86 assembly
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时:因人而异
亚利桑那州立大学系统安全的核心课,课程以模块化的形式构成,主要包含以下方面:
- Linux commandline: Program misuse, program interaction
- Shellcoding: Assembly, shellcode injection, prevention
- Reverse Engineering: Function frame, static/dynamic reversing tools
- Program Exploitation: Hijacking to shellcode, JIT spray
- System Exploitation: Kernel modules, privilege escalation
- Miscellaneous: Sandboxing, Memory Errors, Race conditions
与 CSE365 相同,课程以 Challenge 为主Lectures and Reading 为辅。Challenge 中的习题以 CTF 的形式展开,难度依次递增。
习题质量挺高的,但某些模块难度较大,尤其是涉及到内核的部分,有的时候一天都写不出一道题。如果在解题过程中遇到困难,可以在首页 Chat 栏目中给出的 Discord Server 寻求帮助。
## 课程资源
- 课程网站:<https://dojo.pwn.college/cse466/>
- 课程视频:参见课程网站
- 课程教材:无
- 课程作业13 个模块358 个 challenge
## 资源汇总
- Lectures on YouTube: <https://youtube.com/pwncollege>
- Live Broadcasts on Twitch: <https://twitch.tv/pwncollege>
- Chat on Discord: <https://pwn.college/discord>
- Open Source on GitHub: <https://github.com/pwncollege>
- Contact us via Email: <pwn-college@asu.edu>
另外,出于评定 ASU 学生课程成绩的重要因素,官方不鼓励上传解题思路,每个模块的前两题与逆向部分的 16 题除外。

View File

@@ -24,6 +24,6 @@ In the Final Project, you will build a remote file system, [SecFS](https://www.u
## Resources
- Course Website: <http://css.csail.mit.edu/6.858/2022/>
- Assignments: refer to the course website
- Assignments: refer to the course website.
- Textbook: None
- Assignments: 4 Labs + Final Project / Lab5

View File

@@ -0,0 +1,35 @@
# Amirkabir University of Technology 1400-2: Advanced Programming Course
## 课程简介
- 所属大学Amirkabir University of Technology
- 先修要求:无
- 编程语言C++
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时50 小时
无意中发现的一个 C++ 课程。课程的 homework 质量很高,每个 homework 相互独立结构简单,且有完善的单元测试,非常适合用来学习 C++ 的编程。本课程共 7 个 homework如下所示
1. 实现一个 Matrix 类以及相关函数。
2. 实现一个模拟加密货币客户端/服务端执行过程的程序。
3. 实现一个 Binary Search Tree (BST)。
4. 实现 C++ 中的 SharedPtr 和 UniquePtr 智能指针。
5. 使用继承和多态实现多个类。
6. 使用 STL 库解决 4 个问题。
7. 是个 python 项目,有兴趣的可以看看。
没找到课程的主页,只有在 github 有 homework 的源码(名字为 AP1400-2-HW 的那几个)。
## 课程资源
- 课程网站:无
- 课程代码:<https://github.com/courseworks>
- 课程教材:无
- 课程作业7 homework

View File

@@ -25,4 +25,6 @@ Personally, I find the concept of "futures" in Rust fascinating and elegant, and
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L)
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L).
Due to the rapid evolution of Rust, the libraries used in the 2020 version of the course project are obsolete, so [@fung-hwang](https://github.com/fung-hwang) tried to adapt these libraries (in November 2022). His adaptation advice and completed assignments are maintained in [fung-hwang/CS110L-2020spr - GitHub](https://github.com/fung-hwang/CS110L-2020spr). It is possible that Rust and these libraries will have changed again when you start to learn CS110L, but you can still refer to this repo for help.

View File

@@ -23,6 +23,10 @@
1. 用 Rust 实现一个类似于 GDB 的 debugger
2. 用 Rust 实现一个负载均衡器
> [CS 242: Programming Languages, Fall2019](https://stanford-cs242.github.io/f19/) week6 到 week9 关于 Rust 内容的讲解非常细致, 可以作为该课程的讲义补充。 另外, Ryan 在 <https://reberhardt.com/cs110l/spring-2021/> 中补充了 2020 版本缺失的关于 Futures Trait 内容的视频。
## 资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L) 中。
在2022年 CS110L 没有开源作业源码的背景下Rust 快速演进导致2020版本课程项目中所使用的库过于老旧。对此[@fung-hwang](https://github.com/fung-hwang) 尝试进行了适配时间为2022.11)。其适配过程和作业实现都汇总在 [fung-hwang/CS110L-2020spr - GitHub](https://github.com/fung-hwang/CS110L-2020spr) 中。也许当你开始本课程时 Rust 和这些库又发生了变化,但你仍可以参考并从中获得启发。

View File

@@ -12,6 +12,10 @@ This course has been voted the most popular public course by Harvard students fo
## Course Resources
- Course Website: <https://cs50.harvard.edu/x/2022/>
- Recordings: <https://cs50.harvard.edu/x/2022/>
- Assignments: <https://cs50.harvard.edu/x/2022/>
- Course Website: [2022](https://cs50.harvard.edu/x/2022/), [2023](https://cs50.harvard.edu/x/2023/)
- Recordings: [2022](https://cs50.harvard.edu/x/2022/), [2023](https://cs50.harvard.edu/x/2023/)
- Assignments: [2022](https://cs50.harvard.edu/x/2022/), [2023](https://cs50.harvard.edu/x/2023/)
## Personal Resources
All the resources and assignments used by @mancuoj in this course are maintained in [mancuoj/CS50x - GitHub](https://github.com/mancuoj/CS50x).

View File

@@ -12,7 +12,11 @@
## 课程资源
- 课程网站:<https://cs50.harvard.edu/x/2022/>
- 课程视频:<https://cs50.harvard.edu/x/2022/>
- 课程网站:[2022](https://cs50.harvard.edu/x/2022/), [2023](https://cs50.harvard.edu/x/2023/)
- 课程视频:[2022](https://cs50.harvard.edu/x/2022/), [2023](https://cs50.harvard.edu/x/2023/)
- 课程教材:无
- 课程作业:<https://cs50.harvard.edu/x/2022/>
- 课程作业:[2022](https://cs50.harvard.edu/x/2022/), [2023](https://cs50.harvard.edu/x/2023/)
## 资源汇总
@mancuoj 在学习这门课中用到的所有资源和作业实现都汇总在 [mancuoj/CS50x - GitHub](https://github.com/mancuoj/CS50x) 中。

View File

@@ -0,0 +1,24 @@
# CS50P Introduction to Programming with Python
## Descriptions
- Offered by: Harvard University
- Prerequisites: No prerequisites
- Programming Languages: Python
- Difficulty: 🌟🌟
- Class Hour: 30-40 hours
One of the CS50 families, taught by David J. Malan. You'll learn how to program in Python and "Pythonic" ways to deal with everthing. The course also introduces libraries, code testing, and handling exceptions.
No programming experiences are assumed. So it may be appropriate for anyone who wants to learn Python.
## Course Resources
- Course Website: [2022](https://cs50.harvard.edu/python/2022/)
- Recordings: [2022](https://www.bilibili.com/video/BV1z5411X7wX)
- Textbooks: No textbook required
- Assignments: [2022](https://cs50.harvard.edu/python/2022/)
## Personal Resources
All the resources and assignments used by @mancuoj in this course are maintained in [mancuoj/CS50P - GitHub](https://github.com/mancuoj/CS50P).

View File

@@ -0,0 +1,24 @@
# CS50P Introduction to Programming with Python
## 课程简介
- 所属大学Harvard University
- 先修要求:无
- 编程语言Python
- 课程难度:🌟🌟
- 预计学时30-40 hours
CS50的番外篇依旧由 David J. Malan 授课。在该课程中你将学会 Python 的基础与进阶语法,以及各种 “Pythonic” 的编程方法。此外对于 Python 特色的代码库、代码测试以及错误处理,该课程也会较为深入地探究。
该课程无需任何编程基础,且相对平易近人。适合所有想要快速入门 Python 语言的各阶段学生。
## 课程资源
- 课程网站:[2022](https://cs50.harvard.edu/python/2022/)
- 课程视频:[2022](https://www.bilibili.com/video/BV1z5411X7wX)
- 课程教材:无
- 课程作业:[2022](https://cs50.harvard.edu/python/2022/)
## 资源汇总
@mancuoj 在学习这门课中用到的所有资源和作业实现都汇总在 [mancuoj/CS50P - GitHub](https://github.com/mancuoj/CS50P) 中。

View File

@@ -14,7 +14,7 @@ CS61 系列是伯克利 CS 专业的入门课,其中:
- CS61A: 强调抽象,让学生掌握用程序来解决实际问题,而不关注底层的硬件细节。
- CS61B: 注重算法与数据结构以及大规模程序的构建,学生会用 Java 语言结合算法与数据结构的知识来构建千行代码级别的大型项目(一个简易的谷歌地图,一个二维版的 Minecraft
- CS61C: 关注计算机体系结构,让学生理解高级语言(例如 C是如何一步步转换为机器可以理解的 01 串并在 CPU 执行的,学生将会学习 RISC-V 架构并自己用 Logism 实现一个 CPU。
- CS61C: 关注计算机体系结构,让学生理解高级语言(例如 C是如何一步步转换为机器可以理解的 01 串并在 CPU 执行的,学生将会学习 RISC-V 架构并自己用 Logisim 实现一个 CPU。
CS61B 和 CS61C 在本书中均有收录。
@@ -27,6 +27,7 @@ CS61B 和 CS61C 在本书中均有收录。
- 课程网站:<https://inst.eecs.berkeley.edu/~cs61a/su20/>
- 课程视频: 参见课程网站链接
- 课程教材:<http://composingprograms.com/>
- 课程教材中文翻译:<https://composingprograms.netlify.app/>
- 课程作业:课程网站会有每个作业对应的文档链接以及代码框架的下载链接。
## 资源汇总

View File

@@ -0,0 +1,38 @@
# Haskell MOOC
## Descriptions
- Offered by: University of Helsinki
- Prerequisites: None
- Programming Languages: Haskell
- Difficulty: 🌟🌟
- Class Hour: Varying according to the learner
Functional programming is increasingly being integrated into modern programming languages. Streams in Java, Promises in JavaScript, and Record & Tuple in the draft phase of ECMAScript... When I was learning these things, I always felt like I was memorizing the behaviours of their API, and although I was able to write some programs using them, I never felt like I had mastered them. Why do they exist? Why are they like that? What is the idea behind their design? Learning functional programming will give you the answer.
Its core ingredient is functional programming. Just like Java is probably the default choice for teaching object-oriented programming.
This course will teach just enough Haskell syntax, library functions, and a small number of tools to explain the core program semantics and the core idea of functional programming. This will save you time not getting bogged down in the details of the language and its ecology, which I think is the biggest advantage of the course.
Topics covered in the course:
- Pure Function
- Lazy Evaluation
- Strongly Typed
- Type Inferred
- Curry
- Monoid / Functor / Monad / Applicative
If you have some programming experience, part 1 of the course is very easy. Most of the difficulties lie in part 2, after chap 13. Its exercises are great, which can give you a feeling of doing exercise of [CS61A](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/). There are enough hints in the comments and the solutions will be given to you after submission, and you can ask questions or discuss them with others in the official Telegram community.
## Course Resources
- Course Website: <https://haskell.mooc.fi/>
- Recordings: None
- Textbooks: <https://haskell.mooc.fi/>
- Assignments: <https://github.com/moocfi/haskell-mooc>
- Community: <https://t.me/haskell_mooc_fi>
## Personal Resources
All the resources and assignments used by @showtheunli in this course are maintained in [showthesunli/haskell-mooc - GitHub](https://github.com/showthesunli/haskell-mooc). (It is highly discouraged to refer to other people's implementations when working on assignments.)

View File

@@ -0,0 +1,38 @@
# Haskell MOOC
## 课程简介
- 所属大学University of Helsinki
- 先修要求:无
- 编程语言Haskell
- 课程难度:🌟🌟
- 预计学时:因人而异
函数式编程正在越来越多的融合入现代编程语言。Java 的 StreamsJavaScript 的 Promises以及在 ECMAScript 草案阶段的 Record & Tuple。在学习这些内容时我总是感觉我在死记它们这些 api 的行为,虽然能够使用它们写出一些程序,但总感觉不到掌握了它们。究其原因,它们为什么存在?它们为什么是这样的?设计它们的思想是什么?学完函数式编程会给你答案。
虽然这门课的名字是 Haskell但它的核心内容是函数式编程思想。就像学习面向对象程序设计大概率不会选择 Java 之外的语言。
学习 Haskell但重点不在于使用它。这门课会让你用刚刚够用的 Haskell 语法,刚刚够用的库函数,一丁点的工具,去解释核心的程序语义,也就是函数式编程的核心思想。这不会让你浪费时间陷入语言细节以及语言生态中,我觉得它是这门课的最大优势。
这门课覆盖的内容:
- Pure Function
- Lazy Evaluation
- Strongly Typed
- Type Inferred
- Curry
- Monoid / Functor / Monad / Applicative
如果你有编程经验,课程的 Part1 很简单,难度集中在 Part2 的十三章之后。课程的练习很棒,它有一种在做 [CS61a](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/) 练习的感觉。练习的注释中有足够的提示,作业在你提交之后会给你标准答案,你还可以在官方的 Telegram 中提问或与他人讨论。
## 课程资源
- 课程网站:<https://haskell.mooc.fi/>
- 课程视频:无
- 课程教材:<https://haskell.mooc.fi/>
- 课程作业:<https://github.com/moocfi/haskell-mooc>
- 社区:<https://t.me/haskell_mooc_fi>
## 资源汇总
@showtheunli 在学习这门课中用到的所有资源和作业实现都汇总在 [showthesunli/haskell-mooc - GitHub](https://github.com/showthesunli/haskell-mooc) 中。(非常不建议在作业时,参考别人的实现)

View File

@@ -14,5 +14,9 @@
## 课程资源
- 课程网站:<https://missing.csail.mit.edu/2020/>
- 课程中文网站: <https://missing-semester-cn.github.io/>
- 课程视频:<https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J>
- 课程中文字幕视频:
- Missing_Semi_中译组未完<https://space.bilibili.com/1010983811?spm_id_from=333.337.search-card.all.click>
- 刘黑黑a未完<https://space.bilibili.com/518734451?spm_id_from=333.337.search-card.all.click>
- 课程作业:一些随堂小练习,具体见课程网站。

View File

@@ -0,0 +1,24 @@
# Stanford CS143: Compilers
## Descriptions
- Offered by: Stanford University
- Prerequisite: Computer Architecture
- Programming Languages: Java or C++
- Difficulty: 🌟🌟🌟🌟🌟
- Learning Hours: 150
This course aims to impart the principles of compiler construction for programming languages to students. The instructors have designed a “COOL language”, namely Class-Object-Oriented-Language. By study and practice, you will design and implement a compiler, which can translate the human-readable COOL language into machine-readable MIPS assembly which can be run on the SPIM emulator.
Following the Dragon Book, the theoretical part of the course covers lexical analysis, syntax analysis, semantics analysis, runtime environments, register allocation, optimization, and code generation. The practical part, accordingly, is divided into 4 steps: 3 for the frontend and 1 for the backend. The difficulty is considered gradual, increasing at a proper rate. Should you have enough time and interest even after completing all the required work, theres a huge room left for you to do optimization.
## Course Resources
- Course Website: <http://web.stanford.edu/class/cs143/>
- Recordings: <https://www.bilibili.com/video/BV17K4y147Bz>
- Textbook: Compilers: Principles, Techniques and Tools (Dragon Book)
- Assignments: 5 written assignments + 5 programming labs
## Collection of Course Resources
@skyzluo has been maintaining a repo of course resources used and reference implementations of programming labs: [skyzluo/CS143-Compilers-Stanford - GitHub](https://github.com/skyzluo/CS143-Compilers-Stanford).

View File

@@ -0,0 +1,21 @@
# CMU 15-462 : COMPUTER GRAPHICS
## Descriptions
- Offered by: CMU
- Prerequisites: Basic vector calculus and linear algebra , basic C/C++ programming skills.
- Programming Languages: C/C++
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 100 hours
This course provides a comprehensive introduction to computer graphics. It focuses on fundamental concepts and techniques, and their cross-cutting relationship to multiple problem domains in graphics (rendering, animation, geometry, imaging). Topics include: sampling, aliasing, interpolation, rasterization, geometric transformations, parameterization, visibility, compositing, filtering, convolution, curves & surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, ray tracing, radiometry, reflectance, light fields, geometric optics, Monte Carlo rendering, importance sampling, camera models, high-performance ray tracing, differential equations, time integration, numerical differentiation, physically-based animation, optimization, numerical linear algebra, inverse kinematics, Fourier methods, data fitting, example-based synthesis.
## Course Resources
- Course Website: [http://15462.courses.cs.cmu.edu/fall2022/](http://15462.courses.cs.cmu.edu/fall2022/)
- Recordings: [Youtube](https://www.youtube.com/watch?v=W6yEALqsD7k&list=PL9_jI1bdZmz2emSh0UQ5iOdT2xRHFHL7E&index=1)
- Textbooks: There is no required textbook for 15-462, though a variety of books may provide good supplementary material:
- [Fundamentals of Computer Graphics. A K Peters, 2009](http://www.amazon.com/Fundamentals-Computer-Graphics-Peter-Shirley/dp/1568814690)
- [Computer Graphics: Principles and Practice](http://www.amazon.com/Computer-Graphics-Principles-Practice-3rd/dp/0321399528/ref=sr_1_2?s=books&ie=UTF8&qid=1440872554&sr=1-2&keywords=foundations+of+3d+computer+graphics)
- [Physically Based Rendering: From Theory to Implementation](http://www.amazon.com/gp/product/0123750792?ie=UTF8&tag=pharr-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0123750792)
- Assignments: refer to the course website

View File

@@ -0,0 +1,23 @@
# CMU 15-462 : COMPUTER GRAPHICS
## 课程简介
- 所属大学CMU
- 先修要求:基础的向量微积分和线性代数 , 基础的 C/C++ 编程能力。
- 编程语言C/C++
- 课程难度:🌟🌟🌟🌟
- 预计学时100 小时
本课程全面介绍了计算机图形学。它侧重于基本概念和技术,以及它们与图形中多个问题领域(渲染、动画、几何、成像)的交叉关系。主题包括:采样、混叠、插值、光栅化、几何变换、参数化、可见性、合成、过滤、卷积、曲线和曲面、几何数据结构、细分、网格划分、空间层次结构、光线追踪、辐射测量、反射率、光场、几何光学,蒙特卡洛渲染,重要性采样,相机模型,高性能光线追踪,微分方程,时间积分,数值微分,基于物理的动画,优化,数值线性代数,逆运动学,傅立叶方法,数据拟合.
## 课程资源
- 课程网站:[http://15462.courses.cs.cmu.edu/fall2022/](http://15462.courses.cs.cmu.edu/fall2022/)
- 课程视频:
- [Youtube](https://www.youtube.com/watch?v=W6yEALqsD7k&list=PL9_jI1bdZmz2emSh0UQ5iOdT2xRHFHL7E&index=1)
- [bilibili](https://www.bilibili.com/video/BV1QZ4y1K7ga)
- 课程教材15-462 没有唯一的课本, 提供了各种书籍供你参考. 如下:
- [Fundamentals of Computer Graphics. A K Peters, 2009](http://www.amazon.com/Fundamentals-Computer-Graphics-Peter-Shirley/dp/1568814690)
- [Computer Graphics: Principles and Practice](http://www.amazon.com/Computer-Graphics-Principles-Practice-3rd/dp/0321399528/ref=sr_1_2?s=books&ie=UTF8&qid=1440872554&sr=1-2&keywords=foundations+of+3d+computer+graphics)
- [Physically Based Rendering: From Theory to Implementation](http://www.amazon.com/gp/product/0123750792?ie=UTF8&tag=pharr-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0123750792)
- 课程作业:参见课程主页

View File

@@ -28,6 +28,6 @@ In the 2016 spring, the course open-sourced all of its programming assignments,
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/ MIT6.031-Software-Engineering - GitHub](https://github.com/PKUFlyingPig/MIT6.031-software-construction)
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/ MIT6.031-Software-Engineering - GitHub](https://github.com/PKUFlyingPig/MIT6.031-software-construction).
@pengzhangzhi completed the assignments and took some notes, maintained at [pengzhangzhi/self-taught-CS/Software Construction - Github](https://github.com/pengzhangzhi/self-taught-CS/tree/main/Software%20Construction)
@pengzhangzhi completed the assignments and took some notes, maintained at [pengzhangzhi/self-taught-CS/Software Construction - Github](https://github.com/pengzhangzhi/self-taught-CS/tree/main/Software%20Construction).

View File

@@ -17,8 +17,8 @@ This course is available on [Edx](https://www.edx.org/), an online education pla
- Course Website: <http://www.saasbook.info/courses>
- Recordings: refer to the course website.
- Textbook: [Software as a service](https://github.com/PKUFlyingPig/CS169-Software-Engineering/blob/master/saasbook.pdf)
- Assignments: refer to the course website
- Assignments: refer to the course website.
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS169-Software-Engineering - GitHub](https://github.com/PKUFlyingPig/CS169-Software-Engineering)
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS169-Software-Engineering - GitHub](https://github.com/PKUFlyingPig/CS169-Software-Engineering).

View File

@@ -14,7 +14,8 @@ theme:
language: zh
static_templates:
- 404.html
favicon: images/favicon16x16.png
favicon: images/favicon.ico
apple-touch-icon-precomposed: images/mobile_icon.png
include_search_page: false
search_index_only: true
@@ -77,6 +78,7 @@ plugins:
nav_translations:
en:
前言: Foreword
如何使用这本书: How To Use The Book
一个仅供参考的CS学习规划: Guideline
必学工具: Productivity Toolkit
好书推荐: Book Recommendation
@@ -123,15 +125,18 @@ nav:
- 必学工具:
- 翻墙: "必学工具/翻墙.md"
- Vim: "必学工具/Vim.md"
- Emacs: "必学工具/Emacs.md"
- Git: "必学工具/Git.md"
- GitHub: "必学工具/GitHub.md"
- "GNU Make": "必学工具/GNU_Make.md"
- CMake: "必学工具/CMake.md"
- LaTeX: "必学工具/LaTeX.md"
- Docker: "必学工具/Docker.md"
- Scoop: "必学工具/Scoop.md"
- 日常学习工作流: "必学工具/workflow.md"
- 实用工具箱: "必学工具/tools.md"
- 毕业论文: "必学工具/thesis.md"
- 信息检索: "必学工具/信息检索.md"
- 好书推荐: "好书推荐.md"
- 数学基础:
- "MIT18.01/18.02: Calculus": "数学基础/MITmaths.md"
@@ -143,15 +148,18 @@ nav:
- "MIT 6.042J: Mathematics for Computer Science": "数学进阶/6.042J.md"
- "MIT18.330: Introduction to numerical analysis": "数学进阶/numerical.md"
- "Standford EE364A: Convex Optimization": "数学进阶/convex.md"
- "The Information Theory, Patter Recognition, and Neural Networks": "数学进阶/The_Information_Theory_Pattern_Recognition_and_Neural_Networks.md"
- "The Information Theory, Pattern Recognition, and Neural Networks": "数学进阶/The_Information_Theory_Pattern_Recognition_and_Neural_Networks.md"
- 编程入门:
- "MIT-Missing-Semester": "编程入门/MIT-Missing-Semester.md"
- "Harvard CS50: This is CS50x": "编程入门/CS50.md"
- "CS50P: CS50's Introduction to Programming with Python": "编程入门/CS50P.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"
- "AmirKabir University of Technology AP1400-2: Advanced Programming": "编程入门/AUT1400.md"
- "Haskell MOOC": "编程入门/Haskell-MOOC.md"
- 电子基础:
- "EE16A&B: Designing Information Devices and Systems I&II": "电子基础/EE16.md"
- "UCB EE120 : Signal and Systems": "电子基础/signal.md"
@@ -159,25 +167,30 @@ nav:
- 数据结构与算法:
- "UCB CS61B: Data Structures and Algorithms": "数据结构与算法/CS61B.md"
- "Coursera: Algorithms I & II": "数据结构与算法/Algo.md"
- "MIT 6.006: Introduction to Algorithms": "数据结构与算法/6.006.md"
- "MIT 6.046: Design and Analysis of Algorithms": "数据结构与算法/6.046.md"
- "UCB CS170: Efficient Algorithms and Intractable Problems": "数据结构与算法/CS170.md"
- 软件工程:
- "MIT 6.031: Software Construction": "软件工程/6031.md"
- "UCB CS169: software engineering": "软件工程/CS169.md"
- 体系结构:
- "Coursera: Nand2Tetris": "体系结构/N2T.md"
- "Digital Design and Computer Architecture": "体系结构/DDCA.md"
- "Digital Design and Computer Architecture": "体系结构/DDCA.md"
- "UCB CS61C: Great Ideas in Computer Architecture": "体系结构/CS61C.md"
- "CMU 15-213: CSAPP": "体系结构/CSAPP.md"
- 操作系统:
- "MIT 6.S081: Operating System Engineering": "操作系统/MIT6.S081.md"
- "UCB CS162: Operating System": "操作系统/CS162.md"
- "NJU OS: Operating System Design and Implementation": "操作系统/NJUOS.md"
- "HIT OS: Operating System": "操作系统/HITOS.md"
- 并行与分布式系统:
- "CMU 15-418/Stanford CS149: Parallel Computing": "并行与分布式系统/CS149.md"
- "MIT 6.824: Distributed System": "并行与分布式系统/MIT6.824.md"
- 计算机系统安全:
- "UCB CS161: Computer Security": "系统安全/CS161.md"
- "MIT 6.858: Computer System Security": "系统安全/MIT6.858.md"
- "ASU CSE365: Introduction to Cybersecurity": "系统安全/CSE365.md"
- "ASU CSE466: Computer Systems Security": "系统安全/CSE466.md"
- 计算机网络:
- "USTC Computer Networking:A Top-Down Approach": "计算机网络/topdown_ustc.md"
- "Computer Networking: A Top-Down Approach": "计算机网络/topdown.md"
@@ -186,6 +199,8 @@ nav:
- "UCB CS186: Introduction to Database System": "数据库系统/CS186.md"
- "CMU 15-445: Database Systems": "数据库系统/15445.md"
- "Caltech CS122: Database System Implementation": "数据库系统/CS122.md"
- "Stanford CS346: Database System Implementation": "数据库系统/CS346.md"
- "CMU 15-799: Special Topics in Database Systems": "数据库系统/15799.md"
- 编译原理:
- "Stanford CS143: Compilers": "编译原理/CS143.md"
- 计算机图形学:
@@ -193,23 +208,25 @@ nav:
- "GAMES202": "计算机图形学/GAMES202.md"
- "GAMES103": "计算机图形学/GAMES103.md"
- "Stanford CS148": "计算机图形学/CS148.md"
- "CMU 15-462": "计算机图形学/15462.md"
- 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"
- "CS571 Building UI (React & React Native)": "Web开发/CS571.md"
- 数据科学:
- "UCB Data100: Principles and Techniques of Data Science": "数据科学/Data100.md"
- 人工智能:
- "Harvard CS50's Introduction to AI with Python": "人工智能/CS50.md"
- "UCB CS188: Introduction to Artificial Intelligence": "人工智能/CS188.md"
- "智能计算系统": "人工智能/CYJ.md"
- 机器学习:
- "Coursera: Machine Learning": "机器学习/ML.md"
- "Stanford CS229: Machine Learning": "机器学习/CS229.md"
- "UCB CS189: Introduction to Machine Learning": "机器学习/CS189.md"
- 机器学习系统:
- "Machine Learning Compilation": "机器学习系统/MLC.md"
- "智能计算系统": "机器学习系统/AICS.md"
- "CMU 10-414/714: Deep Learning Systems": "机器学习系统/CMU10-414.md"
- "Machine Learning Compilation": "机器学习系统/MLC.md"
- 深度学习:
- "Coursera: Deep Learning": "深度学习/CS230.md"
- "国立台湾大学:李宏毅机器学习": "深度学习/LHY.md"

View File

@@ -1,17 +1,33 @@
{% extends "base.html" %} {% block disqus %}
<script src="https://giscus.app/client.js"
data-repo="PKUFlyingPig/cs-self-learning"
data-repo-id="R_kgDOGP67ng"
data-category="Announcements"
data-category-id="DIC_kwDOGP67ns4COM9Q"
data-mapping="title"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="top"
data-theme="light"
data-lang="zh-CN"
data-loading="lazy"
crossorigin="anonymous"
async>
{% extends "base.html" %}
{% block disqus %}
<script src="https://giscus.app/client.js" data-repo="PKUFlyingPig/cs-self-learning" data-repo-id="R_kgDOGP67ng"
data-category="Announcements" data-category-id="DIC_kwDOGP67ns4COM9Q" data-mapping="title"
data-reactions-enabled="1" data-emit-metadata="0" data-input-position="top" data-theme="light_protanopia"
data-lang="zh-CN" data-loading="lazy" crossorigin="anonymous" async>
</script>
<script>
var palette = __get("__palette")
if (palette && typeof palette.color === "object") {
if (palette.color.scheme === "slate") {
const giscus = document.querySelector("script[src*=giscus]")
giscus.setAttribute("data-theme", "dark_protanopia")
}
}
document.addEventListener("DOMContentLoaded", function () {
const ref = document.querySelector("[data-md-component=palette]")
ref.addEventListener("change", function () {
var palette = __get("__palette")
if (palette && typeof palette.color === "object") {
const theme = palette.color.scheme === "slate" ? "dark_protanopia" : "light_protanopia"
const frame = document.querySelector(".giscus-frame")
frame.contentWindow.postMessage({
giscus: { setConfig: { theme } }
}, "https://giscus.app")
}
})
})
</script>
{% endblock %}