mirror of
https://github.com/PKUFlyingPig/cs-self-learning.git
synced 2026-06-23 01:47:13 +08:00
Merge remote-tracking branch 'upstream/master'
update local repository
This commit is contained in:
commit
97cf76690c
34 changed files with 668 additions and 36 deletions
|
|
@ -254,6 +254,8 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
|
|||
|
||||
[ASU CSE466: Computer Systems Security](系统安全/CSE466.md) 亚利桑那州立大学的系统安全课程,涉及内容全面。门槛较高,需要对 Linux, C 与 Python 充分熟悉。
|
||||
|
||||
[SU SEED Labs](系统安全/SEEDLabs.md) 雪城大学的网安课程,由 NSF 提供130万美元的资金支持,为网安教育开发了动手实践性的实验练习(称为 SEED Lab)。课程理论教学和动手实践并重,包含详细的开源讲义、视频教程、教科书(被印刷为多种语言)、开箱即用的基于虚拟机和 docker 的攻防环境等。目前全球有1050家研究机构在使用该项目。涵盖计算机和信息安全领域的广泛主题,包括软件安全、网络安全、Web 安全、操作系统安全和移动应用安全。
|
||||
|
||||
#### 实践课程
|
||||
|
||||
掌握这些理论知识之后,还需要在实践中培养和锻炼这些“黑客素养”。[CTF 夺旗赛](https://ctf-wiki.org/)是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了[第 0 届和第 1 届](https://geekgame.pku.edu.cn/),鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源:
|
||||
|
|
@ -326,6 +328,8 @@ Berkeley 作为著名开源数据库 postgres 的发源地也不遑多让,[UCB
|
|||
|
||||
#### 计算机视觉
|
||||
|
||||
[UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision](深度学习/EECS498-007.md)
|
||||
|
||||
[Stanford CS231n: CNN for Visual Recognition](深度学习/CS231.md)
|
||||
|
||||
#### 自然语言处理
|
||||
|
|
|
|||
BIN
docs/images/sponsor.png
Normal file
BIN
docs/images/sponsor.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 711 KiB |
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
# 前言
|
||||
|
||||
**最近更新:[Release v1.0.1](https://github.com/PKUFlyingPig/cs-self-learning/releases/tag/v1.0.1) 已发布 🎉**
|
||||
**最近更新:[Release v1.0.2](https://github.com/PKUFlyingPig/cs-self-learning/releases/tag/v1.0.2) 已发布 🎉**
|
||||
|
||||
这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。
|
||||
|
||||
|
|
@ -88,3 +88,11 @@
|
|||
## 关于交流群的建立
|
||||
|
||||
方法参见仓库的 `README.md`。
|
||||
|
||||
## 请作者喝杯下午茶
|
||||
|
||||
本书的内容是完全开源免费的,如果你觉得该项目对你真的有帮助,可以给仓库点个 star 或者请作者喝一杯下午茶。
|
||||
|
||||
<figure markdown>
|
||||
{ width="500" }
|
||||
</figure>
|
||||
29
docs/体系结构/CA.md
Normal file
29
docs/体系结构/CA.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# ETH: Computer Architecture
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:ETH Zurich
|
||||
- 先修要求:[DDCA](https://csdiy.wiki/%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/)
|
||||
- 编程语言:C/C++,verilog
|
||||
- 课程难度:🌟🌟🌟🌟
|
||||
- 预计学时:70 小时 +
|
||||
|
||||
讲解计算机体系结构,授课教师是 Onur Mutlu 教授。本课程根据课程描述应该是[DDCA](https://csdiy.wiki/%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/)的进阶课程,课程目标是学习如何为类MIPS处理器设计控制和数据通路硬件,如何通过流水线和简单的超标量执行使机器指令同时执行,以及如何设计快速的内存和存储系统。根据同学反馈,从课程本身的难度上说,至少高于 CS61C ,课程的部分内容十分前沿,B站搬运UP主建议大家作为卡内基梅隆大学18-447的补充。所提供的阅读材料十分丰富,相当于听了一学期讲座。
|
||||
|
||||
以下是官网的介绍:
|
||||
>We will learn the fundamental concepts of the different parts of modern computing systems, as well as the latest major research topics in Industry and Academia. We will extensively cover memory systems (including DRAM and new Non-Volatile Memory technologies, memory controllers, flash memory), new paradigms like processing-in-memory, parallel computing systems (including multicore processors, coherence and consistency, GPUs), heterogeneous computing, interconnection networks, specialized systems for major data-intensive workloads (e.g. graph analytics, bioinformatics, machine learning), etc. We will focus on fundamentals as well as cutting-edge research. Significant attention will be given to real-life examples and tradeoffs, as well as critical analysis of modern computing systems.
|
||||
|
||||
编程实践采取 Verilog 设计和模拟类 MIPS 流水线处理器的寄存器传输(RT)实现,以此加强对理论课程的理解。因此前几个实验会有 verilog 的 CPU 流水线编程。同时还将使用C语言开发一个周期精确的处理器模拟器,并使用该模拟器探索处理器设计选项。
|
||||
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:[2020 Fall](https://safari.ethz.ch/architecture/fall2022/doku.php?id=start), [2022 Fall](https://safari.ethz.ch/architecture/fall2022/doku.php?id=start)
|
||||
- 课程视频:官方视频详见课程网站。B站有个[2020年版本搬运](https://www.bilibili.com/video/BV1Vf4y1i7YG/?vd_source=77d47fcb2bac41ab4ad02f265b3273cf)。
|
||||
- 课程教材:无指定教材,每个 lecture 都有大量文献可供阅读
|
||||
- 课程作业:5 个 Project ,大多与内存和cache相关,具体内容见[课程网站的lab界面](https://safari.ethz.ch/architecture/fall2022/doku.php?id=labs)
|
||||
|
||||
## 资源汇总
|
||||
国内有高校引入了这门课,因此有需要的同学可以搜索到一些资源。
|
||||
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# Digital Design and Computer Architecture
|
||||
# ETH Zurich:Digital Design and Computer Architecture
|
||||
|
||||
## 课程简介
|
||||
|
||||
|
|
@ -14,8 +14,9 @@
|
|||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:<https://safari.ethz.ch/digitaltechnik/spring2020/>
|
||||
- 课程视频:<https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2>
|
||||
- 课程网站:[2020](https://safari.ethz.ch/digitaltechnik/spring2020/),[2023](https://safari.ethz.ch/digitaltechnik/spring2023/)
|
||||
- 课程视频:[youtube](https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2), [B站2020年版本搬运](https://www.bilibili.com/video/BV1MA411s7qq/?vd_source=77d47fcb2bac41ab4ad02f265b3273cf)
|
||||
- 课程教材1:Patt and Patel, Introduction to Computing Systems
|
||||
- 课程教材2:Harris and Harris, Digital Design and Computer Architecture (MIPS Edition)
|
||||
中文译本为《数字设计和计算机体系结构(原书第2版)》
|
||||
- 课程实验:9 个实验从零开始设计 MIPS CPU,详见课程网站
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
- [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-library](https://zlibrary-global.se/): 电子书下载网站(在 [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 电子杂志下载网站。
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ All resources used and assignments implemented by @PKUFlyingPig when learning th
|
|||
### Some Blogs for References
|
||||
|
||||
- [doraemonzzz](http://doraemonzzz.com/tags/6-S081/)
|
||||
- [Xiao Fan (樊潇)](https://fanxiao.tech/posts/MIT-6S081-notes/)
|
||||
- [Xiao Fan (樊潇)](https://fanxiao.tech/posts/2021-03-02-mit-6s081-notes/)
|
||||
- [Miigon's blog](https://blog.miigon.net/categories/mit6-s081/)
|
||||
- [Zhou Fang](https://walkerzf.github.io/categories/6-S081/index.html)
|
||||
- [Yichun's Blog](https://www.yichuny.page/tags/Operating%20System)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
### 一些可以参考的博客
|
||||
|
||||
- [doraemonzzz](http://doraemonzzz.com/tags/6-S081/)
|
||||
- [Xiao Fan (樊潇)](https://fanxiao.tech/posts/MIT-6S081-notes/)
|
||||
- [Xiao Fan (樊潇)](https://fanxiao.tech/posts/2021-03-02-mit-6s081-notes/)
|
||||
- [Miigon's blog](https://blog.miigon.net/categories/mit6-s081/)
|
||||
- [Zhou Fang](https://walkerzf.github.io/categories/6-S081/index.html)
|
||||
- [Yichun's Blog](https://www.yichuny.page/tags/Operating%20System)
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@
|
|||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:<http://jyywiki.cn/OS/2022/>
|
||||
- 课程网站:<https://jyywiki.cn/OS/2022/index.html>
|
||||
- 课程视频:<https://space.bilibili.com/202224425/channel/collectiondetail?sid=192498>
|
||||
- 课程教材:<http://pages.cs.wisc.edu/~remzi/OSTEP/>
|
||||
- 课程作业:<http://jyywiki.cn/OS/2022/>
|
||||
- 课程作业:<https://jyywiki.cn/OS/2022/index.html>
|
||||
|
||||
## 资源汇总
|
||||
|
||||
|
|
|
|||
|
|
@ -8,27 +8,53 @@
|
|||
- 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.
|
||||
As an introductory course to databases at CMU, this course is taught by Andy Pavlo, a leading figure in the database field (quoted as saying, "There are only two things I care about in this world, one is my wife, the second is the database").
|
||||
|
||||
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.
|
||||
This is a high-quality, resource-rich introductory course to Databases.
|
||||
|
||||
The faculty and the CMU Database Group behind the course have open-sourced all the corresponding infrastructure (Autograder, Discord) and course materials (Lectures, Notes, Homework), enabling any student who is willing to learn about databases to enjoy an experience almost equivalent to that of a CMU student.
|
||||
|
||||
One of the highlights of this course is the relational database [Bustub](https://github.com/cmu-db/bustub), which was specifically developed by the CMU Database Group for teaching purposes. It requires you to modify various components of this database and implement their functionalities.
|
||||
|
||||
Specifically, in 15-445, you will need to implement some key components in `Bustub`, a traditional disk-oriented relational database, through the progression of four Projects.
|
||||
|
||||
These components include the Buffer Pool Manager (for memory management), B Plus Tree (storage engine), Query Executors & Query Optimizer (operators & optimizer), and Concurrency Control, corresponding to `Project #1` through `Project #4`.
|
||||
|
||||
Worth mentioning is that, during the implementation process, students can compile `bustub-shell` through `shell.cpp` to observe in real-time whether their implemented components are correct. The feedback is very sufficient.
|
||||
|
||||
Furthermore, as a medium-sized project written in C++, bustub covers many requirements such as program construction, code standards, unit testing, etc., making it an excellent open-source project for learning.
|
||||
|
||||
## 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.
|
||||
- Course Website: [Fall 2019](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [Fall 2020](https://15445.courses.cs.cmu.edu/fall2020/schedule.html), [Fall 2021](https://15445.courses.cs.cmu.edu/fall2021/schedule.html), [Fall 2022](https://15445.courses.cs.cmu.edu/fall2022/schedule.html), [Spring 2023](https://15445.courses.cs.cmu.edu/spring2023/schedule.html)
|
||||
- Recording: The course website is freely accessible, and the [Youtube Lectures](https://www.youtube.com/playlist?list=PLSE8ODhjZXjaKScG3l0nuOiDTTqpfnWFf) for Fall 2022 are fully open-source.
|
||||
- Textbook: Database System Concepts
|
||||
- Assignments: 4 Projects
|
||||
- Assignments: Five Projects and Five Homework
|
||||
|
||||
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 2019, `Project #2` involved creating a hash index, and `Project #4` focused on logging and recovery.
|
||||
|
||||
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 2020, `Project #2` was centered on `B-trees`, while `Project #4` dealt with 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.
|
||||
In Fall 2021, `Project #1` required the creation of a buffer pool manager, `Project #2` involved a hash index, and `Project #4` focused on 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.
|
||||
In Fall 2022, the curriculum was similar to that of Fall 2021, with the only change being that the hash index was replaced by a B+ tree index, and everything else remained the same.
|
||||
|
||||
In Spring 2023, the overall content was largely identical to Fall 2022 (buffer pool, B+ tree index, operators, concurrency control), except `Project #0` shifted to `Copy-On-Write Trie`. Additionally, a fun task of registering uppercase and lowercase functions was introduced, which allows you to see the actual effects of the functions you write directly in the compiled `bustub-shell`, providing a great sense of achievement.
|
||||
|
||||
It's important to note that the versions of bustub prior to 2020 are no longer maintained.
|
||||
|
||||
The last `Logging & Recovery` Project in Fall 2019 is broken (it may still run on the `git head` from 2019, but Gradescope doesn't provide a public version, so it is not recommended to work on it, it is sufficient to just review the code and handout).
|
||||
|
||||
Perhaps in the Fall 2023 version, the recovery features will be fixed, and there may also be an entirely new `Recovery Project`. Let's wait and see 🤪.
|
||||
|
||||
If you have the energy, I highly recommend giving all of them a try, or if there's something in the book that you don't quite understand, attempting the corresponding project can deepen your understanding (I personally suggest completing all of them, as I believe it will definitely be beneficial).
|
||||
|
||||
## Personal Resources
|
||||
|
||||
The unofficial [Discord](https://discord.com/invite/YF7dMCg) is a great platform for discussion. The chat history practically documents the challenges that other students have encountered. You can also raise your own questions or help answer others', which I believe will be a great reference.
|
||||
|
||||
For a guidance to get through Spring 2023, you can refer to [this article](https://zhuanlan.zhihu.com/p/637960746) by [@xzhseh](https://github.com/xzhseh) on [Zhihu](https://www.zhihu.com/) (Note: Since the article is originally written in Chinese, you may need a translator to read it :) ). It covers all the tools you need to succeed, along with guides and, most importantly, pitfalls that I've encountered, seen, or stepped into during the process of doing the Project.
|
||||
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -3,33 +3,56 @@
|
|||
## 课程简介
|
||||
|
||||
- 所属大学:CMU
|
||||
- 先修要求:C++,数据结构与算法
|
||||
- 先修要求:C++,数据结构与算法,CMU 15-213 (A.K.A. CS:APP,这也是 CMU 内部对每年 Enroll 同学的先修要求)
|
||||
- 编程语言:C++
|
||||
- 课程难度:🌟🌟🌟🌟
|
||||
- 预计学时:100 小时
|
||||
|
||||
作为 CMU 数据库的入门课,这门课由数据库领域的大牛 Andy Pavlo 讲授(“这个世界上我只在乎两件事,一是我的老婆,二就是数据库”)。15-445 会自底向上地教你数据库系统的基本组成部分:存储、索引、查询,以及并发事务控制。
|
||||
这门课的亮点在于 CMU db 专门为此课开发了一个教学用的关系型数据库 [bustub](https://github.com/cmu-db/bustub),并要求你对这个数据库的组成部分进行修改,实现上述部件的功能。此外 bustub 作为一个 C++ 编写的中小型项目涵盖了程序构建、代码规范、单元测试等众多要求,可以作为一个优秀的开源项目学习。
|
||||
作为 CMU 数据库的入门课,这门课由数据库领域的大牛 Andy Pavlo 讲授(“这个世界上我只在乎两件事,一是我的老婆,二就是数据库”)。
|
||||
|
||||
这是一门质量极高,资源极齐全的 Database 入门课,这门课的 Faculty 和背后的 CMU Database Group 将课程对应的基础设施 (Autograder, Discord) 和课程资料 (Lectures, Notes, Homework) 完全开源,让每一个愿意学习数据库的同学都可以享受到几乎等同于 CMU 本校学生的课程体验。
|
||||
|
||||
这门课的亮点在于 CMU Database Group 专门为此课开发了一个教学用的关系型数据库 [bustub](https://github.com/cmu-db/bustub),并要求你对这个数据库的组成部分进行修改,实现上述部件的功能。
|
||||
|
||||
具体来说,在 15-445 中你需要在四个 Project 的推进中,实现一个面向磁盘的传统关系型数据库 Bustub 中的部分关键组件。
|
||||
|
||||
包括 Buffer Pool Manager (内存管理), B Plus Tree (存储引擎), Query Executors & Query Optimizer (算子们 & 优化器), Concurrency Control (并发控制),分别对应 `Project #1` 到 `Project #4`。
|
||||
|
||||
值得一提的是,同学们在实现的过程中可以通过 `shell.cpp` 编译出 `bustub-shell` 来实时地观测自己实现部件的正确与否,正反馈非常足。
|
||||
|
||||
此外 bustub 作为一个 C++ 编写的中小型项目涵盖了程序构建、代码规范、单元测试等众多要求,可以作为一个优秀的开源项目学习。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:[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)
|
||||
- 课程视频:课程网站免费观看
|
||||
- 课程网站:[Fall 2019](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [Fall 2020](https://15445.courses.cs.cmu.edu/fall2020/schedule.html), [Fall 2021](https://15445.courses.cs.cmu.edu/fall2021/schedule.html), [Fall 2022](https://15445.courses.cs.cmu.edu/fall2022/schedule.html), [Spring 2023](https://15445.courses.cs.cmu.edu/spring2023/schedule.html)
|
||||
- 课程视频:课程网站免费观看, Fall 2022 的 [Youtube 全开源 Lectures](https://www.youtube.com/playlist?list=PLSE8ODhjZXjaKScG3l0nuOiDTTqpfnWFf)
|
||||
- 课程教材:Database System Concepts
|
||||
- 课程作业:4 个 Project
|
||||
- 课程作业:5 个 Project 和 5 个 Homework
|
||||
|
||||
在 Fall2019 中,第二个 Project 是做哈希索引,第四个 Project 是做日志与恢复。
|
||||
在 Fall 2019 中,`Project #2` 是做哈希索引,`Project #4` 是做日志与恢复。
|
||||
|
||||
在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制。
|
||||
在 Fall 2020 中,`Project #2` 是做 B 树,`Project #4` 是做并发控制。
|
||||
|
||||
在 Fall2021 中,第一个 Project 是做缓存池管理,第二个 Project 是做哈希索引,第四个 Project 是做并发控制。
|
||||
在 Fall 2021 中,`Project #1` 是做缓存池管理,`Project #2` 是做哈希索引,`Project #4` 是做并发控制。
|
||||
|
||||
在 Fall2022 中,与 Fall2021 相比只有哈希索引换成了 B+ 树索引,其余都一样。
|
||||
在 Fall 2022 中,与 Fall 2021 相比只有哈希索引换成了 B+ 树索引,其余都一样。
|
||||
|
||||
如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。
|
||||
在 Spring 2023 中,大体内容和 Fall 2022 一样(缓存池,B+ 树索引,算子,并发控制),只不过 `Project #0` 换成了 `Copy-On-Write Trie`,同时增加了很好玩的注册大小写函数的 Task,可以直接在编译出的 `bustub-shell` 中看到自己写的函数的实际效果,非常有成就感。
|
||||
|
||||
值得注意的是,现在 bustub 在 2020 年以前的 version 都已经停止维护。
|
||||
|
||||
Fall 2019 的最后一个 `Logging & Recovery` 的 Project 已经 broken 了(在19年的 `git head` 上也许还可以跑,但尽管如此 Gradescope 应该也没有提供公共的版本,所以并不推荐大家去做,只看看代码和 Handout 就可以了)。
|
||||
|
||||
或许在 Fall 2023 的版本 Recovery 相关的功能会被修复,届时也可能有全新的 `Recovery Project`,让我们试目以待吧🤪
|
||||
|
||||
如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试做一做对应的 Project 会加深你的理解(个人建议还是要全部做完,相信一定对你有帮助)。
|
||||
|
||||
## 资源汇总
|
||||
|
||||
非官方的 [Discord](https://discord.com/invite/YF7dMCg) 是一个很好的交流平台,过往的聊天记录几乎记载了其他同学踩过的坑,你也可以提出你的问题,或者帮忙解答别人的问题,相信这是一份很好的参考。
|
||||
|
||||
关于 Spring 2023 的通关指南,可以参考 [@xzhseh](https://github.com/xzhseh) 的这篇[CMU 15-445/645 (Spring 2023) Database Systems 通关指北](https://zhuanlan.zhihu.com/p/637960746),里面涵盖了全部你需要的通关道具,和通关方式建议,以及最重要的,我自己在做 Project 的过程中遇到的,看到的,和自己亲自踩过的坑。
|
||||
|
||||
@ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: db - GitHub](https://github.com/ysj1173886760/Learning/tree/master/db) 中。
|
||||
|
||||
由于 Andy 的要求,仓库中没有 Project 的实现,只有 Homework 的 Solution。特别的,对于 Homework1,@ysj1173886760 还写了一个 Shell 脚本来帮大家执行自动判分。
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ RedBase 是 cs346 的一个项目,实现了一个简易的数据库系统,
|
|||
|
||||
5. Extension Component:除了上述数据库系统的基本功能组件,还需要实现一个扩展组件,可以是 Blob 类型、 网络模块、连接算法、CBO 优化器、OLAP、事务等。
|
||||
|
||||
RedBase 适合在学完 CMU-15445 后继续学习数据库系统中的其他组件,因为其代码量不多,可以方便的根据需要扩展代码。同时代码完全由 C++ 编写,也可以用于练习 C++ 编程技巧。
|
||||
RedBase 适合在学完 CMU 15-445 后继续学习数据库系统中的其他组件,因为其代码量不多,可以方便的根据需要扩展代码。同时代码完全由 C++ 编写,也可以用于练习 C++ 编程技巧。
|
||||
|
||||
## 课程资源
|
||||
|
||||
|
|
|
|||
18
docs/深度学习/CS224w.en.md
Normal file
18
docs/深度学习/CS224w.en.md
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# CS224w: Machine Learning with Graphs
|
||||
|
||||
## Descriptions
|
||||
|
||||
- Offered by: Stanford
|
||||
- Prerequisites: fundamental machine learning + Python
|
||||
- Programming Language: Python, LaTeX
|
||||
- Difficulty: 🌟🌟🌟🌟
|
||||
- Class Hour: 80 hours
|
||||
|
||||
Stanford's Introduction to Graph Neural Networks course, I haven't taken this course, but many friends who are focusing on GNN have recommended it to me, so I guess Stanford's course quality is still guaranteed as always. The instructor of this course is very young and handsome :)
|
||||
|
||||
## Course Resources
|
||||
|
||||
- Course Website: <http://web.stanford.edu/class/cs224w/>
|
||||
- Lecture Videos: <https://www.youtube.com/watch?v=JAB_plj2rbA>
|
||||
- Text Book: none
|
||||
- Assignments: <http://web.stanford.edu/class/cs224w/>, with 6 programming assignments, 3 LaTeX written assignments
|
||||
18
docs/深度学习/CS231.en.md
Normal file
18
docs/深度学习/CS231.en.md
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# CS231n: CNN for Visual Recognition
|
||||
|
||||
## Course Introduction
|
||||
|
||||
- Affiliated Universities:Stanford
|
||||
- Prerequisites: Foundations of Machine Learning
|
||||
- Programming Languages:Python
|
||||
- Course Difficulty:🌟🌟🌟🌟
|
||||
- Estimated hours: 80 hours
|
||||
|
||||
Stanford's CV introductory class, led by the giant of the computer field, Fei-Fei Li (the research team of the epoch-making famous dataset ImageNet in CV field), but its content is relatively basic and friendly, if you have taken CS230, you can directly start the Project as practice.
|
||||
|
||||
## Course Resources
|
||||
|
||||
- Course Website:<http://cs231n.stanford.edu/>
|
||||
- Course Video:<https://www.bilibili.com/video/BV1nJ411z7fe>
|
||||
- Course Materials: None
|
||||
- Coursework:<http://cs231n.stanford.edu/schedule.html>,3 Programming Assignments
|
||||
60
docs/深度学习/EECS498-007.en.md
Normal file
60
docs/深度学习/EECS498-007.en.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision
|
||||
|
||||
## Course Introduction
|
||||
|
||||
- Offered by: UMich
|
||||
- Prerequisites: Basic Python, Matrix Theory (familiarity with matrix derivation is sufficient), Calculus
|
||||
- Programming Languages: Python
|
||||
- Difficulty: 🌟🌟🌟🌟
|
||||
- Class Hour: 60 ~ 80 hours
|
||||
|
||||
The University of Michigan's Computer Vision course is of exceptionally high quality, with its videos and assignments covering an extensive range of topics.
|
||||
|
||||
The assignments gradually increase in difficulty and cover all stages of mainstream CV model development, making this an excellent introductory course for Computer Vision.
|
||||
|
||||
In each assignment, you'll build and train models or frameworks mentioned in the lectures, following the provided handouts.
|
||||
|
||||
You don't need any prior experience with deep learning frameworks.
|
||||
|
||||
The course will teach you from scratch how to use Pytorch in the early assignments, and it can subsequently serve as a reference book for you.
|
||||
|
||||
As each assignment deals with different themes, you'll not only gain a first-hand understanding of the development of mainstream CV models through these progressive assignments but also appreciate the impacts of different models and training methods on final performance and accuracy.
|
||||
|
||||
Moreover, you'll get hands-on experience in implementing them.
|
||||
|
||||
In Assignment 1 (A1), you'll learn how to use Pytorch and Google Colab.
|
||||
|
||||
In Assignment 2 (A2), you will build a Linear Classifier and a two-layer neural network. Finally, you'll have the opportunity to work with the MNIST dataset, on which you will train and evaluate your neural network.
|
||||
|
||||
In Assignment 3 (A3), you'll encounter the classic Convolutional Neural Network (CNN) and experience the power of convolutional neural networks.
|
||||
|
||||
In Assignment 4 (A4), you'll have the opportunity to build an object detection model from scratch, following the handout to implement a One-Stage Detector and a Two-Stage Detector from two research papers.
|
||||
|
||||
By Assignment 5 (A5), you'll transition from CNN to RNN. You'll have the opportunity to build two different attention-based models, RNNs (Vanilla RNN & LSTM), and the famous Transformer.
|
||||
|
||||
In the final assignment (A6), you'll get a chance to implement two more advanced models, VAE and GAN, and apply them to the MNIST dataset. Finally, you'll implement two very cool features: network visualization and style transfer.
|
||||
|
||||
Beyond the assignments, you can also implement a Mini-Project, building a complete deep learning pipeline. You can refer to the course homepage for specifics.
|
||||
|
||||
All the resources involved in the course, such as lectures, notes, and assignments, are open source.
|
||||
|
||||
The only downside is that the Autograder is only available to students enrolled at the University of Michigan.
|
||||
|
||||
However, given that the correctness of the implementation and the expected results can already be confirmed in the provided *.ipynb (i.e., the Handout), I personally feel that the absence of Autograder doesn't affect the learning process.
|
||||
|
||||
It's worth mentioning that the main lecturer for this course, Justin Johnson, is a Ph.D. graduate of Fei-Fei Li and currently an Assistant Professor at the University of Michigan.
|
||||
|
||||
The open-source 2017 version of Stanford's CS231N was taught by Justin Johnson.
|
||||
|
||||
Because CS231N was mainly developed by Justin Johnson and Andrej Karpathy, this course also adopts some materials from CS231N.
|
||||
|
||||
Therefore, students who have studied CS231N might find some materials in this course familiar.
|
||||
|
||||
Lastly, I recommend every student enrolled in this course to watch the lectures on YouTube. Justin Johnson's teaching style and content are very clear and easy to understand, making them a fantastic resource.
|
||||
|
||||
## Course Resources
|
||||
|
||||
- Course Website:<https://web.eecs.umich.edu/~justincj/teaching/eecs498/WI2022/>
|
||||
- Course Video:<https://www.youtube.com/playlist?list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r>
|
||||
- Course Materials: Only recommended textbooks, link: <https://www.deeplearningbook.org/>
|
||||
- Coursework:See the course homepage for details, six Assignments and one Mini-Project
|
||||
48
docs/深度学习/EECS498-007.md
Normal file
48
docs/深度学习/EECS498-007.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:UMich
|
||||
- 先修要求:Python基础,矩阵论(熟悉矩阵求导即可),微积分
|
||||
- 编程语言:Python
|
||||
- 课程难度:🌟🌟🌟🌟
|
||||
- 预计学时:60~80 小时
|
||||
|
||||
UMich 的 Computer Vision 课,课程视频和作业质量极高,涵盖的主题非常全,同时 Assignments 的难度由浅及深,覆盖了 CV 主流模型发展的全阶段,是一门非常好的 Computer Vision 入门课。
|
||||
|
||||
你在每个 Assignment 里会跟随 Handouts 搭建与训练 Lectures 中提到的模型/框架。
|
||||
|
||||
你不需要有任何的深度学习框架的使用经验,在开始的 Assignment 里,这门课会从零开始教导每个学生如何使用 Pytorch,后续也可以当成工具书,随时翻阅。
|
||||
|
||||
同时由于每个 Assignment 之间涉及到的主题都不同,你在递进式的 Assignment 中不仅可以亲身体会到 CV 主流模型的发展历程,领略到不同的模型和训练的方法对最终效果/准确率的影响,同时也能 Hands On 地实现它们。
|
||||
|
||||
在 A1 中,你会学习 Pytorch 和 Google Colab 的使用。
|
||||
|
||||
在 A2 中你会亲自搭建 Linear Classifier 以及一个两层的神经网络,最后你有机会亲自接触 MNIST 数据集并在此基础上训练并评估你搭建起的神经网络。
|
||||
|
||||
在 A3 中,你会接触到最为经典的 Convolutional Neural Network (A.K.A. CNN),亲自感受卷积神经网络的魅力。
|
||||
|
||||
而在 A4 中,你将实际触及搭建物体检测模型的全流程,同时跟随 Handout 实现两篇论文中的 One-Stage Detector 和 Two-Stage Detector。
|
||||
|
||||
到了 A5,就是从 CNN 到 RNN 的时刻了,你将有机会亲自搭建起两种不同的基于注意力的模型,RNNs (Vanilla RNN & LSTM) 和大名鼎鼎的 Transfomer。
|
||||
|
||||
在最后一个 Assignment(A6)中,你将有机会实现两种更为 Fancy 的模型,VAE 和 GAN,并应用在 MINST 数据集上。最后,你会实现网络可视化和风格迁移这两个非常酷炫的功能。
|
||||
|
||||
在 Assignments 之外,你还可以自己实现一个 Mini-Project,亲自搭建起一个完整的深度学习 Pipeline,具体可以参考课程主页。
|
||||
|
||||
课程所涉及的资源,如 Lectures/Notes/Assignments 都是开源的,美中不足的是 Autograder 只对本校 Enrolled 的学生开放,但因为在提供的 `*.ipynb`(也就是 Handout) 中已经可以确定实现的正确性,以及预期的结果,所以我个人觉得 Autograder 的缺失没有任何影响。
|
||||
|
||||
值得一提的是,这门课的主讲教授 Justin Johnson 正是 Fei-Fei Li 的博士毕业生,现在在 UMich 当 Assistant Professor。
|
||||
|
||||
而现在开源的 2017 年版本的 Stanford CS231N 的主讲人就是 Justin Johnson。
|
||||
|
||||
同时因为 CS231N 主要是由 Justin Johnson 和 Andrej Karpathy 建设起来的,这门课也沿用了 CS231N 的一些材料,所以学过 CS231N 的同学可能会觉得这门课的某些材料比较熟悉。
|
||||
|
||||
最后,我推荐每一个 Enroll 这门课的同学都去看一看 Youtube 上面的 Lectures,Justin Johnson 的讲课方式和内容都非常清晰和易懂,是非常棒的参考。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:<https://web.eecs.umich.edu/~justincj/teaching/eecs498/WI2022/>
|
||||
- 课程视频:<https://www.youtube.com/playlist?list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r>
|
||||
- 课程教材:仅有推荐教材,链接:<https://www.deeplearningbook.org/>
|
||||
- 课程作业:见课程主页,6 个 Assignment 和一个 Mini-Project
|
||||
24
docs/系统安全/SEEDLabs.en.md
Normal file
24
docs/系统安全/SEEDLabs.en.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# SEEDLabs
|
||||
|
||||
## Descriptions
|
||||
|
||||
- Offered by: Syracuse University
|
||||
- Prerequisites: None
|
||||
- Programming Languages: C, x86 assembly
|
||||
- Difficulty: 🌟🌟🌟🌟
|
||||
- Class Hour: 150 Hours
|
||||
|
||||
Syracuse University's cybersecurity course, supported by a $1.3 million grant from the NSF, has developed hands-on practical lab exercises known as SEED Labs. This course emphasizes both theoretical instruction and practical hands-on experience, providing detailed open-source lecture materials, video tutorials, textbooks printed in multiple languages, and ready-to-use attack and defense environments based on virtual machines and Docker. Currently, 1,050 research institutions worldwide are using this project.
|
||||
|
||||
It covers a wide range of topics in the field of computer and information security, including software security, network security, web security, operating system security, and mobile application security.
|
||||
|
||||
## Course Resources
|
||||
|
||||
- Course Website: <https://seedsecuritylabs.org/index.html>
|
||||
- Recordings: <https://www.handsonsecurity.net/video.html>
|
||||
- Textbooks: <https://www.handsonsecurity.net/index.html>
|
||||
- Assignments: There are more than 40 labs in this course, the lab environment can be built with customized virtual machines and docker provided by the course in [quickly set up](https://seedsecuritylabs.org/labsetup.html) , and detailed principle explanations and experimental guidance are also provided. Take [Buffer Overflow Experiment](https://seedsecuritylabs.org/Labs_20.04/Software/Buffer_Overflow_Setuid/) as an example. This experiment belongs to [Software Security Topic](https://seedsecuritylabs.org/Labs_20.04/Software /), here is its [Experimental Guide](https://seedsecuritylabs.org/Labs_20.04/Files/Buffer_Overflow_Setuid/Buffer_Overflow_Setuid.pdf), here is its corresponding [Textbook Content](https://www.handsonsecurity .net/files/chapters/buffer_overflow_c.pdf)
|
||||
|
||||
## Personal Resources
|
||||
|
||||
All resources and assignment implementations used by @LaPhilosophie in learning this course are maintained in [LaPhilosophie/seedlab - GitHub](https://github.com/LaPhilosophie/seedlab).
|
||||
25
docs/系统安全/SEEDLabs.md
Normal file
25
docs/系统安全/SEEDLabs.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# SEEDLabs
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:雪城大学
|
||||
- 先修要求:无
|
||||
- 编程语言:C,汇编
|
||||
- 课程难度:🌟🌟🌟🌟
|
||||
- 预计学时:150 小时
|
||||
|
||||
雪城大学的网安课程,由 NSF 提供130万美元的资金支持,为网安教育开发了动手实践性的实验练习(称为 SEED Lab)。课程理论教学和动手实践并重,包含详细的 [开源讲义](https://github.com/seed-labs/seed-labs) 、视频教程、教科书(被印刷为多种语言)、开箱即用的基于虚拟机和 docker 的攻防环境等。目前全球有1050家研究机构在使用该项目。
|
||||
|
||||
涵盖计算机和信息安全领域的广泛主题,包括软件安全、网络安全、Web 安全、操作系统安全和移动应用安全。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:<https://seedsecuritylabs.org/index.html>
|
||||
- 课程视频:<https://www.handsonsecurity.net/video.html>
|
||||
- 课程教材:<https://www.handsonsecurity.net/index.html>
|
||||
- 课程作业:四十多个安全领域的lab,实验环境可由课程提供的定制虚拟机和 docker [快速搭建](https://seedsecuritylabs.org/labsetup.html),并且提供详细的原理讲解、实验指导。以 [缓冲区溢出实验](https://seedsecuritylabs.org/Labs_20.04/Software/Buffer_Overflow_Setuid/) 为例,该实验属于 [软件安全主题](https://seedsecuritylabs.org/Labs_20.04/Software/) ,这里是它的 [实验指导](https://seedsecuritylabs.org/Labs_20.04/Files/Buffer_Overflow_Setuid/Buffer_Overflow_Setuid.pdf) ,这里是它对应的 [教材内容](https://www.handsonsecurity.net/files/chapters/buffer_overflow_c.pdf)
|
||||
|
||||
## 资源汇总
|
||||
|
||||
@LaPhilosophie 在学习这门课中用到的所有资源和作业实现都汇总在 [LaPhilosophie/seedlab - GitHub](https://github.com/LaPhilosophie/seedlab) 中。
|
||||
|
||||
34
docs/编程入门/CS3110.en.md
Normal file
34
docs/编程入门/CS3110.en.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# CS3110:OCaml Programming Correct + Efficient + Beautiful
|
||||
|
||||
## Descriptions
|
||||
|
||||
- Offered by: Cornell University
|
||||
- Prerequisites: basic knowledge about imperative programming,such as C, Python, Java
|
||||
- Programming Languages: OCaml
|
||||
- Difficulty: 🌟🌟🌟
|
||||
- Class Hour: 40 hours
|
||||
|
||||
### Evaluation for course: Modern SICP
|
||||
|
||||
If the best course for getting started with programming is SICP, then following it is CS3110.
|
||||
|
||||
If you are unfamiliar with what a functional programming language is, or have only heard the term, then this course, just like its name, will allow you to experience what is meant by correctness, efficiency, and elegance.
|
||||
|
||||
CS3110 is not only limited to functional programming, but it also combines theory and practical applications extensively. The course content goes further, covering OCaml language fundamentals, data structures and algorithms, test development, formal proofs, language feature implementation, and many more topics. Moreover, these contents are not isolated; instead, they are progressive and complementary, making it highly worth studying.
|
||||
|
||||
The main instructor, Michael Ryan Clarkson, with years of immersion in programming, employs simple language, clear explanations, and dissects the content with precision. The course videos are even useful for improving listening skills, and understanding is effortless with the aid of English subtitles.
|
||||
|
||||
### A Brief History of CS 3110
|
||||
|
||||
CS3110 is a course meticulously crafted by Cornell University over more than 20 years. Initially inspired by MIT6.001 SICP, it has been enriched with stricter methodologies and materials, encompassing functional programming, environment modeling, data structures, algorithms, and language implementation. In 2008, its formal title changed to CS3110, transitioning to the OCaml language. In the fall of 2018, the process of writing the [course textbook](https://cs3110.github.io/textbook) began. The current course instructor announced [course videos](https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU) on YouTube in 2021.
|
||||
|
||||
## Course Resources
|
||||
|
||||
- Recordings on youtube: <https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU>
|
||||
- Recordings on Bilibili: <https://www.bilibili.com/video/BV1dv4y127Ui/>
|
||||
- Textbook:<https://cs3110.github.io/textbook>
|
||||
- Assignments:In the textbook, exercises are optional, with difficulty ranging from 1 to 4 stars, noting that the difficulty between 3-star and 4-star exercises varies significantly.
|
||||
|
||||
## Personal Resources
|
||||
|
||||
All the resources and assignments used by @featherwit001 in this course are maintained in[featherwit001/CS3110_OCaml_Programming - GitHub](https://github.com/featherwit001/CS3110_OCaml_Programming)
|
||||
34
docs/编程入门/CS3110.md
Normal file
34
docs/编程入门/CS3110.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# CS3110:OCaml Programming Correct + Efficient + Beautiful
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:Cornell
|
||||
- 先修要求:了解一门命令式编程语言,类C语言
|
||||
- 编程语言:OCaml
|
||||
- 课程难度:🌟🌟🌟
|
||||
- 预计学时:40 小时
|
||||
|
||||
### 课程评价: modern SICP
|
||||
|
||||
如果说编程入门的最好的课程是 SICP。在其之后,就是 CS3110。
|
||||
|
||||
如果你不知道什么叫函数式编程语言,或者只是听过这个名词,那么这门课程,正如它的名字,会让你体会到什么叫正确,高效和美。
|
||||
|
||||
CS3110 不仅局限于函数式编程,更是将理论和实用充分结合。课程内容更进一步,涵盖了 OCaml 语言基础,数据结构和算法,测试开发,形式证明,语言特性实现等诸多内容。而且内容之间并不割裂,而是递进和互补,非常值得学习。
|
||||
|
||||
主讲老师 Michael Ryan Clarkson,浸淫编程多年,用词简单,表述清晰,内容环环相扣,剖析一针见血。课程视频甚至用来练听力,听不懂开英文字幕理解起来毫不费力。
|
||||
|
||||
### 课程简史,摘自课程教材
|
||||
|
||||
CS3110 是康奈尔大学打磨 20 余年的课程。最初发源于 MIT6.001 SICP,在其基础上增加更严格方法和材料,涵盖函数式编程,环境模型,数据结构,算法和语言实现。2008 年,正式名称改为 CS3110,改用 OCaml 语言。2018 年秋季,开始编写[课程教材](https://cs3110.github.io/textbook)。现任课程的主讲老师于 2021 年在 youtube 上公布了[课程视频](https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU)。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程视频油管: <https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU>
|
||||
- 课程视频B站: <https://www.bilibili.com/video/BV1dv4y127Ui/>
|
||||
- 课程教材:<https://cs3110.github.io/textbook>
|
||||
- 课程作业:课程教材中 exercises 自选,难度 1 至 4 星,注意 3 星至 4 星的难度跨越很大。
|
||||
|
||||
## 资源汇总
|
||||
|
||||
@featherwit001 在学习这门课中用到的所有资源和作业实现都汇总在 [featherwit001/CS3110_OCaml_Programming - GitHub](https://github.com/featherwit001/CS3110_OCaml_Programming) 中。
|
||||
|
|
@ -26,7 +26,7 @@ Note: If you have no prior programming experience at all, getting started with C
|
|||
|
||||
- Course Website: <https://inst.eecs.berkeley.edu/~cs61a/su20/>
|
||||
- Recordings: refer to the course website
|
||||
- Textbook: <http://composingprograms.com/>
|
||||
- Textbook: <https://www.composingprograms.com/>
|
||||
- Assignments: refer to the course website
|
||||
|
||||
## Personal Resources
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ CS61B 和 CS61C 在本书中均有收录。
|
|||
|
||||
- 课程网站:<https://inst.eecs.berkeley.edu/~cs61a/su20/>
|
||||
- 课程视频: 参见课程网站链接
|
||||
- 课程教材:<http://composingprograms.com/>
|
||||
- 课程教材:<https://www.composingprograms.com/>
|
||||
- 课程教材中文翻译:<https://composingprograms.netlify.app/>
|
||||
- 课程作业:课程网站会有每个作业对应的文档链接以及代码框架的下载链接。
|
||||
|
||||
|
|
|
|||
23
docs/编程入门/DeCal.md
Normal file
23
docs/编程入门/DeCal.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# UCB: Sysadmin DeCal
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:UCB
|
||||
- 先修要求:无
|
||||
- 编程语言:shell
|
||||
- 课程难度:🌟🌟🌟
|
||||
- 预计学时:20小时
|
||||
|
||||
来自 UCB 的一门讲解 Linux 的入门课程,比起定位相同的 MIT 的公开课 Missing Semester,Decal 讲解得更加系统、也更加清晰,这也是我推荐它的主要原因。比起 Missing Semester 更像是给已经开始编程但没有系统使用过这些工具的学生的查缺补漏,DeCal 更像是面向零基础的同学的课程。一共十二周的课程内容,包括 Linux 基础、shell 编程(还有tmux 、vim)、包管理、服务(Services)、基础计算机网络、网络服务、安全(密钥管理)、Git、Docker、Kubernetes、Puppet 和 CUDA。 十分适合新手了解和入门 Linux 环境相关内容。
|
||||
|
||||
美中不足的是部分课程作业需要在远程服务器操作,比如关于 ssh 的练习,需要 UCB 内部账号访问。但是大部分作业可以通过自己搭建的虚拟机 + 使用 Xshell 等工具或者直接使用 Linux 桌面版来操作练习,在听完完整课程和做完作业后,相信已经对 Linux 有最基本的了解了。
|
||||
|
||||
为弥补无法使用远程服务器的不足以及熟悉 linux 命令行的需求,在此推荐 [bandit](https://overthewire.org/wargames/bandit/) 。bandit 是一款来自OverTheWire 网站的 Wargame,为 CTF 爱好者提供免费的练习靶场。bandit 的前 15 个 level 都是基础的 linux 操作而不涉及任何 CTF 知识。这些练习也正好弥补了 DeCal 外校无法访问的部分(主要是远程链接、文件权限)等内容。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:[官网](https://decal.ocf.berkeley.edu/)
|
||||
- 课程视频:见课程官网,[B站](https://www.bilibili.com/video/BV1rs4y1T7zJ/?share_source=copy_web)有一个只有前一部分的不完全搬运
|
||||
- 课程教材:无指定教材,但每一周的 labs 之中都有足够的阅读材料供你深入细节。
|
||||
- 课程作业:见课程官网
|
||||
|
||||
|
|
@ -17,6 +17,6 @@
|
|||
- 课程中文网站: <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>
|
||||
- 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>
|
||||
- 课程作业:一些随堂小练习,具体见课程网站。
|
||||
|
|
|
|||
22
docs/编程入门/cs431.en.md
Normal file
22
docs/编程入门/cs431.en.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# CS431: Concurrent Programming
|
||||
|
||||
## Descriptions
|
||||
|
||||
- Offered by: KAIST
|
||||
- Prerequisites: Basic Understanding of Concurrency and Rust Programming
|
||||
- Programming Languages: Rust
|
||||
- Difficulty: 🌟🌟🌟🌟
|
||||
- Class Hour: 50 hours
|
||||
|
||||
CS431 is a course about concurrent programming, mainly using Rust. The course consists of two parts: theory and practice. The theory part focuses on building a programming model under concurrent situations, while the practice part mainly focuses on understanding the implementation principles of locks and lock-free data structures in Rust-related libraries.
|
||||
|
||||
This course is accompanied by a series of assignments with small code size but not simple to consolidate your understanding of concurrent programming, from the design of concurrent safe cache and linked list based on locks, to lock-free hash table and the famous [hazard pointer](https://ieeexplore.ieee.org/document/1291819). Like many high-quality courses, these assignments are of high quality and come with detailed local tests, which are suitable for self-study.
|
||||
|
||||
This course is much more in-depth than I expected. The knowledge I know about spin locks and mutex locks is the most basic in this course, while the introduction of promising semantics, memory model and lock-free data structures gives me a deeper understanding of concurrency and Rust.
|
||||
|
||||
## Course Resources
|
||||
|
||||
- Course Website:[Website](https://github.com/kaist-cp/cs431)
|
||||
- Recordings:[Youtube](https://www.youtube.com/playlist?list=PL5aMzERQ_OZ9j40DJNlsem2qAGoFbfwb4)
|
||||
- Textbooks: [Slides](https://docs.google.com/presentation/d/1NMg08N1LUNDPuMxNZ-UMbdH13p8LXgMM3esbWRMowhU/edit?usp=sharing)
|
||||
- Assignments: [Homework](https://github.com/kaist-cp/cs431/tree/main/homework)
|
||||
22
docs/编程入门/cs431.md
Normal file
22
docs/编程入门/cs431.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# CS431: Concurrent Programming
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:KAIST
|
||||
- 先修要求:Rust 编程基础与对并发的初步了解
|
||||
- 编程语言:Rust
|
||||
- 课程难度:🌟🌟🌟🌟
|
||||
- 预计学时:50 小时
|
||||
|
||||
CS431是一门讨论并发编程的课程,主要使用 Rust 语言。课程内容主要包括理论与实践两个部分。理论部分聚焦于建立并发情形下的编程模型,而实践部分则主要是理解 Rust 相关库中锁与无锁数据结构的实现原理。
|
||||
|
||||
这门课程同时配有一系列代码量不大但并不简单的作业来巩固你对并发编程的理解,从基于锁的并发安全缓存设计和链表,到无锁的哈希表和著名的 [hazard pointer](https://ieeexplore.ieee.org/document/1291819). 和众多高质量课程一样,这些作业质量较高且配有详细的本地测试,适合自学。
|
||||
|
||||
这门课程比我预想的要深入的多,我所知晓的关于自旋锁,互斥锁的知识在该门课程中都是最基础的,而对于 promising semantics, 访存模型和无锁数据结构的介绍让我对并发和 Rust 都有更深入的理解。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:[Website](https://github.com/kaist-cp/cs431)
|
||||
- 课程视频:[Youtube](https://www.youtube.com/playlist?list=PL5aMzERQ_OZ9j40DJNlsem2qAGoFbfwb4)
|
||||
- 课程教材:[Slides](https://docs.google.com/presentation/d/1NMg08N1LUNDPuMxNZ-UMbdH13p8LXgMM3esbWRMowhU/edit?usp=sharing)
|
||||
- 课程作业:[Homework](https://github.com/kaist-cp/cs431/tree/main/homework)
|
||||
45
docs/编程语言设计与分析/CS242.en.md
Normal file
45
docs/编程语言设计与分析/CS242.en.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# CS242 Programming Languages
|
||||
|
||||
## Descriptions
|
||||
|
||||
- Offered by: Stanford
|
||||
- Prerequisites: basic knowledge about programming language theory and computer system
|
||||
- Programming Languages: OCaml, Rust
|
||||
- Difficulty: 🌟🌟🌟🌟
|
||||
- Class Hour: 60 hours
|
||||
|
||||
CS242 is a course about programming languages (PL), but it is not a pure theoretical course in the traditional sense. This course first introduces classic PL theories such as Lambda calculus and type system, then uses the ideas and actual programming languages of system programming to motivate students to understand these theories, and shows how they help developers avoid various errors in actual programming.
|
||||
|
||||
The instructor Will Crichton also wrote his course design ideas into a paper [From Theory to Systems: A Grounded Approach to Programming Language Education](https://arxiv.org/abs/1904.06750), which elaborates this teaching route from theory to systems.
|
||||
|
||||
We help readers understand the specific content of this course by simply introducing each assignment:
|
||||
|
||||
- Formalization and proof of JSON
|
||||
- Classic Lambda calculus in PL
|
||||
- Introduction to functional programming using OCaml
|
||||
- Use OCaml to implement a type checker and interpreter for a functional language, which is also a classic assignment in PL
|
||||
- Theory and practice of WebAssembly
|
||||
- Linear Type and Rust's ownership mechanism
|
||||
- Rust's asynchronous programming basics
|
||||
- Design state machines and implement session-typed TCP libraries using Rust's type system
|
||||
- The final assignment has four options:
|
||||
1. Theorem proving in Lean
|
||||
2. Read-Log-Update in Rust
|
||||
3. Verified filesystems in F-Star
|
||||
4. Deep learning framework in OCaml from a PL perspective
|
||||
|
||||
These assignments cover a wide range of knowledge, from the classic PL theory and practice to the impact of programming languages such as Rust on programming and system design, and finally the distinctive projects. Almost all programming assignments have detailed local tests, especially the deep learning framework in the final project has more than 200 tests, which is suitable for self-study.
|
||||
|
||||
The first few assignments are more about PL theory, and the later assignments are more about system programming.
|
||||
If you think that the course content and assignments in the first few times are too theoretical, you can focus on the assignment of implementing the interpreter using OCaml, which can not only help you have a deeper understanding of the previous theory, but also let you practice the type checking and interpretation of a functional language.
|
||||
|
||||
The later assignments tend to use theory to guide system programming and design, especially Rust and its unique ownership mechanism and type system. Although we often have to fight with the compiler, this also just shows the significance of type systems and theories for programming and design.
|
||||
|
||||
I personally feel that the assignments are difficult, but the gains are great. When the programming practice in the later assignments intersects with the theoretical knowledge learned before, there will be a pleasant feeling of sudden enlightenment. If you encounter difficulties in completing the assignments, this is normal. Please calm down and think carefully, or read the assignment guide again.
|
||||
|
||||
## Course Resources
|
||||
|
||||
- Course Website: [https://stanford-cs242.github.io/f19/](https://stanford-cs242.github.io/f19/)
|
||||
- Recordings: None, the main learning resources are the course notes and assignments
|
||||
- Textbooks: The first half of the course is based on the famous [TAPL](https://www.cis.upenn.edu/~bcpierce/tapl/), and the second half has no fixed textbook
|
||||
- Assignments: [Assignment Guide](https://stanford-cs242.github.io/f19/assignments/) and [Assignment Repository](https://github.com/stanford-cs242/f19-assignments)
|
||||
45
docs/编程语言设计与分析/CS242.md
Normal file
45
docs/编程语言设计与分析/CS242.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# CS242 Programming Languages
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:Stanford
|
||||
- 先修要求:对计算机系统和编程语言理论有初步了解
|
||||
- 编程语言:OCaml, Rust
|
||||
- 课程难度:🌟🌟🌟🌟
|
||||
- 预计学时:60 小时
|
||||
|
||||
CS242是一门讲程序语言 (Programming Language, PL) 的课程,但不是传统意义上的纯理论导向。这门课程首先介绍了如 Lambda 演算,类型系统这样的经典 PL 理论,然后借助系统编程的思想和实际的编程语言来驱动学生理解这些理论,展示了它们是如何在实际编程中帮助开发者避免各种错误。
|
||||
|
||||
主讲老师 Will Crichton 还将他的课程设计思想写成了论文 [From Theory to Systems: A Grounded Approach to Programming Language Education](https://arxiv.org/abs/1904.06750),阐述了这条从理论走向系统的教学路线。
|
||||
|
||||
我们通过简单介绍每个作业来帮助读者了解这门课程的具体内容:
|
||||
|
||||
- 对 JSON 的形式化与证明
|
||||
- PL 中经典的 Lambda 演算
|
||||
- 以 OCaml 为例的函数式编程入门
|
||||
- 使用 OCaml 实现一个函数式语言的类型检查器和解释器,同样是 PL 的经典作业
|
||||
- WebAssembly 的理论与实践
|
||||
- Linear Type 和 Rust 的所有权机制
|
||||
- Rust 的异步编程基础
|
||||
- 利用 Rust 类型系统设计状态机和实现 session-typed TCP 库
|
||||
- 最后的大作业有四个可选项:
|
||||
1. 使用 Lean 进行定理证明
|
||||
2. 使用 Rust 实现 Read-Log-Update 同步机制
|
||||
3. 利用 F* 语言验证文件系统的正确性
|
||||
4. 在程序语言视角下使用 OCaml 实现一个深度学习框架
|
||||
|
||||
这些作业涵盖知识跨度非常大,从最经典的编程语言理论证明和实践到以 Rust 为例的编程语言对于编程和系统设计的影响,再到最后各有特色的大作业。几乎所有的编程作业都有详尽的本地测试,尤其是大作业中的深度学习框架更有超过 200 个测试,适合自学。
|
||||
|
||||
前面几次的作业偏 PL 理论,后面几次的作业偏系统编程。
|
||||
如果你觉得前面几次的课程内容和作业过于理论,可以重点尝试使用 OCaml 实现解释器的作业,它既能让你对之前的理论有更深刻的理解,又能让你实战一个函数式语言的类型检查和解释。
|
||||
|
||||
而后面的作业则更倾向于利用理论来指导系统编程与设计,尤其是 Rust 和它独特的所有权机制与类型系统。虽然我们要经常与编译器搏斗,但这也恰好说明了类型系统和理论对于编程和设计的意义。
|
||||
|
||||
个人自学过程中感觉作业还是偏难的,但收获很大,在后续作业的编程实践和前面所学的理论知识产生交集时会有恍然大悟的愉悦。如果你在完成作业时遇到了困难,这是十分正常的,请静下心来认真思考,或者再读一遍实验指导。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:[官网](https://stanford-cs242.github.io/f19/)
|
||||
- 课程视频:无,主要学习途径是课程笔记和完成作业
|
||||
- 课程教材:前半部分是著名的[TAPL](https://www.cis.upenn.edu/~bcpierce/tapl/),后半部分则无固定教材
|
||||
- 课程作业:[实验指导](https://stanford-cs242.github.io/f19/assignments/)与[作业仓库](https://github.com/stanford-cs242/f19-assignments)
|
||||
27
docs/编程语言设计与分析/NJU-SoftwareAnalysis.en.md
Normal file
27
docs/编程语言设计与分析/NJU-SoftwareAnalysis.en.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# NJU Software Analysis
|
||||
|
||||
## Descriptions
|
||||
|
||||
- Offered by: Nanjing University
|
||||
- Prerequisite: Data Structures and Algorithms, familiar with at least one programming language
|
||||
- Programming Languages: Java
|
||||
- Difficulty: 🌟🌟🌟
|
||||
- Learning Hours: 60 hours
|
||||
|
||||
Software Analysis is a course jointly offered by Yue Li and Tian Tan of Nanjing University. It mainly introduces program analysis, which refers to the theory and practice of static analysis. The idea of static analysis is to obtain **approximate** answers about specific properties of the program without running it. This course starts with the abstract syntax tree, control flow graph and intermediate representation, then introduces the theory and practice of data flow analysis and pointer analysis, and finally introduces several advanced topics, such as IFDS.
|
||||
|
||||
In my opinion, there are two reasons why this course is worth learning:
|
||||
|
||||
- Teaching. Program analysis is generally not easy to get started, but the two teachers are particularly meticulous in their lectures, and they will also guide you step by step through the process of an algorithm. Personally, I think that as long as you listen carefully in class, there is no problem that you can't understand.
|
||||
|
||||
- Assignments. The assignments are based on the Java program analysis framework Tai-e created by the teachers. The eight assignments cover a variety of static analysis techniques, including compiler optimization (liveness analysis, constant propagation, dead code detection), basic program analysis (program call graph construction, non/context-sensitive pointer analysis), and the application of program analysis in software security (taint analysis). The course also provides an online evaluation system available to **everyone**, which is suitable for self-study.
|
||||
|
||||
The assignments are mainly to implement the pseudo-code algorithms in class, so as to better help you understand the knowledge taught in class. I feel that the difficulty is not particularly high, especially suitable for completing the corresponding experiments after class to test your mastery of the knowledge taught in class. However, it is still challenging to pass all the test cases of each assignment.
|
||||
|
||||
## Resources
|
||||
|
||||
- Course Website: [Homepage](https://tai-e.pascal-lab.net/lectures.html)
|
||||
- Course Video: [Bilibili](https://www.bilibili.com/video/BV1b7411K7P4/?spm_id_from=333.999.0.0&vd_source=b58da8cd0259ee873ef3dc2c9aa36d74)
|
||||
- Course Textbook: None
|
||||
- Course Assignments: [Homepage](https://tai-e.pascal-lab.net/intro/overview.html)
|
||||
- OJ: [OJ](https://oj.pascal-lab.net/problem)
|
||||
32
docs/编程语言设计与分析/NJU-SoftwareAnalysis.md
Normal file
32
docs/编程语言设计与分析/NJU-SoftwareAnalysis.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# NJU 软件分析
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:南京大学
|
||||
- 先修要求:数据结构与算法,至少熟悉一门编程语言
|
||||
- 编程语言:Java
|
||||
- 课程难度:🌟🌟🌟
|
||||
- 预计学时:60 小时
|
||||
|
||||
软件分析是由南京大学李樾老师和谭添老师共同开设的一门课程,主要介绍了程序分析,在这里特指静态分析的理论与实践。
|
||||
静态分析的理念是在不运行程序的情况下,通过分析其源代码和各种表示来获得关于程序特定性质的**近似**结论。
|
||||
这门课从程序的抽象语法树,控制流图和中间表示这些基础知识开始介绍,再到数据流分析和指针分析的理论与实践,最后介绍了若干高级主题,如 IFDS 等。
|
||||
|
||||
这门课程值得学习的原因在我看来有两部分:
|
||||
|
||||
- 授课。程序分析一般来说并不太好上手,但两位老师讲的尤其细致入微,还会在课上带你一步一步走某一个算法的流程。个人认为只要认真听课,对于课上的知识不存在学不懂或者讲的不清楚的问题。
|
||||
|
||||
- 作业。作业围绕其自创的 Java 程序分析框架太阿进行。
|
||||
八个作业涵盖多种静态分析技术,包括编译优化(活跃变量分析、常量传播、死代码检测),基础程序分析(程序调用图构建、非/上下文敏感指针分析),以及程序分析在软件安全性的应用(污点分析)。
|
||||
课程同时还提供**所有人**可用的在线评测系统,适合自学。
|
||||
|
||||
作业主要是实现课上的伪代码算法,从而更好的帮助你理解课上所讲的知识。我感觉难度并不是特别大,特别适合在上完课后完成对应的实验来检验自己对课上知识的掌握程度。
|
||||
不过想要通过每个作业的所有测试点还是很有难度的。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:[主页](https://tai-e.pascal-lab.net/lectures.html)
|
||||
- 课程视频:[Bilibili](https://www.bilibili.com/video/BV1b7411K7P4/?spm_id_from=333.999.0.0&vd_source=b58da8cd0259ee873ef3dc2c9aa36d74)
|
||||
- 课程教材:无
|
||||
- 课程作业:[实验主页](https://tai-e.pascal-lab.net/intro/overview.html)
|
||||
- 在线评测: [OJ](https://oj.pascal-lab.net/problem)
|
||||
25
docs/编程语言设计与分析/PKU-SoftwareAnalysis.en.md
Normal file
25
docs/编程语言设计与分析/PKU-SoftwareAnalysis.en.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# PKU Software Analysis
|
||||
|
||||
## Descriptions
|
||||
|
||||
- Offered by: Peking University
|
||||
- Prerequisite: Data Structures and Algorithms, familiar with at least one programming language
|
||||
- Programming Languages: Java, Python
|
||||
- Difficulty: 🌟🌟🌟🌟
|
||||
- Learning Hours: 60 hours
|
||||
|
||||
Software Analysis is a course offered by Prof. Yingfei Xiong from Peking University. The course mainly covers the following topics:
|
||||
|
||||
1. Program analysis based on abstract interpretation (data flow analysis, inter-procedural analysis, pointer analysis, abstract interpretation, etc.)
|
||||
2. Program analysis based on constraint solving (SAT, SMT, symbolic execution, etc.)
|
||||
3. Software analysis applications (program synthesis, bug localization, bug repair, etc.)
|
||||
|
||||
Compared with the [Software Analysis course of Nanjing University](./NJU-SoftwareAnalysis.en.md), this course covers **more comprehensive** theoretical and practical content of program analysis, and is more difficult. My main way of learning this course is to listen to the course. Prof. Xiong's lectures are very interesting. In addition to the theoretical content, he occasionally tells some academic related stories :)
|
||||
|
||||
The course project of this experiment is to implement a pointer analysis system on Java and a program synthesis tool, which is also a very interesting practice.
|
||||
|
||||
## Resources
|
||||
|
||||
- Course Website: [Homepage](https://xiongyingfei.github.io/SA/2020/main.htm) This is the course homepage of 2020. More course content can be found on [Prof. Xiong's homepage](https://xiongyingfei.github.io/).
|
||||
- Course Video: [2020](https://liveclass.org.cn/cloudCourse/#/courseDetail/8mI06L2eRqk8GcsW)
|
||||
- Course Textbook: None
|
||||
25
docs/编程语言设计与分析/PKU-SoftwareAnalysis.md
Normal file
25
docs/编程语言设计与分析/PKU-SoftwareAnalysis.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# 北京大学 软件分析技术
|
||||
|
||||
## 课程简介
|
||||
|
||||
- 所属大学:北京大学
|
||||
- 先修要求:数据结构与算法,至少熟悉一门编程语言
|
||||
- 编程语言:Java, Python
|
||||
- 课程难度:🌟🌟🌟🌟
|
||||
- 预计学时:60 小时
|
||||
|
||||
软件分析技术是由北京大学熊英飞老师开设的一门课程,主要介绍了以下内容:
|
||||
|
||||
1. 基于抽象解释的程序分析(数据流分析、过程间分析、指针分析、抽象解释等)
|
||||
2. 基于约束求解的程序分析(SAT、SMT、符号执行等)
|
||||
3. 软件分析应用(程序合成、缺陷定位、缺陷修复等)
|
||||
|
||||
和南京大学的[软件分析课程](./NJU-SoftwareAnalysis.md)对比,这门课程的特点是讲了**更多更全面**的程序分析的理论与实践相关内容,难度也更大。这门课程我的主要的学习途径是听课,熊老师上课十分有趣,除了理论内容讲的很好偶尔也会讲一些学术相关的小段子:)
|
||||
|
||||
而本实验的的课程项目是实现一个Java上的指针分析系统和一个程序合成工具,也是十分有趣的实践。
|
||||
|
||||
## 课程资源
|
||||
|
||||
- 课程网站:[主页](https://xiongyingfei.github.io/SA/2020/main.htm) 这是 2020 年的课程主页,在[熊老师的主页](https://xiongyingfei.github.io/)上可以找到更多年份的课程内容。
|
||||
- 课程视频:[2020 燕云直播](https://liveclass.org.cn/cloudCourse/#/courseDetail/8mI06L2eRqk8GcsW)
|
||||
- 课程教材:无
|
||||
18
mkdocs.yml
18
mkdocs.yml
|
|
@ -96,6 +96,8 @@ plugins:
|
|||
计算机网络: Computer Networking
|
||||
数据库系统: Database Systems
|
||||
编译原理: Compilers
|
||||
编程语言设计与分析: Programming Language Design and Analysis
|
||||
程序语言设计: Programming Language
|
||||
计算机图形学: Computer Graphics
|
||||
Web开发: Web Development
|
||||
数据科学: Data Science
|
||||
|
|
@ -106,7 +108,9 @@ plugins:
|
|||
机器学习进阶: Advanced Machine Learning
|
||||
后记: Postscript
|
||||
- search:
|
||||
lang: ja
|
||||
lang:
|
||||
- zh
|
||||
- en
|
||||
- git-revision-date-localized
|
||||
- minify:
|
||||
minify_html: true
|
||||
|
|
@ -152,6 +156,7 @@ nav:
|
|||
- "The Information Theory, Pattern Recognition, and Neural Networks": "数学进阶/The_Information_Theory_Pattern_Recognition_and_Neural_Networks.md"
|
||||
- 编程入门:
|
||||
- "MIT-Missing-Semester": "编程入门/MIT-Missing-Semester.md"
|
||||
- "Sysadmin DeCal": "编程入门/DeCal.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"
|
||||
|
|
@ -161,6 +166,8 @@ nav:
|
|||
- "Stanford CS110L: Safety in Systems Programming": "编程入门/CS110L.md"
|
||||
- "AmirKabir University of Technology AP1400-2: Advanced Programming": "编程入门/AUT1400.md"
|
||||
- "Haskell MOOC": "编程入门/Haskell-MOOC.md"
|
||||
- "Cornell CS3110: OCaml Programming Correct + Efficient + Beautiful": "编程入门/CS3110.md"
|
||||
- "KAIST CS431: Concurrent Programming": "编程入门/cs431.md"
|
||||
- 电子基础:
|
||||
- "EE16A&B: Designing Information Devices and Systems I&II": "电子基础/EE16.md"
|
||||
- "UCB EE120 : Signal and Systems": "电子基础/signal.md"
|
||||
|
|
@ -176,9 +183,10 @@ nav:
|
|||
- "UCB CS169: software engineering": "软件工程/CS169.md"
|
||||
- 体系结构:
|
||||
- "Coursera: Nand2Tetris": "体系结构/N2T.md"
|
||||
- "Digital Design and Computer Architecture": "体系结构/DDCA.md"
|
||||
- "UCB CS61C: Great Ideas in Computer Architecture": "体系结构/CS61C.md"
|
||||
- "CMU 15-213: CSAPP": "体系结构/CSAPP.md"
|
||||
- "ETHz: Digital Design and Computer Architecture": "体系结构/DDCA.md"
|
||||
- "ETHz: Computer Architecture": "体系结构/CA.md"
|
||||
- 操作系统:
|
||||
- "MIT 6.S081: Operating System Engineering": "操作系统/MIT6.S081.md"
|
||||
- "UCB CS162: Operating System": "操作系统/CS162.md"
|
||||
|
|
@ -192,6 +200,7 @@ nav:
|
|||
- "MIT 6.858: Computer System Security": "系统安全/MIT6.858.md"
|
||||
- "ASU CSE365: Introduction to Cybersecurity": "系统安全/CSE365.md"
|
||||
- "ASU CSE466: Computer Systems Security": "系统安全/CSE466.md"
|
||||
- "SU SEED Labs": "系统安全/SEEDLabs.md"
|
||||
- 计算机网络:
|
||||
- "USTC Computer Networking:A Top-Down Approach": "计算机网络/topdown_ustc.md"
|
||||
- "Computer Networking: A Top-Down Approach": "计算机网络/topdown.md"
|
||||
|
|
@ -204,6 +213,10 @@ nav:
|
|||
- "CMU 15-799: Special Topics in Database Systems": "数据库系统/15799.md"
|
||||
- 编译原理:
|
||||
- "Stanford CS143: Compilers": "编译原理/CS143.md"
|
||||
- 编程语言设计与分析:
|
||||
- "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md"
|
||||
- "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md"
|
||||
- "PKU 软件分析": "编程语言设计与分析/PKU-SoftwareAnalysis.md"
|
||||
- 计算机图形学:
|
||||
- "GAMES101": "计算机图形学/GAMES101.md"
|
||||
- "GAMES202": "计算机图形学/GAMES202.md"
|
||||
|
|
@ -229,6 +242,7 @@ nav:
|
|||
- "CMU 10-414/714: Deep Learning Systems": "机器学习系统/CMU10-414.md"
|
||||
- "Machine Learning Compilation": "机器学习系统/MLC.md"
|
||||
- 深度学习:
|
||||
- "UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision": "深度学习/EECS498-007.md"
|
||||
- "Coursera: Deep Learning": "深度学习/CS230.md"
|
||||
- "国立台湾大学:李宏毅机器学习": "深度学习/LHY.md"
|
||||
- "Stanford CS231n: CNN for Visual Recognition": "深度学习/CS231.md"
|
||||
|
|
|
|||
Loading…
Reference in a new issue