diff --git a/README.md b/README.md index 74ea658f..76b50b59 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,27 @@ +
+ Special thanks to: +
+ + AutoMQ sponsorship + + +### [学了那么多分布式理论,“工业级”的代码长什么样?](https://opensource.automq.com) + +[AutoMQ 带你深入一线代码,直观理解数据结构与分布式系统的工程实践。](https://opensource.automq.com) + +
+ +
+ +--- +
# CS 自学指南 -> *Everyone should enjoy CS if you have a good teacher to teach you a good course.* +> _Everyone should enjoy CS if you have a good teacher to teach you a good course._ PKUFlyingPig%2Fcs-self-learning | Trendshift @@ -13,7 +30,6 @@ [![Issues](https://img.shields.io/github/issues/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning/issues) [![Stars](https://img.shields.io/github/stars/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning) - 新冠肆虐,网课当道,CS 爆火,这一系列的事件都让自学计算机成为了一种潮流。 随着欧美众多名校将质量极高的计算机课程全部开源,自学 CS 成了一件可操作性极强的事情。毫不夸张地说,只要你有毅力和兴趣,自学的成果完全不亚于你在国内任何一所大学受到的本科 CS 教育(当然,这里单指计算机专业领域,大学带给你的显然不止是专业知识)。 @@ -22,7 +38,7 @@ 但同时,自学这条路也有很多困难和阻力:课程繁多不知如何选择,资料零散甚至残缺,作业难度不知深浅,课内任务还需要花时间应付······这些主客观因素叠加到一起,使得好课虽多,却只能在收藏夹里吃灰。 -在大学的第四个年头,我想把这一路自学走来的经验和教训,把那些让我受益终身的课程记录下来,分享给大家,形成了这本CS自学指南,以期能给所有想自学计算机的朋友一点帮助。 +在大学的第四个年头,我想把这一路自学走来的经验和教训,把那些让我受益终身的课程记录下来,分享给大家,形成了这本 CS 自学指南,以期能给所有想自学计算机的朋友一点帮助。 我的目标是让一个刚刚接触计算机的小白,可以完全凭借这些开源社区的优质资源,少走弯路,在 2-3 年内成长为一个有扎实的数学功底和代码能力,经历过数十个千行代码量的 Project 的洗礼,掌握至少 C/C++/Java/JS/Python/Go/Rust 等主流语言,对算法、电路、体系、网络、操统、编译、人工智能、机器学习、计算机视觉、自然语言处理、强化学习、密码学、信息论、博弈论、数值分析、统计学、分布式、数据库、图形学、Web 开发、云服务、超算等等方面均有所涉猎的全能程序员。此后,无论是选择科研还是就业,我相信你都会有相当的竞争力。 @@ -30,7 +46,7 @@ ## 如何成为贡献者 -一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其navigation,当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。如果你有想推荐的书籍,请参考 [好书推荐](https://raw.githubusercontent.com/PKUFlyingPig/cs-self-learning/master/docs/%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90.md) 模块上方的注释按相应格式添加内容。 +一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其 navigation,当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。如果你有想推荐的书籍,请参考 [好书推荐](https://raw.githubusercontent.com/PKUFlyingPig/cs-self-learning/master/docs/%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90.md) 模块上方的注释按相应格式添加内容。 对于中英混合排版的要点规范,可以参考[这个仓库](https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.zh-Hans.md),我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/114)。 @@ -49,6 +65,7 @@ ## ✨ 鸣谢 特别感谢 @[AlfredThiel](https://github.com/AlfredThiel) 为项目制作了精美的 Logo。 + diff --git a/docs/CS学习规划.en.md b/docs/CS学习规划.en.md index d11de775..45402875 100644 --- a/docs/CS学习规划.en.md +++ b/docs/CS学习规划.en.md @@ -243,11 +243,13 @@ In recent years, the most common phrase heard in CS lectures is "Moore's Law is #### Parallel Computing -[CMU 15-418/Stanford CS149: Parallel Computing](并行与分布式系统/CS149.md) +[CMU 15-418 / Stanford CS149: Parallel Computing](并行与分布式系统/CS149.md) takes you deep into the design principles and trade-offs of modern parallel computing architectures. The course teaches you how to fully leverage hardware resources and software programming frameworks—such as CUDA, MPI, and OpenMP—to write high-performance parallel programs. #### Distributed Systems -[MIT 6.824: Distributed System](并行与分布式系统/MIT6.824.md) +[MIT 6.824: Distributed Systems](并行与分布式系统/MIT6.824.md), like MIT 6.S081, is offered by MIT’s renowned PDOS (Parallel and Distributed Operating Systems) lab. The course is taught by Professor Robert Morris, who was once a legendary hacker—famously known for creating the first computer worm, the Morris Worm. + +Each lecture focuses on an in-depth reading of a classic paper in the field of distributed systems, through which the course conveys essential principles and key techniques for designing and implementing distributed systems. The course is also famous for its challenging projects: over the course of four progressively difficult programming assignments, students build a key-value store framework based on the Raft consensus algorithm. These projects offer a firsthand experience of the randomness and complexity brought by concurrency and distribution—often felt most acutely during painful debugging sessions. ### System Security @@ -257,10 +259,6 @@ Whether you chose computer science because of a youthful dream of becoming a hac [UCB CS161: Computer Security](系统安全/CS161.md) at UC Berkeley covers stack attacks, cryptography, website security, network security, and more. -[ASU CSE365: Introduction to Cybersecurity](系统安全/CSE365.md) at Arizona State University focuses mainly on injections, assembly, and cryptography. - -[ASU CSE466: Computer Systems Security](系统安全/CSE466.md) at Arizona State University covers a wide range of topics in system security. It has a high barrier to entry, requiring familiarity with Linux, C, and Python. - [SU SEED Labs](系统安全/SEEDLabs.md) at Syracuse University, supported by a $1.3 million grant from the NSF, has developed hands-on experimental exercises (called SEED Labs) for cybersecurity education. The course emphasizes both theoretical teaching and practical exercises, including detailed open-source lectures, video tutorials, textbooks (printed in multiple languages), and a ready-to-use virtual machine and Docker-based attack-defense environment. This project is currently used by 1,050 institutions worldwide and covers a wide range of topics in computer and information security, including software security, network security, web security, operating system security, and mobile app security. #### Practical Courses @@ -277,7 +275,8 @@ After mastering this theoretical knowledge, it's essential to cultivate and hone The renowned [Stanford CS144: Computer Network](计算机网络/CS144.md) includes 8 projects that guide you in implementing the entire TCP/IP protocol stack. -If you're just looking to understand computer networks theoretically, I recommend the famous networking textbook "A Top-Down Approach" and its accompanying learning resources [Computer Networking: A Top-Down Approach](计算机网络/topdown.md). +If you're mainly interested in gaining a theoretical understanding of computer networks, it's recommended to read the [textbook](https://textbook.cs168.io/) that accompanies the course [UCB CS168](计算机网络/CS168.md). + ### Database Systems @@ -295,18 +294,14 @@ Berkeley, as the birthplace of the famous open-source database PostgreSQL, has i ### Web Development -Front-end development is often overlooked in computer science curricula, but mastering these skills has many benefits, such as building your personal website or creating an impressive presentation website for your course projects. +Front-end and back-end development are often overlooked in standard computer science curricula, but in reality, having these skills can be extremely beneficial—for example, creating your own personal website or building a polished demo page for a course project. -#### Two-Week Crash Course - -[MIT web development course](Web开发/mitweb.md) - -#### Systematic Study Version - -[Stanford CS142: Web Applications](Web开发/CS142.md) +If you're looking for a quick, two-week crash course, I recommend the [MIT Web Development Course](Web开发/mitweb.md). For a more comprehensive and structured learning experience, check out [Stanford CS142: Web Applications](Web开发/CS142.md). ### Computer Graphics +I personally don't have much background in computer graphics, so I've collected a selection of high-quality courses recommended by the community for those interested in exploring the field. + - [Stanford CS148](计算机图形学/CS148.md) - [Games101](计算机图形学/GAMES101.md) - [Games103](计算机图形学/GAMES103.md) @@ -326,29 +321,44 @@ The most significant recent progress in the field of machine learning is the eme However, completing this course will only give you a general understanding of the field of machine learning. To truly understand the mathematical principles behind these "magical" algorithms or to engage in related research, you need a more "mathematical" course, such as [Stanford CS229: Machine Learning](机器学习/CS229.md) or [UCB CS189: Introduction to Machine Learning](机器学习/CS189.md). +If you plan to pursue scientific research in machine learning theory, you can refer to the [advanced learning roadmap](./机器学习进阶/roadmap.md) shared by [Yao Fu](https://franxyao.github.io/), which includes more in-depth, graduate-level courses. + + ### Deep Learning The popularity of AlphaGo a few years ago brought deep learning to the public eye, leading many universities to establish related majors. Many other areas of computer science also use deep learning technology for research, so regardless of your field, you will likely encounter some needs related to neural networks and deep learning. For a quick introduction, I again recommend Andrew Ng's (Enda Wu) [Coursera: Deep Learning](深度学习/CS230.md), a top-rated course on Coursera. Additionally, if you find English-language courses challenging, consider Professor Hongyi Li's course [National Taiwan University: Machine Learning](深度学习/LHY.md). Although titled "Machine Learning," this course covers almost all areas of deep learning and is very comprehensive, making it suitable for getting a broad overview of the field. The professor is also very humorous, with frequent witty remarks in class. Due to the rapid development of deep learning, there are now many research branches. For further in-depth study, consider the following representative courses: -### Computer Vision +#### Computer Vision - [UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision](深度学习/EECS498-007.md) - [Stanford CS231n: CNN for Visual Recognition](深度学习/CS231.md) -### Natural Language Processing +#### Natural Language Processing - [Stanford CS224n: Natural Language Processing](深度学习/CS224n.md) -### Graph Neural Networks +#### Graph Neural Networks - [Stanford CS224w: Machine Learning with Graphs](深度学习/CS224w.md) -### Reinforcement Learning +#### Reinforcement Learning - [UCB CS285: Deep Reinforcement Learning](深度学习/CS285.md) +### Deep Learning Systems + +As deep learning models grow in importance and demand increasing computational resources, optimizing the underlying systems for training and inference has become increasingly critical. For those looking to enter this field, a highly recommended resource is [CMU 10-414/714: Deep Learning Systems](./机器学习系统/CMU10-414.md). This course provides a comprehensive "full-stack" understanding of deep learning systems—from high-level architectural design of modern frameworks, to the principles and implementation of automatic differentiation, down to low-level hardware acceleration and real-world deployment. + +To deepen theoretical understanding, students are tasked with building a deep learning library from scratch, called Needle, as part of the coursework. This library supports automatic differentiation on computational graphs, GPU-based acceleration, and includes modules for loss functions, data loaders, and optimizers. On top of this, students will implement several common neural network architectures including CNNs, RNNs, LSTMs, and Transformers. + +For those with foundational knowledge, the next step would be to explore [MIT 6.5940: TinyML and Efficient Deep Learning Computing](./机器学习系统/EML.md), taught by [Professor Song Han](https://hanlab.mit.edu/songhan). This course dives into techniques for making neural networks more efficient, such as pruning, quantization, distillation, and neural architecture search. It also covers cutting-edge system optimizations for advanced models, including large language models. + +### Deep Generative Models + +With the explosive popularity of large language models, understanding the principles behind them is essential to staying at the forefront of the field. You can refer to my recommended [learning roadmap](./深度生成模型/roadmap.md) for a guided approach to studying this area. + ## Customize Your Course Map > Better to teach fishing than to give fish. diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index 4f6b20ed..b74476d9 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -241,11 +241,11 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 #### 并行计算 -[CMU 15-418/Stanford CS149: Parallel Computing](并行与分布式系统/CS149.md) +[CMU 15-418/Stanford CS149: Parallel Computing](并行与分布式系统/CS149.md) 会带你深入理解现代并行计算架构的设计原则与必要权衡,并学会如何充分利用硬件资源以及软件编程框架(例如 CUDA,MPI,OpenMP 等)编写高性能的并行程序。 #### 分布式系统 -[MIT 6.824: Distributed System](并行与分布式系统/MIT6.824.md) +[MIT 6.824: Distributed System](并行与分布式系统/MIT6.824.md) 和 MIT 6.S081 一样,出品自 MIT 大名鼎鼎的 PDOS 实验室,授课老师 Robert Morris 教授曾是一位顶尖黑客,世界上第一个蠕虫病毒 Morris 病毒就是出自他之手。这门课每节课都会精读一篇分布式系统领域的经典论文,并由此传授分布式系统设计与实现的重要原则和关键技术。同时其课程 Project 也是以难度之大而闻名遐迩,4 个编程作业循序渐进带你实现一个基于 Raft 共识算法的 KV-store 框架,让你在痛苦的 debug 中体会并行与分布式带来的随机性和复杂性。 ### 系统安全 @@ -255,15 +255,11 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 [UCB CS161: Computer Security](系统安全/CS161.md) 是伯克利的系统安全课程,会涵盖栈攻击、密码学、网站安全、网络安全等等内容。 -[ASU CSE365: Introduction to Cybersecurity](系统安全/CSE365.md) 亚利桑那州立大学的 Web 安全课程,主要涉及注入、汇编与密码学的内容。 +[SU SEED Labs](系统安全/SEEDLabs.md) 是雪城大学的网安课程,由 NSF 提供130万美元的资金支持,为网安教育开发了动手实践性的实验练习(称为 SEED Lab)。课程理论教学和动手实践并重,包含详细的开源讲义、视频教程、教科书(被印刷为多种语言)、开箱即用的基于虚拟机和 docker 的攻防环境等。目前全球有1050家研究机构在使用该项目。涵盖计算机和信息安全领域的广泛主题,包括软件安全、网络安全、Web 安全、操作系统安全和移动应用安全。 -[ASU CSE466: Computer Systems Security](系统安全/CSE466.md) 亚利桑那州立大学的系统安全课程,涉及内容全面。门槛较高,需要对 Linux, C 与 Python 充分熟悉。 +#### CTF 实践 -[SU SEED Labs](系统安全/SEEDLabs.md) 雪城大学的网安课程,由 NSF 提供130万美元的资金支持,为网安教育开发了动手实践性的实验练习(称为 SEED Lab)。课程理论教学和动手实践并重,包含详细的开源讲义、视频教程、教科书(被印刷为多种语言)、开箱即用的基于虚拟机和 docker 的攻防环境等。目前全球有1050家研究机构在使用该项目。涵盖计算机和信息安全领域的广泛主题,包括软件安全、网络安全、Web 安全、操作系统安全和移动应用安全。 - -#### 实践课程 - -掌握这些理论知识之后,还需要在实践中培养和锻炼这些“黑客素养”。[CTF 夺旗赛](https://ctf-wiki.org/)是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了[第 0 届和第 1 届](https://geekgame.pku.edu.cn/),鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源: +掌握这些理论知识之后,还需要在实践中培养和锻炼这些“黑客素养”。[CTF 夺旗赛](https://ctf-wiki.org/)是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大每年会举办[相关赛事](https://geekgame.pku.edu.cn/),鼓励大家踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源: - [CTF-wiki](https://ctf-wiki.org/) - [CTF-101](https://ctf101.org/) @@ -275,7 +271,7 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是 大名鼎鼎的 [Stanford CS144: Computer Network](计算机网络/CS144.md),8 个 Project 带你实现整个 TCP/IP 协议栈。 -如果你只是想在理论上对计算机网络有所了解,那么推荐计网著名教材《自顶向下方法》的配套学习资源 [Computer Networking: A Top-Down Approach](计算机网络/topdown.md)。 +如果你只是想在理论上对计算机网络有所了解,那么推荐阅读 [UCB CS168](计算机网络/CS168.md) 这门课程配套的[教材](https://textbook.cs168.io/)。 ### 数据库系统 @@ -289,22 +285,16 @@ Berkeley 作为著名开源数据库 postgres 的发源地也不遑多让,[UCB > 没有什么能比自己写个编译器更能加深对编译器的理解了。 -[Stanford CS143: Compilers](编译原理/CS143.md) 带你手写编译器。 +理论学习推荐阅读大名鼎鼎的《龙书》。当然动手实践才是掌握编译原理最好的方式,推荐[北京大学编译原理实践](./编译原理/PKU-Compilers.md)课程,丰富的实验配套和循序渐进的文档带你实现一个类C语言到 RISC-V 汇编的编译器。当然编译原理课程目录下也有众多其他优质实验供你选择。 -### Web开发 +### Web 开发 -前后端开发很少在计算机的培养方案里被重视,但其实掌握这项技能还是好处多多的,例如搭建自己的个人主页,抑或是给自己的课程项目做一个精彩的展示网页。 - -#### 两周速成版 - -[MIT web development course](Web开发/mitweb.md) - -#### 系统学习版 - -[Stanford CS142: Web Applications](Web开发/CS142.md) +前后端开发很少在计算机的培养方案里被重视,但其实掌握这项技能还是好处多多的,例如搭建自己的个人主页,抑或是给自己的课程项目做一个精彩的展示网页。如果你只是想两周速成,那么推荐 [MIT web development course](Web开发/mitweb.md)。如果想系统学习,推荐 [Stanford CS142: Web Applications](Web开发/CS142.md)。 ### 计算机图形学 +我本人对计算机图形学了解不多,这里收录了一些社区推荐的优质课程供大家选择: + - [Stanford CS148](计算机图形学/CS148.md) - [Games101](计算机图形学/GAMES101.md) - [Games103](计算机图形学/GAMES103.md) @@ -325,11 +315,13 @@ Berkeley 作为著名开源数据库 postgres 的发源地也不遑多让,[UCB 但上过这门课只能让你从宏观上对机器学习这一领域有一定了解,如果想真正理解那些“神奇”算法背后的数学原理甚至从事相关领域的科研工作,那么还需要一门更“数学”的课程,例如 [Stanford CS229: Machine Learning](机器学习/CS229.md) 或者 [UCB CS189: Introduction to Machine Learning](机器学习/CS189.md)。 +当然,如果你之后致力于从事机器学习理论相关的科学研究,那么可以参考 [Yao Fu](https://franxyao.github.io/) 分享的[进阶学习路线](./机器学习进阶/roadmap.md)学习一些更深入的研究生难度的课程。 + ### 深度学习 -前几年 AlphaGo 的大热让深度学习进入了大众的视野,不少大学甚至专门成立了相关专业。很多计算机的其他领域也会借助深度学习的技术来做研究,因此基本不管你干啥多少都会接触到一些神经网络、深度学习相关的技术需求。如果想快速入门,同样推荐 Andrew Ng (吴恩达)的 [Coursera: Deep Learning](深度学习/CS230.md),质量无需多言,Coursera 上罕见的满分课程。此外如果你觉得英文课程学习起来有难度,推荐李宏毅老师的 [国立台湾大学:机器学习](深度学习/LHY.md) 课程。这门课打着机器学习的名号,却囊括了深度学习领域的几乎所有方向,非常全面,很适合你从宏观上对这个领域有一个大致的了解。而且老师本人也非常幽默,课堂金句频出。 +前几年 AlphaGo 的大热让深度学习进入了大众的视野,不少大学专门成立了相关专业。很多计算机的其他领域也会借助深度学习的技术来做研究,因此基本不管你干啥多少都会接触到一些神经网络、深度学习相关的技术需求。如果想快速入门,同样推荐 Andrew Ng (吴恩达)的 [Coursera: Deep Learning](深度学习/CS230.md),质量无需多言,Coursera 上罕见的满分课程。此外如果你觉得英文课程学习起来有难度,推荐李宏毅老师的 [国立台湾大学:机器学习](深度学习/LHY.md) 课程。这门课打着机器学习的名号,却囊括了深度学习领域的几乎所有方向,非常全面,很适合你从宏观上对这个领域有一个大致的了解。而且老师本人也非常幽默,课堂金句频出。 -当然因为深度学习领域发展非常迅速,已经拥有了众多研究分支,如果想要进一步深入,可以按需学习下面罗列的代表课程, +当然因为深度学习领域发展非常迅速,已经拥有了众多研究分支,如果想要进一步深入,可以按需学习下面罗列的代表课程: #### 计算机视觉 @@ -349,6 +341,17 @@ Berkeley 作为著名开源数据库 postgres 的发源地也不遑多让,[UCB [UCB CS285: Deep Reinforcement Learning](深度学习/CS285.md) + +### 深度学习系统 + +随着深度学习模型的重要性和资源需求越来越大,针对其训练和推理相关的底层系统优化也越发重要。如果想入门这个领域,推荐 [CMU 10-414/714: Deep Learning Systems](./机器学习系统/CMU10-414.md),内容覆盖了深度学习系统“全栈”的知识体系。从现代深度学习系统框架的顶层设计,到自微分算法的原理和实现,再到底层硬件加速和实际生产部署。为了更好地掌握理论知识,学生将会在课程作业中从头开始设计和实现一个完整的深度学习库 Needle,使其能对计算图进行自动微分,能在 GPU 上实现硬件加速,并且支持各类损失函数、数据加载器和优化器。在此基础上,学生将实现几类常见的神经网络,包括 CNN,RNN,LSTM,Transformer 等等。有一定基础后,还可以学习 [Song Han](https://hanlab.mit.edu/songhan) 老师开设的 [MIT6.5940: TinyML and Efficient Deep Learning Computing](./机器学习系统/EML.md) 课程,了解让神经网络轻量化的各种关键技术,例如剪枝、量化、蒸馏、网络架构搜索等等。此外,课程中还会涉及很多更前沿的深度学习模型例如大语言模型相关的系统优化。 + +### 深度生成模型 + +随着大语言模型的爆火,了解其背后的原理才能紧跟时代潮流。可以参考笔者推荐的[学习路线](./深度生成模型/roadmap.md)进行学习。 + + + ## 定制属于你的课程地图 > 授人以鱼不如授人以渔。 diff --git a/docs/Web开发/CS571.en.md b/docs/Web开发/CS571.en.md index 9e7f896a..063ef8c3 100644 --- a/docs/Web开发/CS571.en.md +++ b/docs/Web开发/CS571.en.md @@ -16,7 +16,7 @@ Although this course doesn't require prior knowledge of Javascript/HTML/CSS, the 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). +According to the official website, CS 571 is open to everyone. You can request a Badger ID directly from the [webpage](https://cs571.org/auth) using your email address. ## Course Resources diff --git a/docs/Web开发/CS571.md b/docs/Web开发/CS571.md index 817bc319..e3a95bc0 100644 --- a/docs/Web开发/CS571.md +++ b/docs/Web开发/CS571.md @@ -16,10 +16,10 @@ 此外,本课程还对 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)。 +根据官网信息,CS 571 对所有人开放。你可以在[官网](https://cs571.org/auth)直接使用电子邮箱申请 Badger ID。 ## 课程资源 - 课程网站: - 课程视频:请参考课程网站上标有“R”的链接 -- 课程作业:请参考课程网站上的相关信息 \ No newline at end of file +- 课程作业:请参考课程网站上的相关信息 diff --git a/docs/index.md b/docs/index.md index b203a62c..7c462aa2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,7 +4,7 @@ # 前言 -**最近更新:[Release v1.1.0](https://github.com/PKUFlyingPig/cs-self-learning/releases/tag/v1.1.0) 已发布 🎉** +**🎉🎉 [Release v1.2.0](https://github.com/PKUFlyingPig/cs-self-learning/releases/tag/v1.2.0): 更新了[深度生成模型学习路线](./深度生成模型/roadmap.md) 🎉🎉** 这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。 diff --git a/docs/人工智能/CS188.md b/docs/人工智能/CS188.md index 3d376abf..7bb61ffe 100644 --- a/docs/人工智能/CS188.md +++ b/docs/人工智能/CS188.md @@ -10,11 +10,11 @@ 伯克利的人工智能入门课,课程 notes 写得非常深入浅出,基本不需要观看课程视频。课程内容的安排基本按照人工智能的经典教材 *Artificial intelligence: A Modern Approach* 的章节顺序,覆盖了搜索剪枝、约束满足问题、马尔可夫决策过程、强化学习、贝叶斯网络、隐马尔可夫模型以及基础的机器学习和神经网络的相关内容。 -2018年秋季学期的版本免费开放了 gradescope,大家可以在线完成书面作业并实时得到测评结果。同时课程的 6 个 Project 也是质量爆炸,复现了经典的 Packman(吃豆人)小游戏,会让你利用学到的 AI 知识,去实现相关算法,让你的吃豆人在迷宫里自由穿梭,躲避鬼怪,收集豆子。 +目前Spring 2024是最新一期视频与资料完整、开放了旁听gradescope的版本,大家可以在线完成书面作业并实时得到测评结果。同时课程的 6 个 Project 也是质量爆炸,复现了经典的 Packman(吃豆人)小游戏,会让你利用学到的 AI 知识,去实现相关算法,让你的吃豆人在迷宫里自由穿梭,躲避鬼怪,收集豆子。 ## 课程资源 -- 课程网站:[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),每节课的链接详见课程网站 +- 课程网站:[Spring 2024](https://inst.eecs.berkeley.edu/~cs188/sp24/) +- 课程视频:每节课的链接详见课程网站 - 课程教材:Artificial intelligence: A Modern Approach - 课程作业:在线测评书面作业和 Projects,详见课程网站 diff --git a/docs/人工智能/CS50.en.md b/docs/人工智能/CS50.en.md index f46b891f..d06367ac 100644 --- a/docs/人工智能/CS50.en.md +++ b/docs/人工智能/CS50.en.md @@ -12,10 +12,10 @@ A very basic introductory AI course, what makes it stand out is the 12 well-desi ## Course Resources -- Course Website: -- Recordings: +- Course Website: [2024](https://cs50.harvard.edu/ai/2024/)、[2020](https://cs50.harvard.edu/ai/2020/) +- Recordings: [2024](https://cs50.harvard.edu/ai/2024/)、[2020](https://cs50.harvard.edu/ai/2020/) - Textbooks: No textbook is needed in this course. -- Assignments: with 12 programming labs of high quality mentioned above. +- Assignments: [2024](https://cs50.harvard.edu/ai/2024/)、[2020](https://cs50.harvard.edu/ai/2020/) with 12 programming labs of high quality mentioned above. ## Personal Resources diff --git a/docs/人工智能/CS50.md b/docs/人工智能/CS50.md index 5f1334e8..71a70116 100644 --- a/docs/人工智能/CS50.md +++ b/docs/人工智能/CS50.md @@ -12,10 +12,10 @@ ## 课程资源 -- 课程网站: -- 课程视频: +- 课程网站:[2024](https://cs50.harvard.edu/ai/2024/)、[2020](https://cs50.harvard.edu/ai/2020/) +- 课程视频:[2024](https://cs50.harvard.edu/ai/2024/)、[2020](https://cs50.harvard.edu/ai/2020/) - 课程教材:无 -- 课程作业:,12个精巧的编程作业 +- 课程作业:[2024](https://cs50.harvard.edu/ai/2024/)、[2020](https://cs50.harvard.edu/ai/2020/),12个精巧的编程作业 ## 资源汇总 diff --git a/docs/人工智能/Neural Networks:Zero to Hero.en.md b/docs/人工智能/Neural Networks:Zero to Hero.en.md new file mode 100644 index 00000000..3408b365 --- /dev/null +++ b/docs/人工智能/Neural Networks:Zero to Hero.en.md @@ -0,0 +1,24 @@ +# Neural Networks: Zero to Hero + +## Description + +- **Instructor:** Andrej Karpathy +- **Prerequisites:** Basic Python programming and some familiarity with deep learning concepts +- **Programming Language:** Python +- **Difficulty:** 🌟🌟🌟🌟 +- **Class Hours:** Approximately 19 hours + +This hands-on deep learning course, taught by Andrej Karpathy, provides a detailed and intuitive introduction to neural networks and their underlying principles. The course starts with foundational concepts such as backpropagation and micrograd before progressing to building language models, WaveNets, and GPT from scratch. The emphasis is on practical implementation, with step-by-step coding explanations to help students understand and build complex models from the ground up. + +## Instructor Information + +Andrej Karpathy is a renowned AI researcher and educator with extensive experience in deep learning and neural networks. He was the **Senior Director of AI at Tesla**, leading the **computer vision team for Tesla Autopilot** from 2017 to 2022. Prior to that, he was a **research scientist and founding member at OpenAI** (2015-2017). In 2023, he returned to OpenAI, contributing to improvements in GPT-4 for ChatGPT. In 2024, he founded **Eureka Labs**, an AI+Education company. + +Karpathy holds a **PhD from Stanford University**, where he worked on convolutional and recurrent neural networks with **Fei-Fei Li**. He has collaborated with leading AI researchers, including **Daphne Koller, Andrew Ng, Sebastian Thrun, and Vladlen Koltun**. He also taught the first deep learning course at Stanford, **CS 231n: Convolutional Neural Networks for Visual Recognition**, which became one of the largest classes at the university. + +## Course Resources + +- **Lecture Videos:** [YouTube Playlist](https://www.youtube.com/watch?v=VMj-3S1tku0&list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ) +- **Assignments:** Self-guided projects and code implementation exercises available throughout the lectures + +For more information, watch the full playlist on YouTube. \ No newline at end of file diff --git a/docs/人工智能/Neural Networks:Zero to Hero.md b/docs/人工智能/Neural Networks:Zero to Hero.md new file mode 100644 index 00000000..0d713831 --- /dev/null +++ b/docs/人工智能/Neural Networks:Zero to Hero.md @@ -0,0 +1,24 @@ +# 神经网络:从零到英雄 + +## 课程简介 + +- **讲师:** Andrej Karpathy +- **先修要求:** 具备基本的 Python 编程能力,并对深度学习概念有所了解 +- **编程语言:** Python +- **难度:** 🌟🌟🌟🌟 +- **课程时长:** 约 19 小时 + +本课程由 Andrej Karpathy 讲授,是一个深入浅出的深度学习课程,旨在帮助学习者掌握神经网络的核心原理。课程从基础概念(如反向传播和 micrograd)入手,逐步带领学员构建语言模型、WaveNet,并从零开始实现 GPT。课程以实践为主,提供逐步讲解的代码示例,让学员能够理解并构建复杂的神经网络模型。 + +## 讲师信息 + +Andrej Karpathy 是一位知名的人工智能研究员和教育者,在深度学习和神经网络领域具有丰富的经验。他曾在 **2017 至 2022 年担任特斯拉 AI 部门高级总监**,领导 **Tesla Autopilot 计算机视觉团队**,负责数据标注、神经网络训练、部署等工作。在此之前,他曾是 **OpenAI 的研究科学家和创始成员**(2015-2017)。2023 年,他回归 OpenAI,参与改进 ChatGPT 的 GPT-4。2024 年,他创立了 **Eureka Labs**,一家专注于 AI + 教育的公司。 + +Karpathy 拥有 **斯坦福大学博士学位**,师从 **Fei-Fei Li(李飞飞)**,主要研究卷积神经网络和循环神经网络及其在计算机视觉和自然语言处理中的应用。他曾与 **Daphne Koller、Andrew Ng(吴恩达)、Sebastian Thrun 和 Vladlen Koltun** 等知名研究员合作。此外,他还在斯坦福大学教授了首个深度学习课程 **CS 231n: 卷积神经网络与视觉识别**,该课程逐渐发展为斯坦福大学规模最大的课程之一。 + +## 课程资源 + +- **课程视频:** [YouTube 播放列表](https://www.youtube.com/watch?v=VMj-3S1tku0&list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ) +- **作业:** 课程中提供的代码实践和项目练习 + +更多信息请访问 YouTube 观看完整课程视频。 \ No newline at end of file diff --git a/docs/体系结构/CS61C.en.md b/docs/体系结构/CS61C.en.md index 0150efca..50b0447a 100644 --- a/docs/体系结构/CS61C.en.md +++ b/docs/体系结构/CS61C.en.md @@ -16,11 +16,15 @@ In a word, this is the best computer architecture course I have ever taken. ## Course Resources -- Course Website: -- Recordings: [Youtube](https://www.youtube.com/playlist?list=PLDoI-XvXO0aqgoMQvogzmf7CKiSMSUS3M) -- Textbook: None -- Assignments: 11 Labs, 4 Projects, the course website has specific requirements. +- [Course Website](https://cs61c.org/) +- Course Website (Backup): [Fa24-WayBack Machine](https://web.archive.org/web/20241219154359/https://cs61c.org/fa24/), [Fa20-WayBack Machine](https://web.archive.org/web/20220120134001/https://inst.eecs.berkeley.edu/~cs61c/fa20/), [Fa20-Backup](https://www.learncs.site/docs/curriculum-resource/cs61c/syllabus) +- Recordings: [Su20-Bilibili](https://www.bilibili.com/video/BV1fC4y147iZ/?share_source=copy_web&vd_source=7c3823b46a52fbbef42b79e01d55c300), [Su20-Youtube](https://youtube.com/playlist?list=PLDoI-XvXO0aqgoMQvogzmf7CKiSMSUS3M&si=62aaH5a_PMGrAT2Y), [Fa20-Bilibili](https://www.bilibili.com/video/BV17b42177VG/?share_source=copy_web&vd_source=7c3823b46a52fbbef42b79e01d55c300), [Fa20-Youtube](https://youtube.com/playlist?list=PL0j-r-omG7i0-mnsxN5T4UcVS1Di0isqf&si=CG1EjQiPcw7r7Vs4) +- Assignments: [Fa20-Backup](https://github.com/InsideEmpire/CS61C-Assignment#) ## 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 @InsideEmpire in this course are maintained in [@InsideEmpire/CS61C-fall20 - GitHub](https://github.com/InsideEmpire/CS61C-PathwayToSuccess). + +All the resources and assignments used by @RisingUppercut in this course are maintained in [@RisingUppercut/CS61C-fall24 - GitHub](https://github.com/RisingUppercut/CS61C_2024_Fall). diff --git a/docs/体系结构/CS61C.md b/docs/体系结构/CS61C.md index b0b1328c..cb7e9fb1 100644 --- a/docs/体系结构/CS61C.md +++ b/docs/体系结构/CS61C.md @@ -19,11 +19,15 @@ ## 课程资源 -- 课程网站: -- 课程视频:[B 站](https://www.bilibili.com/video/BV1fC4y147iZ), [Youtube](https://www.youtube.com/playlist?list=PLDoI-XvXO0aqgoMQvogzmf7CKiSMSUS3M) -- 课程教材:无 -- 课程作业:11 个 Lab,4 个 Project,具体要求详见课程网站 +- [课程网站](https://cs61c.org/) +- 课程网站 (页面备份): [Fa24-WayBack Machine](https://web.archive.org/web/20241219154359/https://cs61c.org/fa24/), [Fa20-WayBack Machine](https://web.archive.org/web/20220120134001/https://inst.eecs.berkeley.edu/~cs61c/fa20/), [Fa20-备份](https://www.learncs.site/docs/curriculum-resource/cs61c/syllabus) +- 课程视频: [Su20-Bilibili](https://www.bilibili.com/video/BV1fC4y147iZ/?share_source=copy_web&vd_source=7c3823b46a52fbbef42b79e01d55c300), [Su20-Youtube](https://youtube.com/playlist?list=PLDoI-XvXO0aqgoMQvogzmf7CKiSMSUS3M&si=62aaH5a_PMGrAT2Y), [Fa20-Bilibili](https://www.bilibili.com/video/BV17b42177VG/?share_source=copy_web&vd_source=7c3823b46a52fbbef42b79e01d55c300), [Fa20-Youtube](https://youtube.com/playlist?list=PL0j-r-omG7i0-mnsxN5T4UcVS1Di0isqf&si=CG1EjQiPcw7r7Vs4) +- 课程作业: [Fa20-备份](https://github.com/InsideEmpire/CS61C-Assignment#) ## 资源汇总 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61C-summer20 - GitHub](https://github.com/PKUFlyingPig/CS61C-summer20) 中。 + +@InsideEmpire 在学习这门课中用到的所有资源和作业实现都汇总在 [@InsideEmpire/CS61C-fall20 - GitHub](https://github.com/InsideEmpire/CS61C-PathwayToSuccess) 中。 + +@RisingUppercut 在学习这门课中用到的所有资源和作业实现都汇总在 [@RisingUppercut/CS61C-fall24 - GitHub](https://github.com/RisingUppercut/CS61C_2024_Fall) 中。 diff --git a/docs/使用指南.md b/docs/使用指南.md index b429009e..8e5a38a4 100644 --- a/docs/使用指南.md +++ b/docs/使用指南.md @@ -12,7 +12,7 @@ 学过面向过程编程后,大一下学期一般会讲面向对象编程(例如 C++ 或 Java)。这里非常推荐大家看 [MIT 6.031: Software Construction](./软件工程/6031.md) 这门课的 Notes,会以 Java 语言(22年改用了 TypeScript 语言)为例非常详细地讲解如何写出“优雅”的代码。例如 Test-Driven 的开发、函数 Specification 的设计、异常的处理等等等等。除此之外,既然接触了面向对象,那么了解一些常见的设计模式也是很有必要的。因为国内的面向对象课程同样很容易变成极其无聊的语法课,让学生纠结于各种继承的语法,甚至出一些无聊的脑筋急转弯一样的题目,殊不知这些东西在地球人的开发中基本不会用到。面向对象的精髓是让学生学会自己将实际的问题抽象成若干类和它们之间的关系,而设计模式则是前人总结出来的一些精髓的抽象方法。这里推荐[大话设计模式](https://book.douban.com/subject/2334288/) 这本书,写得非常浅显易懂。 -其二就是尝试学习一些能提高生产力的工具和技能,例如 Git、Shell、Vim。这里强烈推荐学习 [MIT missing semester](./编程入门/MIT-Missing-Semester.md) 这门课,也许一开始接触这些工具用起来会很不习惯,但强迫自己用,熟练之后开发效率会直线提高。此外,还有很多应用也能极大提高的你生产力。一条定律是:一切需要让手离开键盘的操作,都应该想办法去除。例如切换应用、打开文件、浏览网页这些都有相关插件可以实现快捷操作(例如 Mac 上的 [Alfred](https://www.alfredapp.com/))。如果你发现某个操作每天都会用到,并且用时超过1秒,那就应该想办法把它缩减到0.1秒。毕竟以后数十年你都要和电脑打交道,形成一套顺滑的工作流是事半功倍的。最后,学会盲打!如果你还需要看着键盘打字,那么赶紧上网找个教程学会盲打,这将极大提高你的开发效率。 +其二就是尝试学习一些能提高生产力的工具和技能,例如 Git、Shell、Vim。这里强烈推荐学习 [MIT missing semester](./编程入门/MIT-Missing-Semester.md) 这门课,也许一开始接触这些工具用起来会很不习惯,但强迫自己用,熟练之后开发效率会直线提高。此外,还有很多应用也能极大提高你的生产力。一条定律是:一切需要让手离开键盘的操作,都应该想办法去除。例如切换应用、打开文件、浏览网页这些都有相关插件可以实现快捷操作(例如 Mac 上的 [Alfred](https://www.alfredapp.com/))。如果你发现某个操作每天都会用到,并且用时超过1秒,那就应该想办法把它缩减到0.1秒。毕竟以后数十年你都要和电脑打交道,形成一套顺滑的工作流是事半功倍的。最后,学会盲打!如果你还需要看着键盘打字,那么赶紧上网找个教程学会盲打,这将极大提高你的开发效率。 其三就是平衡好课内和自学。我们质疑现状,但也得遵守规则,毕竟绩点在保研中还是相当重要的。因此在大一,我还是建议大家尽量按照自己的课表学习,但辅以一些优质的课外资源。例如微积分线代可以参考 [MIT 18.01/18.02](./数学基础/MITmaths.md) 和 [MIT 18.06](./数学基础/MITLA.md) 的课程 Notes。假期可以通过 [UCB CS61A](./编程入门/Python/CS61A.md) 来学习 Python。同时做到上面第一、第二点说的,注重好的编程习惯和实践能力的培养。就个人经验,大一的数学课学分占比相当大,而且数学考试的内容方差是很大的,不同学校不同老师风格迥异,自学也许能让你领悟数学的本质,但未必能给你一个好成绩。因此考前最好有针对性地刷往年题,充分应试。 @@ -44,4 +44,4 @@ 随着贡献者的不断增多,左侧的目录中将不断增加新的分支,例如 **机器学习进阶** 和 **机器学习系统**。并且同一个分支下都有若干同类型课程,它们来自不同的学校,有着不同的侧重点和课程实验,例如 **操作系统** 分支下就包含了麻省理工、伯克利、南京大学还有哈工大四所学校的课程。如果你想深耕一个领域,那么学习这些同类的课程会给你不同的视角来看待类似的知识。同时,本书作者还计划联系一些相关领域的科研工作者来分享某个细分领域的科研学习路径,让 CS自学指南 在追求广度的同时,实现深度上的提高。 -如果你想贡献这方面的内容,欢迎和作者邮件联系 [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn) \ No newline at end of file +如果你想贡献这方面的内容,欢迎和作者邮件联系 [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn) diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 17e1942c..5d5f8cbd 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -34,6 +34,7 @@ - [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) [[豆瓣](https://book.douban.com/subject/19973015/)] - Modern Operating Systems [[豆瓣](https://book.douban.com/subject/27096665/)] - Operating Systems: Principles and Practice [[豆瓣](https://book.douban.com/subject/25984145/)] +- [Operating Systems: Internals and Design Principles](https://elibrary.pearson.de/book/99.150005/9781292214306) [[豆瓣](https://book.douban.com/subject/6047741/)] ## 计算机网络 diff --git a/docs/并行与分布式系统/CS149.en.md b/docs/并行与分布式系统/CS149.en.md index f602ed81..2bf265f4 100644 --- a/docs/并行与分布式系统/CS149.en.md +++ b/docs/并行与分布式系统/CS149.en.md @@ -14,8 +14,8 @@ The goal of this course is to provide a deep understanding of the fundamental pr ## Resources -- Course Website: [CMU15418](http://15418.courses.cs.cmu.edu/spring2016/), [CS149](https://gfxcourses.stanford.edu/cs149/fall21) -- Recordings: [CMU15418](http://15418.courses.cs.cmu.edu/spring2016/lectures), [CS149](https://youtube.com/playlist?list=PLoROMvodv4rMp7MTFr4hQsDEcX7Bx6Odp&si=txtQiRDZ9ZZUzyRn) +- Course Website: [CMU15418](https://www.cs.cmu.edu/afs/cs/academic/class/15418-s18/www/index.html), [CS149](https://gfxcourses.stanford.edu/cs149/fall21) +- Recordings: [CMU15418](https://www.cs.cmu.edu/afs/cs/academic/class/15418-s18/www/schedule.html), [CS149](https://youtube.com/playlist?list=PLoROMvodv4rMp7MTFr4hQsDEcX7Bx6Odp&si=txtQiRDZ9ZZUzyRn) - Textbook: None - Assignments: , 5 assignments. diff --git a/docs/并行与分布式系统/CS149.md b/docs/并行与分布式系统/CS149.md index c17049bf..71aa629d 100644 --- a/docs/并行与分布式系统/CS149.md +++ b/docs/并行与分布式系统/CS149.md @@ -14,8 +14,8 @@ ## 课程资源 -- 课程网站:[CMU15418](http://15418.courses.cs.cmu.edu/spring2016/), [CS149](https://gfxcourses.stanford.edu/cs149/fall21) -- 课程视频:[CMU15418](http://15418.courses.cs.cmu.edu/spring2016/lectures), [CS149](https://youtube.com/playlist?list=PLoROMvodv4rMp7MTFr4hQsDEcX7Bx6Odp&si=txtQiRDZ9ZZUzyRn) +- 课程网站:[CMU15418](https://www.cs.cmu.edu/afs/cs/academic/class/15418-s18/www/index.html), [CS149](https://gfxcourses.stanford.edu/cs149/fall21) +- 课程视频:[CMU15418](https://www.cs.cmu.edu/afs/cs/academic/class/15418-s18/www/schedule.html), [CS149](https://youtube.com/playlist?list=PLoROMvodv4rMp7MTFr4hQsDEcX7Bx6Odp&si=txtQiRDZ9ZZUzyRn) - 课程教材:无 - 课程作业:,5 个编程作业 diff --git a/docs/必学工具/Git.en.md b/docs/必学工具/Git.en.md index 581f197b..e2fe190c 100644 --- a/docs/必学工具/Git.en.md +++ b/docs/必学工具/Git.en.md @@ -13,7 +13,8 @@ Git is a powerful tool and when you finally master it, you will find all the eff Different from Vim, I don't suggest beginners use Git rashly without fully understanding it, because its inner logic can not be acquainted by practicing. Here is my recommended learning path: 1. Read this [Git tutorial](https://missing.csail.mit.edu/2020/version-control/) in English, or you can watch this [Git tutorial (by 尚硅谷)](https://www.bilibili.com/video/BV1vy4y1s7k6) in Chinese. -2. Read Chap1 - Chap5 of this open source book [Pro Git](https://git-scm.com/book/en/v2). Yes, to learn Git, you need to read a book. -3. Now that you have understood its principles and most of its usages, it's time to consolidate those commands by practicing. How to use Git properly is a kind of philosophy. I recommend reading this blog [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/). -4. You are now in love with Git and are not content with only using it, you want to build a Git by yourself! Great, that's exactly what I was thinking. [This tutorial](https://wyag.thb.lt/) will satisfy you! -5. What? Building your own Git is not enough? Seems that you are also passionate about reinventing the wheels. These two GitHub projects, [build-your-own-x](https://github.com/danistefanovic/build-your-own-x) and [project-based-learning](https://github.com/tuvtran/project-based-learning), collected many wheel-reinventing tutorials, e.g., text editor, virtual machine, docker, TCP and so on. +2. Read Chap1 - Chap5 of this open source book [Pro Git](https://git-scm.com/book/en/v2). Yes, to learn Git, you need to read a book. +3. [Learn Git Branching](https://learngitbranching.js.org/) is an interactive Git learning website that can help you quickly get started with using Git. +4. Now that you have understood its principles and most of its usages, it's time to consolidate those commands by practicing. How to use Git properly is a kind of philosophy. I recommend reading this blog [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/). +5. You are now in love with Git and are not content with only using it, you want to build a Git by yourself! Great, that's exactly what I was thinking. [This tutorial](https://wyag.thb.lt/) will satisfy you! +6. What? Building your own Git is not enough? Seems that you are also passionate about reinventing the wheels. These two GitHub projects, [build-your-own-x](https://github.com/danistefanovic/build-your-own-x) and [project-based-learning](https://github.com/tuvtran/project-based-learning), collected many wheel-reinventing tutorials, e.g., text editor, virtual machine, docker, TCP and so on. diff --git a/docs/必学工具/Git.md b/docs/必学工具/Git.md index e8eeffe0..17d3b774 100644 --- a/docs/必学工具/Git.md +++ b/docs/必学工具/Git.md @@ -14,6 +14,7 @@ Git 的设计非常优雅,但初学者通常因为很难理解其内部逻辑 1. 阅读这篇 [Git tutorial](https://missing.csail.mit.edu/2020/version-control/),视频的话可以看这个[尚硅谷Git教程](https://www.bilibili.com/video/BV1vy4y1s7k6) 2. 阅读这本开源书籍 [Pro Git](https://git-scm.com/book/en/v2) 的 Chapter1 - Chapter5,是的没错,学 Git 需要读一本书(捂脸)。 -3. 此时你已经掌握了 Git 的原理和绝大部分用法,接下来就可以在实践中反复巩固 Git 的命令了。但用好它同样是一门哲学,我个人觉得这篇[如何写好 Commit Message](https://chris.beams.io/posts/git-commit/) 的博客非常值得一读。 -4. 好的此时你已经爱上了 Git,你已经不满足于学会它了,你想自己实现一个 Git!巧了,我当年也有这样的想法,[这篇 tutorial](https://wyag.thb.lt/) 可以满足你! -5. 什么?光实现一个 Git 无法满足你?小伙子/小仙女有前途,巧的是我也喜欢造轮子,这两个 GitHub 项目 [build-your-own-x](https://github.com/danistefanovic/build-your-own-x) 和 [project-based-learning](https://github.com/tuvtran/project-based-learning) 收录了你能想到的各种造轮子教程,比如:自己造个编辑器、自己写个虚拟机、自己写个 docker、自己写个 TCP 等等等等。 +3. [Learn Git Branching](https://learngitbranching.js.org/) 是一个交互式的 Git 学习网站, 可以帮助你快速上手 Git 的使用。 +4. 此时你已经掌握了 Git 的原理和绝大部分用法,接下来就可以在实践中反复巩固 Git 的命令了。但用好它同样是一门哲学,我个人觉得这篇[如何写好 Commit Message](https://chris.beams.io/posts/git-commit/) 的博客非常值得一读。 +5. 好的此时你已经爱上了 Git,你已经不满足于学会它了,你想自己实现一个 Git!巧了,我当年也有这样的想法,[这篇 tutorial](https://wyag.thb.lt/) 可以满足你! +6. 什么?光实现一个 Git 无法满足你?小伙子/小仙女有前途,巧的是我也喜欢造轮子,这两个 GitHub 项目 [build-your-own-x](https://github.com/danistefanovic/build-your-own-x) 和 [project-based-learning](https://github.com/tuvtran/project-based-learning) 收录了你能想到的各种造轮子教程,比如:自己造个编辑器、自己写个虚拟机、自己写个 docker、自己写个 TCP 等等等等。 diff --git a/docs/必学工具/Latex.en.md b/docs/必学工具/LaTeX.en.md similarity index 100% rename from docs/必学工具/Latex.en.md rename to docs/必学工具/LaTeX.en.md diff --git a/docs/必学工具/tools.en.md b/docs/必学工具/tools.en.md index ad81ba7d..845598f6 100644 --- a/docs/必学工具/tools.en.md +++ b/docs/必学工具/tools.en.md @@ -71,11 +71,13 @@ - [Python3 Documentation](https://docs.python.org/zh-cn/3/): Official Chinese documentation for Python3. - [C++ Reference](https://en.cppreference.com/w/): C++ reference manual. - [OI Wiki](https://oi-wiki.org/): An integrated site for programming competition knowledge. +- [CTF Wiki](https://ctf-wiki.org/): An integrated site for knowledge and tools related to cybersecurity competitions. - [Microsoft Learn](https://learn.microsoft.com/zh-cn/): Microsoft's official learning platform, containing most Microsoft product documentation. - [Arch Wiki](https://wiki.archlinux.org/): Wiki written for Arch Linux, containing a lot of Linux-related knowledge. - [Qt Wiki](https://wiki.qt.io/Main): Official Qt Wiki. - [OpenCV Chinese Documentation](https://opencv.apachecn.org/#/): Community version of OpenCV's Chinese documentation. - [npm Docs](https://docs.npmjs.com/): Official npm documentation. +- [developer-roadmap](https://roadmap.sh/): provides roadmaps, guides and other educational content to help guide developers in picking up a path and guide their learnings. ## Communication Platforms diff --git a/docs/必学工具/tools.md b/docs/必学工具/tools.md index a297a75d..423e0948 100644 --- a/docs/必学工具/tools.md +++ b/docs/必学工具/tools.md @@ -71,11 +71,13 @@ - [Python3 Documentation](https://docs.python.org/zh-cn/3/): Python3 官方中文文档。 - [C++ Reference](https://en.cppreference.com/w/): C++ 参考手册。 - [OI Wiki](https://oi-wiki.org/): 编程竞赛知识整合站点。 +- [CTF Wiki](https://ctf-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 官方文档。 +- [developer-roadmap](https://roadmap.sh/):帮助开发者了解学习路径并在职业生涯中不断成长。 ## 交流平台 - [GitHub](https://github.com/): 许多开源项目的托管平台,也是许多开源项目的主要交流平台,通过查看 issue 可以解决许多问题。 diff --git a/docs/数学进阶/numerical.en.md b/docs/数学进阶/numerical.en.md index 0bb8bf68..98c8e4d2 100644 --- a/docs/数学进阶/numerical.en.md +++ b/docs/数学进阶/numerical.en.md @@ -17,7 +17,7 @@ The designers of this course have also written an open source textbook for this ## Course Resources - Course Website: -- Textbook: +- Textbook: - Assignments: 10 problem sets ## Personal Resources diff --git a/docs/数学进阶/numerical.md b/docs/数学进阶/numerical.md index 99532bc6..1d7e9695 100644 --- a/docs/数学进阶/numerical.md +++ b/docs/数学进阶/numerical.md @@ -17,7 +17,7 @@ ## 课程资源 - 课程网站: -- 课程教材: +- 课程教材: - 课程作业:10 个 Julia 编程作业 ## 资源汇总 diff --git a/docs/数据结构与算法/CS61B.en.md b/docs/数据结构与算法/CS61B.en.md index 4823b9ae..6576c906 100644 --- a/docs/数据结构与算法/CS61B.en.md +++ b/docs/数据结构与算法/CS61B.en.md @@ -12,6 +12,8 @@ It is the second course of UC Berkeley's CS61 series. It mainly focuses on the d I took the version for 2018 Spring. Josh Hug, the instructor, generously made the autograder open-source. You can use [gradescope](https://gradescope.com/) invitation code published on the website for free and easily test your implementation. +According to the professor's latest policy, SP2021 CS61B is now open to the public. To get everything set up, go to Gradescope and select the "Add a course" button. Enter course code **MB7ZPY** to be added. + All programming assignments in this course are done in Java. Students without Java experience don't have to worry. There will be detailed tutorials in the course from the configuration of IDEA to the core syntax and features of Java. The quality of homework in this class is also unparalleled. The 14 labs will allow you to implement most of the data structures mentioned in the class by yourself, and the 10 homework will allow you to use data structures and algorithms to solve practical problems. @@ -20,7 +22,7 @@ In addition, there are 3 projects that give you the opportunity to be exposed to ## Resources ## Course Resources -- Course Website: [spring2024](https://sp24.datastructur.es/), [fall2023](https://fa23.datastructur.es/), [spring2023](https://sp23.datastructur.es/), [spring2018](https://sp18.datastructur.es/) +- Course Website: [spring2024](https://sp24.datastructur.es/), [fall2023](https://fa23.datastructur.es/), [spring2023](https://sp23.datastructur.es/), [spring2021](https://sp21.datastructur.es/), [spring2018](https://sp18.datastructur.es/) - Recordings: refer to the course website - Textbook: None - Assignments: Slightly different every year. In the spring semester of 2018, there are 14 Labs, 10 Homework and 3 Projects. Please refer to the course website for specific requirements. diff --git a/docs/数据结构与算法/CS61B.md b/docs/数据结构与算法/CS61B.md index 9cb7b94f..058fa8c6 100644 --- a/docs/数据结构与算法/CS61B.md +++ b/docs/数据结构与算法/CS61B.md @@ -13,6 +13,8 @@ 我上的是 2018 年春季学期的版本,该课的开课老师 Josh Hug 教授慷慨地将 autograder 开源了,大家可以通过网站公开的邀请码在 [gradescope](https://gradescope.com/) 免费加入课程,从而方便地测评自己的代码。 +根据教授最新的政策,SP2021 的 CS61B 也对公众开放。要设置所有内容,请前往 Gradescope 并选择"Add a course"按钮。输入课程代码 **MB7ZPY** 以添加课程。 + 这门课所有的编程作业都是使用 Java 完成的。没有 Java 基础的同学也不用担心,课程会有保姆级的教程,从 IDEA(一款主流的 Java 编程环境)的配置讲起,把 Java 的核心语法与特性事无巨细地讲授,大家完全不用担心跟不上的问题。 这门课的作业质量也是绝绝子。14 个 lab 会让你自己实现课上所讲的绝大部分数据结构,10 个 Homework 会让你运用数据结构和算法解决实际问题, @@ -20,7 +22,7 @@ ## 课程资源 -- 课程网站:[spring2024](https://sp24.datastructur.es/), [fall2023](https://fa23.datastructur.es/), [spring2023](https://sp23.datastructur.es/), [spring2018](https://sp18.datastructur.es/) +- 课程网站:[spring2024](https://sp24.datastructur.es/), [fall2023](https://fa23.datastructur.es/), [spring2023](https://sp23.datastructur.es/), [spring2021](https://sp21.datastructur.es/), [spring2018](https://sp18.datastructur.es/) - 课程视频:原版视频参见课程网站,B站有中文翻译搬运。 - 课程教材:无 - 课程作业:每年略有不同,18 年春季学期有 14 个 Lab,10 个 Homework以及 3 个 Project,具体要求详见课程网站。 diff --git a/docs/机器学习系统/CMU10-414.en.md b/docs/机器学习系统/CMU10-414.en.md index d85acb95..ecaf5559 100644 --- a/docs/机器学习系统/CMU10-414.en.md +++ b/docs/机器学习系统/CMU10-414.en.md @@ -26,3 +26,5 @@ Instructors [Zico Kolter](https://zicokolter.com/) and [Tianqi Chen](https://tqc ## Resource Compilation All resources and assignment implementations used by @PKUFlyingPig in this course are consolidated in [PKUFlyingPig/CMU10-714 - GitHub](https://github.com/PKUFlyingPig/CMU10-714) + +All assignment implementations by @Crazy-Ryan in this course (24 Fall offering) are consolidated in [Crazy-Ryan/CMU-10-714 - GitHub](https://github.com/Crazy-Ryan/CMU-10-714) \ No newline at end of file diff --git a/docs/机器学习系统/CMU10-414.md b/docs/机器学习系统/CMU10-414.md index afcaad04..0a2a8877 100644 --- a/docs/机器学习系统/CMU10-414.md +++ b/docs/机器学习系统/CMU10-414.md @@ -32,3 +32,5 @@ ## 资源汇总 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CMU10-714 - GitHub](https://github.com/PKUFlyingPig/CMU10-714) 中。 + +@Crazy-Ryan 在学习这门课(24 Fall)过程中的作业实现汇总在 [Crazy-Ryan/CMU-10-714 - GitHub](https://github.com/Crazy-Ryan/CMU-10-714) 中。 \ No newline at end of file diff --git a/docs/机器学习进阶/roadmap.en.md b/docs/机器学习进阶/roadmap.en.md index d987101f..9db7b7c6 100644 --- a/docs/机器学习进阶/roadmap.en.md +++ b/docs/机器学习进阶/roadmap.en.md @@ -1,4 +1,4 @@ -# Advanced Machine Learning +# Advanced Machine Learning Roadmap This learning path is suitable for students who have already learned the basics of machine learning (ML, NLP, CV, RL), such as senior undergraduates or junior graduate students, and have published at least one paper in top conferences (NeurIPS, ICML, ICLR, ACL, EMNLP, NAACL, CVPR, ICCV) and are interested in pursuing a research path in machine learning. diff --git a/docs/机器学习进阶/roadmap.md b/docs/机器学习进阶/roadmap.md index 4a5d3e0d..ebecfb55 100644 --- a/docs/机器学习进阶/roadmap.md +++ b/docs/机器学习进阶/roadmap.md @@ -1,4 +1,4 @@ -# 机器学习进阶 +# 机器学习进阶学习路线 此路线图适用于已经学过了基础机器学习 (ML, NLP, CV, RL) 的同学 (高年级本科生或低年级研究生),已经发表过至少一篇顶会论文 (NeurIPS, ICML, ICLR, ACL, EMNLP, NAACL, CVPR, ICCV) 想要走机器学习科研路线的选手。 @@ -53,11 +53,11 @@ - 读完 PRML 第 13 章之后,再去读 PRML 第 8 章 (Graphical Models) -- 此时这部分应该会读得很轻松 - 以上的内容可以进一步对照 CMU 10-708 PGM 课程材料 -到目前为止,应该能够掌握 +到目前为止,应该能够掌握: - 概率模型的基础定义 - 精准推断 - Sum-Product - 近似推断 - MCMC - 近似推断 - VI -然后就可以去做更进阶的内容 +然后就可以去做更进阶的内容。 diff --git a/docs/深度学习/CS224n.en.md b/docs/深度学习/CS224n.en.md index 6c9b6378..834c1e71 100644 --- a/docs/深度学习/CS224n.en.md +++ b/docs/深度学习/CS224n.en.md @@ -8,7 +8,7 @@ - Course Difficulty:🌟🌟🌟🌟 - Estimated Hours:80 hours -CS224n is an introductory course in Natural Language Processing (NLP) offered by Stanford and led by renowned NLP expert Chris Manning, the creator of the word2vec algorithm. The course covers core concepts in the field of NLP, including word embeddings, RNNs, LSTMs, Seq2Seq models, machine translation, attention mechanisms, Transformers, and more. +CS224n is an introductory course in Natural Language Processing (NLP) offered by Stanford and led by renowned NLP expert Chris Manning. The course covers core concepts in the field of NLP, including word embeddings, RNNs, LSTMs, Seq2Seq models, machine translation, attention mechanisms, Transformers, and more. The course consists of 5 progressively challenging programming assignments covering word vectors, the word2vec algorithm, dependency parsing, machine translation, and fine-tuning a Transformer. diff --git a/docs/深度学习/CS224n.md b/docs/深度学习/CS224n.md index a6351f25..a3f915b3 100644 --- a/docs/深度学习/CS224n.md +++ b/docs/深度学习/CS224n.md @@ -8,7 +8,7 @@ - 课程难度:🌟🌟🌟🌟 - 预计学时:80 小时 -Stanford 的 NLP 入门课程,由自然语言处理领域的巨佬 Chris Manning 领衔教授(word2vec 算法的开创者)。内容覆盖了词向量、RNN、LSTM、Seq2Seq 模型、机器翻译、注意力机制、Transformer 等等 NLP 领域的核心知识点。 +Stanford 的 NLP 入门课程,由自然语言处理领域的巨佬 Chris Manning 领衔教授。内容覆盖了词向量、RNN、LSTM、Seq2Seq 模型、机器翻译、注意力机制、Transformer 等等 NLP 领域的核心知识点。 5 个编程作业难度循序渐进,分别是词向量、word2vec 算法、Dependency parsing、机器翻译以及 Transformer 的 fine-tune。 diff --git a/docs/深度学习/CS231.en.md b/docs/深度学习/CS231.en.md index c1d12bb4..ccc427e6 100644 --- a/docs/深度学习/CS231.en.md +++ b/docs/深度学习/CS231.en.md @@ -13,6 +13,6 @@ Stanford's CV introductory class, led by the giant of the computer field, Fei-Fe ## Course Resources - Course Website: -- Course Video: +- Course Video:[spring 2017 Bilibili (Classic)](https://www.bilibili.com/video/BV1nJ411z7fe), [spring 2025 YouTube (Latest)](https://www.youtube.com/playlist?list=PLoROMvodv4rOmsNzYBMe0gJY2XS8AQg16) - Course Materials: None - Coursework:,3 Programming Assignments diff --git a/docs/深度学习/CS231.md b/docs/深度学习/CS231.md index 0fe57e0f..6f2d9bf7 100644 --- a/docs/深度学习/CS231.md +++ b/docs/深度学习/CS231.md @@ -13,6 +13,6 @@ Stanford 的 CV 入门课,由计算机领域的巨佬李飞飞院士领衔教 ## 课程资源 - 课程网站: -- 课程视频: +- 课程视频:[spring 2017 Bilibili](https://www.bilibili.com/video/BV1nJ411z7fe), [spring 2025 YouTube (最新)](https://www.youtube.com/playlist?list=PLoROMvodv4rOmsNzYBMe0gJY2XS8AQg16) - 课程教材:无 - 课程作业:,3个编程作业 diff --git a/docs/深度学习/LHY.en.md b/docs/深度学习/LHY.en.md index bbb12997..079030d0 100644 --- a/docs/深度学习/LHY.en.md +++ b/docs/深度学习/LHY.en.md @@ -14,9 +14,11 @@ Although labeled as a machine learning course, the breadth of topics covered is Don't be overly concerned about the difficulty of the assignments. All assignments come with example code from teaching assistants, guiding students through data processing, model building, and more. Students are required to make modifications based on the provided code. This presents an excellent opportunity to learn from high-quality code, and the assignments serve as valuable resources for those looking to breeze through course projects. +The 2025 version of the course has undergone a reform of the course content, focusing more on RAG, AI Agent, LLM all sorts of fancier content; it differs greatly from the 2023 version and previous versions + ## Course Resources -- Course Websites: -- Course Videos: +- Course Websites:[Spring2023](https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php), [Spring2025](https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php) +- Course Videos:[Spring2023](https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php), [Spring2025](https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php) - Course Textbook: N/A -- Course Assignments:, 15 labs covering a wide range of deep learning domains +- Course Assignments:[Spring2023](https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php)(15 labs covering a wide range of deep learning domains), [Spring2025](https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php) (focus on LLM related work like AI Agent) diff --git a/docs/深度学习/LHY.md b/docs/深度学习/LHY.md index 0ecbfcef..3ca1b96b 100644 --- a/docs/深度学习/LHY.md +++ b/docs/深度学习/LHY.md @@ -15,9 +15,11 @@ RL、Compression、Life-Long Learning 以及 Meta Learning。可谓是包罗万 大家也大可不必担心作业的难度,因为所有作业都会提供助教的示例代码,帮你完成数据处理、模型搭建等,你只需要在其基础上进行适量的修改即可。这也是一个学习别人优质代码的极好机会,大家需要水课程大作业的话,这里也是一个不错的资料来源。 +2025年版课程的课程内容发生改革,更加侧重于RAG、AI Agent、LLM种种更fasion的内容;与2023版及之前版本差异极大 + ## 课程资源 -- 课程网站: -- 课程视频:,每节课的链接参见课程网站 +- 课程网站:[Spring2023](https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php), [Spring2025](https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php) +- 课程视频:[Spring2023](https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php), [Spring2025](https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php),每节课的链接参见课程网站 - 课程教材:无 -- 课程作业:,15 个 lab,几乎覆盖了主流深度学习的所有领域 +- 课程作业:[Spring2023](https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php) (5 个 lab,几乎覆盖了主流深度学习的所有领域;部分作业colab上可能无法打开,这时候可以参考弘毅老师的github), [Spring2025](https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php) (主要关注 AI Agent 等 LLM 相关领域) diff --git a/docs/深度生成模型/MIT6.S184.en.md b/docs/深度生成模型/MIT6.S184.en.md new file mode 100644 index 00000000..09cfd266 --- /dev/null +++ b/docs/深度生成模型/MIT6.S184.en.md @@ -0,0 +1,20 @@ +# MIT6.S184: Generative AI with Stochastic Differential Equations + +## Course Introduction + +- University: MIT +- Prerequisites: Basic understanding of deep learning, and be comfortable with calculus and linear algebra +- Programming Language: Python (with PyTorch) +- Course Difficulty: 🌟🌟🌟🌟 +- Estimated Study Hours: 20 + +This course is an introductory diffusion model course offered during MIT's IAP term by MIT CSAIL. Taught by MIT students Peter Holderrieth and Ezra Erives, the course provides a clear and accessible explanation of the mathematical foundations of diffusion and flow-matching models from the perspective of differential equations. It also includes hands-on labs where students build diffusion models from scratch, concluding with lectures on applications in cutting-edge areas such as molecular design and robotics. + +The accompanying lecture notes are exceptionally well-written and highly recommended for in-depth reading. + +## Course Resources + +- Course Website: https://diffusion.csail.mit.edu/ +- Course Videos: See course website +- Course Textbook: [An Introduction to Flow Matching and Diffusion Models](https://arxiv.org/abs/2506.02070) +- Course Assignments: Three labs, see course website for details diff --git a/docs/深度生成模型/MIT6.S184.md b/docs/深度生成模型/MIT6.S184.md new file mode 100644 index 00000000..b4578285 --- /dev/null +++ b/docs/深度生成模型/MIT6.S184.md @@ -0,0 +1,20 @@ +# MIT6.S184: Generative AI with Stochastic Differential Equations + +## 课程简介 + +- 所属大学:MIT +- 先修要求:Basic understanding of deep learning, and be comfortable with calculus and linear algebra +- 编程语言:Python (with PyTorch) +- 课程难度:🌟🌟🌟🌟 +- 预计学时:20 + +这门课程是由 MIT CSAIL 的 IAP 小学期开办的扩散模型入门课程。该课程由 MIT 学生 Peter Holderrieth 和 Ezra Erives 主讲,从微分方程的视角深入浅出地讲解了扩散模型和流匹配模型的数学理论基础,并且配以实践让学生从零构建扩散模型,最后通过讲座介绍其在分子设计和机器人学等前沿技术中的应用。 + +课程配套的教材笔记写得非常好,推荐仔细阅读。 + +## 课程资源 + +- 课程网站:https://diffusion.csail.mit.edu/ +- 课程视频:参见课程网站 +- 课程教材:[An Introduction to Flow Matching and Diffusion Models](https://arxiv.org/abs/2506.02070) +- 课程作业:三个实验,具体参见课程网站 diff --git a/docs/深度生成模型/roadmap.en.md b/docs/深度生成模型/roadmap.en.md new file mode 100644 index 00000000..e736d7f9 --- /dev/null +++ b/docs/深度生成模型/roadmap.en.md @@ -0,0 +1,29 @@ +# Deep Generative Models Roadmap + +In recent years, large language models (LLMs) have become a hot topic, which is also highly relevant to the author’s PhD research. This roadmap aims to share various course materials and references that the author found useful while getting familiar with and delving into the field of deep generative models. It’s intended to help practitioners in related areas or anyone interested in the underlying principles of generative models. Due to limited time outside of research, the author has not completed all the course assignments; updates will be added gradually when time permits. + +In fact, LLMs are just one branch of deep generative models. Other types such as VAEs, GANs, Diffusion Models, and Flows still play an important role in the broader domain of "generation." The term AIGC (AI-generated content) broadly refers to these technologies. + +Recommended courses for learning: + +- [MIT 6.S184: Generative AI with Stochastic Differential Equations](./MIT6.S184.md): An introductory GenAI course offered during MIT's IAP term. It explains the mathematical foundations behind Flow Matching and Diffusion Models from the perspective of differential equations, accompanied by simple hands-on labs to help students grasp the concepts through practice. Ideal for those interested in the underlying mathematical principles. + +- [MIT 6.S978: Deep Generative Models](https://mit-6s978.github.io/schedule.html): Taught by MIT’s rising star Prof. Kaiming He, this course covers fundamental theories and cutting-edge papers related to various generative models. The assignments include well-prepared scaffold code. While not overly difficult, they help deepen understanding and provide a quick, comprehensive view of the field. + +- [UCB CS294-158-SP24: Deep Unsupervised Learning](https://sites.google.com/view/berkeley-cs294-158-sp24/home): Taught by reinforcement learning giant Pieter Abbeel. Compared to the MIT course, this one is more comprehensive and includes lecture videos and slides. The homework only provides test code, so students must implement model architecture and training code themselves. Though demanding, it’s ideal for those who want hands-on experience in training models. As is well known, there are many practical tricks in deep learning, and the devil is often in the details. Nothing teaches those details better than training a model yourself. + +- [CMU 10423: Generative AI](https://www.cs.cmu.edu/~mgormley/courses/10423/schedule.html): CMU’s GenAI course focuses more on large language models compared to the previous two, but shares much of the same content otherwise. The assignments are quite engaging and worth trying out in your spare time. + +The GPT series by OpenAI has demonstrated remarkable performance under the guidance of scaling laws, especially in mathematics and coding. If you are primarily interested in LLMs, the following courses are recommended: + +- [Stanford CS336: Language Modeling from Scratch](https://stanford-cs336.github.io/spring2025/index.html): As the title suggests, this course teaches you to build all the core components of an LLM from scratch, such as the tokenizer, model architecture, training optimizer, low-level operators, data cleaning, and post-training algorithms. Each assignment has a 40-50 page PDF handout—very rigorous. Highly recommended if you want to fully understand every low-level detail of LLMs. + +- [CMU 11868: Large Language Model Systems](https://llmsystem.github.io/llmsystem2025spring/): This CMU course focuses on system-level optimization of LLMs, including GPU acceleration, distributed training/inference, and cutting-edge techniques. Great for students in systems research to gain a holistic understanding of the field. (Disclosure: One of my papers on PD decoupling is included in the syllabus, hence the personal recommendation.) Assignments involve implementing a mini-PyTorch framework and then building system-level LLM optimizations on top of it. + +- [CMU 11667: Large Language Models: Methods and Applications](https://cmu-llms.org/) and [CMU 11711: Advanced NLP](https://www.phontron.com/class/anlp-fall2024/): Compared to the previous two, these courses focus more on higher-level algorithms and applications. Each lecture includes many recommended readings, making them suitable for gaining a broad understanding of LLM research frontiers. You can then dive deeper into any subfield that interests you based on the reading materials. + +In addition to courses, the following resources are also highly recommended: + +- [Awesome-LLM](https://github.com/Hannibal046/Awesome-LLM): A curated list of LLM-related resources. +- [LLMSys-PaperList](https://github.com/AmberLJC/LLMSys-PaperList): A collection of system-related papers on LLMs. +- [MLsys-Guide](https://github.com/PKU-DAIR/Starter-Guide/blob/main/docs/systems/Readme.md): A beginner’s guide to deep learning systems. diff --git a/docs/深度生成模型/roadmap.md b/docs/深度生成模型/roadmap.md new file mode 100644 index 00000000..1dbc139a --- /dev/null +++ b/docs/深度生成模型/roadmap.md @@ -0,0 +1,29 @@ +# 深度生成模型学习路线 + +近几年大语言模型成为大热的方向,也和笔者博士期间的课题非常相关。这篇路线图旨在分享笔者在熟悉和深入深度生成模型这一领域过程中学习和参考的各类课程资料,方便相关领域的从业者或者对生成模型的底层原理感兴趣的朋友共同学习。由于笔者科研之余时间有限,很多课程的实验并未完成,等后续有时间完成之后会在该目录下一一添加。 + +其实,大语言模型只是深度生成模型的一个分支,而其他生成模型例如 VAE,GAN,Diffusion Model,Flow 等等,都还在“生成”这一领域占有重要地位,所谓的 AIGC,就是泛指这一类技术。 +推荐学习下列课程: + +- [MIT 6.S184: Generative AI with Stochastic Differential Equations](./MIT6.S184.md): MIT IAP 小学期的 GenAI 入门课程,主要通过微分方程的视角讲解了 Flow Matching 和 Diffusion Model 背后的数学原理,并且配有简单的小实验让学生在实践中理解,适合对底层数学原理感兴趣的同学入门。 + +- [MIT 6.S978: Deep Generative Models](https://mit-6s978.github.io/schedule.html): MIT 新晋明星教授何恺明亲授,涵盖了各种生成模型的基础理论和相关前沿论文,几次作业都有丰富的脚手架代码,难度不高但能加深理解,能对这个领域有个快速全貌了解。 + +- [UCB CS294-158-SP24: Deep Unsupervised Learning](https://sites.google.com/view/berkeley-cs294-158-sp24/home): 强化学习领域的顶级巨佬 Pieter Abbeel 主讲,相比 MIT 的课程内容更加丰富全面,并且有配套课程视频和 Slides。此外课后作业只有测试代码,需要学生自主编写模型架构定义和训练代码,虽然硬核但很适合有志于炼丹的同学练手。众所周知,深度学习理论实践中存在着很多经验技巧,魔鬼往往存在于细节里。没有什么比自己上手训一个模型更能掌握这些细节了。 + +- [CMU 10423: Generative AI](https://www.cs.cmu.edu/~mgormley/courses/10423/schedule.html): CMU 的 GenAI 课程,相比前两门课更侧重于大语言模型一些,其他内容和前两门课重合较多。不过课程作业都挺有意思,推荐闲暇时间练练手。 + + +OpenAI 的 GPT 系列让大语言模型在 Scaling Law 的指引下展现出惊人的效果,在数学和代码领域取得了很大进展。如果你主要关注大语言模型这个方向,那么推荐如下课程: + +- [Stanford CS336: Language Modeling from Scratch](https://stanford-cs336.github.io/spring2025/index.html): 正如课程标题写的,在这门课程中你将从头编写大语言模型的所有核心组件,例如 Tokenizer,模型架构,训练优化器,底层算子,训练数据清洗,后训练算法等等。每次作业的 handout 都有四五十页 pdf,相当硬核。如果你想充分吃透大语言模型的所有底层细节,那么非常推荐学习这门课程。 + +- [CMU 11868: Large Language Model Systems](https://llmsystem.github.io/llmsystem2025spring/): CMU 的大语言模型系统课程,侧重底层系统优化,例如 GPU 加速,分布式训练和推理,以及各种前沿技术。非常适合从事系统领域的同学对这个方向有个全貌性的了解。课表里还包含了一篇我发表的 PD 分离相关的文章,因此私心推荐一下。课程作业的话会让你先实现一个迷你 Pytorch,然后在上面实现各种大语言模型的系统级优化。 + +- [CMU 11667: Large Language Models: Methods and Applications](https://cmu-llms.org/) 和 [CMU 11711: Advanced NLP](https://www.phontron.com/class/anlp-fall2024/): 和前两门课相比,这两门课更偏重上层算法和应用,而且每节课都列举了很多相关阅读材料,适合对大语言模型发展前沿的各个方向都有个粗糙的认识,如果对某个子领域感兴趣的话再寻着参考资料深入学习。 + +除了课程以外,还有很多不错的资料作为参考: + +- [Awesome-LLM](https://github.com/Hannibal046/Awesome-LLM): 大语言模型相关资料汇总 +- [LLMSys-PaperList](https://github.com/AmberLJC/LLMSys-PaperList): 大语言模型系统相关论文汇总 +- [MLsys-Guide](https://github.com/PKU-DAIR/Starter-Guide/blob/main/docs/systems/Readme.md): 深度学习系统入门指南 \ No newline at end of file diff --git a/docs/深度生成模型/大语言模型/CMU11-667.en.md b/docs/深度生成模型/大语言模型/CMU11-667.en.md new file mode 100644 index 00000000..89fe193a --- /dev/null +++ b/docs/深度生成模型/大语言模型/CMU11-667.en.md @@ -0,0 +1,31 @@ +# CMU11-667: Large Language Models: Methods and Applications + +## Course Overview + +- University: Carnegie Mellon University +- Prerequisites: Solid background in machine learning (equivalent to CMU 10-301/10-601) and natural language processing (equivalent to 11-411/11-611); proficiency in Python and familiarity with PyTorch or similar deep learning frameworks. +- Programming Language: Python +- Course Difficulty: 🌟🌟🌟🌟 +- Estimated Study Hours: 100+ hours + +This graduate-level course provides a comprehensive overview of methods and applications of Large Language Models (LLMs), covering a wide range of topics from core architectures to cutting-edge techniques. Course content includes: + +1. **Foundations**: Neural network architectures for language modeling, training procedures, inference, and evaluation metrics. +2. **Advanced Topics**: Model interpretability, alignment methods, emergent capabilities, and applications in both textual and non-textual domains. +3. **System & Optimization Techniques**: Large-scale pretraining strategies, deployment optimization, and efficient training/inference methods. +4. **Ethics & Safety**: Addressing model bias, adversarial attacks, and legal/regulatory concerns. + +The course blends lectures, readings, quizzes, interactive exercises, assignments, and a final project to offer students a deep and practical understanding of LLMs, preparing them for both research and real-world system development. + +**Self-Study Tips**: + +- Thoroughly read all assigned papers and materials before each class. +- Become proficient with PyTorch and implement core models and algorithms by hand. +- Complete the assignments diligently to build practical skills and reinforce theoretical understanding. + +## Course Resources + +- Course Website: +- Course Videos: Selected lecture slides and materials are available on the website; full lecture recordings may require CMU internal access. +- Course Materials: Curated research papers and supplementary materials, with the full reading list available on the course site. +- Assignments: Six programming assignments covering data preparation, Transformer implementation, retrieval-augmented generation, model evaluation and debiasing, and training efficiency. Details at diff --git a/docs/深度生成模型/大语言模型/CMU11-667.md b/docs/深度生成模型/大语言模型/CMU11-667.md new file mode 100644 index 00000000..88938ceb --- /dev/null +++ b/docs/深度生成模型/大语言模型/CMU11-667.md @@ -0,0 +1,31 @@ +# CMU11-667: Large Language Models: Methods and Applications + +## 课程简介 + +- 所属大学:Carnegie Mellon University +- 先修要求:具备机器学习基础(相当于 CMU 的 10-301/10-601)和自然语言处理基础(相当于 11-411/11-611);熟练掌握 Python,熟悉 PyTorch 等深度学习框架。 +- 编程语言:Python +- 课程难度:🌟🌟🌟🌟 +- 预计学时:100 学时以上 + +该研究生课程全面介绍了大型语言模型(LLM)的方法与应用,涵盖从基础架构到前沿技术的广泛主题。课程内容包括: + +1. **基础知识**:语言模型的网络架构、训练、推理和评估方法。 +2. **进阶主题**:模型解释性、对齐方法、涌现能力,以及在语言任务和非文本任务中的应用。 +3. **扩展技术**:大规模预训练技术、模型部署优化,以及高效的训练和推理方法。 +4. **伦理与安全**:模型偏见、攻击方法、法律问题等。 + +课程采用讲座、阅读材料、小测验、互动活动、作业和项目相结合的方式进行,旨在为学生提供深入理解 LLM 的机会,并为进一步的研究或应用打下坚实基础。 + +**自学建议**: + +- 认真阅读每次课前指定的论文和材料。 +- 熟悉 PyTorch 等深度学习框架,动手实现模型和算法。 +- 扎实完成课程作业。 + +## 课程资源 + +- 课程网站: +- 课程视频:部分讲座幻灯片和材料可在课程网站获取,完整视频可能需通过 CMU 内部平台访问。 +- 课程教材:精选论文和资料,具体阅读列表详见课程网站。 +- 课程作业:共六次作业,涵盖预训练数据准备、Transformer 实现、检索增强生成、模型比较与偏见缓解、训练效率提升等主题,详情见 diff --git a/docs/深度生成模型/大语言模型/CMU11-711.en.md b/docs/深度生成模型/大语言模型/CMU11-711.en.md new file mode 100644 index 00000000..3de7e84a --- /dev/null +++ b/docs/深度生成模型/大语言模型/CMU11-711.en.md @@ -0,0 +1,27 @@ +# CMU 11-711: Advanced Natural Language Processing (ANLP) + +## Course Overview + +* University: Carnegie Mellon University +* Prerequisites: No strict prerequisites, but students should have experience with Python programming, as well as a background in probability and linear algebra. Prior experience with neural networks is recommended. +* Programming Language: Python +* Course Difficulty: 🌟🌟🌟🌟 +* Estimated Workload: 100 hours + +This is a graduate-level course covering both foundational and advanced topics in Natural Language Processing (NLP). The syllabus spans word representations, sequence modeling, attention mechanisms, Transformer architectures, and cutting-edge topics such as large language model pretraining, instruction tuning, complex reasoning, multimodality, and model safety. Compared to similar courses, this course stands out for the following reasons: + +1. **Comprehensive and research-driven content**: In addition to classical NLP methods, it offers in-depth discussions of recent trends and state-of-the-art techniques such as LLaMa and GPT-4. +2. **Strong practical component**: Each lecture includes code demonstrations and online quizzes, and the final project requires reproducing and improving upon a recent research paper. +3. **Highly interactive**: Active engagement is encouraged through Piazza discussions, Canvas quizzes, and in-class Q&A, resulting in an immersive and well-paced learning experience. + +Self-study tips: + +* Read the recommended papers before class and follow the reading sequence step-by-step. +* Set up a Python environment and become familiar with PyTorch and Hugging Face, as many hands-on examples are based on these frameworks. + +## Course Resources + +* Course Website: [https://www.phontron.com/class/anlp-fall2024/](https://www.phontron.com/class/anlp-fall2024/) +* Course Videos: Lecture recordings are available on Canvas (CMU login required) +* Course Texts: Selected classical and cutting-edge research papers + chapters from *A Primer on Neural Network Models for Natural Language Processing* by Yoav Goldberg +* Course Assignments: [https://www.phontron.com/class/anlp-fall2024/assignments/](https://www.phontron.com/class/anlp-fall2024/assignments/) diff --git a/docs/深度生成模型/大语言模型/CMU11-711.md b/docs/深度生成模型/大语言模型/CMU11-711.md new file mode 100644 index 00000000..d6406d06 --- /dev/null +++ b/docs/深度生成模型/大语言模型/CMU11-711.md @@ -0,0 +1,28 @@ +# CMU 11-711: Advanced Natural Language Processing (ANLP) + +## 课程简介 + +* 所属大学:Carnegie Mellon University +* 先修要求:无硬性先修要求,但需具备 Python 编程经验,以及概率论和线性代数基础;有神经网络使用经验者更佳。 +* 编程语言:Python +* 课程难度:🌟🌟🌟🌟 +* 预计学时:100 学时 + +该课程为研究生级别的 NLP 入门与进阶课程,覆盖从词表征、序列建模,到注意力机制、Transformer 架构,再到大规模语言模型预训练、指令微调与复杂推理、多模态和安全性等前沿主题。与其他同类课程相比,本课程: + +1. **内容全面且紧跟最新研究**:除经典算法外,深入讲解近年热门的大模型方法(如 LLaMa、GPT-4 等)。 +2. **实践性强**:每次课配套代码演示与在线小测,学期末项目需复现并改进一篇前沿论文。 +3. **互动良好**:Piazza 讨论、Canvas 测验及现场答疑,学习体验沉浸而有节奏。 + +自学建议: + +* 提前阅读课前推荐文献,跟着阅读顺序循序渐进。 +* 准备好 Python 环境并熟悉 PyTorch/Hugging Face,因为大量实战代码示例基于此。 +* 扎实完成课程作业。 + +## 课程资源 + +* 课程网站:[https://www.phontron.com/class/anlp-fall2024/](https://www.phontron.com/class/anlp-fall2024/) +* 课程视频:课堂讲座录制并上传至 Canvas(需 CMU 帐号登录) +* 课程教材:各类经典与前沿论文+Goldberg《A Primer on Neural Network Models for Natural Language Processing》章节阅读 +* 课程作业:[https://www.phontron.com/class/anlp-fall2024/assignments/](https://www.phontron.com/class/anlp-fall2024/assignments/) diff --git a/docs/深度生成模型/大语言模型/CMU11-868.en.md b/docs/深度生成模型/大语言模型/CMU11-868.en.md new file mode 100644 index 00000000..e221399d --- /dev/null +++ b/docs/深度生成模型/大语言模型/CMU11-868.en.md @@ -0,0 +1,40 @@ +# CMU 11-868: Large Language Model Systems + +## Course Overview + +- University: Carnegie Mellon University +- Prerequisites: Strongly recommended to have taken Deep Learning (11-785) or Advanced NLP (11-611 or 11-711) +- Programming Language: Python +- Course Difficulty: 🌟🌟🌟🌟 +- Estimated Workload: 120 hours + +This graduate-level course focuses on the full stack of large language model (LLM) systems — from algorithms to engineering. The curriculum covers, but is not limited to: + +1. **GPU Programming and Automatic Differentiation**: Master CUDA kernel calls, fundamentals of parallel programming, and deep learning framework design. +2. **Model Training and Distributed Systems**: Learn efficient training algorithms, communication optimizations (e.g., ZeRO, FlashAttention), and distributed training frameworks like DDP, GPipe, and Megatron-LM. +3. **Model Compression and Acceleration**: Study quantization (GPTQ), sparsity (MoE), compiler technologies (JAX, Triton), and inference-time serving systems (vLLM, CacheGen). +4. **Cutting-Edge Topics and Systems Practice**: Includes retrieval-augmented generation (RAG), multimodal LLMs, RLHF systems, and end-to-end deployment, monitoring, and maintenance. + +Compared to similar courses, this one stands out for its **tight integration with recent papers and open-source implementations** (hands-on work expanding CUDA support in the miniTorch framework), a **project-driven assignment structure** (five programming assignments + a final project), and **guest lectures from industry experts**, offering students real-world insights into LLM engineering challenges and solutions. + +**Self-Study Tips**: + +- Set up a CUDA-compatible environment in advance (NVIDIA GPU + CUDA Toolkit + PyTorch). +- Review fundamentals of parallel computing and deep learning (autograd, tensor operations). +- Carefully read the assigned papers and slides before each lecture, and follow the assignments to extend the miniTorch framework from pure Python to real CUDA kernels. + +This course assumes a solid understanding of deep learning and is **not suitable for complete beginners**. See the [FAQ](https://llmsystem.github.io/llmsystem2024spring/docs/FAQ) for more on prerequisites. + +The assignments are fairly challenging and include: + +1. **Assignment 1**: Implement an autograd framework + custom CUDA ops + basic neural networks +2. **Assignment 2**: Build a GPT2 model from scratch +3. **Assignment 3**: Accelerate training with custom CUDA kernels for Softmax and LayerNorm +4. **Assignment 4**: Implement distributed model training (difficult to configure independently for self-study) + +## Course Resources + +- Course Website: +- Syllabus: +- Assignments: +- Course Texts: Selected research papers + selected chapters from *Programming Massively Parallel Processors (4th Edition)* diff --git a/docs/深度生成模型/大语言模型/CMU11-868.md b/docs/深度生成模型/大语言模型/CMU11-868.md new file mode 100644 index 00000000..420e8bc6 --- /dev/null +++ b/docs/深度生成模型/大语言模型/CMU11-868.md @@ -0,0 +1,39 @@ +# CMU 11-868: Large Language Model Systems + +## 课程简介 + +- 所属大学:Carnegie Mellon University +- 先修要求:强烈建议已修读 Deep Learning (11785) 或 Advanced NLP (11-611 或 11-711) +- 编程语言:Python +- 课程难度:🌟🌟🌟🌟 +- 预计学时:120 学时 + +该课程面向研究生开设,聚焦“从算法到工程”的大语言模型系统构建全过程。课程内容包括但不限于: + +1. **GPU 编程与自动微分**:掌握 CUDA kernel 调用、并行编程基础,以及深度学习框架设计原理。 +2. **模型训练与分布式系统**:学习高效的训练算法、通信优化(ZeRO、FlashAttention)、分布式训练框架(DDP、GPipe、Megatron-LM)。 +3. **模型压缩与加速**:量化(GPTQ)、稀疏化(MoE)、编译技术(JAX、Triton)、以及推理时的服务化设计(vLLM、CacheGen)。 +4. **前沿技术与系统实践**:涵盖检索增强生成(RAG)、多模态 LLM、RLHF 系统,以及端到端的在线维护和监控。 + +与同类课程相比,本课程的优势在于**紧密结合最新论文与开源实现**(通过 miniTorch 框架动手扩展 CUDA 支持);**项目驱动**的作业体系(五次编程作业 + 期末大项目);以及**工业嘉宾讲座**,能让学生近距离了解真实世界中 LLM 工程实践的挑战与解决方案。 + +**自学建议**: + +- 提前配置好支持 CUDA 的开发环境(NVIDIA GPU + CUDA Toolkit + PyTorch)。 +- 复习并行计算和深度学习基础(自动微分、张量运算)。 +- 阅读每次课前指定的论文与幻灯片,跟着作业把 miniTorch 框架从纯 Python 拓展到真实 CUDA 内核。 + +该课程要求你对深度学习有一定的预备知识,不适合纯小白入手,可见 [FAQ](https://llmsystem.github.io/llmsystem2024spring/docs/FAQ) 的先修要求。 +实验总体来说是有难度的,主要内容如下: + +1. Assignment1: 自动微分框架 + CUDA 手写算子 + 基础神经网络构建 +2. Assignmant2: GPT2 模型构建 +3. Assignment3: 通过手写 CUDA 的 Softmax 和 LayerNorm 算子优化模型训练速度 +4. Assignment4: 分布式模型训练,自学的话可能不太好配置环境 + +## 课程资源 + +- 课程网站: +- 课程大纲: +- 课程作业: +- 课程教材:精选论文 + 《Programming Massively Parallel Processors, 4th Ed》 部分章节 diff --git a/docs/系统安全/CSE365.en.md b/docs/系统安全/CSE365.en.md index 91b5bbfe..be5bcc2b 100644 --- a/docs/系统安全/CSE365.en.md +++ b/docs/系统安全/CSE365.en.md @@ -22,17 +22,17 @@ For hackers with weak foundations, getting stuck is a normal phenomenon. If you ## Course Resources -- Course Website: +- Course Website: - Recordings: See course website - Textbooks: None -- Assignments: 7 modules (167 challenges) +- Assignments: 8 modules (444 challenges) ## Personal Resources - Lectures on YouTube: - Live Broadcasts on Twitch: -- Chat on Discord: +- Chat on Discord: - Open Source on GitHub: -- Contact us via Email: +- Contact us via Email: 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. diff --git a/docs/系统安全/CSE365.md b/docs/系统安全/CSE365.md index e83bb515..d52302e3 100644 --- a/docs/系统安全/CSE365.md +++ b/docs/系统安全/CSE365.md @@ -22,17 +22,17 @@ ## 课程资源 -- 课程网站: +- 课程网站: - 课程视频:参见课程网站 - 课程教材:无 -- 课程作业:7 个模块(167 个 challenge) +- 课程作业:8 个模块(444 个 challenges) ## 资源汇总 - Lectures on YouTube: - Live Broadcasts on Twitch: -- Chat on Discord: +- Chat on Discord: - Open Source on GitHub: -- Contact us via Email: +- Contact us via Email: 另外,出于评定 ASU 学生课程成绩的重要因素,官方不鼓励上传解题思路,每个模块的前两题除外。 diff --git a/docs/编程入门/Python/CS61A.en.md b/docs/编程入门/Python/CS61A.en.md index d5217102..38239db1 100644 --- a/docs/编程入门/Python/CS61A.en.md +++ b/docs/编程入门/Python/CS61A.en.md @@ -28,6 +28,7 @@ Note: If you have no prior programming experience at all, getting started with C - Course Website (backup): [fall2024](https://insideempire.github.io/CS61A-Website-Archive/), [spring2022](https://cs61a.vercel.app/), [fall2022](https://web.archive.org/web/20220913035803/http://cs61a.org/), [fall2020](https://web.archive.org/web/20201219202644/https://cs61a.org/) - Recordings: [spring2024](https://www.bilibili.com/video/BV1sy411z7nA/), [fall2022](https://www.bilibili.com/video/BV1GK411Q7qp/), [fall2020](https://www.bilibili.com/video/BV1s3411G7yM/) - [Textbook](https://www.composingprograms.com/) +- [Epub of the Textbook](https://github.com/CC-bit/UCB-CS61A-Textbook/) - [Textbook(Chinese)](https://composingprograms.netlify.app/) - Assignments: [fall2024](https://github.com/InsideEmpire/CS61A-Assignments) diff --git a/docs/编程入门/Python/CS61A.md b/docs/编程入门/Python/CS61A.md index 9b1ad981..23894491 100644 --- a/docs/编程入门/Python/CS61A.md +++ b/docs/编程入门/Python/CS61A.md @@ -28,6 +28,7 @@ CS61B 和 CS61C 在本书中均有收录。 - 课程网站 (页面备份): [fall2024](https://insideempire.github.io/CS61A-Website-Archive/), [spring2022](https://cs61a.vercel.app/), [fall2022](https://web.archive.org/web/20220913035803/http://cs61a.org/), [fall2020](https://web.archive.org/web/20201219202644/https://cs61a.org/) - 课程视频: [spring2024](https://www.bilibili.com/video/BV1sy411z7nA/), [fall2022](https://www.bilibili.com/video/BV1GK411Q7qp/), [fall2020](https://www.bilibili.com/video/BV1s3411G7yM/) - [课程教材](https://www.composingprograms.com/) +- [课程教材电子书](https://github.com/CC-bit/UCB-CS61A-Textbook/) - [课程教材中文翻译](https://composingprograms.netlify.app/) - 课程作业: [fall2024](https://github.com/InsideEmpire/CS61A-Assignments) diff --git a/docs/编程入门/Rust/cs220.en.md b/docs/编程入门/Rust/cs220.en.md new file mode 100644 index 00000000..3a22067f --- /dev/null +++ b/docs/编程入门/Rust/cs220.en.md @@ -0,0 +1,24 @@ +# CS220: Programming Principles + +## Descriptions + +- Offered by: KAIST +- Prerequisites: Any programming language +- Programming Languages: Rust +- Difficulty: 🌟🌟🌟 +- Class Hour: 40 hours + +[Jeehoon Kang](https://cp.kaist.ac.kr/jeehoon.kang) from KAIST and his [Concurrency and Parallelism Laboratory](https://cp.kaist.ac.kr/) appear to be strong advocates of the Rust programming language. Their contributions include [CS431](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Rust/cs431/) and [CS420](https://csdiy.wiki/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS420/) in the csdiy curriculum. Naturally, they have developed an introductory course for Rust, which is this course. It covers most of the essential topics needed to get started with Rust. + +This course does not have an official textbook. The course homepage recommends using the [Rust book](https://doc.rust-lang.org/book/) for learning and provides a structured learning path in the [slides](https://docs.google.com/presentation/d/17G3SwkE_tq0H3lTt9N0ysIbHhqDZBfHkoWD5LwwAKSo/edit#slide=id.p). Although there are no publicly available lecture videos, the comprehensive testing system makes this course an excellent resource for practicing Rust. Some exercises can serve as a great supplement to [CS110L](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Rust/CS110L/). If you still feel the need for more practice after completing CS110L, this course is a good choice. Some exercises are quite challenging, and Jeehoon Kang encourages the use of AI-assisted programming. However, AI is not perfect, and the core work must still be done by yourself. + +## Course Resources + +- Course Website: [Github Repository](https://github.com/kaist-cp/cs220) +- Recordings: None +- Textbooks: [slides](https://docs.google.com/presentation/d/17G3SwkE_tq0H3lTt9N0ysIbHhqDZBfHkoWD5LwwAKSo/edit#slide=id.p) +- Assignments: [Github Repository](https://github.com/kaist-cp/cs220/tree/main/src/assignments) + +## Personal Resources + +There are no publicly available answer keys, and it is unclear whether the course instructor supports the idea of sharing solutions. If you encounter difficulties, you can find discussions about the assignments in the [ISSUE](https://github.com/kaist-cp/cs220/issues) section of the repository. diff --git a/docs/编程入门/Rust/cs220.md b/docs/编程入门/Rust/cs220.md new file mode 100644 index 00000000..9c004c52 --- /dev/null +++ b/docs/编程入门/Rust/cs220.md @@ -0,0 +1,24 @@ +# CS220: Programming Principles + +## 课程简介 + +- 所属大学:KAIST +- 先修要求:其他任何一门编程语言 +- 编程语言:Rust +- 课程难度:🌟🌟🌟 +- 预计学时:40 小时 + +来自 KAIST 的 [Jeehoon Kang](https://cp.kaist.ac.kr/jeehoon.kang) 以及他所领导的 [Concurrency and Parallelism Laboratory](https://cp.kaist.ac.kr/) 实验室似乎是 Rust 语言的忠实拥趸,csdiy 之中的 [CS431](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Rust/cs431/) 和 [CS420](https://csdiy.wiki/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS420/) 都是他们的杰作。自然,他们肯定会开发一款针对 Rust 的入门课程,也就是本课程。课程涵盖了 Rust 入门所需的绝大多数知识点。 + +本课没有指定官方教材,课程主页推荐采用 [Rust book](https://doc.rust-lang.org/book/) 学习,并在 [slides](https://docs.google.com/presentation/d/17G3SwkE_tq0H3lTt9N0ysIbHhqDZBfHkoWD5LwwAKSo/edit#slide=id.p) 之中规划了大致的学习线路。虽然没有公开课程教学视频,不过完善的测试系统仍然可以使这门课作为 Rust 习题课来练手,部分习题可以作为 [CS110L](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Rust/CS110L/) 的良好补充。如果在学习完 CS110L 之后仍然觉得需要更多练习,可以选择本课程。部分习题具有一定难度,Jeehoon Kang 对使用 AI 辅助编程持有鼓励态度,但是 AI 并不完美,核心工作仍需自己完成。 + +## 课程资源 + +- 课程网站:[Github 主页](https://github.com/kaist-cp/cs220) +- 课程视频:无 +- 课程教材:[slides](https://docs.google.com/presentation/d/17G3SwkE_tq0H3lTt9N0ysIbHhqDZBfHkoWD5LwwAKSo/edit#slide=id.p) +- 课程作业:[Github](https://github.com/kaist-cp/cs220/tree/main/src/assignments) + +## 资源汇总 + +互联网上并没有公开的参考答案,也并不确定本课程主讲人是否赞同这种公开答案的行为。如果遇到困难,课程的 [ISSUE](https://github.com/kaist-cp/cs220/issues) 之中可以找到关于作业的讨论。 diff --git a/docs/编程语言设计与分析/CS242.en.md b/docs/编程语言设计与分析/CS242.en.md index 6f612e80..320a018d 100644 --- a/docs/编程语言设计与分析/CS242.en.md +++ b/docs/编程语言设计与分析/CS242.en.md @@ -39,7 +39,7 @@ I personally feel that the assignments are difficult, but the gains are great. W ## Course Resources -- Course Website: [https://stanford-cs242.github.io/f19/](https://stanford-cs242.github.io/f19/) +- Course Website: [Latest](https://web.stanford.edu/class/cs242/) [2019 Fall](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) diff --git a/docs/编程语言设计与分析/CS242.md b/docs/编程语言设计与分析/CS242.md index 9c553018..41215cc5 100644 --- a/docs/编程语言设计与分析/CS242.md +++ b/docs/编程语言设计与分析/CS242.md @@ -39,7 +39,7 @@ CS242是一门讲程序语言 (Programming Language, PL) 的课程,但不是 ## 课程资源 -- 课程网站:[官网](https://stanford-cs242.github.io/f19/) +- 课程网站:[官网](https://web.stanford.edu/class/cs242/) [2019秋](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) diff --git a/docs/编译原理/NJU-Compilers.en.md b/docs/编译原理/NJU-Compilers.en.md index 33e7afc4..ebb60e37 100644 --- a/docs/编译原理/NJU-Compilers.en.md +++ b/docs/编译原理/NJU-Compilers.en.md @@ -27,7 +27,7 @@ The biggest takeaway is that there is no longer a sense of difficulty or uncerta ## Course Resources - Course Website: -- Recordings: +- Recordings: - Textbook: Compilers: Principles, Techniques and Tools (Dragon Book) - Assignments: 10 written assignments + 8~10 programming labs diff --git a/docs/编译原理/NJU-Compilers.md b/docs/编译原理/NJU-Compilers.md index e642dca6..a79b1f6a 100644 --- a/docs/编译原理/NJU-Compilers.md +++ b/docs/编译原理/NJU-Compilers.md @@ -33,7 +33,7 @@ ANTLR 4 是 LL 解析器生成器,比起 LR 和 LALR 解析器生成器,它 ## 课程资源 - 课程网站: -- 课程视频: +- 课程视频: - 课程教材:龙书等 - 课程作业:10 个书面作业 + 8 ~ 10 个编程作业带你实现一个编译器 diff --git a/docs/编译原理/SJTU-Compilers.en.md b/docs/编译原理/SJTU-Compilers.en.md new file mode 100644 index 00000000..fc00ee6e --- /dev/null +++ b/docs/编译原理/SJTU-Compilers.en.md @@ -0,0 +1,30 @@ +# SJTU Compiler Principles + +## Course Introduction + +- Offered by: Shanghai Jiao Tong University +- Prerequisites: Basic Computer Systems, Data Structures and Algorithms, Programming Fundamentals +- Programming Language: C++ +- Course Difficulty: 🌟🌟🌟🌟 +- Class Hour: 150 hours + +The Compiler Principles course at Shanghai Jiao Tong University aims to implement a compiler for the Tiger language. In this course, you will learn about lexical analysis, grammar analysis, semantic analysis, escape analysis, activation records (stack frames), LLVM IR, liveness analysis, register allocation, garbage collection, object-oriented programming, functional programming, and many other topics. Similar to the Compiler Principles course at Peking University, this course offers you a great deal of freedom. The test programs will only check the correctness of the assembly code you output and will not impose any restrictions on the specific design of your compiler. You will need to build your own compiler step by step from scratch. + +In this course, you will learn how to use frameworks such as `Flex`, `Bison`, and `LLVM`, and enhance your debugging skills through practice. The theoretical part of the course is taught by teachers from the IPADS Laboratory at Shanghai Jiao Tong University. + +## Course Resources + +- Course Website: +- Slides: +- Framework Code: Not yet open-sourced. Old version: ; For the newest version, please contact to the TA. +- Course Textbook: "Tiger Book" (Modern Compiler Implementation in C) +- 2 Quizzes + 5 essential labs + 2 optional labs + - Lab 1: Straight-line Program Interpreter + - Lab 2: Lexer + - Lab 3: Parser + - Lab 4: Type Checking + - Lab 5 + - Part 1: Escape Analysis + - Part 2: Translate to LLVM + - (Optional) Lab 6: Code Generation + - (Optional) Lab 7: Register Allocation diff --git a/docs/编译原理/SJTU-Compilers.md b/docs/编译原理/SJTU-Compilers.md new file mode 100644 index 00000000..259c326d --- /dev/null +++ b/docs/编译原理/SJTU-Compilers.md @@ -0,0 +1,34 @@ +# SJTU 编译原理 + +## 课程简介 + +- 所属大学:上海交通大学 +- 先修要求:计算机系统基础、数据结构与算法、编程基础 +- 编程语言:C++ +- 课程难度:🌟🌟🌟🌟 +- 预计学时:150 小时 + +上海交通大学的编译原理课程旨在实现一个 Tiger 语言的编译器。在这门课上你可以学习到词法分析、文法分析、语义分析、逃逸分析、活动记录(栈帧)、LLVM IR、活跃分析、寄存器分配、垃圾收集、面向对象、函数式程序等众多话题。和北大的编译原理课程相似,该课程给予了你极大的自由度,测试程序只会对你输出的汇编代码的正确性进行测试,而不会对你编译器的具体设计做任何限制。你需要从一个个空文件中一步步构建出属于你自己的编译器。 + +在这门课上你将学到 `Flex`、`Bison`、`LLVM` 等框架的使用方法,并在练习过程中加强自己的调试能力。 + +理论部分由上海交通大学 IPADS 实验室的老师讲述。 + + +## 课程资源 + + +- 课程网站: +- 课件: +- 框架代码:暂不开源,旧版本可以见 ,新版本可以邮件联系当届助教。 +- 课程教材:虎书(Modern Compiler Implementation in C) +- 2 次 Quiz + 5 个必做 Lab + 2 个选做 Lab + - Lab 1: Straight-line Program Interpreter + - Lab 2: Lexer + - Lab 3: Parser + - Lab 4: Type Checking + - Lab 5 + - Part 1: Escape Analysis + - Part 2: Translate to LLVM + - (Optional) Lab 6: Code Generation + - (Optional) Lab 7: Register Allocation diff --git a/docs/计算机网络/CS168.en.md b/docs/计算机网络/CS168.en.md new file mode 100644 index 00000000..1054c11f --- /dev/null +++ b/docs/计算机网络/CS168.en.md @@ -0,0 +1,26 @@ +# CS 168: Introduction to the Internet: Architecture and Protocols + +## Course Overview + +* **University**: UC Berkeley +* **Prerequisites**: CS 61B; CS 61C recommended; basic experience with Python programming and Unix systems +* **Programming Languages**: Python, Unix shell +* **Course Difficulty**: 🌟🌟🌟 +* **Estimated Hours**: Approximately 140 hours (14 weeks × 10 hours/week) + +This course, offered by UC Berkeley, focuses on the design principles and core protocols of the Internet. Topics include network layering, addressing, intra- and inter-domain routing, reliable transport, congestion control, and essential protocols such as TCP, UDP, IP, DNS, and HTTP. It also introduces Ethernet, wireless networks, and related technologies. + +CS 168 combines theory with hands-on experience through three programming projects (Traceroute, Routing, and TCP Transport), allowing students to learn how to build and debug network protocols in a deep and comprehensive way. + +The accompanying [textbook](https://textbook.cs168.io/) is particularly well-written—comprehensive yet concise and engaging. It's highly recommended for thorough reading and can also serve as a handy reference. + +## Course Materials + +* **Course Website**: [SP2025](https://sp25.cs168.io/) +* **Lecture Videos**: See course homepage +* **Textbook**: [https://textbook.cs168.io/](https://textbook.cs168.io/) +* **Assignments**: Three Python projects, relatively straightforward + +## Resource Summary + +All the resources and assignments used by @XXX in this course are maintained in [PKUFlyingPig/UCB-CS168 - GitHub](https://github.com/PKUFlyingPig/UCB-CS168). diff --git a/docs/计算机网络/CS168.md b/docs/计算机网络/CS168.md new file mode 100644 index 00000000..0a8e456d --- /dev/null +++ b/docs/计算机网络/CS168.md @@ -0,0 +1,24 @@ +# CS 168:Introduction to the Internet: Architecture and Protocols + +## 课程简介 + +* **所属大学**:UC Berkeley +* **先修要求**:CS 61B;推荐 CS 61C;具备基础的 Python 编程和 Unix 系统使用经验 +* **编程语言**:Python,Unix shell +* **课程难度**:🌟🌟🌟 +* **预计学时**:约 140 小时(14 周 × 10 小时/周) + +本课程是加州大学伯克利分校开设的“Internet 架构与协议概论”,侧重于 Internet 的设计原则与核心协议,包括分层结构、寻址机制、域内与域间路由、可靠传输、拥塞控制,以及 TCP、UDP、IP、DNS、HTTP 等核心协议,并介绍以太网、无线等网络技术。CS 168 结合理论与实践,通过三个动手项目(Traceroute、路由、TCP传输)让学生学习构建并调试网络协议,体验深入且全面。 + +尤其是课程配套编写的[教材](https://textbook.cs168.io/)写得非常好,内容全面的同时简洁生动,推荐细致阅读,也可当作手册查阅。 + +## 课程资源 + +* **课程网站**:[SP2025](https://sp25.cs168.io/) +* **课程视频**:参见课程主页 +* **课程教材**:[https://textbook.cs168.io/](https://textbook.cs168.io/) +* **课程作业**:共三个 Python Projects, 相对简单 + +## 资源汇总 + +@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS168 - GitHub](https://github.com/PKUFlyingPig/UCB-CS168) 中。 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index bbd6917b..436167b7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -112,8 +112,11 @@ plugins: 智能计算系统: Intelligent Computing Systems 深度学习: Deep Learning "国立台湾大学: 李宏毅机器学习": NTU Machine Learning + 深度生成模型: Deep Generative Models + 学习路线图: Roadmap + "大语言模型": Large Language Models 机器学习进阶: Advanced Machine Learning - 进阶路线图: Roadmap + 学习路线图: Roadmap 后记: Postscript - search: lang: @@ -181,6 +184,7 @@ nav: - "MIT 6.092: Introduction To Programming In Java": "编程入门/Java/MIT 6.092.md" - Rust 语言: - "Stanford CS110L: Safety in Systems Programming": "编程入门/Rust/CS110L.md" + - "KAIST CS220: Programming Principles": "编程入门/Rust/cs220.md" - "KAIST CS431: Concurrent Programming": "编程入门/Rust/cs431.md" - 函数式语言: - "Cornell CS3110: OCaml Programming Correct + Efficient + Beautiful": "编程入门/Functional/CS3110.md" @@ -223,9 +227,10 @@ nav: - "ASU CSE466: Computer Systems Security": "系统安全/CSE466.md" - "SU SEED Labs": "系统安全/SEEDLabs.md" - 计算机网络: + - "UCB CS168: Introduction to the Internet: Architecture and Protocols": "计算机网络/CS168.md" + - "Stanford CS144: Computer Network": "计算机网络/CS144.md" - "USTC Computer Networking:A Top-Down Approach": "计算机网络/topdown_ustc.md" - "Computer Networking: A Top-Down Approach": "计算机网络/topdown.md" - - "Stanford CS144: Computer Network": "计算机网络/CS144.md" - 数据库系统: - "UCB CS186: Introduction to Database System": "数据库系统/CS186.md" - "CMU 15-445: Database Systems": "数据库系统/15445.md" @@ -238,6 +243,7 @@ nav: - "NJU 编译原理": "编译原理/NJU-Compilers.md" - "KAIST CS420: Compiler Design": "编译原理/CS420.md" - "USTC 编译原理与技术": "编译原理/USTC-Compilers.md" + - "SJTU 编译原理": "编译原理/SJTU-Compilers.md" - 编程语言设计与分析: - "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md" - "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md" @@ -258,6 +264,7 @@ nav: - 数据科学: - "UCB Data100: Principles and Techniques of Data Science": "数据科学/Data100.md" - 人工智能: + - "Neural Networks: Zero to Hero": "人工智能/Neural Networks:Zero to Hero.md" - "Harvard CS50's Introduction to AI with Python": "人工智能/CS50.md" - "UCB CS188: Introduction to Artificial Intelligence": "人工智能/CS188.md" - 机器学习: @@ -277,8 +284,15 @@ nav: - "Stanford CS224n: Natural Language Processing": "深度学习/CS224n.md" - "Stanford CS224w: Machine Learning with Graphs": "深度学习/CS224w.md" - "UCB CS285: Deep Reinforcement Learning": "深度学习/CS285.md" + - 深度生成模型: + - "学习路线图": "深度生成模型/roadmap.md" + - "MIT 6.S184: Generative AI with Stochastic Differential Equations": "深度生成模型/MIT6.S184.md" + - "大语言模型": + - "CMU 11-868: Large Language Model System": "深度生成模型/大语言模型/CMU11-868.md" + - "CMU 11-667: Large Language Models: Methods and Applications": "深度生成模型/大语言模型/CMU11-667.md" + - "CMU 11-711: Advanced Natural Language Processing": "深度生成模型/大语言模型/CMU11-711.md" - 机器学习进阶: - - "进阶路线图": "机器学习进阶/roadmap.md" + - "学习路线图": "机器学习进阶/roadmap.md" - "CMU 10-708: Probabilistic Graphical Models": "机器学习进阶/CMU10-708.md" - "Columbia STAT 8201: Deep Generative Models": "机器学习进阶/STAT8201.md" - "U Toronto STA 4273 Winter 2021: Minimizing Expectations": "机器学习进阶/STA4273.md"