From b3e8e5666ee73b3b2e493965e5584e5e52551f6b Mon Sep 17 00:00:00 2001 From: <> Date: Sat, 10 Sep 2022 16:52:03 +0000 Subject: [PATCH] Deployed b878dac with MkDocs version: 1.3.1 --- CS学习规划/index.html | 2 +- images/{csdiy-blue.png => logo.png} | Bin images/title.png | Bin 0 -> 250471 bytes index.html | 2 +- search/search_index.json | 2 +- sitemap.xml | 174 ++++++++++++++-------------- sitemap.xml.gz | Bin 1190 -> 1191 bytes 7 files changed, 90 insertions(+), 90 deletions(-) rename images/{csdiy-blue.png => logo.png} (100%) create mode 100644 images/title.png diff --git a/CS学习规划/index.html b/CS学习规划/index.html index 44aa4104..a6edaba1 100644 --- a/CS学习规划/index.html +++ b/CS学习规划/index.html @@ -1,2 +1,2 @@ - 一个仅供参考的CS学习规划 - CS自学指南
跳转至

一个仅供参考的 CS 学习规划

计算机领域方向庞杂,知识浩如烟海,每个细分领域如果深究下去都可以说学无止境。因此,一个清晰明确的学习规划是非常重要的。这一节的内容是对后续整本书的内容的一个概览,你可以将其看作是这本书的目录,按需选择自己感兴趣的内容进行学习。

不过,在开始学习之前,先向小白们强烈推荐一个科普向系列视频 Crash Course: Computer Science,在短短 8 个小时里非常生动且全面地科普了关于计算机科学的方方面面:计算机的历史、计算机是如何运作的、组成计算机的各个重要模块、计算机科学中的重要思想等等等等。正如它的口号所说的 Computers are not magic!,希望看完这个视频之后,大家能对计算机科学有个全貌性地感知,从而怀着兴趣去面对下面浩如烟海的更为细致且深入的学习内容。

必学工具

俗话说:磨刀不误砍柴工。如果你是一个刚刚接触计算机的24k纯小白,学会一些工具将会让你事半功倍。

学会提问:也许你会惊讶,提问也算计算机必备技能吗,还放在第一条?我觉得在开源社区中,学会提问是一项非常重要的能力,它包含两方面的事情。其一是会变相地培养你自主解决问题的能力,因为从形成问题、描述问题并发布、他人回答、最后再到理解回答这个周期是非常长的,如果遇到什么鸡毛蒜皮的事情都希望别人最好远程桌面手把手帮你完成,那计算机的世界基本与你无缘了。其二,如果真的经过尝试还无法解决,可以借助开源社区的帮助,但这时候如何通过简洁的文字让别人瞬间理解你的处境以及目的,就显得尤为重要。推荐阅读提问的智慧这篇文章,这不仅能提高你解决问题的概率和效率,也能让开源社区里无偿提供解答的人们拥有一个好心情。

MIT-Missing-Semester 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。

翻墙:由于一些众所周知的原因,谷歌、GitHub 等网站在大陆无法访问。然而很多时候,谷歌和 StackOverflow 可以解决你在开发过程中遇到的 95% 的问题。因此,学会翻墙几乎是一个内地 CSer 的必备技能。(考虑到法律问题,这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用)。

命令行:熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高极大地提高你作为工程师的灵活性以及生产力。命令行的艺术是一份非常经典的教程,它源于 Quora 的一个提问,但在各路大神的贡献努力下已经成为了一个 GitHub 十万 stars 的顶流项目,被翻译成了十几种语言。教程不长,非常建议大家反复通读,在实践中内化吸收。同时,掌握 shell 脚本编程也是一项不容忽视的技术,可以参考这个教程

IDE (Integrated Development Environment):集成开发环境,说白了就是你写代码的地方。作为一个码农,IDE 的重要性不言而喻,但由于很多 IDE 是为大型工程项目设计的,体量较大,功能也过于丰富。其实如今一些轻便的文本编辑器配合丰富的插件生态基本可以满足日常的轻量编程需求。个人常用的编辑器是 VS Code 和 Sublime(前者的插件配置非常简单,后者略显复杂但颜值很高)。当然对于大型项目我还是会采用略重型的 IDE,例如 Pycharm (Python),IDEA (Java) 等等(免责申明:所有的 IDE 都是世界上最好的 IDE)。

Vim:一款命令行编辑工具。这是一个学习曲线有些陡峭的编辑器,不过学会它我觉得是非常有必要的,因为它将极大地提高你的开发效率。现在绝大多数 IDE 也都支持 Vim 插件,让你在享受现代开发环境的同时保留极客的炫酷(yue)。

Git:一款代码版本控制工具。Git的学习曲线可能更为陡峭,但出自 Linux 之父 Linus 之手的 Git 绝对是每个学 CS 的童鞋必须掌握的神器之一。

GitHub:基于 Git 的代码托管平台。全世界最大的代码开源社区,大佬集聚地。

GNU Make:一款工程构建工具。善用 GNU Make 会让你养成代码模块化的习惯,同时也能让你熟悉一些大型工程的编译链接流程。

CMake:一款功能比 GNU Make 更为强大的构建工具,建议掌握 GNU Make 之后再加以学习。

LaTex逼格提升 论文排版工具。

Docker:一款相较于虚拟机更轻量级的软件打包与环境部署工具。

实用工具箱:除了上面提到的这些在开发中使用频率极高的工具之外,我还收集了很多实用有趣的免费工具,例如一些下载工具、设计工具、学习网站等等。

Thesis:毕业论文 Word 写作教程。

好书推荐

私以为一本好的教材应当是以人为本的,而不是炫技式的理论堆砌。告诉读者“是什么”固然重要,但更好的应当是教材作者将其在这个领域深耕几十年的经验融汇进书中,向读者娓娓道来“为什么”以及未来应该“怎么做”。

链接戳这里

环境配置

你以为的开发 —— 在 IDE 里疯狂码代码数小时。

实际上的开发 —— 配环境配几天还没开始写代码。

推荐一个非常不错的 GitHub 项目 DevOps-Guide,其中涵盖了非常多的运维方面的基础知识和教程,例如 Docker, Kubernetes, Linux, CI-CD, GitHub Actions 等等。

另外大家可以参考一份灵感来自 6.NULL MIT-Missing-Semester环境配置指南,重点在于终端的美化配置。此外还包括常用软件源(如 GitHub, Anaconda, PyPI 等)的加速与替换以及一些 IDE 的配置与激活教程。

More contents under construction.

课程地图

正如这章开头提到的,这份课程地图仅仅是一个仅供参考的课程规划,我作为一个临近毕业的本科生。深感自己没有权利也没有能力向别人宣扬“应该怎么学”。因此如果你觉得以下的课程分类与选择有不合理之处,我全盘接受,并深感抱歉。你可以在下一节定制属于你的课程地图

以下课程类别中除了含有 基础入门 字眼的以外,并无明确的先后次序,大家只要满足某个课程的先修要求,完全可以根据自己的需要和喜好选择想要学习的课程。

另外由于贡献者的不断增加,这份课程地图已经从最初我的学习经历,发展成为很多 CS 自学者的资源合集,其中难免有内容交叉甚至重复的。但之所以都列出来,还是希望集百家之长,给大家尽可能多的选择与参考。

数学基础

微积分与线性代数

作为大一新生,学好微积分线代是和写代码至少同等重要的事情,相信已经有无数的前人经验提到过这一点,但我还是要不厌其烦地再强调一遍:学好微积分线代真的很重要!你也许会吐槽这些东西岂不是考完就忘,那我觉得你是并没有把握住它们本质,对它们的理解还没有达到刻骨铭心的程度。如果觉得老师课上讲的内容晦涩难懂,不妨参考 MIT 的 Calculus Course18.06: Linear Algebra 的课程 notes,至少于我而言,它帮助我深刻理解了微积分和线性代数的许多本质。顺道再安利一个油管数学网红 3Blue1Brown,他的频道有很多用生动形象的动画阐释数学本质内核的视频,兼具深度和广度,质量非常高。

信息论入门

作为计算机系的学生,及早了解一些信息论的基础知识,我觉得是大有裨益的。但大多信息论课程都面向高年级本科生甚至研究生,对新手极不友好。而 MIT 的 6.050J: Information theory and Entropy 这门课正是为大一新生量身定制的,几乎没有先修要求,涵盖了编码、压缩、通信、信息熵等等内容,非常有趣。

数学进阶

离散数学与概率论

集合论、图论、概率论等等是算法推导与证明的重要工具,也是后续高阶数学课程的基础。但我觉得这类课程的讲授很容易落入理论化与形式化的窠臼,让课堂成为定理结论的堆砌,而无法使学生深刻把握理论的本质,进而造成学了就背,考了就忘的怪圈。如果能在理论教学中穿插算法运用实例,学生在拓展算法知识的同时也能窥见理论的力量和魅力。

UCB CS70 : discrete Math and probability theoryUCB CS126 : Probability theory 是 UC Berkeley 的概率论课程,前者覆盖了离散数学和概率论基础,后者则涉及随机过程以及深入的理论内容。两者都非常注重理论和实践的结合,有丰富的算法实际运用实例,后者还有大量的Python编程作业来让学生运用概率论的知识解决实际问题。

数值分析

作为计算机系的学生,培养计算思维是很重要的,实际问题的建模、离散化,计算机的模拟、分析,是一项很重要的能力。而这两年开始风靡的,由 MIT 打造的 Julia 编程语言以其 C 一样的速度和 Python 一样友好的语法在数值计算领域有一统天下之势,MIT 的许多数学课程也开始用 Julia 作为教学工具,把艰深的数学理论用直观清晰的代码展示出来。

ComputationalThinking 是 MIT 开设的一门计算思维入门课,所有课程内容全部开源,可以在课程网站直接访问。这门课利用 Julia 编程语言,在图像处理、社会科学与数据科学、气候学建模三个 topic 下带领学生理解算法、数学建模、数据分析、交互设计、图例展示,让学生体验计算与科学的美妙结合。内容虽然不难,但给我最深刻的感受就是,科学的魅力并不是故弄玄虚的艰深理论,不是诘屈聱牙的术语行话,而是用直观生动的案例,用简练深刻的语言,让每个普通人都能理解。

上完上面的体验课之后,如果意犹未尽的话,不妨试试 MIT 的 18.330 : Introduction to numerical analysis,这门课的编程作业同样会用 Julia 编程语言,不过难度和深度上都上了一个台阶。内容涉及了浮点编码、Root finding、线性系统、微分方程等等方面,整门课的主旨就是让你利用离散化的计算机表示去估计和逼近一个数学上连续的概念。这门课的教授还专门撰写了一本配套的开源教材 Fundamentals of Numerical Computation,里面附有丰富的 Julia 代码实例和严谨的公式推导。

如果你还意犹未尽的话,还有 MIT 的研究生课程 18.335: Introduction to numerical method 供你参考。

微分方程

如果世间万物的运动发展都能用方程来刻画和描述,这是一件多么酷的事情呀!虽然几乎任何一所学校的 CS 培养方案中都没有微分方程相关的必修课程,但我还是觉得掌握它会赋予你一个新的视角来审视这个世界。

由于微分方程中往往会用到很多复变函数的知识,所以大家可以参考 MIT18.04: Complex variables functions 的课程 notes 来补齐先修知识。

MIT18.03: differential equations) 主要覆盖了常微分方程的求解,在此基础之上 MIT18.152: Partial differential equations) 则会深入偏微分方程的建模与求解。掌握了微分方程这一有利工具,相信对于你的实际问题的建模能力以及从众多噪声变量中把握本质的直觉都会有很大帮助。

数学高阶

作为计算机系的学生,我经常听到数学无用论的论断,对此我不敢苟同但也无权反对,但若凡事都硬要争出个有用和无用的区别来,倒也着实无趣,因此下面这些面向高年级甚至研究生的数学课程,大家按兴趣自取所需。

凸优化

Standford EE364A: Convex Optimization

信息论

MIT6.441: Information Theory

应用统计学

MIT18.650: Statistics for Applications

初等数论

MIT18.781: Theory of Numbers

密码学

Standford CS255: Cryptography

编程入门

Languages are tools, you choose the right tool to do the right thing. Since there's no universally perfect tool, there's no universally perfect language.

Shell

Python

C++

Rust

OCaml

电子基础

电路基础

作为计算机系的学生,了解一些基础的电路知识,感受从传感器收集数据到数据分析再到算法预测整条流水线,对于后续知识的学习以及计算思维的培养还是很有帮助的。EE16A&B: Designing Information Devices and Systems I&II 是伯克利 EE 学生的大一入门课,其中 EE16A 注重通过电路从实际环境中收集和分析数据,而 EE16B 则侧重从这些收集到的数据进行分析并做出预测行为。

信号与系统

信号与系统是一门我觉得非常值得一上的课,最初学它只是为了满足我对傅里叶变换的好奇,但学完之后我才不禁感叹,傅立叶变换给我提供了一个全新的视角去看待这个世界,就如同微分方程一样,让你沉浸在用数学去精确描绘和刻画这个世界的优雅与神奇之中。

MIT 6.003: signal and systems 提供了全部的课程录影、书面作业以及答案。也可以去看这门课的远古版本

UCB EE120: Signal and Systems 关于傅立叶变换的 notes 写得非常好,并且提供了6 个非常有趣的 Python 编程作业,让你实践中运用信号与系统的理论与算法。

数据结构与算法

数据结构与算法

算法设计与分析

软件工程

入门课

一份“能跑”的代码,和一份高质量的工业级代码是有本质区别的。因此我非常推荐低年级的同学学习一下 MIT 6.031: Software Construction 这门课,它会以 Java 语言为基础,以丰富细致的阅读材料和精心设计的编程练习传授如何编写不易出 bug、简明易懂、易于维护修改的高质量代码。大到宏观数据结构设计,小到如何写注释,遵循这些前人总结的细节和经验,对于你此后的编程生涯大有裨益。

专业课

当然,如果你想系统性地上一门软件工程的课程,那我推荐的是伯克利的 UCB CS169: software engineering。但需要提醒的是,和大多学校(包括贵校)的软件工程课程不同,这门课不会涉及传统的 design and document 模式,即强调各种类图、流程图及文档设计,而是采用近些年流行起来的小团队快速迭代 Agile Develepment 开发模式以及利用云平台的 Software as a service 服务模式。

体系结构

入门课

从小我就一直听说,计算机的世界是由 01 构成的,我不理解但大受震撼。如果你的内心也怀有这份好奇,不妨花一到两个月的时间学习 Coursera: Nand2Tetris 这门无门槛的计算机课程。这门麻雀虽小五脏俱全的课程会从 01 开始让你亲手造出一台计算机,并在上面运行俄罗斯方块小游戏。一门课里涵盖了编译、虚拟机、汇编、体系结构、数字电路、逻辑门等等从上至下、从软至硬的各类知识,非常全面。难度上也是通过精心的设计,略去了众多现代计算机复杂的细节,提取出了最核心本质的东西,力图让每个人都能理解。在低年级,如果就能从宏观上建立对整个计算机体系的鸟瞰图,是大有裨益的。

专业课

当然,如果想深入现代计算机体系结构的复杂细节,还得上一门大学本科难度的课程 UCB CS61C: Great Ideas in Computer Architecture。UC Berkeley 作为 RISC-V 架构的发源地,在体系结构领域算得上首屈一指。其课程非常注重实践,你会在 Project 中手写汇编构造神经网络,从零开始搭建一个 CPU,这些实践都会让你对计算机体系结构有更为深入的理解,而不是仅停留于“取指译码执行访存写回”的单调背诵里。

系统入门

计算机系统是一个庞杂而深刻的主题,在深入学习某个细分领域之前,对各个领域有一个宏观概念性的理解,对一些通用性的设计原则有所知晓,会让你在之后的深入学习中不断强化一些最为核心乃至哲学的概念,而不会桎梏于复杂的内部细节和各种 trick。因为在我看来,学习系统最关键的还是想让你领悟到这些最核心的东西,从而能够设计和实现出属于自己的系统。

MIT6.033: System Engineering 是 MIT 的系统入门课,主题涉及了操作系统、网络、分布式和系统安全,除了知识点的传授外,这门课还会讲授一些写作和表达上的技巧,让你学会如何设计并向别人介绍和分析自己的系统。这本书配套的教材 Principles of Computer System Design: An Introduction 也写得非常好,推荐大家阅读。

CMU 15-213: Introduction to Computer System 是 CMU 的系统入门课,内容覆盖了体系结构、操作系统、链接、并行、网络等等,兼具广度和深度,配套的教材 Computer Systems: A Programmer's Perspective 也是质量极高,强烈建议阅读。

操作系统

操作系统作为各类纷繁复杂的底层硬件虚拟化出一套规范优雅的抽象,给所有应用软件提供丰富的功能支持。了解操作系统的设计原则和内部原理对于一个不满足于当调包侠的程序员来说是大有裨益的。出于对操作系统的热爱,我上过国内外很多操作系统课程,它们各有侧重和优劣,大家可以根据兴趣各取所需。

MIT 6.S081: Operating System Engineering,MIT 著名 PDOS 实验室出品,11 个 Project 让你在一个实现非常优雅的类Unix操作系统xv6上增加各类功能模块。这门课也让我深刻认识到,做系统不是靠 PPT 念出来的,是得几万行代码一点点累起来的。

UCB CS162: Operating System,伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年春季学期操作系统实验班的助教,引入并改善了这个 Project,课程资源也会全部开源,具体参见课程网站

NJU: Operating System Design and Implementation,南京大学的蒋炎岩老师开设的操作系统课程。蒋老师以其独到的视角

并行与分布式系统

想必这两年各类 CS 讲座里最常听到的话就是“摩尔定律正在走向终结”,此话不假,当单核能力达到上限时,多核乃至众核架构如日中天。硬件的变化带来的是上层编程逻辑的适应与改变,要想充分利用硬件性能,编写并行程序几乎成了程序员的必备技能。与此同时,深度学习的兴起对计算机算力与存储的要求都达到了前所未有的高度,大规模集群的部署和优化也成为热门技术话题。

并行计算

CMU 15-418/Stanford CS149: Parallel Computing

分布式系统

MIT 6.824: Distributed System

系统安全

不知道你当年选择计算机是不是因为怀着一个中二的黑客梦想,但现实却是成为黑客道阻且长。

理论

UCB CS161: Computer Security 是伯克利的系统安全课程,会涵盖栈攻击、密码学、网站安全、网络安全等等内容。

实践

掌握这些理论知识之后,还需要在实践中培养和锻炼这些“黑客素养”。CTF 夺旗赛是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了第 0 届和第 1 届,鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源:

计算机网络

计网著名教材《自顶向下方法》的配套学习资源 Computer Networking: A Top-Down Approach

没有什么能比自己写个 TCP/IP 协议栈更能加深对计算机网络的理解了,所以不妨试试 Stanford CS144: Computer Network,8 个 Project 带你实现整个协议栈。

数据库系统

没有什么能比自己写个关系型数据库更能加深对数据库系统的理解了。

C++版

CMU 15-445: Introduction to Database System

Java版

UCB CS186: Introduction to Database System

编译原理

没有什么能比自己写个编译器更能加深对编译器的理解了。

Stanford CS143: Compilers

计算机图形学

Stanford CS148 Games101 Games103 Games202

Web开发

网站的开发很少在计算机的培养方案里被重视,但其实掌握这项技能还是好处多多的,例如搭建自己的个人主页,抑或是给自己的课程项目做一个精彩的展示网页。

两周速成版

MIT web development course

系统学习版

Stanford CS142: Web Applications

数据科学

UCB Data100: Principles and Techniques of Data Science

人工智能

入门课

Harvard CS50’s Introduction to AI with Python

专业课

UCB CS188: Introduction to Artificial Intelligence

机器学习

入门课

Coursera: Machine Learning

专业课

深度学习

入门课

计算机视觉

Stanford CS231n: CNN for Visual Recognition

自然语言处理

Stanford CS224n: Natural Language Processing

图神经网络

Stanford CS224w: Machine Learning with Graphs

强化学习

UCB CS285: Deep Reinforcement Learning

定制属于你的课程地图

授人以鱼不如授人以渔。

以上的课程规划难免带有强烈的个人偏好,不一定适合所有人,更多是起到抛砖引玉的作用。如果你想挑选自己感兴趣的方向和内容加以学习,可以参考我在下面列出来的资源。


最后更新: September 4, 2022

一个仅供参考的 CS 学习规划

计算机领域方向庞杂,知识浩如烟海,每个细分领域如果深究下去都可以说学无止境。因此,一个清晰明确的学习规划是非常重要的。这一节的内容是对后续整本书的内容的一个概览,你可以将其看作是这本书的目录,按需选择自己感兴趣的内容进行学习。

不过,在开始学习之前,先向小白们强烈推荐一个科普向系列视频 Crash Course: Computer Science,在短短 8 个小时里非常生动且全面地科普了关于计算机科学的方方面面:计算机的历史、计算机是如何运作的、组成计算机的各个重要模块、计算机科学中的重要思想等等等等。正如它的口号所说的 Computers are not magic!,希望看完这个视频之后,大家能对计算机科学有个全貌性地感知,从而怀着兴趣去面对下面浩如烟海的更为细致且深入的学习内容。

必学工具

俗话说:磨刀不误砍柴工。如果你是一个刚刚接触计算机的24k纯小白,学会一些工具将会让你事半功倍。

学会提问:也许你会惊讶,提问也算计算机必备技能吗,还放在第一条?我觉得在开源社区中,学会提问是一项非常重要的能力,它包含两方面的事情。其一是会变相地培养你自主解决问题的能力,因为从形成问题、描述问题并发布、他人回答、最后再到理解回答这个周期是非常长的,如果遇到什么鸡毛蒜皮的事情都希望别人最好远程桌面手把手帮你完成,那计算机的世界基本与你无缘了。其二,如果真的经过尝试还无法解决,可以借助开源社区的帮助,但这时候如何通过简洁的文字让别人瞬间理解你的处境以及目的,就显得尤为重要。推荐阅读提问的智慧这篇文章,这不仅能提高你解决问题的概率和效率,也能让开源社区里无偿提供解答的人们拥有一个好心情。

MIT-Missing-Semester 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。

翻墙:由于一些众所周知的原因,谷歌、GitHub 等网站在大陆无法访问。然而很多时候,谷歌和 StackOverflow 可以解决你在开发过程中遇到的 99% 的问题。因此,学会翻墙几乎是一个内地 CSer 的必备技能。(考虑到法律问题,这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用)。

命令行:熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会极大地提高你作为工程师的灵活性以及生产力。命令行的艺术是一份非常经典的教程,它源于 Quora 的一个提问,但在各路大神的贡献努力下已经成为了一个 GitHub 十万 stars 的顶流项目,被翻译成了十几种语言。教程不长,非常建议大家反复通读,在实践中内化吸收。同时,掌握 Shell 脚本编程也是一项不容忽视的技术,可以参考这个教程

IDE (Integrated Development Environment):集成开发环境,说白了就是你写代码的地方。作为一个码农,IDE 的重要性不言而喻,但由于很多 IDE 是为大型工程项目设计的,体量较大,功能也过于丰富。其实如今一些轻便的文本编辑器配合丰富的插件生态基本可以满足日常的轻量编程需求。个人常用的编辑器是 VS Code 和 Sublime(前者的插件配置非常简单,后者略显复杂但颜值很高)。当然对于大型项目我还是会采用略重型的 IDE,例如 Pycharm (Python),IDEA (Java) 等等(免责申明:所有的 IDE 都是世界上最好的 IDE)。

Vim:一款命令行编辑工具。这是一个学习曲线有些陡峭的编辑器,不过学会它我觉得是非常有必要的,因为它将极大地提高你的开发效率。现在绝大多数 IDE 也都支持 Vim 插件,让你在享受现代开发环境的同时保留极客的炫酷(yue)。

Git:一款代码版本控制工具。Git的学习曲线可能更为陡峭,但出自 Linux 之父 Linus 之手的 Git 绝对是每个学 CS 的童鞋必须掌握的神器之一。

GitHub:基于 Git 的代码托管平台。全世界最大的代码开源社区,大佬集聚地。

GNU Make:一款工程构建工具。善用 GNU Make 会让你养成代码模块化的习惯,同时也能让你熟悉一些大型工程的编译链接流程。

CMake:一款功能比 GNU Make 更为强大的构建工具,建议掌握 GNU Make 之后再加以学习。

LaTex逼格提升 论文排版工具。

Docker:一款相较于虚拟机更轻量级的软件打包与环境部署工具。

实用工具箱:除了上面提到的这些在开发中使用频率极高的工具之外,我还收集了很多实用有趣的免费工具,例如一些下载工具、设计工具、学习网站等等。

Thesis:毕业论文 Word 写作教程。

好书推荐

私以为一本好的教材应当是以人为本的,而不是炫技式的理论堆砌。告诉读者“是什么”固然重要,但更好的应当是教材作者将其在这个领域深耕几十年的经验融汇进书中,向读者娓娓道来“为什么”以及未来应该“怎么做”。

链接戳这里

环境配置

你以为的开发 —— 在 IDE 里疯狂码代码数小时。

实际上的开发 —— 配环境配几天还没开始写代码。

PC 端环境配置

如果你是 Mac 用户,那么你很幸运,这份指南 将会手把手地带你搭建起整套开发环境。如果你是 Windows 用户,可以参考这个相对简略的教程

另外大家可以参考一份灵感来自 6.NULL MIT-Missing-Semester环境配置指南,重点在于终端的美化配置。此外还包括常用软件源(如 GitHub, Anaconda, PyPI 等)的加速与替换以及一些 IDE 的配置与激活教程。

服务器端环境配置

推荐一个非常不错的 GitHub 项目 DevOps-Guide,其中涵盖了非常多的运维方面的基础知识和教程,例如 Docker, Kubernetes, Linux, CI-CD, GitHub Actions 等等。

课程地图

正如这章开头提到的,这份课程地图仅仅是一个仅供参考的课程规划,我作为一个临近毕业的本科生。深感自己没有权利也没有能力向别人宣扬“应该怎么学”。因此如果你觉得以下的课程分类与选择有不合理之处,我全盘接受,并深感抱歉。你可以在下一节定制属于你的课程地图

以下课程类别中除了含有 基础入门 字眼的以外,并无明确的先后次序,大家只要满足某个课程的先修要求,完全可以根据自己的需要和喜好选择想要学习的课程。

另外由于贡献者的不断增加,这份课程地图已经从最初我的学习经历,发展成为很多 CS 自学者的资源合集,其中难免有内容交叉甚至重复的。之所以都列出来,还是希望集百家之长,给大家尽可能多的选择与参考。

数学基础

微积分与线性代数

作为大一新生,学好微积分线代是和写代码至少同等重要的事情,相信已经有无数的前人经验提到过这一点,但我还是要不厌其烦地再强调一遍:学好微积分线代真的很重要!你也许会吐槽这些东西岂不是考完就忘,那我觉得你是并没有把握住它们本质,对它们的理解还没有达到刻骨铭心的程度。如果觉得老师课上讲的内容晦涩难懂,不妨参考 MIT 的 Calculus Course18.06: Linear Algebra 的课程 notes,至少于我而言,它帮助我深刻理解了微积分和线性代数的许多本质。顺道再安利一个油管数学网红 3Blue1Brown,他的频道有很多用生动形象的动画阐释数学本质内核的视频,兼具深度和广度,质量非常高。

信息论入门

作为计算机系的学生,及早了解一些信息论的基础知识,我觉得是大有裨益的。但大多信息论课程都面向高年级本科生甚至研究生,对新手极不友好。而 MIT 的 6.050J: Information theory and Entropy 这门课正是为大一新生量身定制的,几乎没有先修要求,涵盖了编码、压缩、通信、信息熵等等内容,非常有趣。

数学进阶

离散数学与概率论

集合论、图论、概率论等等是算法推导与证明的重要工具,也是后续高阶数学课程的基础。但我觉得这类课程的讲授很容易落入理论化与形式化的窠臼,让课堂成为定理结论的堆砌,而无法使学生深刻把握理论的本质,进而造成学了就背,考了就忘的怪圈。如果能在理论教学中穿插算法运用实例,学生在拓展算法知识的同时也能窥见理论的力量和魅力。

UCB CS70 : discrete Math and probability theoryUCB CS126 : Probability theory 是 UC Berkeley 的概率论课程,前者覆盖了离散数学和概率论基础,后者则涉及随机过程以及深入的理论内容。两者都非常注重理论和实践的结合,有丰富的算法实际运用实例,后者还有大量的 Python 编程作业来让学生运用概率论的知识解决实际问题。

数值分析

作为计算机系的学生,培养计算思维是很重要的,实际问题的建模、离散化,计算机的模拟、分析,是一项很重要的能力。而这两年开始风靡的,由 MIT 打造的 Julia 编程语言以其 C 一样的速度和 Python 一样友好的语法在数值计算领域有一统天下之势,MIT 的许多数学课程也开始用 Julia 作为教学工具,把艰深的数学理论用直观清晰的代码展示出来。

ComputationalThinking 是 MIT 开设的一门计算思维入门课,所有课程内容全部开源,可以在课程网站直接访问。这门课利用 Julia 编程语言,在图像处理、社会科学与数据科学、气候学建模三个 topic 下带领学生理解算法、数学建模、数据分析、交互设计、图例展示,让学生体验计算与科学的美妙结合。内容虽然不难,但给我最深刻的感受就是,科学的魅力并不是故弄玄虚的艰深理论,不是诘屈聱牙的术语行话,而是用直观生动的案例,用简练深刻的语言,让每个普通人都能理解。

上完上面的体验课之后,如果意犹未尽的话,不妨试试 MIT 的 18.330 : Introduction to numerical analysis,这门课的编程作业同样会用 Julia 编程语言,不过难度和深度上都上了一个台阶。内容涉及了浮点编码、Root finding、线性系统、微分方程等等方面,整门课的主旨就是让你利用离散化的计算机表示去估计和逼近一个数学上连续的概念。这门课的教授还专门撰写了一本配套的开源教材 Fundamentals of Numerical Computation,里面附有丰富的 Julia 代码实例和严谨的公式推导。

如果你还意犹未尽的话,还有 MIT 的数值分析研究生课程 18.335: Introduction to numerical method 供你参考。

微分方程

如果世间万物的运动发展都能用方程来刻画和描述,这是一件多么酷的事情呀!虽然几乎任何一所学校的 CS 培养方案中都没有微分方程相关的必修课程,但我还是觉得掌握它会赋予你一个新的视角来审视这个世界。

由于微分方程中往往会用到很多复变函数的知识,所以大家可以参考 MIT18.04: Complex variables functions 的课程 notes 来补齐先修知识。

MIT18.03: differential equations) 主要覆盖了常微分方程的求解,在此基础之上 MIT18.152: Partial differential equations) 则会深入偏微分方程的建模与求解。掌握了微分方程这一有利工具,相信对于你的实际问题的建模能力以及从众多噪声变量中把握本质的直觉都会有很大帮助。

数学高阶

作为计算机系的学生,我经常听到数学无用论的论断,对此我不敢苟同但也无权反对,但若凡事都硬要争出个有用和无用的区别来,倒也着实无趣,因此下面这些面向高年级甚至研究生的数学课程,大家按兴趣自取所需。

凸优化

Standford EE364A: Convex Optimization

信息论

MIT6.441: Information Theory

应用统计学

MIT18.650: Statistics for Applications

初等数论

MIT18.781: Theory of Numbers

密码学

Standford CS255: Cryptography

编程入门

Languages are tools, you choose the right tool to do the right thing. Since there's no universally perfect tool, there's no universally perfect language.

Shell

Python

C++

Rust

OCaml

电子基础

电路基础

作为计算机系的学生,了解一些基础的电路知识,感受从传感器收集数据到数据分析再到算法预测整条流水线,对于后续知识的学习以及计算思维的培养还是很有帮助的。EE16A&B: Designing Information Devices and Systems I&II 是伯克利 EE 学生的大一入门课,其中 EE16A 注重通过电路从实际环境中收集和分析数据,而 EE16B 则侧重从这些收集到的数据进行分析并做出预测行为。

信号与系统

信号与系统是一门我觉得非常值得一上的课,最初学它只是为了满足我对傅里叶变换的好奇,但学完之后我才不禁感叹,傅立叶变换给我提供了一个全新的视角去看待这个世界,就如同微分方程一样,让你沉浸在用数学去精确描绘和刻画这个世界的优雅与神奇之中。

MIT 6.003: signal and systems 提供了全部的课程录影、书面作业以及答案。也可以去看这门课的远古版本

UCB EE120: Signal and Systems 关于傅立叶变换的 notes 写得非常好,并且提供了6 个非常有趣的 Python 编程作业,让你实践中运用信号与系统的理论与算法。

数据结构与算法

数据结构与算法

算法设计与分析

软件工程

入门课

一份“能跑”的代码,和一份高质量的工业级代码是有本质区别的。因此我非常推荐低年级的同学学习一下 MIT 6.031: Software Construction 这门课,它会以 Java 语言为基础,以丰富细致的阅读材料和精心设计的编程练习传授如何编写不易出 bug、简明易懂、易于维护修改的高质量代码。大到宏观数据结构设计,小到如何写注释,遵循这些前人总结的细节和经验,对于你此后的编程生涯大有裨益。

专业课

当然,如果你想系统性地上一门软件工程的课程,那我推荐的是伯克利的 UCB CS169: software engineering。但需要提醒的是,和大多学校(包括贵校)的软件工程课程不同,这门课不会涉及传统的 design and document 模式,即强调各种类图、流程图及文档设计,而是采用近些年流行起来的小团队快速迭代 Agile Develepment 开发模式以及利用云平台的 Software as a service 服务模式。

体系结构

入门课

从小我就一直听说,计算机的世界是由 01 构成的,我不理解但大受震撼。如果你的内心也怀有这份好奇,不妨花一到两个月的时间学习 Coursera: Nand2Tetris 这门无门槛的计算机课程。这门麻雀虽小五脏俱全的课程会从 01 开始让你亲手造出一台计算机,并在上面运行俄罗斯方块小游戏。一门课里涵盖了编译、虚拟机、汇编、体系结构、数字电路、逻辑门等等从上至下、从软至硬的各类知识,非常全面。难度上也是通过精心的设计,略去了众多现代计算机复杂的细节,提取出了最核心本质的东西,力图让每个人都能理解。在低年级,如果就能从宏观上建立对整个计算机体系的鸟瞰图,是大有裨益的。

专业课

当然,如果想深入现代计算机体系结构的复杂细节,还得上一门大学本科难度的课程 UCB CS61C: Great Ideas in Computer Architecture。UC Berkeley 作为 RISC-V 架构的发源地,在体系结构领域算得上首屈一指。其课程非常注重实践,你会在 Project 中手写汇编构造神经网络,从零开始搭建一个 CPU,这些实践都会让你对计算机体系结构有更为深入的理解,而不是仅停留于“取指译码执行访存写回”的单调背诵里。

系统入门

计算机系统是一个庞杂而深刻的主题,在深入学习某个细分领域之前,对各个领域有一个宏观概念性的理解,对一些通用性的设计原则有所知晓,会让你在之后的深入学习中不断强化一些最为核心乃至哲学的概念,而不会桎梏于复杂的内部细节和各种 trick。因为在我看来,学习系统最关键的还是想让你领悟到这些最核心的东西,从而能够设计和实现出属于自己的系统。

MIT6.033: System Engineering 是 MIT 的系统入门课,主题涉及了操作系统、网络、分布式和系统安全,除了知识点的传授外,这门课还会讲授一些写作和表达上的技巧,让你学会如何设计并向别人介绍和分析自己的系统。这本书配套的教材 Principles of Computer System Design: An Introduction 也写得非常好,推荐大家阅读。

CMU 15-213: Introduction to Computer System 是 CMU 的系统入门课,内容覆盖了体系结构、操作系统、链接、并行、网络等等,兼具广度和深度,配套的教材 Computer Systems: A Programmer's Perspective 也是质量极高,强烈建议阅读。

操作系统

操作系统作为各类纷繁复杂的底层硬件虚拟化出一套规范优雅的抽象,给所有应用软件提供丰富的功能支持。了解操作系统的设计原则和内部原理对于一个不满足于当调包侠的程序员来说是大有裨益的。出于对操作系统的热爱,我上过国内外很多操作系统课程,它们各有侧重和优劣,大家可以根据兴趣各取所需。

MIT 6.S081: Operating System Engineering,MIT 著名 PDOS 实验室出品,11 个 Project 让你在一个实现非常优雅的类Unix操作系统xv6上增加各类功能模块。这门课也让我深刻认识到,做系统不是靠 PPT 念出来的,是得几万行代码一点点累起来的。

UCB CS162: Operating System,伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年春季学期操作系统实验班的助教,引入并改善了这个 Project,课程资源也会全部开源,具体参见课程网站

NJU: Operating System Design and Implementation,南京大学的蒋炎岩老师开设的操作系统课程。蒋老师以其独到的系统视角结合丰富的代码示例将众多操作系统的概念讲得深入浅出,此外这门课的全部课程内容都是中文的,非常方便大家学习。

并行与分布式系统

想必这两年各类 CS 讲座里最常听到的话就是“摩尔定律正在走向终结”,此话不假,当单核能力达到上限时,多核乃至众核架构如日中天。硬件的变化带来的是上层编程逻辑的适应与改变,要想充分利用硬件性能,编写并行程序几乎成了程序员的必备技能。与此同时,深度学习的兴起对计算机算力与存储的要求都达到了前所未有的高度,大规模集群的部署和优化也成为热门技术话题。

并行计算

CMU 15-418/Stanford CS149: Parallel Computing

分布式系统

MIT 6.824: Distributed System

系统安全

不知道你当年选择计算机是不是因为怀着一个中二的黑客梦想,但现实却是成为黑客道阻且长。

理论

UCB CS161: Computer Security 是伯克利的系统安全课程,会涵盖栈攻击、密码学、网站安全、网络安全等等内容。

实践

掌握这些理论知识之后,还需要在实践中培养和锻炼这些“黑客素养”。CTF 夺旗赛是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了第 0 届和第 1 届,鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源:

计算机网络

计网著名教材《自顶向下方法》的配套学习资源 Computer Networking: A Top-Down Approach

没有什么能比自己写个 TCP/IP 协议栈更能加深对计算机网络的理解了,所以不妨试试 Stanford CS144: Computer Network,8 个 Project 带你实现整个协议栈。

数据库系统

没有什么能比自己写个关系型数据库更能加深对数据库系统的理解了。

C++版

CMU 15-445: Introduction to Database System

Java版

UCB CS186: Introduction to Database System

编译原理

没有什么能比自己写个编译器更能加深对编译器的理解了。

Stanford CS143: Compilers

计算机图形学

Stanford CS148 Games101 Games103 Games202

Web开发

网站的开发很少在计算机的培养方案里被重视,但其实掌握这项技能还是好处多多的,例如搭建自己的个人主页,抑或是给自己的课程项目做一个精彩的展示网页。

两周速成版

MIT web development course

系统学习版

Stanford CS142: Web Applications

数据科学

UCB Data100: Principles and Techniques of Data Science

人工智能

入门课

Harvard CS50’s Introduction to AI with Python

专业课

UCB CS188: Introduction to Artificial Intelligence

机器学习

入门课

Coursera: Machine Learning

专业课

深度学习

入门课

计算机视觉

Stanford CS231n: CNN for Visual Recognition

自然语言处理

Stanford CS224n: Natural Language Processing

图神经网络

Stanford CS224w: Machine Learning with Graphs

强化学习

UCB CS285: Deep Reinforcement Learning

定制属于你的课程地图

授人以鱼不如授人以渔。

以上的课程规划难免带有强烈的个人偏好,不一定适合所有人,更多是起到抛砖引玉的作用。如果你想挑选自己感兴趣的方向和内容加以学习,可以参考我在下面列出来的资源。


最后更新: September 10, 2022
Back to top
\ No newline at end of file diff --git a/images/csdiy-blue.png b/images/logo.png similarity index 100% rename from images/csdiy-blue.png rename to images/logo.png diff --git a/images/title.png b/images/title.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d71489ac201c63b8b305066cdc72786dba15a8 GIT binary patch literal 250471 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%0DvxKj)OnWZOy~^u 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

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

t!`Sxt_O&9D-x8m2V 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\M+EVe5e8L9yePVQ&0-cZR@?rzRj$af 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�l34oedvA=z`^pWnI_2D|%MW75<4 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 4b16e892..f6990b14 100644 --- a/index.html +++ b/index.html @@ -1,2 +1,2 @@ - CS自学指南

前言

Image title

最近更新:增加陈天奇机器学习编译,增加 CMU 机器学习系统

这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。

这同时也是一份献给北大信科学弟学妹们的礼物。如果这本书能对你们的信科生涯有哪怕一丝一毫的帮助,都是对我极大的鼓励和慰藉。

本书目前规划了以下部分(如果你有其他好的建议,或者想加入贡献者的行列,欢迎邮件 zhongyinmin@pku.edu.cn 或者在 issue 里提问):

  • 必学工具:IDE, 翻墙, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, 实用工具 ...
  • 国外高质量 CS 课程汇总:我将把我上过的所有高质量的国外 CS 课程分门别类进行汇总,并给出相关的自学建议,大部分课程都会有一个独立的仓库维护相关的资源以及我的作业实现。
  • 环境配置:Linux 基础,bash,环境变量,Anaconda ...
  • 经典书籍推荐:看过 CSAPP 这本书的同学一定感叹好书的重要,我将列举推荐自己看过的计算机领域的必看好书与资源链接。

梦开始的地方 —— CS61A

大一入学时我是一个对计算机一无所知的小白,装了几十个 G 的 Visual Studio 天天和 OJ 你死我活。凭着高中的数学底子我数学课学得还不错,但在专业课上对竞赛大佬只有仰望。提到编程我只会打开那笨重的 IDE,新建一个我也不知道具体是干啥的命令行项目,然后就是 cin, cout, for 循环,然后 CE, RE, WA 循环。当时的我就处在一种拼命想学好但不知道怎么学,课上认真听讲但题还不会做,课后做作业完全是用时间和它硬耗的痛苦状态。我至今电脑里还存着自己大一上学期计算概论大作业的源代码 —— 一个 1200 行的 C++ 文件,没有头文件、没有类、没有封装、没有 unit test、没有 Makefile、没有 Git,唯一的优点是它确实能跑,缺点是“能跑”的补集。我一度怀疑我是不是不适合学计算机,因为童年对于极客的所有想象,已经被我第一个学期的体验彻底粉碎了。

这一切的转机发生在我大一的寒假,我心血来潮想学习 Python。无意间看到知乎有人推荐了 CS61A 这门课,说是 UC Berkeley 的大一入门课程,讲的就是 Python。我永远不会忘记那一天,打开 CS61A 课程网站的那个瞬间,就像哥伦布发现了新大陆一样,我开启了新世界的大门。

我一口气 3 个星期上完了这门课,它让我第一次感觉到原来 CS 可以学得如此充实而有趣,原来这世上竟有如此精华的课程。

为避免有崇洋媚外之嫌,我单纯从一个学生的视角来讲讲自学 CS61A 的体验:

  • 独立搭建的课程网站: 一个网站将所有课程资源整合一体,条理分明的课程 schedule、所有 slides, hw, discussion 的文件链接、详细明确的课程给分说明、历年的考试题与答案。这样一个网站抛开美观程度不谈,既方便学生,也让资源公正透明。

  • 课程教授亲自编写的教材:CS61A 这门课的开课老师将MIT的经典教材 Structure and Interpretation of Computer Programs (SICP) 用Python这门语言进行改编(原教材基于 Scheme 语言),保证了课堂内容与教材内容的一致性,同时补充了更多细节,可以说诚意满满。而且全书开源,可以直接线上阅读。

  • 丰富到让人眼花缭乱的课程作业:14 个 lab 巩固随堂知识点,10 个 homework,还有 4 个代码量均上千行的 project。与大家熟悉的 OJ 和 Word 文档式的作业不同,所有作业均有完善的代码框架,保姆级的作业说明。每个 Project 都有详尽的 handout 文档、全自动的评分脚本。CS61A 甚至专门开发了一个自动化的作业提交评分系统(据说还发了论文)。当然,有人会说“一个 project 几千行代码大部分都是助教帮你写好的,你还能学到啥?”。此言差矣,作为一个刚刚接触计算机,连安装 Python 都磕磕绊绊的小白来说,这样完善的代码框架既可以让你专注于巩固课堂上学习到的核心知识点,又能有“我才学了一个月就能做一个小游戏了!”的成就感,还能有机会阅读学习别人高质量的代码,从而为自己所用。我觉得在低年级,这种代码框架可以说百利而无一害。唯一的害也许是苦了老师和助教,因为开发这样的作业可想而知需要相当的时间投入。

  • 每周 Discussion 讨论课,助教会讲解知识难点和考试例题:类似于北京大学 ICS 的小班研讨,但习题全部用 LaTeX 撰写,相当规范且会明确给出 solution。

这样的课程,你完全不需要任何计算机的基础,你只需要努力、认真、花时间就够了。此前那种有劲没处使的感觉,那种付出再多时间却得不到回报的感觉,从此烟消云散。这太适合我了,我从此爱上了自学。

试想如果有人能把艰深的知识点嚼碎嚼烂,用生动直白的方式呈现给你,还有那么多听起来就很 fancy,种类繁多的 project 来巩固你的理论知识,你会觉得他们真的是在倾尽全力想方设法地让你完全掌握这门课,你会觉得不学好它简直是对这些课程建设者的侮辱。

如果你觉得我在夸大其词,那么不妨从 CS61A 开始,因为它是我的梦开始的地方。

为什么写这本书

在我2020年秋季学期担任《深入理解计算机系统》(CSAPP)这门课的助教时,我已经自学一年多了。这一年多来我无比享受这种自学模式,为了分享这种快乐,我为自己的小班同学做过一个 CS自学资料整理仓库。当时纯粹是心血来潮,因为我也不敢公然鼓励大家翘课自学。

但随着又一年时间的维护,这个仓库的内容已经相当丰富,基本覆盖了计科、智能系、软工系的绝大多数课程,我也为每个课程都建了各自的 GitHub 仓库,汇总我用到的自学资料以及作业实现。

直到大四开始凑学分毕业的时候,我打开自己的培养方案,我发现它已经是我这个自学仓库的子集了,而这距离我开始自学也才两年半而已。于是,一个大胆的想法在我脑海中浮现:也许,我可以打造一个自学式的培养方案,把我这三年自学经历中遇到的坑、走过的路记录下来,以期能为后来的学弟学妹们贡献自己的一份微薄之力。

如果大家可以在三年不到的时间里就能建立起整座CS的基础大厦,能有相对扎实的数学功底和代码能力,经历过数十个千行代码量的 Project 的洗礼,掌握至少 C/C++/Java/JS/Python/Go/Rust 等主流语言,对算法、电路、体系、网络、操统、编译、人工智能、机器学习、计算机视觉、自然语言处理、强化学习、密码学、信息论、博弈论、数值分析、统计学、分布式、数据库、图形学、Web开发、云服务、超算等等方面均有涉猎。我想,你将有足够的底气和自信选择自己感兴趣的方向,无论是就业还是科研,你都将有相当的竞争力。

因为我坚信,既然你能坚持听我 BB 到这里,你一定不缺学好 CS 的能力,你只是没有一个好的老师,给你讲一门好的课程。而我,将力图根据我三年的体验,为你挑选这样的课程。

自学的好处

对我来说,自学最大的好处就在于可以完全根据自己的进度来调整学习速度。对于一些疑难知识点,我可以反复回看视频,在网上谷歌相关的内容,上 StackOverflow 提问题,直到完全将它弄明白。而对于自己掌握得相对较快的内容,则可以两倍速甚至三倍速略过。

自学的另一大好处就是博采众长。计算机系的几大核心课程:体系、网络、操统、编译,每一门我基本都上过不同大学的课程,不同的教材、不同的知识点侧重、不同的 project 将会极大丰富你的视野,也会让你理解错误的一些内容得到及时纠正。

自学的第三个好处是时间自由,具体原因省略。

自学的坏处

当然,作为 CS 自学主义的忠实拥趸,我不得不承认自学也有它的坏处。

第一就是交流沟通的不便。我其实是一个很热衷于提问的人,对于所有没有弄明白的点,我都喜欢穷追到底。但当你面对着屏幕听到老师讲了一个你没明白的知识点的时候,你无法顺着网线到另一端向老师问个明白。我努力通过独立思考和善用 Google 来缓解这一点,但是,如果能有几个志同道合的伙伴结伴自学,那将是极好的。关于交流群的建立,大家可以参考仓库 README 中的教程。

第二就是这些自学的课程基本都是英文的。从视频到slides到作业全是英文,所以有一定的门槛。不过我觉得这个挑战如果你克服了的话对你是极为有利的。因为在当下,虽然我很不情愿,但也不得不承认,在计算机领域,很多优质的文档、论坛、网站都是全英文的。养成英文阅读的习惯,在赤旗插遍世界之前,还是有一定好处的(狗头保命)。

第三,也是我觉得最困难的一点,就是自律。因为没有 DDL 有时候真的是一件可怕的事情,特别是随着学习的深入,国外的很多课程是相当虐的。你得有足够的驱动力强迫自己静下心来,阅读几十页的 Project Handout,理解上千行的代码框架,忍受数个小时的 debug 时光。而这一切,没有学分,没有绩点,没有老师,没有同学,只有一个信念 —— 你在变强。

这本书适合谁

正如我在前言里说的,任何有志于自学计算机的朋友都可以参考这本书。如果你已经有了一定的计算机基础,只是对某个特定的领域感兴趣,可以选择性地挑选你感兴趣的内容进行学习。当然,如果你是一个像我当年一样对计算机一无所知的小白,初入大学的校门,我希望这本书能成为你的攻略,让你花最少的时间掌握你所需要的知识和能力。某种程度上,这本书更像是一个根据我的体验来排序的课程搜索引擎,帮助大家足不出户,体验世界顶级名校的计算机优质课程。

当然,作为一个还未毕业的本科生,我深感自己没有能力也没有权利去宣扬一种学习方式,我只是希望这份资料能让那些同样有自学之心和毅力朋友可以少走些弯路,收获更丰富、更多样、更满足的学习体验。

特别鸣谢

在这里,我怀着崇敬之心真诚地感谢所有将课程资源无偿开源的各位教授们。这些课程倾注了他们数十年教学生涯的积淀和心血,他们却选择无私地让所有人享受到如此高质量的CS教育。没有他们,我的大学生活不会这样充实而快乐。很多教授在我给他们发了感谢邮件之后,甚至会回复上百字的长文,真的让我无比感动。他们也时刻激励着我,做一件事,就得用心做好,无论是科研,还是为人。

你也想加入到贡献者的行列

一个人的力量终究是有限的,这本书也是我在繁重的科研之余熬夜抽空写出来的,难免有不够完善之处。另外,由于个人做的是系统方向,很多课程侧重系统领域,对于数学、理论计算机、高级算法相关的内容则相对少些。如果有大佬想在其他领域分享自己的自学经历与资源,可以直接在项目中发起 Pull Request,也欢迎和我邮件联系(zhongyinmin@pku.edu.cn)。

关于交流群的建立

方法参见仓库的 README.md


最后更新: September 9, 2022

Image title

前言

最近更新:增加陈天奇机器学习编译,增加 CMU 机器学习系统

这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。

这同时也是一份献给北大信科学弟学妹们的礼物。如果这本书能对你们的信科生涯有哪怕一丝一毫的帮助,都是对我极大的鼓励和慰藉。

本书目前规划了以下部分(如果你有其他好的建议,或者想加入贡献者的行列,欢迎邮件 zhongyinmin@pku.edu.cn 或者在 issue 里提问):

  • 必学工具:IDE, 翻墙, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, 实用工具 ...
  • 国外高质量 CS 课程汇总:我将把我上过的所有高质量的国外 CS 课程分门别类进行汇总,并给出相关的自学建议,大部分课程都会有一个独立的仓库维护相关的资源以及我的作业实现。
  • 环境配置:Linux 基础,bash,环境变量,Anaconda ...
  • 经典书籍推荐:看过 CSAPP 这本书的同学一定感叹好书的重要,我将列举推荐自己看过的计算机领域的必看好书与资源链接。

梦开始的地方 —— CS61A

大一入学时我是一个对计算机一无所知的小白,装了几十个 G 的 Visual Studio 天天和 OJ 你死我活。凭着高中的数学底子我数学课学得还不错,但在专业课上对竞赛大佬只有仰望。提到编程我只会打开那笨重的 IDE,新建一个我也不知道具体是干啥的命令行项目,然后就是 cin, cout, for 循环,然后 CE, RE, WA 循环。当时的我就处在一种拼命想学好但不知道怎么学,课上认真听讲但题还不会做,课后做作业完全是用时间和它硬耗的痛苦状态。我至今电脑里还存着自己大一上学期计算概论大作业的源代码 —— 一个 1200 行的 C++ 文件,没有头文件、没有类、没有封装、没有 unit test、没有 Makefile、没有 Git,唯一的优点是它确实能跑,缺点是“能跑”的补集。我一度怀疑我是不是不适合学计算机,因为童年对于极客的所有想象,已经被我第一个学期的体验彻底粉碎了。

这一切的转机发生在我大一的寒假,我心血来潮想学习 Python。无意间看到知乎有人推荐了 CS61A 这门课,说是 UC Berkeley 的大一入门课程,讲的就是 Python。我永远不会忘记那一天,打开 CS61A 课程网站的那个瞬间,就像哥伦布发现了新大陆一样,我开启了新世界的大门。

我一口气 3 个星期上完了这门课,它让我第一次感觉到原来 CS 可以学得如此充实而有趣,原来这世上竟有如此精华的课程。

为避免有崇洋媚外之嫌,我单纯从一个学生的视角来讲讲自学 CS61A 的体验:

  • 独立搭建的课程网站: 一个网站将所有课程资源整合一体,条理分明的课程 schedule、所有 slides, hw, discussion 的文件链接、详细明确的课程给分说明、历年的考试题与答案。这样一个网站抛开美观程度不谈,既方便学生,也让资源公正透明。

  • 课程教授亲自编写的教材:CS61A 这门课的开课老师将MIT的经典教材 Structure and Interpretation of Computer Programs (SICP) 用Python这门语言进行改编(原教材基于 Scheme 语言),保证了课堂内容与教材内容的一致性,同时补充了更多细节,可以说诚意满满。而且全书开源,可以直接线上阅读。

  • 丰富到让人眼花缭乱的课程作业:14 个 lab 巩固随堂知识点,10 个 homework,还有 4 个代码量均上千行的 project。与大家熟悉的 OJ 和 Word 文档式的作业不同,所有作业均有完善的代码框架,保姆级的作业说明。每个 Project 都有详尽的 handout 文档、全自动的评分脚本。CS61A 甚至专门开发了一个自动化的作业提交评分系统(据说还发了论文)。当然,有人会说“一个 project 几千行代码大部分都是助教帮你写好的,你还能学到啥?”。此言差矣,作为一个刚刚接触计算机,连安装 Python 都磕磕绊绊的小白来说,这样完善的代码框架既可以让你专注于巩固课堂上学习到的核心知识点,又能有“我才学了一个月就能做一个小游戏了!”的成就感,还能有机会阅读学习别人高质量的代码,从而为自己所用。我觉得在低年级,这种代码框架可以说百利而无一害。唯一的害也许是苦了老师和助教,因为开发这样的作业可想而知需要相当的时间投入。

  • 每周 Discussion 讨论课,助教会讲解知识难点和考试例题:类似于北京大学 ICS 的小班研讨,但习题全部用 LaTeX 撰写,相当规范且会明确给出 solution。

这样的课程,你完全不需要任何计算机的基础,你只需要努力、认真、花时间就够了。此前那种有劲没处使的感觉,那种付出再多时间却得不到回报的感觉,从此烟消云散。这太适合我了,我从此爱上了自学。

试想如果有人能把艰深的知识点嚼碎嚼烂,用生动直白的方式呈现给你,还有那么多听起来就很 fancy,种类繁多的 project 来巩固你的理论知识,你会觉得他们真的是在倾尽全力想方设法地让你完全掌握这门课,你会觉得不学好它简直是对这些课程建设者的侮辱。

如果你觉得我在夸大其词,那么不妨从 CS61A 开始,因为它是我的梦开始的地方。

为什么写这本书

在我2020年秋季学期担任《深入理解计算机系统》(CSAPP)这门课的助教时,我已经自学一年多了。这一年多来我无比享受这种自学模式,为了分享这种快乐,我为自己的小班同学做过一个 CS自学资料整理仓库。当时纯粹是心血来潮,因为我也不敢公然鼓励大家翘课自学。

但随着又一年时间的维护,这个仓库的内容已经相当丰富,基本覆盖了计科、智能系、软工系的绝大多数课程,我也为每个课程都建了各自的 GitHub 仓库,汇总我用到的自学资料以及作业实现。

直到大四开始凑学分毕业的时候,我打开自己的培养方案,我发现它已经是我这个自学仓库的子集了,而这距离我开始自学也才两年半而已。于是,一个大胆的想法在我脑海中浮现:也许,我可以打造一个自学式的培养方案,把我这三年自学经历中遇到的坑、走过的路记录下来,以期能为后来的学弟学妹们贡献自己的一份微薄之力。

如果大家可以在三年不到的时间里就能建立起整座CS的基础大厦,能有相对扎实的数学功底和代码能力,经历过数十个千行代码量的 Project 的洗礼,掌握至少 C/C++/Java/JS/Python/Go/Rust 等主流语言,对算法、电路、体系、网络、操统、编译、人工智能、机器学习、计算机视觉、自然语言处理、强化学习、密码学、信息论、博弈论、数值分析、统计学、分布式、数据库、图形学、Web开发、云服务、超算等等方面均有涉猎。我想,你将有足够的底气和自信选择自己感兴趣的方向,无论是就业还是科研,你都将有相当的竞争力。

因为我坚信,既然你能坚持听我 BB 到这里,你一定不缺学好 CS 的能力,你只是没有一个好的老师,给你讲一门好的课程。而我,将力图根据我三年的体验,为你挑选这样的课程。

自学的好处

对我来说,自学最大的好处就在于可以完全根据自己的进度来调整学习速度。对于一些疑难知识点,我可以反复回看视频,在网上谷歌相关的内容,上 StackOverflow 提问题,直到完全将它弄明白。而对于自己掌握得相对较快的内容,则可以两倍速甚至三倍速略过。

自学的另一大好处就是博采众长。计算机系的几大核心课程:体系、网络、操统、编译,每一门我基本都上过不同大学的课程,不同的教材、不同的知识点侧重、不同的 project 将会极大丰富你的视野,也会让你理解错误的一些内容得到及时纠正。

自学的第三个好处是时间自由,具体原因省略。

自学的坏处

当然,作为 CS 自学主义的忠实拥趸,我不得不承认自学也有它的坏处。

第一就是交流沟通的不便。我其实是一个很热衷于提问的人,对于所有没有弄明白的点,我都喜欢穷追到底。但当你面对着屏幕听到老师讲了一个你没明白的知识点的时候,你无法顺着网线到另一端向老师问个明白。我努力通过独立思考和善用 Google 来缓解这一点,但是,如果能有几个志同道合的伙伴结伴自学,那将是极好的。关于交流群的建立,大家可以参考仓库 README 中的教程。

第二就是这些自学的课程基本都是英文的。从视频到slides到作业全是英文,所以有一定的门槛。不过我觉得这个挑战如果你克服了的话对你是极为有利的。因为在当下,虽然我很不情愿,但也不得不承认,在计算机领域,很多优质的文档、论坛、网站都是全英文的。养成英文阅读的习惯,在赤旗插遍世界之前,还是有一定好处的(狗头保命)。

第三,也是我觉得最困难的一点,就是自律。因为没有 DDL 有时候真的是一件可怕的事情,特别是随着学习的深入,国外的很多课程是相当虐的。你得有足够的驱动力强迫自己静下心来,阅读几十页的 Project Handout,理解上千行的代码框架,忍受数个小时的 debug 时光。而这一切,没有学分,没有绩点,没有老师,没有同学,只有一个信念 —— 你在变强。

这本书适合谁

正如我在前言里说的,任何有志于自学计算机的朋友都可以参考这本书。如果你已经有了一定的计算机基础,只是对某个特定的领域感兴趣,可以选择性地挑选你感兴趣的内容进行学习。当然,如果你是一个像我当年一样对计算机一无所知的小白,初入大学的校门,我希望这本书能成为你的攻略,让你花最少的时间掌握你所需要的知识和能力。某种程度上,这本书更像是一个根据我的体验来排序的课程搜索引擎,帮助大家足不出户,体验世界顶级名校的计算机优质课程。

当然,作为一个还未毕业的本科生,我深感自己没有能力也没有权利去宣扬一种学习方式,我只是希望这份资料能让那些同样有自学之心和毅力朋友可以少走些弯路,收获更丰富、更多样、更满足的学习体验。

特别鸣谢

在这里,我怀着崇敬之心真诚地感谢所有将课程资源无偿开源的各位教授们。这些课程倾注了他们数十年教学生涯的积淀和心血,他们却选择无私地让所有人享受到如此高质量的CS教育。没有他们,我的大学生活不会这样充实而快乐。很多教授在我给他们发了感谢邮件之后,甚至会回复上百字的长文,真的让我无比感动。他们也时刻激励着我,做一件事,就得用心做好,无论是科研,还是为人。

你也想加入到贡献者的行列

一个人的力量终究是有限的,这本书也是我在繁重的科研之余熬夜抽空写出来的,难免有不够完善之处。另外,由于个人做的是系统方向,很多课程侧重系统领域,对于数学、理论计算机、高级算法相关的内容则相对少些。如果有大佬想在其他领域分享自己的自学经历与资源,可以直接在项目中发起 Pull Request,也欢迎和我邮件联系(zhongyinmin@pku.edu.cn)。

关于交流群的建立

方法参见仓库的 README.md


最后更新: September 10, 2022
Back to top
\ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json index f6aa0532..98a87300 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["ja"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"\u524d\u8a00 \u6700\u8fd1\u66f4\u65b0\uff1a\u589e\u52a0\u9648\u5929\u5947 \u673a\u5668\u5b66\u4e60\u7f16\u8bd1 \uff0c\u589e\u52a0 CMU \u673a\u5668\u5b66\u4e60\u7cfb\u7edf \uff5e \u8fd9\u662f\u4e00\u672c\u8ba1\u7b97\u673a\u7684\u81ea\u5b66\u6307\u5357\uff0c\u4e5f\u662f\u5bf9\u81ea\u5df1\u5927\u5b66\u4e09\u5e74\u81ea\u5b66\u751f\u6daf\u7684\u4e00\u4e2a\u7eaa\u5ff5\u3002 \u8fd9\u540c\u65f6\u4e5f\u662f\u4e00\u4efd\u732e\u7ed9\u5317\u5927\u4fe1\u79d1\u5b66\u5f1f\u5b66\u59b9\u4eec\u7684\u793c\u7269\u3002\u5982\u679c\u8fd9\u672c\u4e66\u80fd\u5bf9\u4f60\u4eec\u7684\u4fe1\u79d1\u751f\u6daf\u6709\u54ea\u6015\u4e00\u4e1d\u4e00\u6beb\u7684\u5e2e\u52a9\uff0c\u90fd\u662f\u5bf9\u6211\u6781\u5927\u7684\u9f13\u52b1\u548c\u6170\u85c9\u3002 \u672c\u4e66\u76ee\u524d\u89c4\u5212\u4e86\u4ee5\u4e0b\u90e8\u5206(\u5982\u679c\u4f60\u6709\u5176\u4ed6\u597d\u7684\u5efa\u8bae\uff0c\u6216\u8005\u60f3\u52a0\u5165\u8d21\u732e\u8005\u7684\u884c\u5217\uff0c\u6b22\u8fce\u90ae\u4ef6 zhongyinmin@pku.edu.cn \u6216\u8005\u5728 issue \u91cc\u63d0\u95ee)\uff1a \u5fc5\u5b66\u5de5\u5177\uff1aIDE, \u7ffb\u5899, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, \u5b9e\u7528\u5de5\u5177 ... \u56fd\u5916\u9ad8\u8d28\u91cf CS \u8bfe\u7a0b\u6c47\u603b \uff1a\u6211\u5c06\u628a\u6211\u4e0a\u8fc7\u7684\u6240\u6709\u9ad8\u8d28\u91cf\u7684\u56fd\u5916 CS \u8bfe\u7a0b\u5206\u95e8\u522b\u7c7b\u8fdb\u884c\u6c47\u603b\uff0c\u5e76\u7ed9\u51fa\u76f8\u5173\u7684\u81ea\u5b66\u5efa\u8bae\uff0c\u5927\u90e8\u5206\u8bfe\u7a0b\u90fd\u4f1a\u6709\u4e00\u4e2a\u72ec\u7acb\u7684\u4ed3\u5e93\u7ef4\u62a4\u76f8\u5173\u7684\u8d44\u6e90\u4ee5\u53ca\u6211\u7684\u4f5c\u4e1a\u5b9e\u73b0\u3002 \u73af\u5883\u914d\u7f6e\uff1aLinux \u57fa\u7840\uff0c bash \uff0c\u73af\u5883\u53d8\u91cf\uff0cAnaconda ... \u7ecf\u5178\u4e66\u7c4d\u63a8\u8350\uff1a\u770b\u8fc7 CSAPP \u8fd9\u672c\u4e66\u7684\u540c\u5b66\u4e00\u5b9a\u611f\u53f9\u597d\u4e66\u7684\u91cd\u8981\uff0c\u6211\u5c06\u5217\u4e3e\u63a8\u8350\u81ea\u5df1\u770b\u8fc7\u7684\u8ba1\u7b97\u673a\u9886\u57df\u7684\u5fc5\u770b\u597d\u4e66\u4e0e\u8d44\u6e90\u94fe\u63a5\u3002 \u68a6\u5f00\u59cb\u7684\u5730\u65b9 \u2014\u2014 CS61A \u5927\u4e00\u5165\u5b66\u65f6\u6211\u662f\u4e00\u4e2a\u5bf9\u8ba1\u7b97\u673a\u4e00\u65e0\u6240\u77e5\u7684\u5c0f\u767d\uff0c\u88c5\u4e86\u51e0\u5341\u4e2a G \u7684 Visual Studio \u5929\u5929\u548c OJ \u4f60\u6b7b\u6211\u6d3b\u3002\u51ed\u7740\u9ad8\u4e2d\u7684\u6570\u5b66\u5e95\u5b50\u6211\u6570\u5b66\u8bfe\u5b66\u5f97\u8fd8\u4e0d\u9519\uff0c\u4f46\u5728\u4e13\u4e1a\u8bfe\u4e0a\u5bf9\u7ade\u8d5b\u5927\u4f6c\u53ea\u6709\u4ef0\u671b\u3002\u63d0\u5230\u7f16\u7a0b\u6211\u53ea\u4f1a\u6253\u5f00\u90a3\u7b28\u91cd\u7684 IDE\uff0c\u65b0\u5efa\u4e00\u4e2a\u6211\u4e5f\u4e0d\u77e5\u9053\u5177\u4f53\u662f\u5e72\u5565\u7684\u547d\u4ee4\u884c\u9879\u76ee\uff0c\u7136\u540e\u5c31\u662f cin , cout , for \u5faa\u73af\uff0c\u7136\u540e CE, RE, WA \u5faa\u73af\u3002\u5f53\u65f6\u7684\u6211\u5c31\u5904\u5728\u4e00\u79cd\u62fc\u547d\u60f3\u5b66\u597d\u4f46\u4e0d\u77e5\u9053\u600e\u4e48\u5b66\uff0c\u8bfe\u4e0a\u8ba4\u771f\u542c\u8bb2\u4f46\u9898\u8fd8\u4e0d\u4f1a\u505a\uff0c\u8bfe\u540e\u505a\u4f5c\u4e1a\u5b8c\u5168\u662f\u7528\u65f6\u95f4\u548c\u5b83\u786c\u8017\u7684\u75db\u82e6\u72b6\u6001\u3002\u6211\u81f3\u4eca\u7535\u8111\u91cc\u8fd8\u5b58\u7740\u81ea\u5df1\u5927\u4e00\u4e0a\u5b66\u671f\u8ba1\u7b97\u6982\u8bba\u5927\u4f5c\u4e1a\u7684\u6e90\u4ee3\u7801 \u2014\u2014 \u4e00\u4e2a 1200 \u884c\u7684 C++ \u6587\u4ef6\uff0c\u6ca1\u6709\u5934\u6587\u4ef6\u3001\u6ca1\u6709\u7c7b\u3001\u6ca1\u6709\u5c01\u88c5\u3001\u6ca1\u6709 unit test\u3001\u6ca1\u6709 Makefile\u3001\u6ca1\u6709 Git\uff0c\u552f\u4e00\u7684\u4f18\u70b9\u662f\u5b83\u786e\u5b9e\u80fd\u8dd1\uff0c\u7f3a\u70b9\u662f\u201c\u80fd\u8dd1\u201d\u7684\u8865\u96c6\u3002\u6211\u4e00\u5ea6\u6000\u7591\u6211\u662f\u4e0d\u662f\u4e0d\u9002\u5408\u5b66\u8ba1\u7b97\u673a\uff0c\u56e0\u4e3a\u7ae5\u5e74\u5bf9\u4e8e\u6781\u5ba2\u7684\u6240\u6709\u60f3\u8c61\uff0c\u5df2\u7ecf\u88ab\u6211\u7b2c\u4e00\u4e2a\u5b66\u671f\u7684\u4f53\u9a8c\u5f7b\u5e95\u7c89\u788e\u4e86\u3002 \u8fd9\u4e00\u5207\u7684\u8f6c\u673a\u53d1\u751f\u5728\u6211\u5927\u4e00\u7684\u5bd2\u5047\uff0c\u6211\u5fc3\u8840\u6765\u6f6e\u60f3\u5b66\u4e60 Python\u3002\u65e0\u610f\u95f4\u770b\u5230\u77e5\u4e4e\u6709\u4eba\u63a8\u8350\u4e86 CS61A \u8fd9\u95e8\u8bfe\uff0c\u8bf4\u662f UC Berkeley \u7684\u5927\u4e00\u5165\u95e8\u8bfe\u7a0b\uff0c\u8bb2\u7684\u5c31\u662f Python\u3002\u6211\u6c38\u8fdc\u4e0d\u4f1a\u5fd8\u8bb0\u90a3\u4e00\u5929\uff0c\u6253\u5f00 CS61A \u8bfe\u7a0b\u7f51\u7ad9\u7684\u90a3\u4e2a\u77ac\u95f4\uff0c\u5c31\u50cf\u54e5\u4f26\u5e03\u53d1\u73b0\u4e86\u65b0\u5927\u9646\u4e00\u6837\uff0c\u6211\u5f00\u542f\u4e86\u65b0\u4e16\u754c\u7684\u5927\u95e8\u3002 \u6211\u4e00\u53e3\u6c14 3 \u4e2a\u661f\u671f\u4e0a\u5b8c\u4e86\u8fd9\u95e8\u8bfe\uff0c\u5b83\u8ba9\u6211\u7b2c\u4e00\u6b21\u611f\u89c9\u5230\u539f\u6765 CS \u53ef\u4ee5\u5b66\u5f97\u5982\u6b64\u5145\u5b9e\u800c\u6709\u8da3\uff0c\u539f\u6765\u8fd9\u4e16\u4e0a\u7adf\u6709\u5982\u6b64\u7cbe\u534e\u7684\u8bfe\u7a0b\u3002 \u4e3a\u907f\u514d\u6709\u5d07\u6d0b\u5a9a\u5916\u4e4b\u5acc\uff0c\u6211\u5355\u7eaf\u4ece\u4e00\u4e2a\u5b66\u751f\u7684\u89c6\u89d2\u6765\u8bb2\u8bb2\u81ea\u5b66 CS61A \u7684\u4f53\u9a8c\uff1a \u72ec\u7acb\u642d\u5efa\u7684\u8bfe\u7a0b\u7f51\u7ad9: \u4e00\u4e2a\u7f51\u7ad9\u5c06\u6240\u6709\u8bfe\u7a0b\u8d44\u6e90\u6574\u5408\u4e00\u4f53\uff0c\u6761\u7406\u5206\u660e\u7684\u8bfe\u7a0b schedule\u3001\u6240\u6709 slides, hw, discussion \u7684\u6587\u4ef6\u94fe\u63a5\u3001\u8be6\u7ec6\u660e\u786e\u7684\u8bfe\u7a0b\u7ed9\u5206\u8bf4\u660e\u3001\u5386\u5e74\u7684\u8003\u8bd5\u9898\u4e0e\u7b54\u6848\u3002\u8fd9\u6837\u4e00\u4e2a\u7f51\u7ad9\u629b\u5f00\u7f8e\u89c2\u7a0b\u5ea6\u4e0d\u8c08\uff0c\u65e2\u65b9\u4fbf\u5b66\u751f\uff0c\u4e5f\u8ba9\u8d44\u6e90\u516c\u6b63\u900f\u660e\u3002 \u8bfe\u7a0b\u6559\u6388\u4eb2\u81ea\u7f16\u5199\u7684\u6559\u6750\uff1aCS61A \u8fd9\u95e8\u8bfe\u7684\u5f00\u8bfe\u8001\u5e08\u5c06MIT\u7684\u7ecf\u5178\u6559\u6750 Structure and Interpretation of Computer Programs (SICP) \u7528Python\u8fd9\u95e8\u8bed\u8a00\u8fdb\u884c\u6539\u7f16\uff08\u539f\u6559\u6750\u57fa\u4e8e Scheme \u8bed\u8a00\uff09\uff0c\u4fdd\u8bc1\u4e86\u8bfe\u5802\u5185\u5bb9\u4e0e\u6559\u6750\u5185\u5bb9\u7684\u4e00\u81f4\u6027\uff0c\u540c\u65f6\u8865\u5145\u4e86\u66f4\u591a\u7ec6\u8282\uff0c\u53ef\u4ee5\u8bf4\u8bda\u610f\u6ee1\u6ee1\u3002\u800c\u4e14\u5168\u4e66\u5f00\u6e90\uff0c\u53ef\u4ee5\u76f4\u63a5\u7ebf\u4e0a\u9605\u8bfb\u3002 \u4e30\u5bcc\u5230\u8ba9\u4eba\u773c\u82b1\u7f2d\u4e71\u7684\u8bfe\u7a0b\u4f5c\u4e1a\uff1a14 \u4e2a lab \u5de9\u56fa\u968f\u5802\u77e5\u8bc6\u70b9\uff0c10 \u4e2a homework\uff0c\u8fd8\u6709 4 \u4e2a\u4ee3\u7801\u91cf\u5747\u4e0a\u5343\u884c\u7684 project\u3002\u4e0e\u5927\u5bb6\u719f\u6089\u7684 OJ \u548c Word \u6587\u6863\u5f0f\u7684\u4f5c\u4e1a\u4e0d\u540c\uff0c\u6240\u6709\u4f5c\u4e1a\u5747\u6709\u5b8c\u5584\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u4fdd\u59c6\u7ea7\u7684\u4f5c\u4e1a\u8bf4\u660e\u3002\u6bcf\u4e2a Project \u90fd\u6709\u8be6\u5c3d\u7684 handout \u6587\u6863\u3001\u5168\u81ea\u52a8\u7684\u8bc4\u5206\u811a\u672c\u3002CS61A \u751a\u81f3\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a \u81ea\u52a8\u5316\u7684\u4f5c\u4e1a\u63d0\u4ea4\u8bc4\u5206\u7cfb\u7edf \uff08\u636e\u8bf4\u8fd8\u53d1\u4e86\u8bba\u6587\uff09\u3002\u5f53\u7136\uff0c\u6709\u4eba\u4f1a\u8bf4\u201c\u4e00\u4e2a project \u51e0\u5343\u884c\u4ee3\u7801\u5927\u90e8\u5206\u90fd\u662f\u52a9\u6559\u5e2e\u4f60\u5199\u597d\u7684\uff0c\u4f60\u8fd8\u80fd\u5b66\u5230\u5565\uff1f\u201d\u3002\u6b64\u8a00\u5dee\u77e3\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u521a\u521a\u63a5\u89e6\u8ba1\u7b97\u673a\uff0c\u8fde\u5b89\u88c5 Python \u90fd\u78d5\u78d5\u7eca\u7eca\u7684\u5c0f\u767d\u6765\u8bf4\uff0c\u8fd9\u6837\u5b8c\u5584\u7684\u4ee3\u7801\u6846\u67b6\u65e2\u53ef\u4ee5\u8ba9\u4f60\u4e13\u6ce8\u4e8e\u5de9\u56fa\u8bfe\u5802\u4e0a\u5b66\u4e60\u5230\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\uff0c\u53c8\u80fd\u6709\u201c\u6211\u624d\u5b66\u4e86\u4e00\u4e2a\u6708\u5c31\u80fd\u505a\u4e00\u4e2a\u5c0f\u6e38\u620f\u4e86\uff01\u201d\u7684\u6210\u5c31\u611f\uff0c\u8fd8\u80fd\u6709\u673a\u4f1a\u9605\u8bfb\u5b66\u4e60\u522b\u4eba\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\uff0c\u4ece\u800c\u4e3a\u81ea\u5df1\u6240\u7528\u3002\u6211\u89c9\u5f97\u5728\u4f4e\u5e74\u7ea7\uff0c\u8fd9\u79cd\u4ee3\u7801\u6846\u67b6\u53ef\u4ee5\u8bf4\u767e\u5229\u800c\u65e0\u4e00\u5bb3\u3002\u552f\u4e00\u7684\u5bb3\u4e5f\u8bb8\u662f\u82e6\u4e86\u8001\u5e08\u548c\u52a9\u6559\uff0c\u56e0\u4e3a\u5f00\u53d1\u8fd9\u6837\u7684\u4f5c\u4e1a\u53ef\u60f3\u800c\u77e5\u9700\u8981\u76f8\u5f53\u7684\u65f6\u95f4\u6295\u5165\u3002 \u6bcf\u5468 Discussion \u8ba8\u8bba\u8bfe\uff0c\u52a9\u6559\u4f1a\u8bb2\u89e3\u77e5\u8bc6\u96be\u70b9\u548c\u8003\u8bd5\u4f8b\u9898\uff1a\u7c7b\u4f3c\u4e8e\u5317\u4eac\u5927\u5b66 ICS \u7684\u5c0f\u73ed\u7814\u8ba8\uff0c\u4f46\u4e60\u9898\u5168\u90e8\u7528 LaTeX \u64b0\u5199\uff0c\u76f8\u5f53\u89c4\u8303\u4e14\u4f1a\u660e\u786e\u7ed9\u51fa solution\u3002 \u8fd9\u6837\u7684\u8bfe\u7a0b\uff0c\u4f60\u5b8c\u5168\u4e0d\u9700\u8981\u4efb\u4f55\u8ba1\u7b97\u673a\u7684\u57fa\u7840\uff0c\u4f60\u53ea\u9700\u8981\u52aa\u529b\u3001\u8ba4\u771f\u3001\u82b1\u65f6\u95f4\u5c31\u591f\u4e86\u3002\u6b64\u524d\u90a3\u79cd\u6709\u52b2\u6ca1\u5904\u4f7f\u7684\u611f\u89c9\uff0c\u90a3\u79cd\u4ed8\u51fa\u518d\u591a\u65f6\u95f4\u5374\u5f97\u4e0d\u5230\u56de\u62a5\u7684\u611f\u89c9\uff0c\u4ece\u6b64\u70df\u6d88\u4e91\u6563\u3002\u8fd9\u592a\u9002\u5408\u6211\u4e86\uff0c\u6211\u4ece\u6b64\u7231\u4e0a\u4e86\u81ea\u5b66\u3002 \u8bd5\u60f3\u5982\u679c\u6709\u4eba\u80fd\u628a\u8270\u6df1\u7684\u77e5\u8bc6\u70b9\u56bc\u788e\u56bc\u70c2\uff0c\u7528\u751f\u52a8\u76f4\u767d\u7684\u65b9\u5f0f\u5448\u73b0\u7ed9\u4f60\uff0c\u8fd8\u6709\u90a3\u4e48\u591a\u542c\u8d77\u6765\u5c31\u5f88 fancy\uff0c\u79cd\u7c7b\u7e41\u591a\u7684 project \u6765\u5de9\u56fa\u4f60\u7684\u7406\u8bba\u77e5\u8bc6\uff0c\u4f60\u4f1a\u89c9\u5f97\u4ed6\u4eec\u771f\u7684\u662f\u5728\u503e\u5c3d\u5168\u529b\u60f3\u65b9\u8bbe\u6cd5\u5730\u8ba9\u4f60\u5b8c\u5168\u638c\u63e1\u8fd9\u95e8\u8bfe\uff0c\u4f60\u4f1a\u89c9\u5f97\u4e0d\u5b66\u597d\u5b83\u7b80\u76f4\u662f\u5bf9\u8fd9\u4e9b\u8bfe\u7a0b\u5efa\u8bbe\u8005\u7684\u4fae\u8fb1\u3002 \u5982\u679c\u4f60\u89c9\u5f97\u6211\u5728\u5938\u5927\u5176\u8bcd\uff0c\u90a3\u4e48\u4e0d\u59a8\u4ece CS61A \u5f00\u59cb\uff0c\u56e0\u4e3a\u5b83\u662f\u6211\u7684\u68a6\u5f00\u59cb\u7684\u5730\u65b9\u3002 \u4e3a\u4ec0\u4e48\u5199\u8fd9\u672c\u4e66 \u5728\u62112020\u5e74\u79cb\u5b63\u5b66\u671f\u62c5\u4efb\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\uff08CSAPP\uff09\u8fd9\u95e8\u8bfe\u7684\u52a9\u6559\u65f6\uff0c\u6211\u5df2\u7ecf\u81ea\u5b66\u4e00\u5e74\u591a\u4e86\u3002\u8fd9\u4e00\u5e74\u591a\u6765\u6211\u65e0\u6bd4\u4eab\u53d7\u8fd9\u79cd\u81ea\u5b66\u6a21\u5f0f\uff0c\u4e3a\u4e86\u5206\u4eab\u8fd9\u79cd\u5feb\u4e50\uff0c\u6211\u4e3a\u81ea\u5df1\u7684\u5c0f\u73ed\u540c\u5b66\u505a\u8fc7\u4e00\u4e2a CS\u81ea\u5b66\u8d44\u6599\u6574\u7406\u4ed3\u5e93 \u3002\u5f53\u65f6\u7eaf\u7cb9\u662f\u5fc3\u8840\u6765\u6f6e\uff0c\u56e0\u4e3a\u6211\u4e5f\u4e0d\u6562\u516c\u7136\u9f13\u52b1\u5927\u5bb6\u7fd8\u8bfe\u81ea\u5b66\u3002 \u4f46\u968f\u7740\u53c8\u4e00\u5e74\u65f6\u95f4\u7684\u7ef4\u62a4\uff0c\u8fd9\u4e2a\u4ed3\u5e93\u7684\u5185\u5bb9\u5df2\u7ecf\u76f8\u5f53\u4e30\u5bcc\uff0c\u57fa\u672c\u8986\u76d6\u4e86\u8ba1\u79d1\u3001\u667a\u80fd\u7cfb\u3001\u8f6f\u5de5\u7cfb\u7684\u7edd\u5927\u591a\u6570\u8bfe\u7a0b\uff0c\u6211\u4e5f\u4e3a\u6bcf\u4e2a\u8bfe\u7a0b\u90fd\u5efa\u4e86\u5404\u81ea\u7684 GitHub \u4ed3\u5e93\uff0c\u6c47\u603b\u6211\u7528\u5230\u7684\u81ea\u5b66\u8d44\u6599\u4ee5\u53ca\u4f5c\u4e1a\u5b9e\u73b0\u3002 \u76f4\u5230\u5927\u56db\u5f00\u59cb\u51d1\u5b66\u5206\u6bd5\u4e1a\u7684\u65f6\u5019\uff0c\u6211\u6253\u5f00\u81ea\u5df1\u7684\u57f9\u517b\u65b9\u6848\uff0c\u6211\u53d1\u73b0\u5b83\u5df2\u7ecf\u662f\u6211\u8fd9\u4e2a\u81ea\u5b66\u4ed3\u5e93\u7684\u5b50\u96c6\u4e86\uff0c\u800c\u8fd9\u8ddd\u79bb\u6211\u5f00\u59cb\u81ea\u5b66\u4e5f\u624d\u4e24\u5e74\u534a\u800c\u5df2\u3002\u4e8e\u662f\uff0c\u4e00\u4e2a\u5927\u80c6\u7684\u60f3\u6cd5\u5728\u6211\u8111\u6d77\u4e2d\u6d6e\u73b0\uff1a\u4e5f\u8bb8\uff0c\u6211\u53ef\u4ee5\u6253\u9020\u4e00\u4e2a\u81ea\u5b66\u5f0f\u7684\u57f9\u517b\u65b9\u6848\uff0c\u628a\u6211\u8fd9\u4e09\u5e74\u81ea\u5b66\u7ecf\u5386\u4e2d\u9047\u5230\u7684\u5751\u3001\u8d70\u8fc7\u7684\u8def\u8bb0\u5f55\u4e0b\u6765\uff0c\u4ee5\u671f\u80fd\u4e3a\u540e\u6765\u7684\u5b66\u5f1f\u5b66\u59b9\u4eec\u8d21\u732e\u81ea\u5df1\u7684\u4e00\u4efd\u5fae\u8584\u4e4b\u529b\u3002 \u5982\u679c\u5927\u5bb6\u53ef\u4ee5\u5728\u4e09\u5e74\u4e0d\u5230\u7684\u65f6\u95f4\u91cc\u5c31\u80fd\u5efa\u7acb\u8d77\u6574\u5ea7CS\u7684\u57fa\u7840\u5927\u53a6\uff0c\u80fd\u6709\u76f8\u5bf9\u624e\u5b9e\u7684\u6570\u5b66\u529f\u5e95\u548c\u4ee3\u7801\u80fd\u529b\uff0c\u7ecf\u5386\u8fc7\u6570\u5341\u4e2a\u5343\u884c\u4ee3\u7801\u91cf\u7684 Project \u7684\u6d17\u793c\uff0c\u638c\u63e1\u81f3\u5c11 C/C++/Java/JS/Python/Go/Rust \u7b49\u4e3b\u6d41\u8bed\u8a00\uff0c\u5bf9\u7b97\u6cd5\u3001\u7535\u8def\u3001\u4f53\u7cfb\u3001\u7f51\u7edc\u3001\u64cd\u7edf\u3001\u7f16\u8bd1\u3001\u4eba\u5de5\u667a\u80fd\u3001\u673a\u5668\u5b66\u4e60\u3001\u8ba1\u7b97\u673a\u89c6\u89c9\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u3001\u5f3a\u5316\u5b66\u4e60\u3001\u5bc6\u7801\u5b66\u3001\u4fe1\u606f\u8bba\u3001\u535a\u5f08\u8bba\u3001\u6570\u503c\u5206\u6790\u3001\u7edf\u8ba1\u5b66\u3001\u5206\u5e03\u5f0f\u3001\u6570\u636e\u5e93\u3001\u56fe\u5f62\u5b66\u3001Web\u5f00\u53d1\u3001\u4e91\u670d\u52a1\u3001\u8d85\u7b97\u7b49\u7b49\u65b9\u9762\u5747\u6709\u6d89\u730e\u3002\u6211\u60f3\uff0c\u4f60\u5c06\u6709\u8db3\u591f\u7684\u5e95\u6c14\u548c\u81ea\u4fe1\u9009\u62e9\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\uff0c\u65e0\u8bba\u662f\u5c31\u4e1a\u8fd8\u662f\u79d1\u7814\uff0c\u4f60\u90fd\u5c06\u6709\u76f8\u5f53\u7684\u7ade\u4e89\u529b\u3002 \u56e0\u4e3a\u6211\u575a\u4fe1\uff0c\u65e2\u7136\u4f60\u80fd\u575a\u6301\u542c\u6211 BB \u5230\u8fd9\u91cc\uff0c\u4f60\u4e00\u5b9a\u4e0d\u7f3a\u5b66\u597d CS \u7684\u80fd\u529b\uff0c\u4f60\u53ea\u662f\u6ca1\u6709\u4e00\u4e2a\u597d\u7684\u8001\u5e08\uff0c\u7ed9\u4f60\u8bb2\u4e00\u95e8\u597d\u7684\u8bfe\u7a0b\u3002\u800c\u6211\uff0c\u5c06\u529b\u56fe\u6839\u636e\u6211\u4e09\u5e74\u7684\u4f53\u9a8c\uff0c\u4e3a\u4f60\u6311\u9009\u8fd9\u6837\u7684\u8bfe\u7a0b\u3002 \u81ea\u5b66\u7684\u597d\u5904 \u5bf9\u6211\u6765\u8bf4\uff0c\u81ea\u5b66\u6700\u5927\u7684\u597d\u5904\u5c31\u5728\u4e8e\u53ef\u4ee5\u5b8c\u5168\u6839\u636e\u81ea\u5df1\u7684\u8fdb\u5ea6\u6765\u8c03\u6574\u5b66\u4e60\u901f\u5ea6\u3002\u5bf9\u4e8e\u4e00\u4e9b\u7591\u96be\u77e5\u8bc6\u70b9\uff0c\u6211\u53ef\u4ee5\u53cd\u590d\u56de\u770b\u89c6\u9891\uff0c\u5728\u7f51\u4e0a\u8c37\u6b4c\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u4e0a StackOverflow \u63d0\u95ee\u9898\uff0c\u76f4\u5230\u5b8c\u5168\u5c06\u5b83\u5f04\u660e\u767d\u3002\u800c\u5bf9\u4e8e\u81ea\u5df1\u638c\u63e1\u5f97\u76f8\u5bf9\u8f83\u5feb\u7684\u5185\u5bb9\uff0c\u5219\u53ef\u4ee5\u4e24\u500d\u901f\u751a\u81f3\u4e09\u500d\u901f\u7565\u8fc7\u3002 \u81ea\u5b66\u7684\u53e6\u4e00\u5927\u597d\u5904\u5c31\u662f\u535a\u91c7\u4f17\u957f\u3002\u8ba1\u7b97\u673a\u7cfb\u7684\u51e0\u5927\u6838\u5fc3\u8bfe\u7a0b\uff1a\u4f53\u7cfb\u3001\u7f51\u7edc\u3001\u64cd\u7edf\u3001\u7f16\u8bd1\uff0c\u6bcf\u4e00\u95e8\u6211\u57fa\u672c\u90fd\u4e0a\u8fc7\u4e0d\u540c\u5927\u5b66\u7684\u8bfe\u7a0b\uff0c\u4e0d\u540c\u7684\u6559\u6750\u3001\u4e0d\u540c\u7684\u77e5\u8bc6\u70b9\u4fa7\u91cd\u3001\u4e0d\u540c\u7684 project \u5c06\u4f1a\u6781\u5927\u4e30\u5bcc\u4f60\u7684\u89c6\u91ce\uff0c\u4e5f\u4f1a\u8ba9\u4f60\u7406\u89e3\u9519\u8bef\u7684\u4e00\u4e9b\u5185\u5bb9\u5f97\u5230\u53ca\u65f6\u7ea0\u6b63\u3002 \u81ea\u5b66\u7684\u7b2c\u4e09\u4e2a\u597d\u5904\u662f\u65f6\u95f4\u81ea\u7531\uff0c\u5177\u4f53\u539f\u56e0\u7701\u7565\u3002 \u81ea\u5b66\u7684\u574f\u5904 \u5f53\u7136\uff0c\u4f5c\u4e3a CS \u81ea\u5b66\u4e3b\u4e49\u7684\u5fe0\u5b9e\u62e5\u8db8\uff0c\u6211\u4e0d\u5f97\u4e0d\u627f\u8ba4\u81ea\u5b66\u4e5f\u6709\u5b83\u7684\u574f\u5904\u3002 \u7b2c\u4e00\u5c31\u662f\u4ea4\u6d41\u6c9f\u901a\u7684\u4e0d\u4fbf\u3002\u6211\u5176\u5b9e\u662f\u4e00\u4e2a\u5f88\u70ed\u8877\u4e8e\u63d0\u95ee\u7684\u4eba\uff0c\u5bf9\u4e8e\u6240\u6709\u6ca1\u6709\u5f04\u660e\u767d\u7684\u70b9\uff0c\u6211\u90fd\u559c\u6b22\u7a77\u8ffd\u5230\u5e95\u3002\u4f46\u5f53\u4f60\u9762\u5bf9\u7740\u5c4f\u5e55\u542c\u5230\u8001\u5e08\u8bb2\u4e86\u4e00\u4e2a\u4f60\u6ca1\u660e\u767d\u7684\u77e5\u8bc6\u70b9\u7684\u65f6\u5019\uff0c\u4f60\u65e0\u6cd5\u987a\u7740\u7f51\u7ebf\u5230\u53e6\u4e00\u7aef\u5411\u8001\u5e08\u95ee\u4e2a\u660e\u767d\u3002\u6211\u52aa\u529b\u901a\u8fc7\u72ec\u7acb\u601d\u8003\u548c\u5584\u7528 Google \u6765\u7f13\u89e3\u8fd9\u4e00\u70b9\uff0c\u4f46\u662f\uff0c\u5982\u679c\u80fd\u6709\u51e0\u4e2a\u5fd7\u540c\u9053\u5408\u7684\u4f19\u4f34\u7ed3\u4f34\u81ea\u5b66\uff0c\u90a3\u5c06\u662f\u6781\u597d\u7684\u3002\u5173\u4e8e\u4ea4\u6d41\u7fa4\u7684\u5efa\u7acb\uff0c\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003\u4ed3\u5e93 README \u4e2d\u7684\u6559\u7a0b\u3002 \u7b2c\u4e8c\u5c31\u662f\u8fd9\u4e9b\u81ea\u5b66\u7684\u8bfe\u7a0b\u57fa\u672c\u90fd\u662f\u82f1\u6587\u7684\u3002\u4ece\u89c6\u9891\u5230slides\u5230\u4f5c\u4e1a\u5168\u662f\u82f1\u6587\uff0c\u6240\u4ee5\u6709\u4e00\u5b9a\u7684\u95e8\u69db\u3002\u4e0d\u8fc7\u6211\u89c9\u5f97\u8fd9\u4e2a\u6311\u6218\u5982\u679c\u4f60\u514b\u670d\u4e86\u7684\u8bdd\u5bf9\u4f60\u662f\u6781\u4e3a\u6709\u5229\u7684\u3002\u56e0\u4e3a\u5728\u5f53\u4e0b\uff0c\u867d\u7136\u6211\u5f88\u4e0d\u60c5\u613f\uff0c\u4f46\u4e5f\u4e0d\u5f97\u4e0d\u627f\u8ba4\uff0c\u5728\u8ba1\u7b97\u673a\u9886\u57df\uff0c\u5f88\u591a\u4f18\u8d28\u7684\u6587\u6863\u3001\u8bba\u575b\u3001\u7f51\u7ad9\u90fd\u662f\u5168\u82f1\u6587\u7684\u3002\u517b\u6210\u82f1\u6587\u9605\u8bfb\u7684\u4e60\u60ef\uff0c\u5728\u8d64\u65d7\u63d2\u904d\u4e16\u754c\u4e4b\u524d\uff0c\u8fd8\u662f\u6709\u4e00\u5b9a\u597d\u5904\u7684\uff08\u72d7\u5934\u4fdd\u547d\uff09\u3002 \u7b2c\u4e09\uff0c\u4e5f\u662f\u6211\u89c9\u5f97\u6700\u56f0\u96be\u7684\u4e00\u70b9\uff0c\u5c31\u662f\u81ea\u5f8b\u3002\u56e0\u4e3a\u6ca1\u6709 DDL \u6709\u65f6\u5019\u771f\u7684\u662f\u4e00\u4ef6\u53ef\u6015\u7684\u4e8b\u60c5\uff0c\u7279\u522b\u662f\u968f\u7740\u5b66\u4e60\u7684\u6df1\u5165\uff0c\u56fd\u5916\u7684\u5f88\u591a\u8bfe\u7a0b\u662f\u76f8\u5f53\u8650\u7684\u3002\u4f60\u5f97\u6709\u8db3\u591f\u7684\u9a71\u52a8\u529b\u5f3a\u8feb\u81ea\u5df1\u9759\u4e0b\u5fc3\u6765\uff0c\u9605\u8bfb\u51e0\u5341\u9875\u7684 Project Handout\uff0c\u7406\u89e3\u4e0a\u5343\u884c\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u5fcd\u53d7\u6570\u4e2a\u5c0f\u65f6\u7684 debug \u65f6\u5149\u3002\u800c\u8fd9\u4e00\u5207\uff0c\u6ca1\u6709\u5b66\u5206\uff0c\u6ca1\u6709\u7ee9\u70b9\uff0c\u6ca1\u6709\u8001\u5e08\uff0c\u6ca1\u6709\u540c\u5b66\uff0c\u53ea\u6709\u4e00\u4e2a\u4fe1\u5ff5 \u2014\u2014 \u4f60\u5728\u53d8\u5f3a\u3002 \u8fd9\u672c\u4e66\u9002\u5408\u8c01 \u6b63\u5982\u6211\u5728\u524d\u8a00\u91cc\u8bf4\u7684\uff0c\u4efb\u4f55\u6709\u5fd7\u4e8e\u81ea\u5b66\u8ba1\u7b97\u673a\u7684\u670b\u53cb\u90fd\u53ef\u4ee5\u53c2\u8003\u8fd9\u672c\u4e66\u3002\u5982\u679c\u4f60\u5df2\u7ecf\u6709\u4e86\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u57fa\u7840\uff0c\u53ea\u662f\u5bf9\u67d0\u4e2a\u7279\u5b9a\u7684\u9886\u57df\u611f\u5174\u8da3\uff0c\u53ef\u4ee5\u9009\u62e9\u6027\u5730\u6311\u9009\u4f60\u611f\u5174\u8da3\u7684\u5185\u5bb9\u8fdb\u884c\u5b66\u4e60\u3002\u5f53\u7136\uff0c\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u50cf\u6211\u5f53\u5e74\u4e00\u6837\u5bf9\u8ba1\u7b97\u673a\u4e00\u65e0\u6240\u77e5\u7684\u5c0f\u767d\uff0c\u521d\u5165\u5927\u5b66\u7684\u6821\u95e8\uff0c\u6211\u5e0c\u671b\u8fd9\u672c\u4e66\u80fd\u6210\u4e3a\u4f60\u7684\u653b\u7565\uff0c\u8ba9\u4f60\u82b1\u6700\u5c11\u7684\u65f6\u95f4\u638c\u63e1\u4f60\u6240\u9700\u8981\u7684\u77e5\u8bc6\u548c\u80fd\u529b\u3002\u67d0\u79cd\u7a0b\u5ea6\u4e0a\uff0c\u8fd9\u672c\u4e66\u66f4\u50cf\u662f\u4e00\u4e2a\u6839\u636e\u6211\u7684\u4f53\u9a8c\u6765\u6392\u5e8f\u7684\u8bfe\u7a0b\u641c\u7d22\u5f15\u64ce\uff0c\u5e2e\u52a9\u5927\u5bb6\u8db3\u4e0d\u51fa\u6237\uff0c\u4f53\u9a8c\u4e16\u754c\u9876\u7ea7\u540d\u6821\u7684\u8ba1\u7b97\u673a\u4f18\u8d28\u8bfe\u7a0b\u3002 \u5f53\u7136\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u8fd8\u672a\u6bd5\u4e1a\u7684\u672c\u79d1\u751f\uff0c\u6211\u6df1\u611f\u81ea\u5df1\u6ca1\u6709\u80fd\u529b\u4e5f\u6ca1\u6709\u6743\u5229\u53bb\u5ba3\u626c\u4e00\u79cd\u5b66\u4e60\u65b9\u5f0f\uff0c\u6211\u53ea\u662f\u5e0c\u671b\u8fd9\u4efd\u8d44\u6599\u80fd\u8ba9\u90a3\u4e9b\u540c\u6837\u6709\u81ea\u5b66\u4e4b\u5fc3\u548c\u6bc5\u529b\u670b\u53cb\u53ef\u4ee5\u5c11\u8d70\u4e9b\u5f2f\u8def\uff0c\u6536\u83b7\u66f4\u4e30\u5bcc\u3001\u66f4\u591a\u6837\u3001\u66f4\u6ee1\u8db3\u7684\u5b66\u4e60\u4f53\u9a8c\u3002 \u7279\u522b\u9e23\u8c22 \u5728\u8fd9\u91cc\uff0c\u6211\u6000\u7740\u5d07\u656c\u4e4b\u5fc3\u771f\u8bda\u5730\u611f\u8c22\u6240\u6709\u5c06\u8bfe\u7a0b\u8d44\u6e90\u65e0\u507f\u5f00\u6e90\u7684\u5404\u4f4d\u6559\u6388\u4eec\u3002\u8fd9\u4e9b\u8bfe\u7a0b\u503e\u6ce8\u4e86\u4ed6\u4eec\u6570\u5341\u5e74\u6559\u5b66\u751f\u6daf\u7684\u79ef\u6dc0\u548c\u5fc3\u8840\uff0c\u4ed6\u4eec\u5374\u9009\u62e9\u65e0\u79c1\u5730\u8ba9\u6240\u6709\u4eba\u4eab\u53d7\u5230\u5982\u6b64\u9ad8\u8d28\u91cf\u7684CS\u6559\u80b2\u3002\u6ca1\u6709\u4ed6\u4eec\uff0c\u6211\u7684\u5927\u5b66\u751f\u6d3b\u4e0d\u4f1a\u8fd9\u6837\u5145\u5b9e\u800c\u5feb\u4e50\u3002\u5f88\u591a\u6559\u6388\u5728\u6211\u7ed9\u4ed6\u4eec\u53d1\u4e86\u611f\u8c22\u90ae\u4ef6\u4e4b\u540e\uff0c\u751a\u81f3\u4f1a\u56de\u590d\u4e0a\u767e\u5b57\u7684\u957f\u6587\uff0c\u771f\u7684\u8ba9\u6211\u65e0\u6bd4\u611f\u52a8\u3002\u4ed6\u4eec\u4e5f\u65f6\u523b\u6fc0\u52b1\u7740\u6211\uff0c\u505a\u4e00\u4ef6\u4e8b\uff0c\u5c31\u5f97\u7528\u5fc3\u505a\u597d\uff0c\u65e0\u8bba\u662f\u79d1\u7814\uff0c\u8fd8\u662f\u4e3a\u4eba\u3002 \u4f60\u4e5f\u60f3\u52a0\u5165\u5230\u8d21\u732e\u8005\u7684\u884c\u5217 \u4e00\u4e2a\u4eba\u7684\u529b\u91cf\u7ec8\u7a76\u662f\u6709\u9650\u7684\uff0c\u8fd9\u672c\u4e66\u4e5f\u662f\u6211\u5728\u7e41\u91cd\u7684\u79d1\u7814\u4e4b\u4f59\u71ac\u591c\u62bd\u7a7a\u5199\u51fa\u6765\u7684\uff0c\u96be\u514d\u6709\u4e0d\u591f\u5b8c\u5584\u4e4b\u5904\u3002\u53e6\u5916\uff0c\u7531\u4e8e\u4e2a\u4eba\u505a\u7684\u662f\u7cfb\u7edf\u65b9\u5411\uff0c\u5f88\u591a\u8bfe\u7a0b\u4fa7\u91cd\u7cfb\u7edf\u9886\u57df\uff0c\u5bf9\u4e8e\u6570\u5b66\u3001\u7406\u8bba\u8ba1\u7b97\u673a\u3001\u9ad8\u7ea7\u7b97\u6cd5\u76f8\u5173\u7684\u5185\u5bb9\u5219\u76f8\u5bf9\u5c11\u4e9b\u3002\u5982\u679c\u6709\u5927\u4f6c\u60f3\u5728\u5176\u4ed6\u9886\u57df\u5206\u4eab\u81ea\u5df1\u7684\u81ea\u5b66\u7ecf\u5386\u4e0e\u8d44\u6e90\uff0c\u53ef\u4ee5\u76f4\u63a5\u5728\u9879\u76ee\u4e2d\u53d1\u8d77 Pull Request\uff0c\u4e5f\u6b22\u8fce\u548c\u6211\u90ae\u4ef6\u8054\u7cfb\uff08 zhongyinmin@pku.edu.cn \uff09\u3002 \u5173\u4e8e\u4ea4\u6d41\u7fa4\u7684\u5efa\u7acb \u65b9\u6cd5\u53c2\u89c1\u4ed3\u5e93\u7684 README.md \u3002","title":"\u524d\u8a00"},{"location":"#_1","text":"\u6700\u8fd1\u66f4\u65b0\uff1a\u589e\u52a0\u9648\u5929\u5947 \u673a\u5668\u5b66\u4e60\u7f16\u8bd1 \uff0c\u589e\u52a0 CMU \u673a\u5668\u5b66\u4e60\u7cfb\u7edf \uff5e \u8fd9\u662f\u4e00\u672c\u8ba1\u7b97\u673a\u7684\u81ea\u5b66\u6307\u5357\uff0c\u4e5f\u662f\u5bf9\u81ea\u5df1\u5927\u5b66\u4e09\u5e74\u81ea\u5b66\u751f\u6daf\u7684\u4e00\u4e2a\u7eaa\u5ff5\u3002 \u8fd9\u540c\u65f6\u4e5f\u662f\u4e00\u4efd\u732e\u7ed9\u5317\u5927\u4fe1\u79d1\u5b66\u5f1f\u5b66\u59b9\u4eec\u7684\u793c\u7269\u3002\u5982\u679c\u8fd9\u672c\u4e66\u80fd\u5bf9\u4f60\u4eec\u7684\u4fe1\u79d1\u751f\u6daf\u6709\u54ea\u6015\u4e00\u4e1d\u4e00\u6beb\u7684\u5e2e\u52a9\uff0c\u90fd\u662f\u5bf9\u6211\u6781\u5927\u7684\u9f13\u52b1\u548c\u6170\u85c9\u3002 \u672c\u4e66\u76ee\u524d\u89c4\u5212\u4e86\u4ee5\u4e0b\u90e8\u5206(\u5982\u679c\u4f60\u6709\u5176\u4ed6\u597d\u7684\u5efa\u8bae\uff0c\u6216\u8005\u60f3\u52a0\u5165\u8d21\u732e\u8005\u7684\u884c\u5217\uff0c\u6b22\u8fce\u90ae\u4ef6 zhongyinmin@pku.edu.cn \u6216\u8005\u5728 issue \u91cc\u63d0\u95ee)\uff1a \u5fc5\u5b66\u5de5\u5177\uff1aIDE, \u7ffb\u5899, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, \u5b9e\u7528\u5de5\u5177 ... \u56fd\u5916\u9ad8\u8d28\u91cf CS \u8bfe\u7a0b\u6c47\u603b \uff1a\u6211\u5c06\u628a\u6211\u4e0a\u8fc7\u7684\u6240\u6709\u9ad8\u8d28\u91cf\u7684\u56fd\u5916 CS \u8bfe\u7a0b\u5206\u95e8\u522b\u7c7b\u8fdb\u884c\u6c47\u603b\uff0c\u5e76\u7ed9\u51fa\u76f8\u5173\u7684\u81ea\u5b66\u5efa\u8bae\uff0c\u5927\u90e8\u5206\u8bfe\u7a0b\u90fd\u4f1a\u6709\u4e00\u4e2a\u72ec\u7acb\u7684\u4ed3\u5e93\u7ef4\u62a4\u76f8\u5173\u7684\u8d44\u6e90\u4ee5\u53ca\u6211\u7684\u4f5c\u4e1a\u5b9e\u73b0\u3002 \u73af\u5883\u914d\u7f6e\uff1aLinux \u57fa\u7840\uff0c bash \uff0c\u73af\u5883\u53d8\u91cf\uff0cAnaconda ... \u7ecf\u5178\u4e66\u7c4d\u63a8\u8350\uff1a\u770b\u8fc7 CSAPP \u8fd9\u672c\u4e66\u7684\u540c\u5b66\u4e00\u5b9a\u611f\u53f9\u597d\u4e66\u7684\u91cd\u8981\uff0c\u6211\u5c06\u5217\u4e3e\u63a8\u8350\u81ea\u5df1\u770b\u8fc7\u7684\u8ba1\u7b97\u673a\u9886\u57df\u7684\u5fc5\u770b\u597d\u4e66\u4e0e\u8d44\u6e90\u94fe\u63a5\u3002","title":"\u524d\u8a00"},{"location":"#cs61a","text":"\u5927\u4e00\u5165\u5b66\u65f6\u6211\u662f\u4e00\u4e2a\u5bf9\u8ba1\u7b97\u673a\u4e00\u65e0\u6240\u77e5\u7684\u5c0f\u767d\uff0c\u88c5\u4e86\u51e0\u5341\u4e2a G \u7684 Visual Studio \u5929\u5929\u548c OJ \u4f60\u6b7b\u6211\u6d3b\u3002\u51ed\u7740\u9ad8\u4e2d\u7684\u6570\u5b66\u5e95\u5b50\u6211\u6570\u5b66\u8bfe\u5b66\u5f97\u8fd8\u4e0d\u9519\uff0c\u4f46\u5728\u4e13\u4e1a\u8bfe\u4e0a\u5bf9\u7ade\u8d5b\u5927\u4f6c\u53ea\u6709\u4ef0\u671b\u3002\u63d0\u5230\u7f16\u7a0b\u6211\u53ea\u4f1a\u6253\u5f00\u90a3\u7b28\u91cd\u7684 IDE\uff0c\u65b0\u5efa\u4e00\u4e2a\u6211\u4e5f\u4e0d\u77e5\u9053\u5177\u4f53\u662f\u5e72\u5565\u7684\u547d\u4ee4\u884c\u9879\u76ee\uff0c\u7136\u540e\u5c31\u662f cin , cout , for \u5faa\u73af\uff0c\u7136\u540e CE, RE, WA \u5faa\u73af\u3002\u5f53\u65f6\u7684\u6211\u5c31\u5904\u5728\u4e00\u79cd\u62fc\u547d\u60f3\u5b66\u597d\u4f46\u4e0d\u77e5\u9053\u600e\u4e48\u5b66\uff0c\u8bfe\u4e0a\u8ba4\u771f\u542c\u8bb2\u4f46\u9898\u8fd8\u4e0d\u4f1a\u505a\uff0c\u8bfe\u540e\u505a\u4f5c\u4e1a\u5b8c\u5168\u662f\u7528\u65f6\u95f4\u548c\u5b83\u786c\u8017\u7684\u75db\u82e6\u72b6\u6001\u3002\u6211\u81f3\u4eca\u7535\u8111\u91cc\u8fd8\u5b58\u7740\u81ea\u5df1\u5927\u4e00\u4e0a\u5b66\u671f\u8ba1\u7b97\u6982\u8bba\u5927\u4f5c\u4e1a\u7684\u6e90\u4ee3\u7801 \u2014\u2014 \u4e00\u4e2a 1200 \u884c\u7684 C++ \u6587\u4ef6\uff0c\u6ca1\u6709\u5934\u6587\u4ef6\u3001\u6ca1\u6709\u7c7b\u3001\u6ca1\u6709\u5c01\u88c5\u3001\u6ca1\u6709 unit test\u3001\u6ca1\u6709 Makefile\u3001\u6ca1\u6709 Git\uff0c\u552f\u4e00\u7684\u4f18\u70b9\u662f\u5b83\u786e\u5b9e\u80fd\u8dd1\uff0c\u7f3a\u70b9\u662f\u201c\u80fd\u8dd1\u201d\u7684\u8865\u96c6\u3002\u6211\u4e00\u5ea6\u6000\u7591\u6211\u662f\u4e0d\u662f\u4e0d\u9002\u5408\u5b66\u8ba1\u7b97\u673a\uff0c\u56e0\u4e3a\u7ae5\u5e74\u5bf9\u4e8e\u6781\u5ba2\u7684\u6240\u6709\u60f3\u8c61\uff0c\u5df2\u7ecf\u88ab\u6211\u7b2c\u4e00\u4e2a\u5b66\u671f\u7684\u4f53\u9a8c\u5f7b\u5e95\u7c89\u788e\u4e86\u3002 \u8fd9\u4e00\u5207\u7684\u8f6c\u673a\u53d1\u751f\u5728\u6211\u5927\u4e00\u7684\u5bd2\u5047\uff0c\u6211\u5fc3\u8840\u6765\u6f6e\u60f3\u5b66\u4e60 Python\u3002\u65e0\u610f\u95f4\u770b\u5230\u77e5\u4e4e\u6709\u4eba\u63a8\u8350\u4e86 CS61A \u8fd9\u95e8\u8bfe\uff0c\u8bf4\u662f UC Berkeley \u7684\u5927\u4e00\u5165\u95e8\u8bfe\u7a0b\uff0c\u8bb2\u7684\u5c31\u662f Python\u3002\u6211\u6c38\u8fdc\u4e0d\u4f1a\u5fd8\u8bb0\u90a3\u4e00\u5929\uff0c\u6253\u5f00 CS61A \u8bfe\u7a0b\u7f51\u7ad9\u7684\u90a3\u4e2a\u77ac\u95f4\uff0c\u5c31\u50cf\u54e5\u4f26\u5e03\u53d1\u73b0\u4e86\u65b0\u5927\u9646\u4e00\u6837\uff0c\u6211\u5f00\u542f\u4e86\u65b0\u4e16\u754c\u7684\u5927\u95e8\u3002 \u6211\u4e00\u53e3\u6c14 3 \u4e2a\u661f\u671f\u4e0a\u5b8c\u4e86\u8fd9\u95e8\u8bfe\uff0c\u5b83\u8ba9\u6211\u7b2c\u4e00\u6b21\u611f\u89c9\u5230\u539f\u6765 CS \u53ef\u4ee5\u5b66\u5f97\u5982\u6b64\u5145\u5b9e\u800c\u6709\u8da3\uff0c\u539f\u6765\u8fd9\u4e16\u4e0a\u7adf\u6709\u5982\u6b64\u7cbe\u534e\u7684\u8bfe\u7a0b\u3002 \u4e3a\u907f\u514d\u6709\u5d07\u6d0b\u5a9a\u5916\u4e4b\u5acc\uff0c\u6211\u5355\u7eaf\u4ece\u4e00\u4e2a\u5b66\u751f\u7684\u89c6\u89d2\u6765\u8bb2\u8bb2\u81ea\u5b66 CS61A \u7684\u4f53\u9a8c\uff1a \u72ec\u7acb\u642d\u5efa\u7684\u8bfe\u7a0b\u7f51\u7ad9: \u4e00\u4e2a\u7f51\u7ad9\u5c06\u6240\u6709\u8bfe\u7a0b\u8d44\u6e90\u6574\u5408\u4e00\u4f53\uff0c\u6761\u7406\u5206\u660e\u7684\u8bfe\u7a0b schedule\u3001\u6240\u6709 slides, hw, discussion \u7684\u6587\u4ef6\u94fe\u63a5\u3001\u8be6\u7ec6\u660e\u786e\u7684\u8bfe\u7a0b\u7ed9\u5206\u8bf4\u660e\u3001\u5386\u5e74\u7684\u8003\u8bd5\u9898\u4e0e\u7b54\u6848\u3002\u8fd9\u6837\u4e00\u4e2a\u7f51\u7ad9\u629b\u5f00\u7f8e\u89c2\u7a0b\u5ea6\u4e0d\u8c08\uff0c\u65e2\u65b9\u4fbf\u5b66\u751f\uff0c\u4e5f\u8ba9\u8d44\u6e90\u516c\u6b63\u900f\u660e\u3002 \u8bfe\u7a0b\u6559\u6388\u4eb2\u81ea\u7f16\u5199\u7684\u6559\u6750\uff1aCS61A \u8fd9\u95e8\u8bfe\u7684\u5f00\u8bfe\u8001\u5e08\u5c06MIT\u7684\u7ecf\u5178\u6559\u6750 Structure and Interpretation of Computer Programs (SICP) \u7528Python\u8fd9\u95e8\u8bed\u8a00\u8fdb\u884c\u6539\u7f16\uff08\u539f\u6559\u6750\u57fa\u4e8e Scheme \u8bed\u8a00\uff09\uff0c\u4fdd\u8bc1\u4e86\u8bfe\u5802\u5185\u5bb9\u4e0e\u6559\u6750\u5185\u5bb9\u7684\u4e00\u81f4\u6027\uff0c\u540c\u65f6\u8865\u5145\u4e86\u66f4\u591a\u7ec6\u8282\uff0c\u53ef\u4ee5\u8bf4\u8bda\u610f\u6ee1\u6ee1\u3002\u800c\u4e14\u5168\u4e66\u5f00\u6e90\uff0c\u53ef\u4ee5\u76f4\u63a5\u7ebf\u4e0a\u9605\u8bfb\u3002 \u4e30\u5bcc\u5230\u8ba9\u4eba\u773c\u82b1\u7f2d\u4e71\u7684\u8bfe\u7a0b\u4f5c\u4e1a\uff1a14 \u4e2a lab \u5de9\u56fa\u968f\u5802\u77e5\u8bc6\u70b9\uff0c10 \u4e2a homework\uff0c\u8fd8\u6709 4 \u4e2a\u4ee3\u7801\u91cf\u5747\u4e0a\u5343\u884c\u7684 project\u3002\u4e0e\u5927\u5bb6\u719f\u6089\u7684 OJ \u548c Word \u6587\u6863\u5f0f\u7684\u4f5c\u4e1a\u4e0d\u540c\uff0c\u6240\u6709\u4f5c\u4e1a\u5747\u6709\u5b8c\u5584\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u4fdd\u59c6\u7ea7\u7684\u4f5c\u4e1a\u8bf4\u660e\u3002\u6bcf\u4e2a Project \u90fd\u6709\u8be6\u5c3d\u7684 handout \u6587\u6863\u3001\u5168\u81ea\u52a8\u7684\u8bc4\u5206\u811a\u672c\u3002CS61A \u751a\u81f3\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a \u81ea\u52a8\u5316\u7684\u4f5c\u4e1a\u63d0\u4ea4\u8bc4\u5206\u7cfb\u7edf \uff08\u636e\u8bf4\u8fd8\u53d1\u4e86\u8bba\u6587\uff09\u3002\u5f53\u7136\uff0c\u6709\u4eba\u4f1a\u8bf4\u201c\u4e00\u4e2a project \u51e0\u5343\u884c\u4ee3\u7801\u5927\u90e8\u5206\u90fd\u662f\u52a9\u6559\u5e2e\u4f60\u5199\u597d\u7684\uff0c\u4f60\u8fd8\u80fd\u5b66\u5230\u5565\uff1f\u201d\u3002\u6b64\u8a00\u5dee\u77e3\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u521a\u521a\u63a5\u89e6\u8ba1\u7b97\u673a\uff0c\u8fde\u5b89\u88c5 Python \u90fd\u78d5\u78d5\u7eca\u7eca\u7684\u5c0f\u767d\u6765\u8bf4\uff0c\u8fd9\u6837\u5b8c\u5584\u7684\u4ee3\u7801\u6846\u67b6\u65e2\u53ef\u4ee5\u8ba9\u4f60\u4e13\u6ce8\u4e8e\u5de9\u56fa\u8bfe\u5802\u4e0a\u5b66\u4e60\u5230\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\uff0c\u53c8\u80fd\u6709\u201c\u6211\u624d\u5b66\u4e86\u4e00\u4e2a\u6708\u5c31\u80fd\u505a\u4e00\u4e2a\u5c0f\u6e38\u620f\u4e86\uff01\u201d\u7684\u6210\u5c31\u611f\uff0c\u8fd8\u80fd\u6709\u673a\u4f1a\u9605\u8bfb\u5b66\u4e60\u522b\u4eba\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\uff0c\u4ece\u800c\u4e3a\u81ea\u5df1\u6240\u7528\u3002\u6211\u89c9\u5f97\u5728\u4f4e\u5e74\u7ea7\uff0c\u8fd9\u79cd\u4ee3\u7801\u6846\u67b6\u53ef\u4ee5\u8bf4\u767e\u5229\u800c\u65e0\u4e00\u5bb3\u3002\u552f\u4e00\u7684\u5bb3\u4e5f\u8bb8\u662f\u82e6\u4e86\u8001\u5e08\u548c\u52a9\u6559\uff0c\u56e0\u4e3a\u5f00\u53d1\u8fd9\u6837\u7684\u4f5c\u4e1a\u53ef\u60f3\u800c\u77e5\u9700\u8981\u76f8\u5f53\u7684\u65f6\u95f4\u6295\u5165\u3002 \u6bcf\u5468 Discussion \u8ba8\u8bba\u8bfe\uff0c\u52a9\u6559\u4f1a\u8bb2\u89e3\u77e5\u8bc6\u96be\u70b9\u548c\u8003\u8bd5\u4f8b\u9898\uff1a\u7c7b\u4f3c\u4e8e\u5317\u4eac\u5927\u5b66 ICS \u7684\u5c0f\u73ed\u7814\u8ba8\uff0c\u4f46\u4e60\u9898\u5168\u90e8\u7528 LaTeX \u64b0\u5199\uff0c\u76f8\u5f53\u89c4\u8303\u4e14\u4f1a\u660e\u786e\u7ed9\u51fa solution\u3002 \u8fd9\u6837\u7684\u8bfe\u7a0b\uff0c\u4f60\u5b8c\u5168\u4e0d\u9700\u8981\u4efb\u4f55\u8ba1\u7b97\u673a\u7684\u57fa\u7840\uff0c\u4f60\u53ea\u9700\u8981\u52aa\u529b\u3001\u8ba4\u771f\u3001\u82b1\u65f6\u95f4\u5c31\u591f\u4e86\u3002\u6b64\u524d\u90a3\u79cd\u6709\u52b2\u6ca1\u5904\u4f7f\u7684\u611f\u89c9\uff0c\u90a3\u79cd\u4ed8\u51fa\u518d\u591a\u65f6\u95f4\u5374\u5f97\u4e0d\u5230\u56de\u62a5\u7684\u611f\u89c9\uff0c\u4ece\u6b64\u70df\u6d88\u4e91\u6563\u3002\u8fd9\u592a\u9002\u5408\u6211\u4e86\uff0c\u6211\u4ece\u6b64\u7231\u4e0a\u4e86\u81ea\u5b66\u3002 \u8bd5\u60f3\u5982\u679c\u6709\u4eba\u80fd\u628a\u8270\u6df1\u7684\u77e5\u8bc6\u70b9\u56bc\u788e\u56bc\u70c2\uff0c\u7528\u751f\u52a8\u76f4\u767d\u7684\u65b9\u5f0f\u5448\u73b0\u7ed9\u4f60\uff0c\u8fd8\u6709\u90a3\u4e48\u591a\u542c\u8d77\u6765\u5c31\u5f88 fancy\uff0c\u79cd\u7c7b\u7e41\u591a\u7684 project \u6765\u5de9\u56fa\u4f60\u7684\u7406\u8bba\u77e5\u8bc6\uff0c\u4f60\u4f1a\u89c9\u5f97\u4ed6\u4eec\u771f\u7684\u662f\u5728\u503e\u5c3d\u5168\u529b\u60f3\u65b9\u8bbe\u6cd5\u5730\u8ba9\u4f60\u5b8c\u5168\u638c\u63e1\u8fd9\u95e8\u8bfe\uff0c\u4f60\u4f1a\u89c9\u5f97\u4e0d\u5b66\u597d\u5b83\u7b80\u76f4\u662f\u5bf9\u8fd9\u4e9b\u8bfe\u7a0b\u5efa\u8bbe\u8005\u7684\u4fae\u8fb1\u3002 \u5982\u679c\u4f60\u89c9\u5f97\u6211\u5728\u5938\u5927\u5176\u8bcd\uff0c\u90a3\u4e48\u4e0d\u59a8\u4ece CS61A \u5f00\u59cb\uff0c\u56e0\u4e3a\u5b83\u662f\u6211\u7684\u68a6\u5f00\u59cb\u7684\u5730\u65b9\u3002","title":"\u68a6\u5f00\u59cb\u7684\u5730\u65b9 \u2014\u2014 CS61A"},{"location":"#_2","text":"\u5728\u62112020\u5e74\u79cb\u5b63\u5b66\u671f\u62c5\u4efb\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\uff08CSAPP\uff09\u8fd9\u95e8\u8bfe\u7684\u52a9\u6559\u65f6\uff0c\u6211\u5df2\u7ecf\u81ea\u5b66\u4e00\u5e74\u591a\u4e86\u3002\u8fd9\u4e00\u5e74\u591a\u6765\u6211\u65e0\u6bd4\u4eab\u53d7\u8fd9\u79cd\u81ea\u5b66\u6a21\u5f0f\uff0c\u4e3a\u4e86\u5206\u4eab\u8fd9\u79cd\u5feb\u4e50\uff0c\u6211\u4e3a\u81ea\u5df1\u7684\u5c0f\u73ed\u540c\u5b66\u505a\u8fc7\u4e00\u4e2a CS\u81ea\u5b66\u8d44\u6599\u6574\u7406\u4ed3\u5e93 \u3002\u5f53\u65f6\u7eaf\u7cb9\u662f\u5fc3\u8840\u6765\u6f6e\uff0c\u56e0\u4e3a\u6211\u4e5f\u4e0d\u6562\u516c\u7136\u9f13\u52b1\u5927\u5bb6\u7fd8\u8bfe\u81ea\u5b66\u3002 \u4f46\u968f\u7740\u53c8\u4e00\u5e74\u65f6\u95f4\u7684\u7ef4\u62a4\uff0c\u8fd9\u4e2a\u4ed3\u5e93\u7684\u5185\u5bb9\u5df2\u7ecf\u76f8\u5f53\u4e30\u5bcc\uff0c\u57fa\u672c\u8986\u76d6\u4e86\u8ba1\u79d1\u3001\u667a\u80fd\u7cfb\u3001\u8f6f\u5de5\u7cfb\u7684\u7edd\u5927\u591a\u6570\u8bfe\u7a0b\uff0c\u6211\u4e5f\u4e3a\u6bcf\u4e2a\u8bfe\u7a0b\u90fd\u5efa\u4e86\u5404\u81ea\u7684 GitHub \u4ed3\u5e93\uff0c\u6c47\u603b\u6211\u7528\u5230\u7684\u81ea\u5b66\u8d44\u6599\u4ee5\u53ca\u4f5c\u4e1a\u5b9e\u73b0\u3002 \u76f4\u5230\u5927\u56db\u5f00\u59cb\u51d1\u5b66\u5206\u6bd5\u4e1a\u7684\u65f6\u5019\uff0c\u6211\u6253\u5f00\u81ea\u5df1\u7684\u57f9\u517b\u65b9\u6848\uff0c\u6211\u53d1\u73b0\u5b83\u5df2\u7ecf\u662f\u6211\u8fd9\u4e2a\u81ea\u5b66\u4ed3\u5e93\u7684\u5b50\u96c6\u4e86\uff0c\u800c\u8fd9\u8ddd\u79bb\u6211\u5f00\u59cb\u81ea\u5b66\u4e5f\u624d\u4e24\u5e74\u534a\u800c\u5df2\u3002\u4e8e\u662f\uff0c\u4e00\u4e2a\u5927\u80c6\u7684\u60f3\u6cd5\u5728\u6211\u8111\u6d77\u4e2d\u6d6e\u73b0\uff1a\u4e5f\u8bb8\uff0c\u6211\u53ef\u4ee5\u6253\u9020\u4e00\u4e2a\u81ea\u5b66\u5f0f\u7684\u57f9\u517b\u65b9\u6848\uff0c\u628a\u6211\u8fd9\u4e09\u5e74\u81ea\u5b66\u7ecf\u5386\u4e2d\u9047\u5230\u7684\u5751\u3001\u8d70\u8fc7\u7684\u8def\u8bb0\u5f55\u4e0b\u6765\uff0c\u4ee5\u671f\u80fd\u4e3a\u540e\u6765\u7684\u5b66\u5f1f\u5b66\u59b9\u4eec\u8d21\u732e\u81ea\u5df1\u7684\u4e00\u4efd\u5fae\u8584\u4e4b\u529b\u3002 \u5982\u679c\u5927\u5bb6\u53ef\u4ee5\u5728\u4e09\u5e74\u4e0d\u5230\u7684\u65f6\u95f4\u91cc\u5c31\u80fd\u5efa\u7acb\u8d77\u6574\u5ea7CS\u7684\u57fa\u7840\u5927\u53a6\uff0c\u80fd\u6709\u76f8\u5bf9\u624e\u5b9e\u7684\u6570\u5b66\u529f\u5e95\u548c\u4ee3\u7801\u80fd\u529b\uff0c\u7ecf\u5386\u8fc7\u6570\u5341\u4e2a\u5343\u884c\u4ee3\u7801\u91cf\u7684 Project \u7684\u6d17\u793c\uff0c\u638c\u63e1\u81f3\u5c11 C/C++/Java/JS/Python/Go/Rust \u7b49\u4e3b\u6d41\u8bed\u8a00\uff0c\u5bf9\u7b97\u6cd5\u3001\u7535\u8def\u3001\u4f53\u7cfb\u3001\u7f51\u7edc\u3001\u64cd\u7edf\u3001\u7f16\u8bd1\u3001\u4eba\u5de5\u667a\u80fd\u3001\u673a\u5668\u5b66\u4e60\u3001\u8ba1\u7b97\u673a\u89c6\u89c9\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u3001\u5f3a\u5316\u5b66\u4e60\u3001\u5bc6\u7801\u5b66\u3001\u4fe1\u606f\u8bba\u3001\u535a\u5f08\u8bba\u3001\u6570\u503c\u5206\u6790\u3001\u7edf\u8ba1\u5b66\u3001\u5206\u5e03\u5f0f\u3001\u6570\u636e\u5e93\u3001\u56fe\u5f62\u5b66\u3001Web\u5f00\u53d1\u3001\u4e91\u670d\u52a1\u3001\u8d85\u7b97\u7b49\u7b49\u65b9\u9762\u5747\u6709\u6d89\u730e\u3002\u6211\u60f3\uff0c\u4f60\u5c06\u6709\u8db3\u591f\u7684\u5e95\u6c14\u548c\u81ea\u4fe1\u9009\u62e9\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\uff0c\u65e0\u8bba\u662f\u5c31\u4e1a\u8fd8\u662f\u79d1\u7814\uff0c\u4f60\u90fd\u5c06\u6709\u76f8\u5f53\u7684\u7ade\u4e89\u529b\u3002 \u56e0\u4e3a\u6211\u575a\u4fe1\uff0c\u65e2\u7136\u4f60\u80fd\u575a\u6301\u542c\u6211 BB \u5230\u8fd9\u91cc\uff0c\u4f60\u4e00\u5b9a\u4e0d\u7f3a\u5b66\u597d CS \u7684\u80fd\u529b\uff0c\u4f60\u53ea\u662f\u6ca1\u6709\u4e00\u4e2a\u597d\u7684\u8001\u5e08\uff0c\u7ed9\u4f60\u8bb2\u4e00\u95e8\u597d\u7684\u8bfe\u7a0b\u3002\u800c\u6211\uff0c\u5c06\u529b\u56fe\u6839\u636e\u6211\u4e09\u5e74\u7684\u4f53\u9a8c\uff0c\u4e3a\u4f60\u6311\u9009\u8fd9\u6837\u7684\u8bfe\u7a0b\u3002","title":"\u4e3a\u4ec0\u4e48\u5199\u8fd9\u672c\u4e66"},{"location":"#_3","text":"\u5bf9\u6211\u6765\u8bf4\uff0c\u81ea\u5b66\u6700\u5927\u7684\u597d\u5904\u5c31\u5728\u4e8e\u53ef\u4ee5\u5b8c\u5168\u6839\u636e\u81ea\u5df1\u7684\u8fdb\u5ea6\u6765\u8c03\u6574\u5b66\u4e60\u901f\u5ea6\u3002\u5bf9\u4e8e\u4e00\u4e9b\u7591\u96be\u77e5\u8bc6\u70b9\uff0c\u6211\u53ef\u4ee5\u53cd\u590d\u56de\u770b\u89c6\u9891\uff0c\u5728\u7f51\u4e0a\u8c37\u6b4c\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u4e0a StackOverflow \u63d0\u95ee\u9898\uff0c\u76f4\u5230\u5b8c\u5168\u5c06\u5b83\u5f04\u660e\u767d\u3002\u800c\u5bf9\u4e8e\u81ea\u5df1\u638c\u63e1\u5f97\u76f8\u5bf9\u8f83\u5feb\u7684\u5185\u5bb9\uff0c\u5219\u53ef\u4ee5\u4e24\u500d\u901f\u751a\u81f3\u4e09\u500d\u901f\u7565\u8fc7\u3002 \u81ea\u5b66\u7684\u53e6\u4e00\u5927\u597d\u5904\u5c31\u662f\u535a\u91c7\u4f17\u957f\u3002\u8ba1\u7b97\u673a\u7cfb\u7684\u51e0\u5927\u6838\u5fc3\u8bfe\u7a0b\uff1a\u4f53\u7cfb\u3001\u7f51\u7edc\u3001\u64cd\u7edf\u3001\u7f16\u8bd1\uff0c\u6bcf\u4e00\u95e8\u6211\u57fa\u672c\u90fd\u4e0a\u8fc7\u4e0d\u540c\u5927\u5b66\u7684\u8bfe\u7a0b\uff0c\u4e0d\u540c\u7684\u6559\u6750\u3001\u4e0d\u540c\u7684\u77e5\u8bc6\u70b9\u4fa7\u91cd\u3001\u4e0d\u540c\u7684 project \u5c06\u4f1a\u6781\u5927\u4e30\u5bcc\u4f60\u7684\u89c6\u91ce\uff0c\u4e5f\u4f1a\u8ba9\u4f60\u7406\u89e3\u9519\u8bef\u7684\u4e00\u4e9b\u5185\u5bb9\u5f97\u5230\u53ca\u65f6\u7ea0\u6b63\u3002 \u81ea\u5b66\u7684\u7b2c\u4e09\u4e2a\u597d\u5904\u662f\u65f6\u95f4\u81ea\u7531\uff0c\u5177\u4f53\u539f\u56e0\u7701\u7565\u3002","title":"\u81ea\u5b66\u7684\u597d\u5904"},{"location":"#_4","text":"\u5f53\u7136\uff0c\u4f5c\u4e3a CS \u81ea\u5b66\u4e3b\u4e49\u7684\u5fe0\u5b9e\u62e5\u8db8\uff0c\u6211\u4e0d\u5f97\u4e0d\u627f\u8ba4\u81ea\u5b66\u4e5f\u6709\u5b83\u7684\u574f\u5904\u3002 \u7b2c\u4e00\u5c31\u662f\u4ea4\u6d41\u6c9f\u901a\u7684\u4e0d\u4fbf\u3002\u6211\u5176\u5b9e\u662f\u4e00\u4e2a\u5f88\u70ed\u8877\u4e8e\u63d0\u95ee\u7684\u4eba\uff0c\u5bf9\u4e8e\u6240\u6709\u6ca1\u6709\u5f04\u660e\u767d\u7684\u70b9\uff0c\u6211\u90fd\u559c\u6b22\u7a77\u8ffd\u5230\u5e95\u3002\u4f46\u5f53\u4f60\u9762\u5bf9\u7740\u5c4f\u5e55\u542c\u5230\u8001\u5e08\u8bb2\u4e86\u4e00\u4e2a\u4f60\u6ca1\u660e\u767d\u7684\u77e5\u8bc6\u70b9\u7684\u65f6\u5019\uff0c\u4f60\u65e0\u6cd5\u987a\u7740\u7f51\u7ebf\u5230\u53e6\u4e00\u7aef\u5411\u8001\u5e08\u95ee\u4e2a\u660e\u767d\u3002\u6211\u52aa\u529b\u901a\u8fc7\u72ec\u7acb\u601d\u8003\u548c\u5584\u7528 Google \u6765\u7f13\u89e3\u8fd9\u4e00\u70b9\uff0c\u4f46\u662f\uff0c\u5982\u679c\u80fd\u6709\u51e0\u4e2a\u5fd7\u540c\u9053\u5408\u7684\u4f19\u4f34\u7ed3\u4f34\u81ea\u5b66\uff0c\u90a3\u5c06\u662f\u6781\u597d\u7684\u3002\u5173\u4e8e\u4ea4\u6d41\u7fa4\u7684\u5efa\u7acb\uff0c\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003\u4ed3\u5e93 README \u4e2d\u7684\u6559\u7a0b\u3002 \u7b2c\u4e8c\u5c31\u662f\u8fd9\u4e9b\u81ea\u5b66\u7684\u8bfe\u7a0b\u57fa\u672c\u90fd\u662f\u82f1\u6587\u7684\u3002\u4ece\u89c6\u9891\u5230slides\u5230\u4f5c\u4e1a\u5168\u662f\u82f1\u6587\uff0c\u6240\u4ee5\u6709\u4e00\u5b9a\u7684\u95e8\u69db\u3002\u4e0d\u8fc7\u6211\u89c9\u5f97\u8fd9\u4e2a\u6311\u6218\u5982\u679c\u4f60\u514b\u670d\u4e86\u7684\u8bdd\u5bf9\u4f60\u662f\u6781\u4e3a\u6709\u5229\u7684\u3002\u56e0\u4e3a\u5728\u5f53\u4e0b\uff0c\u867d\u7136\u6211\u5f88\u4e0d\u60c5\u613f\uff0c\u4f46\u4e5f\u4e0d\u5f97\u4e0d\u627f\u8ba4\uff0c\u5728\u8ba1\u7b97\u673a\u9886\u57df\uff0c\u5f88\u591a\u4f18\u8d28\u7684\u6587\u6863\u3001\u8bba\u575b\u3001\u7f51\u7ad9\u90fd\u662f\u5168\u82f1\u6587\u7684\u3002\u517b\u6210\u82f1\u6587\u9605\u8bfb\u7684\u4e60\u60ef\uff0c\u5728\u8d64\u65d7\u63d2\u904d\u4e16\u754c\u4e4b\u524d\uff0c\u8fd8\u662f\u6709\u4e00\u5b9a\u597d\u5904\u7684\uff08\u72d7\u5934\u4fdd\u547d\uff09\u3002 \u7b2c\u4e09\uff0c\u4e5f\u662f\u6211\u89c9\u5f97\u6700\u56f0\u96be\u7684\u4e00\u70b9\uff0c\u5c31\u662f\u81ea\u5f8b\u3002\u56e0\u4e3a\u6ca1\u6709 DDL \u6709\u65f6\u5019\u771f\u7684\u662f\u4e00\u4ef6\u53ef\u6015\u7684\u4e8b\u60c5\uff0c\u7279\u522b\u662f\u968f\u7740\u5b66\u4e60\u7684\u6df1\u5165\uff0c\u56fd\u5916\u7684\u5f88\u591a\u8bfe\u7a0b\u662f\u76f8\u5f53\u8650\u7684\u3002\u4f60\u5f97\u6709\u8db3\u591f\u7684\u9a71\u52a8\u529b\u5f3a\u8feb\u81ea\u5df1\u9759\u4e0b\u5fc3\u6765\uff0c\u9605\u8bfb\u51e0\u5341\u9875\u7684 Project Handout\uff0c\u7406\u89e3\u4e0a\u5343\u884c\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u5fcd\u53d7\u6570\u4e2a\u5c0f\u65f6\u7684 debug \u65f6\u5149\u3002\u800c\u8fd9\u4e00\u5207\uff0c\u6ca1\u6709\u5b66\u5206\uff0c\u6ca1\u6709\u7ee9\u70b9\uff0c\u6ca1\u6709\u8001\u5e08\uff0c\u6ca1\u6709\u540c\u5b66\uff0c\u53ea\u6709\u4e00\u4e2a\u4fe1\u5ff5 \u2014\u2014 \u4f60\u5728\u53d8\u5f3a\u3002","title":"\u81ea\u5b66\u7684\u574f\u5904"},{"location":"#_5","text":"\u6b63\u5982\u6211\u5728\u524d\u8a00\u91cc\u8bf4\u7684\uff0c\u4efb\u4f55\u6709\u5fd7\u4e8e\u81ea\u5b66\u8ba1\u7b97\u673a\u7684\u670b\u53cb\u90fd\u53ef\u4ee5\u53c2\u8003\u8fd9\u672c\u4e66\u3002\u5982\u679c\u4f60\u5df2\u7ecf\u6709\u4e86\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u57fa\u7840\uff0c\u53ea\u662f\u5bf9\u67d0\u4e2a\u7279\u5b9a\u7684\u9886\u57df\u611f\u5174\u8da3\uff0c\u53ef\u4ee5\u9009\u62e9\u6027\u5730\u6311\u9009\u4f60\u611f\u5174\u8da3\u7684\u5185\u5bb9\u8fdb\u884c\u5b66\u4e60\u3002\u5f53\u7136\uff0c\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u50cf\u6211\u5f53\u5e74\u4e00\u6837\u5bf9\u8ba1\u7b97\u673a\u4e00\u65e0\u6240\u77e5\u7684\u5c0f\u767d\uff0c\u521d\u5165\u5927\u5b66\u7684\u6821\u95e8\uff0c\u6211\u5e0c\u671b\u8fd9\u672c\u4e66\u80fd\u6210\u4e3a\u4f60\u7684\u653b\u7565\uff0c\u8ba9\u4f60\u82b1\u6700\u5c11\u7684\u65f6\u95f4\u638c\u63e1\u4f60\u6240\u9700\u8981\u7684\u77e5\u8bc6\u548c\u80fd\u529b\u3002\u67d0\u79cd\u7a0b\u5ea6\u4e0a\uff0c\u8fd9\u672c\u4e66\u66f4\u50cf\u662f\u4e00\u4e2a\u6839\u636e\u6211\u7684\u4f53\u9a8c\u6765\u6392\u5e8f\u7684\u8bfe\u7a0b\u641c\u7d22\u5f15\u64ce\uff0c\u5e2e\u52a9\u5927\u5bb6\u8db3\u4e0d\u51fa\u6237\uff0c\u4f53\u9a8c\u4e16\u754c\u9876\u7ea7\u540d\u6821\u7684\u8ba1\u7b97\u673a\u4f18\u8d28\u8bfe\u7a0b\u3002 \u5f53\u7136\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u8fd8\u672a\u6bd5\u4e1a\u7684\u672c\u79d1\u751f\uff0c\u6211\u6df1\u611f\u81ea\u5df1\u6ca1\u6709\u80fd\u529b\u4e5f\u6ca1\u6709\u6743\u5229\u53bb\u5ba3\u626c\u4e00\u79cd\u5b66\u4e60\u65b9\u5f0f\uff0c\u6211\u53ea\u662f\u5e0c\u671b\u8fd9\u4efd\u8d44\u6599\u80fd\u8ba9\u90a3\u4e9b\u540c\u6837\u6709\u81ea\u5b66\u4e4b\u5fc3\u548c\u6bc5\u529b\u670b\u53cb\u53ef\u4ee5\u5c11\u8d70\u4e9b\u5f2f\u8def\uff0c\u6536\u83b7\u66f4\u4e30\u5bcc\u3001\u66f4\u591a\u6837\u3001\u66f4\u6ee1\u8db3\u7684\u5b66\u4e60\u4f53\u9a8c\u3002","title":"\u8fd9\u672c\u4e66\u9002\u5408\u8c01"},{"location":"#_6","text":"\u5728\u8fd9\u91cc\uff0c\u6211\u6000\u7740\u5d07\u656c\u4e4b\u5fc3\u771f\u8bda\u5730\u611f\u8c22\u6240\u6709\u5c06\u8bfe\u7a0b\u8d44\u6e90\u65e0\u507f\u5f00\u6e90\u7684\u5404\u4f4d\u6559\u6388\u4eec\u3002\u8fd9\u4e9b\u8bfe\u7a0b\u503e\u6ce8\u4e86\u4ed6\u4eec\u6570\u5341\u5e74\u6559\u5b66\u751f\u6daf\u7684\u79ef\u6dc0\u548c\u5fc3\u8840\uff0c\u4ed6\u4eec\u5374\u9009\u62e9\u65e0\u79c1\u5730\u8ba9\u6240\u6709\u4eba\u4eab\u53d7\u5230\u5982\u6b64\u9ad8\u8d28\u91cf\u7684CS\u6559\u80b2\u3002\u6ca1\u6709\u4ed6\u4eec\uff0c\u6211\u7684\u5927\u5b66\u751f\u6d3b\u4e0d\u4f1a\u8fd9\u6837\u5145\u5b9e\u800c\u5feb\u4e50\u3002\u5f88\u591a\u6559\u6388\u5728\u6211\u7ed9\u4ed6\u4eec\u53d1\u4e86\u611f\u8c22\u90ae\u4ef6\u4e4b\u540e\uff0c\u751a\u81f3\u4f1a\u56de\u590d\u4e0a\u767e\u5b57\u7684\u957f\u6587\uff0c\u771f\u7684\u8ba9\u6211\u65e0\u6bd4\u611f\u52a8\u3002\u4ed6\u4eec\u4e5f\u65f6\u523b\u6fc0\u52b1\u7740\u6211\uff0c\u505a\u4e00\u4ef6\u4e8b\uff0c\u5c31\u5f97\u7528\u5fc3\u505a\u597d\uff0c\u65e0\u8bba\u662f\u79d1\u7814\uff0c\u8fd8\u662f\u4e3a\u4eba\u3002","title":"\u7279\u522b\u9e23\u8c22"},{"location":"#_7","text":"\u4e00\u4e2a\u4eba\u7684\u529b\u91cf\u7ec8\u7a76\u662f\u6709\u9650\u7684\uff0c\u8fd9\u672c\u4e66\u4e5f\u662f\u6211\u5728\u7e41\u91cd\u7684\u79d1\u7814\u4e4b\u4f59\u71ac\u591c\u62bd\u7a7a\u5199\u51fa\u6765\u7684\uff0c\u96be\u514d\u6709\u4e0d\u591f\u5b8c\u5584\u4e4b\u5904\u3002\u53e6\u5916\uff0c\u7531\u4e8e\u4e2a\u4eba\u505a\u7684\u662f\u7cfb\u7edf\u65b9\u5411\uff0c\u5f88\u591a\u8bfe\u7a0b\u4fa7\u91cd\u7cfb\u7edf\u9886\u57df\uff0c\u5bf9\u4e8e\u6570\u5b66\u3001\u7406\u8bba\u8ba1\u7b97\u673a\u3001\u9ad8\u7ea7\u7b97\u6cd5\u76f8\u5173\u7684\u5185\u5bb9\u5219\u76f8\u5bf9\u5c11\u4e9b\u3002\u5982\u679c\u6709\u5927\u4f6c\u60f3\u5728\u5176\u4ed6\u9886\u57df\u5206\u4eab\u81ea\u5df1\u7684\u81ea\u5b66\u7ecf\u5386\u4e0e\u8d44\u6e90\uff0c\u53ef\u4ee5\u76f4\u63a5\u5728\u9879\u76ee\u4e2d\u53d1\u8d77 Pull Request\uff0c\u4e5f\u6b22\u8fce\u548c\u6211\u90ae\u4ef6\u8054\u7cfb\uff08 zhongyinmin@pku.edu.cn \uff09\u3002","title":"\u4f60\u4e5f\u60f3\u52a0\u5165\u5230\u8d21\u732e\u8005\u7684\u884c\u5217"},{"location":"#_8","text":"\u65b9\u6cd5\u53c2\u89c1\u4ed3\u5e93\u7684 README.md \u3002","title":"\u5173\u4e8e\u4ea4\u6d41\u7fa4\u7684\u5efa\u7acb"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/","text":"\u4e00\u4e2a\u4ec5\u4f9b\u53c2\u8003\u7684 CS \u5b66\u4e60\u89c4\u5212 \u8ba1\u7b97\u673a\u9886\u57df\u65b9\u5411\u5e9e\u6742\uff0c\u77e5\u8bc6\u6d69\u5982\u70df\u6d77\uff0c\u6bcf\u4e2a\u7ec6\u5206\u9886\u57df\u5982\u679c\u6df1\u7a76\u4e0b\u53bb\u90fd\u53ef\u4ee5\u8bf4\u5b66\u65e0\u6b62\u5883\u3002\u56e0\u6b64\uff0c\u4e00\u4e2a\u6e05\u6670\u660e\u786e\u7684\u5b66\u4e60\u89c4\u5212\u662f\u975e\u5e38\u91cd\u8981\u7684\u3002\u8fd9\u4e00\u8282\u7684\u5185\u5bb9\u662f\u5bf9\u540e\u7eed\u6574\u672c\u4e66\u7684\u5185\u5bb9\u7684\u4e00\u4e2a\u6982\u89c8\uff0c\u4f60\u53ef\u4ee5\u5c06\u5176\u770b\u4f5c\u662f\u8fd9\u672c\u4e66\u7684\u76ee\u5f55\uff0c\u6309\u9700\u9009\u62e9\u81ea\u5df1\u611f\u5174\u8da3\u7684\u5185\u5bb9\u8fdb\u884c\u5b66\u4e60\u3002 \u4e0d\u8fc7\uff0c\u5728\u5f00\u59cb\u5b66\u4e60\u4e4b\u524d\uff0c\u5148\u5411\u5c0f\u767d\u4eec\u5f3a\u70c8\u63a8\u8350\u4e00\u4e2a\u79d1\u666e\u5411\u7cfb\u5217\u89c6\u9891 Crash Course: Computer Science \uff0c\u5728\u77ed\u77ed 8 \u4e2a\u5c0f\u65f6\u91cc\u975e\u5e38\u751f\u52a8\u4e14\u5168\u9762\u5730\u79d1\u666e\u4e86\u5173\u4e8e\u8ba1\u7b97\u673a\u79d1\u5b66\u7684\u65b9\u65b9\u9762\u9762\uff1a\u8ba1\u7b97\u673a\u7684\u5386\u53f2\u3001\u8ba1\u7b97\u673a\u662f\u5982\u4f55\u8fd0\u4f5c\u7684\u3001\u7ec4\u6210\u8ba1\u7b97\u673a\u7684\u5404\u4e2a\u91cd\u8981\u6a21\u5757\u3001\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\u7684\u91cd\u8981\u601d\u60f3\u7b49\u7b49\u7b49\u7b49\u3002\u6b63\u5982\u5b83\u7684\u53e3\u53f7\u6240\u8bf4\u7684 Computers are not magic! \uff0c\u5e0c\u671b\u770b\u5b8c\u8fd9\u4e2a\u89c6\u9891\u4e4b\u540e\uff0c\u5927\u5bb6\u80fd\u5bf9\u8ba1\u7b97\u673a\u79d1\u5b66\u6709\u4e2a\u5168\u8c8c\u6027\u5730\u611f\u77e5\uff0c\u4ece\u800c\u6000\u7740\u5174\u8da3\u53bb\u9762\u5bf9\u4e0b\u9762\u6d69\u5982\u70df\u6d77\u7684\u66f4\u4e3a\u7ec6\u81f4\u4e14\u6df1\u5165\u7684\u5b66\u4e60\u5185\u5bb9\u3002 \u5fc5\u5b66\u5de5\u5177 \u4fd7\u8bdd\u8bf4\uff1a\u78e8\u5200\u4e0d\u8bef\u780d\u67f4\u5de5\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u521a\u521a\u63a5\u89e6\u8ba1\u7b97\u673a\u768424k\u7eaf\u5c0f\u767d\uff0c\u5b66\u4f1a\u4e00\u4e9b\u5de5\u5177\u5c06\u4f1a\u8ba9\u4f60\u4e8b\u534a\u529f\u500d\u3002 \u5b66\u4f1a\u63d0\u95ee\uff1a\u4e5f\u8bb8\u4f60\u4f1a\u60ca\u8bb6\uff0c\u63d0\u95ee\u4e5f\u7b97\u8ba1\u7b97\u673a\u5fc5\u5907\u6280\u80fd\u5417\uff0c\u8fd8\u653e\u5728\u7b2c\u4e00\u6761\uff1f\u6211\u89c9\u5f97\u5728\u5f00\u6e90\u793e\u533a\u4e2d\uff0c\u5b66\u4f1a\u63d0\u95ee\u662f\u4e00\u9879\u975e\u5e38\u91cd\u8981\u7684\u80fd\u529b\uff0c\u5b83\u5305\u542b\u4e24\u65b9\u9762\u7684\u4e8b\u60c5\u3002\u5176\u4e00\u662f\u4f1a\u53d8\u76f8\u5730\u57f9\u517b\u4f60\u81ea\u4e3b\u89e3\u51b3\u95ee\u9898\u7684\u80fd\u529b\uff0c\u56e0\u4e3a\u4ece\u5f62\u6210\u95ee\u9898\u3001\u63cf\u8ff0\u95ee\u9898\u5e76\u53d1\u5e03\u3001\u4ed6\u4eba\u56de\u7b54\u3001\u6700\u540e\u518d\u5230\u7406\u89e3\u56de\u7b54\u8fd9\u4e2a\u5468\u671f\u662f\u975e\u5e38\u957f\u7684\uff0c\u5982\u679c\u9047\u5230\u4ec0\u4e48\u9e21\u6bdb\u849c\u76ae\u7684\u4e8b\u60c5\u90fd\u5e0c\u671b\u522b\u4eba\u6700\u597d\u8fdc\u7a0b\u684c\u9762\u624b\u628a\u624b\u5e2e\u4f60\u5b8c\u6210\uff0c\u90a3\u8ba1\u7b97\u673a\u7684\u4e16\u754c\u57fa\u672c\u4e0e\u4f60\u65e0\u7f18\u4e86\u3002\u5176\u4e8c\uff0c\u5982\u679c\u771f\u7684\u7ecf\u8fc7\u5c1d\u8bd5\u8fd8\u65e0\u6cd5\u89e3\u51b3\uff0c\u53ef\u4ee5\u501f\u52a9\u5f00\u6e90\u793e\u533a\u7684\u5e2e\u52a9\uff0c\u4f46\u8fd9\u65f6\u5019\u5982\u4f55\u901a\u8fc7\u7b80\u6d01\u7684\u6587\u5b57\u8ba9\u522b\u4eba\u77ac\u95f4\u7406\u89e3\u4f60\u7684\u5904\u5883\u4ee5\u53ca\u76ee\u7684\uff0c\u5c31\u663e\u5f97\u5c24\u4e3a\u91cd\u8981\u3002\u63a8\u8350\u9605\u8bfb \u63d0\u95ee\u7684\u667a\u6167 \u8fd9\u7bc7\u6587\u7ae0\uff0c\u8fd9\u4e0d\u4ec5\u80fd\u63d0\u9ad8\u4f60\u89e3\u51b3\u95ee\u9898\u7684\u6982\u7387\u548c\u6548\u7387\uff0c\u4e5f\u80fd\u8ba9\u5f00\u6e90\u793e\u533a\u91cc\u65e0\u507f\u63d0\u4f9b\u89e3\u7b54\u7684\u4eba\u4eec\u62e5\u6709\u4e00\u4e2a\u597d\u5fc3\u60c5\u3002 MIT-Missing-Semester \u8fd9\u95e8\u8bfe\u8986\u76d6\u4e86\u8fd9\u4e9b\u5de5\u5177\u4e2d\u7edd\u5927\u90e8\u5206\uff0c\u800c\u4e14\u6709\u76f8\u5f53\u8be6\u7ec6\u7684\u4f7f\u7528\u6307\u5bfc\uff0c\u5f3a\u70c8\u5efa\u8bae\u5c0f\u767d\u5b66\u4e60\u3002 \u7ffb\u5899 \uff1a\u7531\u4e8e\u4e00\u4e9b\u4f17\u6240\u5468\u77e5\u7684\u539f\u56e0\uff0c\u8c37\u6b4c\u3001GitHub \u7b49\u7f51\u7ad9\u5728\u5927\u9646\u65e0\u6cd5\u8bbf\u95ee\u3002\u7136\u800c\u5f88\u591a\u65f6\u5019\uff0c\u8c37\u6b4c\u548c StackOverflow \u53ef\u4ee5\u89e3\u51b3\u4f60\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684 95% \u7684\u95ee\u9898\u3002\u56e0\u6b64\uff0c\u5b66\u4f1a\u7ffb\u5899\u51e0\u4e4e\u662f\u4e00\u4e2a\u5185\u5730 CSer \u7684\u5fc5\u5907\u6280\u80fd\u3002\uff08\u8003\u8651\u5230\u6cd5\u5f8b\u95ee\u9898\uff0c\u8fd9\u4e2a\u6587\u6863\u63d0\u4f9b\u7684\u7ffb\u5899\u65b9\u5f0f\u4ec5\u5bf9\u62e5\u6709\u5317\u5927\u90ae\u7bb1\u7684\u7528\u6237\u9002\u7528\uff09\u3002 \u547d\u4ee4\u884c\uff1a\u719f\u7ec3\u4f7f\u7528\u547d\u4ee4\u884c\u662f\u4e00\u79cd\u5e38\u5e38\u88ab\u5ffd\u89c6\uff0c\u6216\u88ab\u8ba4\u4e3a\u96be\u4ee5\u638c\u63e1\u7684\u6280\u80fd\uff0c\u4f46\u5b9e\u9645\u4e0a\uff0c\u5b83\u4f1a\u63d0\u9ad8\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u4f5c\u4e3a\u5de5\u7a0b\u5e08\u7684\u7075\u6d3b\u6027\u4ee5\u53ca\u751f\u4ea7\u529b\u3002 \u547d\u4ee4\u884c\u7684\u827a\u672f \u662f\u4e00\u4efd\u975e\u5e38\u7ecf\u5178\u7684\u6559\u7a0b\uff0c\u5b83\u6e90\u4e8e Quora \u7684\u4e00\u4e2a\u63d0\u95ee\uff0c\u4f46\u5728\u5404\u8def\u5927\u795e\u7684\u8d21\u732e\u52aa\u529b\u4e0b\u5df2\u7ecf\u6210\u4e3a\u4e86\u4e00\u4e2a GitHub \u5341\u4e07 stars \u7684\u9876\u6d41\u9879\u76ee\uff0c\u88ab\u7ffb\u8bd1\u6210\u4e86\u5341\u51e0\u79cd\u8bed\u8a00\u3002\u6559\u7a0b\u4e0d\u957f\uff0c\u975e\u5e38\u5efa\u8bae\u5927\u5bb6\u53cd\u590d\u901a\u8bfb\uff0c\u5728\u5b9e\u8df5\u4e2d\u5185\u5316\u5438\u6536\u3002\u540c\u65f6\uff0c\u638c\u63e1 shell \u811a\u672c\u7f16\u7a0b\u4e5f\u662f\u4e00\u9879\u4e0d\u5bb9\u5ffd\u89c6\u7684\u6280\u672f\uff0c\u53ef\u4ee5\u53c2\u8003\u8fd9\u4e2a \u6559\u7a0b \u3002 IDE (Integrated Development Environment)\uff1a\u96c6\u6210\u5f00\u53d1\u73af\u5883\uff0c\u8bf4\u767d\u4e86\u5c31\u662f\u4f60\u5199\u4ee3\u7801\u7684\u5730\u65b9\u3002\u4f5c\u4e3a\u4e00\u4e2a\u7801\u519c\uff0cIDE \u7684\u91cd\u8981\u6027\u4e0d\u8a00\u800c\u55bb\uff0c\u4f46\u7531\u4e8e\u5f88\u591a IDE \u662f\u4e3a\u5927\u578b\u5de5\u7a0b\u9879\u76ee\u8bbe\u8ba1\u7684\uff0c\u4f53\u91cf\u8f83\u5927\uff0c\u529f\u80fd\u4e5f\u8fc7\u4e8e\u4e30\u5bcc\u3002\u5176\u5b9e\u5982\u4eca\u4e00\u4e9b\u8f7b\u4fbf\u7684\u6587\u672c\u7f16\u8f91\u5668\u914d\u5408\u4e30\u5bcc\u7684\u63d2\u4ef6\u751f\u6001\u57fa\u672c\u53ef\u4ee5\u6ee1\u8db3\u65e5\u5e38\u7684\u8f7b\u91cf\u7f16\u7a0b\u9700\u6c42\u3002\u4e2a\u4eba\u5e38\u7528\u7684\u7f16\u8f91\u5668\u662f VS Code \u548c Sublime\uff08\u524d\u8005\u7684\u63d2\u4ef6\u914d\u7f6e\u975e\u5e38\u7b80\u5355\uff0c\u540e\u8005\u7565\u663e\u590d\u6742\u4f46\u989c\u503c\u5f88\u9ad8\uff09\u3002\u5f53\u7136\u5bf9\u4e8e\u5927\u578b\u9879\u76ee\u6211\u8fd8\u662f\u4f1a\u91c7\u7528\u7565\u91cd\u578b\u7684 IDE\uff0c\u4f8b\u5982 Pycharm (Python)\uff0cIDEA (Java) \u7b49\u7b49\uff08\u514d\u8d23\u7533\u660e\uff1a\u6240\u6709\u7684 IDE \u90fd\u662f\u4e16\u754c\u4e0a\u6700\u597d\u7684 IDE\uff09\u3002 Vim \uff1a\u4e00\u6b3e\u547d\u4ee4\u884c\u7f16\u8f91\u5de5\u5177\u3002\u8fd9\u662f\u4e00\u4e2a\u5b66\u4e60\u66f2\u7ebf\u6709\u4e9b\u9661\u5ced\u7684\u7f16\u8f91\u5668\uff0c\u4e0d\u8fc7\u5b66\u4f1a\u5b83\u6211\u89c9\u5f97\u662f\u975e\u5e38\u6709\u5fc5\u8981\u7684\uff0c\u56e0\u4e3a\u5b83\u5c06\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u7684\u5f00\u53d1\u6548\u7387\u3002\u73b0\u5728\u7edd\u5927\u591a\u6570 IDE \u4e5f\u90fd\u652f\u6301 Vim \u63d2\u4ef6\uff0c\u8ba9\u4f60\u5728\u4eab\u53d7\u73b0\u4ee3\u5f00\u53d1\u73af\u5883\u7684\u540c\u65f6\u4fdd\u7559\u6781\u5ba2\u7684\u70ab\u9177\uff08yue\uff09\u3002 Git \uff1a\u4e00\u6b3e\u4ee3\u7801\u7248\u672c\u63a7\u5236\u5de5\u5177\u3002Git\u7684\u5b66\u4e60\u66f2\u7ebf\u53ef\u80fd\u66f4\u4e3a\u9661\u5ced\uff0c\u4f46\u51fa\u81ea Linux \u4e4b\u7236 Linus \u4e4b\u624b\u7684 Git \u7edd\u5bf9\u662f\u6bcf\u4e2a\u5b66 CS \u7684\u7ae5\u978b\u5fc5\u987b\u638c\u63e1\u7684\u795e\u5668\u4e4b\u4e00\u3002 GitHub \uff1a\u57fa\u4e8e Git \u7684\u4ee3\u7801\u6258\u7ba1\u5e73\u53f0\u3002\u5168\u4e16\u754c\u6700\u5927\u7684\u4ee3\u7801\u5f00\u6e90\u793e\u533a\uff0c\u5927\u4f6c\u96c6\u805a\u5730\u3002 GNU Make \uff1a\u4e00\u6b3e\u5de5\u7a0b\u6784\u5efa\u5de5\u5177\u3002\u5584\u7528 GNU Make \u4f1a\u8ba9\u4f60\u517b\u6210\u4ee3\u7801\u6a21\u5757\u5316\u7684\u4e60\u60ef\uff0c\u540c\u65f6\u4e5f\u80fd\u8ba9\u4f60\u719f\u6089\u4e00\u4e9b\u5927\u578b\u5de5\u7a0b\u7684\u7f16\u8bd1\u94fe\u63a5\u6d41\u7a0b\u3002 CMake \uff1a\u4e00\u6b3e\u529f\u80fd\u6bd4 GNU Make \u66f4\u4e3a\u5f3a\u5927\u7684\u6784\u5efa\u5de5\u5177\uff0c\u5efa\u8bae\u638c\u63e1 GNU Make \u4e4b\u540e\u518d\u52a0\u4ee5\u5b66\u4e60\u3002 LaTex \uff1a \u903c\u683c\u63d0\u5347 \u8bba\u6587\u6392\u7248\u5de5\u5177\u3002 Docker \uff1a\u4e00\u6b3e\u76f8\u8f83\u4e8e\u865a\u62df\u673a\u66f4\u8f7b\u91cf\u7ea7\u7684\u8f6f\u4ef6\u6253\u5305\u4e0e\u73af\u5883\u90e8\u7f72\u5de5\u5177\u3002 \u5b9e\u7528\u5de5\u5177\u7bb1 \uff1a\u9664\u4e86\u4e0a\u9762\u63d0\u5230\u7684\u8fd9\u4e9b\u5728\u5f00\u53d1\u4e2d\u4f7f\u7528\u9891\u7387\u6781\u9ad8\u7684\u5de5\u5177\u4e4b\u5916\uff0c\u6211\u8fd8\u6536\u96c6\u4e86\u5f88\u591a\u5b9e\u7528\u6709\u8da3\u7684\u514d\u8d39\u5de5\u5177\uff0c\u4f8b\u5982\u4e00\u4e9b\u4e0b\u8f7d\u5de5\u5177\u3001\u8bbe\u8ba1\u5de5\u5177\u3001\u5b66\u4e60\u7f51\u7ad9\u7b49\u7b49\u3002 Thesis \uff1a\u6bd5\u4e1a\u8bba\u6587 Word \u5199\u4f5c\u6559\u7a0b\u3002 \u597d\u4e66\u63a8\u8350 \u79c1\u4ee5\u4e3a\u4e00\u672c\u597d\u7684\u6559\u6750\u5e94\u5f53\u662f\u4ee5\u4eba\u4e3a\u672c\u7684\uff0c\u800c\u4e0d\u662f\u70ab\u6280\u5f0f\u7684\u7406\u8bba\u5806\u780c\u3002\u544a\u8bc9\u8bfb\u8005\u201c\u662f\u4ec0\u4e48\u201d\u56fa\u7136\u91cd\u8981\uff0c\u4f46\u66f4\u597d\u7684\u5e94\u5f53\u662f\u6559\u6750\u4f5c\u8005\u5c06\u5176\u5728\u8fd9\u4e2a\u9886\u57df\u6df1\u8015\u51e0\u5341\u5e74\u7684\u7ecf\u9a8c\u878d\u6c47\u8fdb\u4e66\u4e2d\uff0c\u5411\u8bfb\u8005\u5a13\u5a13\u9053\u6765\u201c\u4e3a\u4ec0\u4e48\u201d\u4ee5\u53ca\u672a\u6765\u5e94\u8be5\u201c\u600e\u4e48\u505a\u201d\u3002 \u94fe\u63a5\u6233\u8fd9\u91cc \u73af\u5883\u914d\u7f6e \u4f60\u4ee5\u4e3a\u7684\u5f00\u53d1 \u2014\u2014 \u5728 IDE \u91cc\u75af\u72c2\u7801\u4ee3\u7801\u6570\u5c0f\u65f6\u3002 \u5b9e\u9645\u4e0a\u7684\u5f00\u53d1 \u2014\u2014 \u914d\u73af\u5883\u914d\u51e0\u5929\u8fd8\u6ca1\u5f00\u59cb\u5199\u4ee3\u7801\u3002 \u63a8\u8350\u4e00\u4e2a\u975e\u5e38\u4e0d\u9519\u7684 GitHub \u9879\u76ee DevOps-Guide \uff0c\u5176\u4e2d\u6db5\u76d6\u4e86\u975e\u5e38\u591a\u7684\u8fd0\u7ef4\u65b9\u9762\u7684\u57fa\u7840\u77e5\u8bc6\u548c\u6559\u7a0b\uff0c\u4f8b\u5982 Docker, Kubernetes, Linux, CI-CD, GitHub Actions \u7b49\u7b49\u3002 \u53e6\u5916\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003\u4e00\u4efd\u7075\u611f\u6765\u81ea 6.NULL MIT-Missing-Semester \u7684 \u73af\u5883\u914d\u7f6e\u6307\u5357 \uff0c\u91cd\u70b9\u5728\u4e8e\u7ec8\u7aef\u7684\u7f8e\u5316\u914d\u7f6e\u3002\u6b64\u5916\u8fd8\u5305\u62ec\u5e38\u7528\u8f6f\u4ef6\u6e90\uff08\u5982 GitHub, Anaconda, PyPI \u7b49\uff09\u7684\u52a0\u901f\u4e0e\u66ff\u6362\u4ee5\u53ca\u4e00\u4e9b IDE \u7684\u914d\u7f6e\u4e0e\u6fc0\u6d3b\u6559\u7a0b\u3002 More contents under construction. \u8bfe\u7a0b\u5730\u56fe \u6b63\u5982\u8fd9\u7ae0\u5f00\u5934\u63d0\u5230\u7684\uff0c\u8fd9\u4efd\u8bfe\u7a0b\u5730\u56fe\u4ec5\u4ec5\u662f\u4e00\u4e2a \u4ec5\u4f9b\u53c2\u8003 \u7684\u8bfe\u7a0b\u89c4\u5212\uff0c\u6211\u4f5c\u4e3a\u4e00\u4e2a\u4e34\u8fd1\u6bd5\u4e1a\u7684\u672c\u79d1\u751f\u3002\u6df1\u611f\u81ea\u5df1\u6ca1\u6709\u6743\u5229\u4e5f\u6ca1\u6709\u80fd\u529b\u5411\u522b\u4eba\u5ba3\u626c\u201c\u5e94\u8be5\u600e\u4e48\u5b66\u201d\u3002\u56e0\u6b64\u5982\u679c\u4f60\u89c9\u5f97\u4ee5\u4e0b\u7684\u8bfe\u7a0b\u5206\u7c7b\u4e0e\u9009\u62e9\u6709\u4e0d\u5408\u7406\u4e4b\u5904\uff0c\u6211\u5168\u76d8\u63a5\u53d7\uff0c\u5e76\u6df1\u611f\u62b1\u6b49\u3002\u4f60\u53ef\u4ee5\u5728\u4e0b\u4e00\u8282 \u5b9a\u5236\u5c5e\u4e8e\u4f60\u7684\u8bfe\u7a0b\u5730\u56fe \u4ee5\u4e0b\u8bfe\u7a0b\u7c7b\u522b\u4e2d\u9664\u4e86\u542b\u6709 \u57fa\u7840 \u548c \u5165\u95e8 \u5b57\u773c\u7684\u4ee5\u5916\uff0c\u5e76\u65e0\u660e\u786e\u7684\u5148\u540e\u6b21\u5e8f\uff0c\u5927\u5bb6\u53ea\u8981\u6ee1\u8db3\u67d0\u4e2a\u8bfe\u7a0b\u7684\u5148\u4fee\u8981\u6c42\uff0c\u5b8c\u5168\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u7684\u9700\u8981\u548c\u559c\u597d\u9009\u62e9\u60f3\u8981\u5b66\u4e60\u7684\u8bfe\u7a0b\u3002 \u53e6\u5916\u7531\u4e8e\u8d21\u732e\u8005\u7684\u4e0d\u65ad\u589e\u52a0\uff0c\u8fd9\u4efd\u8bfe\u7a0b\u5730\u56fe\u5df2\u7ecf\u4ece\u6700\u521d\u6211\u7684\u5b66\u4e60\u7ecf\u5386\uff0c\u53d1\u5c55\u6210\u4e3a\u5f88\u591a CS \u81ea\u5b66\u8005\u7684\u8d44\u6e90\u5408\u96c6\uff0c\u5176\u4e2d\u96be\u514d\u6709\u5185\u5bb9\u4ea4\u53c9\u751a\u81f3\u91cd\u590d\u7684\u3002\u4f46\u4e4b\u6240\u4ee5\u90fd\u5217\u51fa\u6765\uff0c\u8fd8\u662f\u5e0c\u671b\u96c6\u767e\u5bb6\u4e4b\u957f\uff0c\u7ed9\u5927\u5bb6\u5c3d\u53ef\u80fd\u591a\u7684\u9009\u62e9\u4e0e\u53c2\u8003\u3002 \u6570\u5b66\u57fa\u7840 \u5fae\u79ef\u5206\u4e0e\u7ebf\u6027\u4ee3\u6570 \u4f5c\u4e3a\u5927\u4e00\u65b0\u751f\uff0c\u5b66\u597d\u5fae\u79ef\u5206\u7ebf\u4ee3\u662f\u548c\u5199\u4ee3\u7801\u81f3\u5c11\u540c\u7b49\u91cd\u8981\u7684\u4e8b\u60c5\uff0c\u76f8\u4fe1\u5df2\u7ecf\u6709\u65e0\u6570\u7684\u524d\u4eba\u7ecf\u9a8c\u63d0\u5230\u8fc7\u8fd9\u4e00\u70b9\uff0c\u4f46\u6211\u8fd8\u662f\u8981\u4e0d\u538c\u5176\u70e6\u5730\u518d\u5f3a\u8c03\u4e00\u904d\uff1a\u5b66\u597d\u5fae\u79ef\u5206\u7ebf\u4ee3\u771f\u7684\u5f88\u91cd\u8981\uff01\u4f60\u4e5f\u8bb8\u4f1a\u5410\u69fd\u8fd9\u4e9b\u4e1c\u897f\u5c82\u4e0d\u662f\u8003\u5b8c\u5c31\u5fd8\uff0c\u90a3\u6211\u89c9\u5f97\u4f60\u662f\u5e76\u6ca1\u6709\u628a\u63e1\u4f4f\u5b83\u4eec\u672c\u8d28\uff0c\u5bf9\u5b83\u4eec\u7684\u7406\u89e3\u8fd8\u6ca1\u6709\u8fbe\u5230\u523b\u9aa8\u94ed\u5fc3\u7684\u7a0b\u5ea6\u3002\u5982\u679c\u89c9\u5f97\u8001\u5e08\u8bfe\u4e0a\u8bb2\u7684\u5185\u5bb9\u6666\u6da9\u96be\u61c2\uff0c\u4e0d\u59a8\u53c2\u8003 MIT \u7684 Calculus Course \u548c 18.06: Linear Algebra \u7684\u8bfe\u7a0b notes\uff0c\u81f3\u5c11\u4e8e\u6211\u800c\u8a00\uff0c\u5b83\u5e2e\u52a9\u6211\u6df1\u523b\u7406\u89e3\u4e86\u5fae\u79ef\u5206\u548c\u7ebf\u6027\u4ee3\u6570\u7684\u8bb8\u591a\u672c\u8d28\u3002\u987a\u9053\u518d\u5b89\u5229\u4e00\u4e2a\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \uff0c\u4ed6\u7684\u9891\u9053\u6709\u5f88\u591a\u7528\u751f\u52a8\u5f62\u8c61\u7684\u52a8\u753b\u9610\u91ca\u6570\u5b66\u672c\u8d28\u5185\u6838\u7684\u89c6\u9891\uff0c\u517c\u5177\u6df1\u5ea6\u548c\u5e7f\u5ea6\uff0c\u8d28\u91cf\u975e\u5e38\u9ad8\u3002 \u4fe1\u606f\u8bba\u5165\u95e8 \u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u53ca\u65e9\u4e86\u89e3\u4e00\u4e9b\u4fe1\u606f\u8bba\u7684\u57fa\u7840\u77e5\u8bc6\uff0c\u6211\u89c9\u5f97\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002\u4f46\u5927\u591a\u4fe1\u606f\u8bba\u8bfe\u7a0b\u90fd\u9762\u5411\u9ad8\u5e74\u7ea7\u672c\u79d1\u751f\u751a\u81f3\u7814\u7a76\u751f\uff0c\u5bf9\u65b0\u624b\u6781\u4e0d\u53cb\u597d\u3002\u800c MIT \u7684 6.050J: Information theory and Entropy \u8fd9\u95e8\u8bfe\u6b63\u662f\u4e3a\u5927\u4e00\u65b0\u751f\u91cf\u8eab\u5b9a\u5236\u7684\uff0c\u51e0\u4e4e\u6ca1\u6709\u5148\u4fee\u8981\u6c42\uff0c\u6db5\u76d6\u4e86\u7f16\u7801\u3001\u538b\u7f29\u3001\u901a\u4fe1\u3001\u4fe1\u606f\u71b5\u7b49\u7b49\u5185\u5bb9\uff0c\u975e\u5e38\u6709\u8da3\u3002 \u6570\u5b66\u8fdb\u9636 \u79bb\u6563\u6570\u5b66\u4e0e\u6982\u7387\u8bba \u96c6\u5408\u8bba\u3001\u56fe\u8bba\u3001\u6982\u7387\u8bba\u7b49\u7b49\u662f\u7b97\u6cd5\u63a8\u5bfc\u4e0e\u8bc1\u660e\u7684\u91cd\u8981\u5de5\u5177\uff0c\u4e5f\u662f\u540e\u7eed\u9ad8\u9636\u6570\u5b66\u8bfe\u7a0b\u7684\u57fa\u7840\u3002\u4f46\u6211\u89c9\u5f97\u8fd9\u7c7b\u8bfe\u7a0b\u7684\u8bb2\u6388\u5f88\u5bb9\u6613\u843d\u5165\u7406\u8bba\u5316\u4e0e\u5f62\u5f0f\u5316\u7684\u7aa0\u81fc\uff0c\u8ba9\u8bfe\u5802\u6210\u4e3a\u5b9a\u7406\u7ed3\u8bba\u7684\u5806\u780c\uff0c\u800c\u65e0\u6cd5\u4f7f\u5b66\u751f\u6df1\u523b\u628a\u63e1\u7406\u8bba\u7684\u672c\u8d28\uff0c\u8fdb\u800c\u9020\u6210\u5b66\u4e86\u5c31\u80cc\uff0c\u8003\u4e86\u5c31\u5fd8\u7684\u602a\u5708\u3002\u5982\u679c\u80fd\u5728\u7406\u8bba\u6559\u5b66\u4e2d\u7a7f\u63d2\u7b97\u6cd5\u8fd0\u7528\u5b9e\u4f8b\uff0c\u5b66\u751f\u5728\u62d3\u5c55\u7b97\u6cd5\u77e5\u8bc6\u7684\u540c\u65f6\u4e5f\u80fd\u7aa5\u89c1\u7406\u8bba\u7684\u529b\u91cf\u548c\u9b45\u529b\u3002 UCB CS70 : discrete Math and probability theory \u548c UCB CS126 : Probability theory \u662f UC Berkeley \u7684\u6982\u7387\u8bba\u8bfe\u7a0b\uff0c\u524d\u8005\u8986\u76d6\u4e86\u79bb\u6563\u6570\u5b66\u548c\u6982\u7387\u8bba\u57fa\u7840\uff0c\u540e\u8005\u5219\u6d89\u53ca\u968f\u673a\u8fc7\u7a0b\u4ee5\u53ca\u6df1\u5165\u7684\u7406\u8bba\u5185\u5bb9\u3002\u4e24\u8005\u90fd\u975e\u5e38\u6ce8\u91cd\u7406\u8bba\u548c\u5b9e\u8df5\u7684\u7ed3\u5408\uff0c\u6709\u4e30\u5bcc\u7684\u7b97\u6cd5\u5b9e\u9645\u8fd0\u7528\u5b9e\u4f8b\uff0c\u540e\u8005\u8fd8\u6709\u5927\u91cf\u7684Python\u7f16\u7a0b\u4f5c\u4e1a\u6765\u8ba9\u5b66\u751f\u8fd0\u7528\u6982\u7387\u8bba\u7684\u77e5\u8bc6\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u3002 \u6570\u503c\u5206\u6790 \u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u57f9\u517b\u8ba1\u7b97\u601d\u7ef4\u662f\u5f88\u91cd\u8981\u7684\uff0c\u5b9e\u9645\u95ee\u9898\u7684\u5efa\u6a21\u3001\u79bb\u6563\u5316\uff0c\u8ba1\u7b97\u673a\u7684\u6a21\u62df\u3001\u5206\u6790\uff0c\u662f\u4e00\u9879\u5f88\u91cd\u8981\u7684\u80fd\u529b\u3002\u800c\u8fd9\u4e24\u5e74\u5f00\u59cb\u98ce\u9761\u7684\uff0c\u7531 MIT \u6253\u9020\u7684 Julia \u7f16\u7a0b\u8bed\u8a00\u4ee5\u5176 C \u4e00\u6837\u7684\u901f\u5ea6\u548c Python \u4e00\u6837\u53cb\u597d\u7684\u8bed\u6cd5\u5728\u6570\u503c\u8ba1\u7b97\u9886\u57df\u6709\u4e00\u7edf\u5929\u4e0b\u4e4b\u52bf\uff0cMIT \u7684\u8bb8\u591a\u6570\u5b66\u8bfe\u7a0b\u4e5f\u5f00\u59cb\u7528 Julia \u4f5c\u4e3a\u6559\u5b66\u5de5\u5177\uff0c\u628a\u8270\u6df1\u7684\u6570\u5b66\u7406\u8bba\u7528\u76f4\u89c2\u6e05\u6670\u7684\u4ee3\u7801\u5c55\u793a\u51fa\u6765\u3002 ComputationalThinking \u662f MIT \u5f00\u8bbe\u7684\u4e00\u95e8\u8ba1\u7b97\u601d\u7ef4\u5165\u95e8\u8bfe\uff0c\u6240\u6709\u8bfe\u7a0b\u5185\u5bb9\u5168\u90e8\u5f00\u6e90\uff0c\u53ef\u4ee5\u5728\u8bfe\u7a0b\u7f51\u7ad9\u76f4\u63a5\u8bbf\u95ee\u3002\u8fd9\u95e8\u8bfe\u5229\u7528 Julia \u7f16\u7a0b\u8bed\u8a00\uff0c\u5728\u56fe\u50cf\u5904\u7406\u3001\u793e\u4f1a\u79d1\u5b66\u4e0e\u6570\u636e\u79d1\u5b66\u3001\u6c14\u5019\u5b66\u5efa\u6a21\u4e09\u4e2a topic \u4e0b\u5e26\u9886\u5b66\u751f\u7406\u89e3\u7b97\u6cd5\u3001\u6570\u5b66\u5efa\u6a21\u3001\u6570\u636e\u5206\u6790\u3001\u4ea4\u4e92\u8bbe\u8ba1\u3001\u56fe\u4f8b\u5c55\u793a\uff0c\u8ba9\u5b66\u751f\u4f53\u9a8c\u8ba1\u7b97\u4e0e\u79d1\u5b66\u7684\u7f8e\u5999\u7ed3\u5408\u3002\u5185\u5bb9\u867d\u7136\u4e0d\u96be\uff0c\u4f46\u7ed9\u6211\u6700\u6df1\u523b\u7684\u611f\u53d7\u5c31\u662f\uff0c\u79d1\u5b66\u7684\u9b45\u529b\u5e76\u4e0d\u662f\u6545\u5f04\u7384\u865a\u7684\u8270\u6df1\u7406\u8bba\uff0c\u4e0d\u662f\u8bd8\u5c48\u8071\u7259\u7684\u672f\u8bed\u884c\u8bdd\uff0c\u800c\u662f\u7528\u76f4\u89c2\u751f\u52a8\u7684\u6848\u4f8b\uff0c\u7528\u7b80\u7ec3\u6df1\u523b\u7684\u8bed\u8a00\uff0c\u8ba9\u6bcf\u4e2a\u666e\u901a\u4eba\u90fd\u80fd\u7406\u89e3\u3002 \u4e0a\u5b8c\u4e0a\u9762\u7684\u4f53\u9a8c\u8bfe\u4e4b\u540e\uff0c\u5982\u679c\u610f\u72b9\u672a\u5c3d\u7684\u8bdd\uff0c\u4e0d\u59a8\u8bd5\u8bd5 MIT \u7684 18.330 : Introduction to numerical analysis \uff0c\u8fd9\u95e8\u8bfe\u7684\u7f16\u7a0b\u4f5c\u4e1a\u540c\u6837\u4f1a\u7528 Julia \u7f16\u7a0b\u8bed\u8a00\uff0c\u4e0d\u8fc7\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u90fd\u4e0a\u4e86\u4e00\u4e2a\u53f0\u9636\u3002\u5185\u5bb9\u6d89\u53ca\u4e86\u6d6e\u70b9\u7f16\u7801\u3001Root finding\u3001\u7ebf\u6027\u7cfb\u7edf\u3001\u5fae\u5206\u65b9\u7a0b\u7b49\u7b49\u65b9\u9762\uff0c\u6574\u95e8\u8bfe\u7684\u4e3b\u65e8\u5c31\u662f\u8ba9\u4f60\u5229\u7528\u79bb\u6563\u5316\u7684\u8ba1\u7b97\u673a\u8868\u793a\u53bb\u4f30\u8ba1\u548c\u903c\u8fd1\u4e00\u4e2a\u6570\u5b66\u4e0a\u8fde\u7eed\u7684\u6982\u5ff5\u3002\u8fd9\u95e8\u8bfe\u7684\u6559\u6388\u8fd8\u4e13\u95e8\u64b0\u5199\u4e86\u4e00\u672c\u914d\u5957\u7684\u5f00\u6e90\u6559\u6750 Fundamentals of Numerical Computation \uff0c\u91cc\u9762\u9644\u6709\u4e30\u5bcc\u7684 Julia \u4ee3\u7801\u5b9e\u4f8b\u548c\u4e25\u8c28\u7684\u516c\u5f0f\u63a8\u5bfc\u3002 \u5982\u679c\u4f60\u8fd8\u610f\u72b9\u672a\u5c3d\u7684\u8bdd\uff0c\u8fd8\u6709 MIT \u7684\u7814\u7a76\u751f\u8bfe\u7a0b 18.335: Introduction to numerical method \u4f9b\u4f60\u53c2\u8003\u3002 \u5fae\u5206\u65b9\u7a0b \u5982\u679c\u4e16\u95f4\u4e07\u7269\u7684\u8fd0\u52a8\u53d1\u5c55\u90fd\u80fd\u7528\u65b9\u7a0b\u6765\u523b\u753b\u548c\u63cf\u8ff0\uff0c\u8fd9\u662f\u4e00\u4ef6\u591a\u4e48\u9177\u7684\u4e8b\u60c5\u5440\uff01\u867d\u7136\u51e0\u4e4e\u4efb\u4f55\u4e00\u6240\u5b66\u6821\u7684 CS \u57f9\u517b\u65b9\u6848\u4e2d\u90fd\u6ca1\u6709\u5fae\u5206\u65b9\u7a0b\u76f8\u5173\u7684\u5fc5\u4fee\u8bfe\u7a0b\uff0c\u4f46\u6211\u8fd8\u662f\u89c9\u5f97\u638c\u63e1\u5b83\u4f1a\u8d4b\u4e88\u4f60\u4e00\u4e2a\u65b0\u7684\u89c6\u89d2\u6765\u5ba1\u89c6\u8fd9\u4e2a\u4e16\u754c\u3002 \u7531\u4e8e\u5fae\u5206\u65b9\u7a0b\u4e2d\u5f80\u5f80\u4f1a\u7528\u5230\u5f88\u591a\u590d\u53d8\u51fd\u6570\u7684\u77e5\u8bc6\uff0c\u6240\u4ee5\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003 MIT18.04: Complex variables functions \u7684\u8bfe\u7a0b notes \u6765\u8865\u9f50\u5148\u4fee\u77e5\u8bc6\u3002 MIT18.03: differential equations ) \u4e3b\u8981\u8986\u76d6\u4e86\u5e38\u5fae\u5206\u65b9\u7a0b\u7684\u6c42\u89e3\uff0c\u5728\u6b64\u57fa\u7840\u4e4b\u4e0a MIT18.152: Partial differential equations ) \u5219\u4f1a\u6df1\u5165\u504f\u5fae\u5206\u65b9\u7a0b\u7684\u5efa\u6a21\u4e0e\u6c42\u89e3\u3002\u638c\u63e1\u4e86\u5fae\u5206\u65b9\u7a0b\u8fd9\u4e00\u6709\u5229\u5de5\u5177\uff0c\u76f8\u4fe1\u5bf9\u4e8e\u4f60\u7684\u5b9e\u9645\u95ee\u9898\u7684\u5efa\u6a21\u80fd\u529b\u4ee5\u53ca\u4ece\u4f17\u591a\u566a\u58f0\u53d8\u91cf\u4e2d\u628a\u63e1\u672c\u8d28\u7684\u76f4\u89c9\u90fd\u4f1a\u6709\u5f88\u5927\u5e2e\u52a9\u3002 \u6570\u5b66\u9ad8\u9636 \u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u6211\u7ecf\u5e38\u542c\u5230\u6570\u5b66\u65e0\u7528\u8bba\u7684\u8bba\u65ad\uff0c\u5bf9\u6b64\u6211\u4e0d\u6562\u82df\u540c\u4f46\u4e5f\u65e0\u6743\u53cd\u5bf9\uff0c\u4f46\u82e5\u51e1\u4e8b\u90fd\u786c\u8981\u4e89\u51fa\u4e2a\u6709\u7528\u548c\u65e0\u7528\u7684\u533a\u522b\u6765\uff0c\u5012\u4e5f\u7740\u5b9e\u65e0\u8da3\uff0c\u56e0\u6b64\u4e0b\u9762\u8fd9\u4e9b\u9762\u5411\u9ad8\u5e74\u7ea7\u751a\u81f3\u7814\u7a76\u751f\u7684\u6570\u5b66\u8bfe\u7a0b\uff0c\u5927\u5bb6\u6309\u5174\u8da3\u81ea\u53d6\u6240\u9700\u3002 \u51f8\u4f18\u5316 Standford EE364A: Convex Optimization \u4fe1\u606f\u8bba MIT6.441: Information Theory \u5e94\u7528\u7edf\u8ba1\u5b66 MIT18.650: Statistics for Applications \u521d\u7b49\u6570\u8bba MIT18.781: Theory of Numbers \u5bc6\u7801\u5b66 Standford CS255: Cryptography \u7f16\u7a0b\u5165\u95e8 Languages are tools, you choose the right tool to do the right thing. Since there's no universally perfect tool, there's no universally perfect language. Shell MIT-Missing-Semester Python Harvard CS50: This is CS50x \u6700\u597d\u7684\u8ba1\u7b97\u673a\u57fa\u7840\u5165\u95e8\u8bfe\uff0c\u4f60\u7edd\u5bf9\u4f1a\u7231\u4e0a\u7684\u3002 UCB CS61A: Structure and Interpretation of Computer Programs C++ Stanford CS106B/X: Programming Abstractions Stanford CS106L: Standard C++ Programming Rust Stanford CS110L: Safety in Systems Programming OCaml Cornell CS3110 textbook: Functional Programming in OCaml \u7535\u5b50\u57fa\u7840 \u7535\u8def\u57fa\u7840 \u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u4e86\u89e3\u4e00\u4e9b\u57fa\u7840\u7684\u7535\u8def\u77e5\u8bc6\uff0c\u611f\u53d7\u4ece\u4f20\u611f\u5668\u6536\u96c6\u6570\u636e\u5230\u6570\u636e\u5206\u6790\u518d\u5230\u7b97\u6cd5\u9884\u6d4b\u6574\u6761\u6d41\u6c34\u7ebf\uff0c\u5bf9\u4e8e\u540e\u7eed\u77e5\u8bc6\u7684\u5b66\u4e60\u4ee5\u53ca\u8ba1\u7b97\u601d\u7ef4\u7684\u57f9\u517b\u8fd8\u662f\u5f88\u6709\u5e2e\u52a9\u7684\u3002 EE16A&B: Designing Information Devices and Systems I&II \u662f\u4f2f\u514b\u5229 EE \u5b66\u751f\u7684\u5927\u4e00\u5165\u95e8\u8bfe\uff0c\u5176\u4e2d EE16A \u6ce8\u91cd\u901a\u8fc7\u7535\u8def\u4ece\u5b9e\u9645\u73af\u5883\u4e2d\u6536\u96c6\u548c\u5206\u6790\u6570\u636e\uff0c\u800c EE16B \u5219\u4fa7\u91cd\u4ece\u8fd9\u4e9b\u6536\u96c6\u5230\u7684\u6570\u636e\u8fdb\u884c\u5206\u6790\u5e76\u505a\u51fa\u9884\u6d4b\u884c\u4e3a\u3002 \u4fe1\u53f7\u4e0e\u7cfb\u7edf \u4fe1\u53f7\u4e0e\u7cfb\u7edf\u662f\u4e00\u95e8\u6211\u89c9\u5f97\u975e\u5e38\u503c\u5f97\u4e00\u4e0a\u7684\u8bfe\uff0c\u6700\u521d\u5b66\u5b83\u53ea\u662f\u4e3a\u4e86\u6ee1\u8db3\u6211\u5bf9\u5085\u91cc\u53f6\u53d8\u6362\u7684\u597d\u5947\uff0c\u4f46\u5b66\u5b8c\u4e4b\u540e\u6211\u624d\u4e0d\u7981\u611f\u53f9\uff0c\u5085\u7acb\u53f6\u53d8\u6362\u7ed9\u6211\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5168\u65b0\u7684\u89c6\u89d2\u53bb\u770b\u5f85\u8fd9\u4e2a\u4e16\u754c\uff0c\u5c31\u5982\u540c\u5fae\u5206\u65b9\u7a0b\u4e00\u6837\uff0c\u8ba9\u4f60\u6c89\u6d78\u5728\u7528\u6570\u5b66\u53bb\u7cbe\u786e\u63cf\u7ed8\u548c\u523b\u753b\u8fd9\u4e2a\u4e16\u754c\u7684\u4f18\u96c5\u4e0e\u795e\u5947\u4e4b\u4e2d\u3002 MIT 6.003: signal and systems \u63d0\u4f9b\u4e86\u5168\u90e8\u7684\u8bfe\u7a0b\u5f55\u5f71\u3001\u4e66\u9762\u4f5c\u4e1a\u4ee5\u53ca\u7b54\u6848\u3002\u4e5f\u53ef\u4ee5\u53bb\u770b\u8fd9\u95e8\u8bfe\u7684 \u8fdc\u53e4\u7248\u672c \u800c UCB EE120: Signal and Systems \u5173\u4e8e\u5085\u7acb\u53f6\u53d8\u6362\u7684 notes \u5199\u5f97\u975e\u5e38\u597d\uff0c\u5e76\u4e14\u63d0\u4f9b\u4e866 \u4e2a\u975e\u5e38\u6709\u8da3\u7684 Python \u7f16\u7a0b\u4f5c\u4e1a\uff0c\u8ba9\u4f60\u5b9e\u8df5\u4e2d\u8fd0\u7528\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u7684\u7406\u8bba\u4e0e\u7b97\u6cd5\u3002 \u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 \u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 UCB CS61B: Data Structures and Algorithms Coursera: Algorithms I & II \u7b97\u6cd5\u8bbe\u8ba1\u4e0e\u5206\u6790 UCB CS170: Efficient Algorithms and Intractable Problems \u8f6f\u4ef6\u5de5\u7a0b \u5165\u95e8\u8bfe \u4e00\u4efd\u201c\u80fd\u8dd1\u201d\u7684\u4ee3\u7801\uff0c\u548c\u4e00\u4efd\u9ad8\u8d28\u91cf\u7684\u5de5\u4e1a\u7ea7\u4ee3\u7801\u662f\u6709\u672c\u8d28\u533a\u522b\u7684\u3002\u56e0\u6b64\u6211\u975e\u5e38\u63a8\u8350\u4f4e\u5e74\u7ea7\u7684\u540c\u5b66\u5b66\u4e60\u4e00\u4e0b MIT 6.031: Software Construction \u8fd9\u95e8\u8bfe\uff0c\u5b83\u4f1a\u4ee5 Java \u8bed\u8a00\u4e3a\u57fa\u7840\uff0c\u4ee5\u4e30\u5bcc\u7ec6\u81f4\u7684\u9605\u8bfb\u6750\u6599\u548c\u7cbe\u5fc3\u8bbe\u8ba1\u7684\u7f16\u7a0b\u7ec3\u4e60\u4f20\u6388\u5982\u4f55\u7f16\u5199 \u4e0d\u6613\u51fa bug\u3001\u7b80\u660e\u6613\u61c2\u3001\u6613\u4e8e\u7ef4\u62a4\u4fee\u6539 \u7684\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5927\u5230\u5b8f\u89c2\u6570\u636e\u7ed3\u6784\u8bbe\u8ba1\uff0c\u5c0f\u5230\u5982\u4f55\u5199\u6ce8\u91ca\uff0c\u9075\u5faa\u8fd9\u4e9b\u524d\u4eba\u603b\u7ed3\u7684\u7ec6\u8282\u548c\u7ecf\u9a8c\uff0c\u5bf9\u4e8e\u4f60\u6b64\u540e\u7684\u7f16\u7a0b\u751f\u6daf\u5927\u6709\u88e8\u76ca\u3002 \u4e13\u4e1a\u8bfe \u5f53\u7136\uff0c\u5982\u679c\u4f60\u60f3\u7cfb\u7edf\u6027\u5730\u4e0a\u4e00\u95e8\u8f6f\u4ef6\u5de5\u7a0b\u7684\u8bfe\u7a0b\uff0c\u90a3\u6211\u63a8\u8350\u7684\u662f\u4f2f\u514b\u5229\u7684 UCB CS169: software engineering \u3002\u4f46\u9700\u8981\u63d0\u9192\u7684\u662f\uff0c\u548c\u5927\u591a\u5b66\u6821\uff08\u5305\u62ec\u8d35\u6821\uff09\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u7a0b\u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe\u4e0d\u4f1a\u6d89\u53ca\u4f20\u7edf\u7684 design and document \u6a21\u5f0f\uff0c\u5373\u5f3a\u8c03\u5404\u79cd\u7c7b\u56fe\u3001\u6d41\u7a0b\u56fe\u53ca\u6587\u6863\u8bbe\u8ba1\uff0c\u800c\u662f\u91c7\u7528\u8fd1\u4e9b\u5e74\u6d41\u884c\u8d77\u6765\u7684\u5c0f\u56e2\u961f\u5feb\u901f\u8fed\u4ee3 Agile Develepment \u5f00\u53d1\u6a21\u5f0f\u4ee5\u53ca\u5229\u7528\u4e91\u5e73\u53f0\u7684 Software as a service \u670d\u52a1\u6a21\u5f0f\u3002 \u4f53\u7cfb\u7ed3\u6784 \u5165\u95e8\u8bfe \u4ece\u5c0f\u6211\u5c31\u4e00\u76f4\u542c\u8bf4\uff0c\u8ba1\u7b97\u673a\u7684\u4e16\u754c\u662f\u7531 01 \u6784\u6210\u7684\uff0c\u6211\u4e0d\u7406\u89e3\u4f46\u5927\u53d7\u9707\u64bc\u3002\u5982\u679c\u4f60\u7684\u5185\u5fc3\u4e5f\u6000\u6709\u8fd9\u4efd\u597d\u5947\uff0c\u4e0d\u59a8\u82b1\u4e00\u5230\u4e24\u4e2a\u6708\u7684\u65f6\u95f4\u5b66\u4e60 Coursera: Nand2Tetris \u8fd9\u95e8\u65e0\u95e8\u69db\u7684\u8ba1\u7b97\u673a\u8bfe\u7a0b\u3002\u8fd9\u95e8\u9ebb\u96c0\u867d\u5c0f\u4e94\u810f\u4ff1\u5168\u7684\u8bfe\u7a0b\u4f1a\u4ece 01 \u5f00\u59cb\u8ba9\u4f60\u4eb2\u624b\u9020\u51fa\u4e00\u53f0\u8ba1\u7b97\u673a\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c\u4fc4\u7f57\u65af\u65b9\u5757\u5c0f\u6e38\u620f\u3002\u4e00\u95e8\u8bfe\u91cc\u6db5\u76d6\u4e86\u7f16\u8bd1\u3001\u865a\u62df\u673a\u3001\u6c47\u7f16\u3001\u4f53\u7cfb\u7ed3\u6784\u3001\u6570\u5b57\u7535\u8def\u3001\u903b\u8f91\u95e8\u7b49\u7b49\u4ece\u4e0a\u81f3\u4e0b\u3001\u4ece\u8f6f\u81f3\u786c\u7684\u5404\u7c7b\u77e5\u8bc6\uff0c\u975e\u5e38\u5168\u9762\u3002\u96be\u5ea6\u4e0a\u4e5f\u662f\u901a\u8fc7\u7cbe\u5fc3\u7684\u8bbe\u8ba1\uff0c\u7565\u53bb\u4e86\u4f17\u591a\u73b0\u4ee3\u8ba1\u7b97\u673a\u590d\u6742\u7684\u7ec6\u8282\uff0c\u63d0\u53d6\u51fa\u4e86\u6700\u6838\u5fc3\u672c\u8d28\u7684\u4e1c\u897f\uff0c\u529b\u56fe\u8ba9\u6bcf\u4e2a\u4eba\u90fd\u80fd\u7406\u89e3\u3002\u5728\u4f4e\u5e74\u7ea7\uff0c\u5982\u679c\u5c31\u80fd\u4ece\u5b8f\u89c2\u4e0a\u5efa\u7acb\u5bf9\u6574\u4e2a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7684\u9e1f\u77b0\u56fe\uff0c\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002 \u4e13\u4e1a\u8bfe \u5f53\u7136\uff0c\u5982\u679c\u60f3\u6df1\u5165\u73b0\u4ee3\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u7684\u590d\u6742\u7ec6\u8282\uff0c\u8fd8\u5f97\u4e0a\u4e00\u95e8\u5927\u5b66\u672c\u79d1\u96be\u5ea6\u7684\u8bfe\u7a0b UCB CS61C: Great Ideas in Computer Architecture \u3002UC Berkeley \u4f5c\u4e3a RISC-V \u67b6\u6784\u7684\u53d1\u6e90\u5730\uff0c\u5728\u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u7b97\u5f97\u4e0a\u9996\u5c48\u4e00\u6307\u3002\u5176\u8bfe\u7a0b\u975e\u5e38\u6ce8\u91cd\u5b9e\u8df5\uff0c\u4f60\u4f1a\u5728 Project \u4e2d\u624b\u5199\u6c47\u7f16\u6784\u9020\u795e\u7ecf\u7f51\u7edc\uff0c\u4ece\u96f6\u5f00\u59cb\u642d\u5efa\u4e00\u4e2a CPU\uff0c\u8fd9\u4e9b\u5b9e\u8df5\u90fd\u4f1a\u8ba9\u4f60\u5bf9\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u6709\u66f4\u4e3a\u6df1\u5165\u7684\u7406\u89e3\uff0c\u800c\u4e0d\u662f\u4ec5\u505c\u7559\u4e8e\u201c\u53d6\u6307\u8bd1\u7801\u6267\u884c\u8bbf\u5b58\u5199\u56de\u201d\u7684\u5355\u8c03\u80cc\u8bf5\u91cc\u3002 \u7cfb\u7edf\u5165\u95e8 \u8ba1\u7b97\u673a\u7cfb\u7edf\u662f\u4e00\u4e2a\u5e9e\u6742\u800c\u6df1\u523b\u7684\u4e3b\u9898\uff0c\u5728\u6df1\u5165\u5b66\u4e60\u67d0\u4e2a\u7ec6\u5206\u9886\u57df\u4e4b\u524d\uff0c\u5bf9\u5404\u4e2a\u9886\u57df\u6709\u4e00\u4e2a\u5b8f\u89c2\u6982\u5ff5\u6027\u7684\u7406\u89e3\uff0c\u5bf9\u4e00\u4e9b\u901a\u7528\u6027\u7684\u8bbe\u8ba1\u539f\u5219\u6709\u6240\u77e5\u6653\uff0c\u4f1a\u8ba9\u4f60\u5728\u4e4b\u540e\u7684\u6df1\u5165\u5b66\u4e60\u4e2d\u4e0d\u65ad\u5f3a\u5316\u4e00\u4e9b\u6700\u4e3a\u6838\u5fc3\u4e43\u81f3\u54f2\u5b66\u7684\u6982\u5ff5\uff0c\u800c\u4e0d\u4f1a\u684e\u688f\u4e8e\u590d\u6742\u7684\u5185\u90e8\u7ec6\u8282\u548c\u5404\u79cd trick\u3002\u56e0\u4e3a\u5728\u6211\u770b\u6765\uff0c\u5b66\u4e60\u7cfb\u7edf\u6700\u5173\u952e\u7684\u8fd8\u662f\u60f3\u8ba9\u4f60\u9886\u609f\u5230\u8fd9\u4e9b\u6700\u6838\u5fc3\u7684\u4e1c\u897f\uff0c\u4ece\u800c\u80fd\u591f\u8bbe\u8ba1\u548c\u5b9e\u73b0\u51fa\u5c5e\u4e8e\u81ea\u5df1\u7684\u7cfb\u7edf\u3002 MIT6.033: System Engineering \u662f MIT \u7684\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u4e3b\u9898\u6d89\u53ca\u4e86\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f51\u7edc\u3001\u5206\u5e03\u5f0f\u548c\u7cfb\u7edf\u5b89\u5168\uff0c\u9664\u4e86\u77e5\u8bc6\u70b9\u7684\u4f20\u6388\u5916\uff0c\u8fd9\u95e8\u8bfe\u8fd8\u4f1a\u8bb2\u6388\u4e00\u4e9b\u5199\u4f5c\u548c\u8868\u8fbe\u4e0a\u7684\u6280\u5de7\uff0c\u8ba9\u4f60\u5b66\u4f1a\u5982\u4f55\u8bbe\u8ba1\u5e76\u5411\u522b\u4eba\u4ecb\u7ecd\u548c\u5206\u6790\u81ea\u5df1\u7684\u7cfb\u7edf\u3002\u8fd9\u672c\u4e66\u914d\u5957\u7684\u6559\u6750 Principles of Computer System Design: An Introduction \u4e5f\u5199\u5f97\u975e\u5e38\u597d\uff0c\u63a8\u8350\u5927\u5bb6\u9605\u8bfb\u3002 CMU 15-213: Introduction to Computer System \u662f CMU \u7684\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u5185\u5bb9\u8986\u76d6\u4e86\u4f53\u7cfb\u7ed3\u6784\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u94fe\u63a5\u3001\u5e76\u884c\u3001\u7f51\u7edc\u7b49\u7b49\uff0c\u517c\u5177\u5e7f\u5ea6\u548c\u6df1\u5ea6\uff0c\u914d\u5957\u7684\u6559\u6750 Computer Systems: A Programmer's Perspective \u4e5f\u662f\u8d28\u91cf\u6781\u9ad8\uff0c\u5f3a\u70c8\u5efa\u8bae\u9605\u8bfb\u3002 \u64cd\u4f5c\u7cfb\u7edf \u64cd\u4f5c\u7cfb\u7edf\u4f5c\u4e3a\u5404\u7c7b\u7eb7\u7e41\u590d\u6742\u7684\u5e95\u5c42\u786c\u4ef6\u865a\u62df\u5316\u51fa\u4e00\u5957\u89c4\u8303\u4f18\u96c5\u7684\u62bd\u8c61\uff0c\u7ed9\u6240\u6709\u5e94\u7528\u8f6f\u4ef6\u63d0\u4f9b\u4e30\u5bcc\u7684\u529f\u80fd\u652f\u6301\u3002\u4e86\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u8bbe\u8ba1\u539f\u5219\u548c\u5185\u90e8\u539f\u7406\u5bf9\u4e8e\u4e00\u4e2a\u4e0d\u6ee1\u8db3\u4e8e\u5f53\u8c03\u5305\u4fa0\u7684\u7a0b\u5e8f\u5458\u6765\u8bf4\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002\u51fa\u4e8e\u5bf9\u64cd\u4f5c\u7cfb\u7edf\u7684\u70ed\u7231\uff0c\u6211\u4e0a\u8fc7\u56fd\u5185\u5916\u5f88\u591a\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\uff0c\u5b83\u4eec\u5404\u6709\u4fa7\u91cd\u548c\u4f18\u52a3\uff0c\u5927\u5bb6\u53ef\u4ee5\u6839\u636e\u5174\u8da3\u5404\u53d6\u6240\u9700\u3002 MIT 6.S081: Operating System Engineering \uff0cMIT \u8457\u540d PDOS \u5b9e\u9a8c\u5ba4\u51fa\u54c1\uff0c11 \u4e2a Project \u8ba9\u4f60\u5728\u4e00\u4e2a\u5b9e\u73b0\u975e\u5e38\u4f18\u96c5\u7684\u7c7bUnix\u64cd\u4f5c\u7cfb\u7edfxv6\u4e0a\u589e\u52a0\u5404\u7c7b\u529f\u80fd\u6a21\u5757\u3002\u8fd9\u95e8\u8bfe\u4e5f\u8ba9\u6211\u6df1\u523b\u8ba4\u8bc6\u5230\uff0c\u505a\u7cfb\u7edf\u4e0d\u662f\u9760 PPT \u5ff5\u51fa\u6765\u7684\uff0c\u662f\u5f97\u51e0\u4e07\u884c\u4ee3\u7801\u4e00\u70b9\u70b9\u7d2f\u8d77\u6765\u7684\u3002 UCB CS162: Operating System \uff0c\u4f2f\u514b\u5229\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\uff0c\u91c7\u7528\u548c Stanford \u540c\u6837\u7684 Project \u2014\u2014 \u4e00\u4e2a\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf Pintos\u3002\u6211\u4f5c\u4e3a\u5317\u4eac\u5927\u5b662022\u5e74\u6625\u5b63\u5b66\u671f\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9a8c\u73ed\u7684\u52a9\u6559\uff0c\u5f15\u5165\u5e76\u6539\u5584\u4e86\u8fd9\u4e2a Project\uff0c\u8bfe\u7a0b\u8d44\u6e90\u4e5f\u4f1a\u5168\u90e8\u5f00\u6e90\uff0c\u5177\u4f53\u53c2\u89c1 \u8bfe\u7a0b\u7f51\u7ad9 \u3002 NJU: Operating System Design and Implementation \uff0c\u5357\u4eac\u5927\u5b66\u7684\u848b\u708e\u5ca9\u8001\u5e08\u5f00\u8bbe\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u3002\u848b\u8001\u5e08\u4ee5\u5176\u72ec\u5230\u7684\u89c6\u89d2 \u5e76\u884c\u4e0e\u5206\u5e03\u5f0f\u7cfb\u7edf \u60f3\u5fc5\u8fd9\u4e24\u5e74\u5404\u7c7b CS \u8bb2\u5ea7\u91cc\u6700\u5e38\u542c\u5230\u7684\u8bdd\u5c31\u662f\u201c\u6469\u5c14\u5b9a\u5f8b\u6b63\u5728\u8d70\u5411\u7ec8\u7ed3\u201d\uff0c\u6b64\u8bdd\u4e0d\u5047\uff0c\u5f53\u5355\u6838\u80fd\u529b\u8fbe\u5230\u4e0a\u9650\u65f6\uff0c\u591a\u6838\u4e43\u81f3\u4f17\u6838\u67b6\u6784\u5982\u65e5\u4e2d\u5929\u3002\u786c\u4ef6\u7684\u53d8\u5316\u5e26\u6765\u7684\u662f\u4e0a\u5c42\u7f16\u7a0b\u903b\u8f91\u7684\u9002\u5e94\u4e0e\u6539\u53d8\uff0c\u8981\u60f3\u5145\u5206\u5229\u7528\u786c\u4ef6\u6027\u80fd\uff0c\u7f16\u5199\u5e76\u884c\u7a0b\u5e8f\u51e0\u4e4e\u6210\u4e86\u7a0b\u5e8f\u5458\u7684\u5fc5\u5907\u6280\u80fd\u3002\u4e0e\u6b64\u540c\u65f6\uff0c\u6df1\u5ea6\u5b66\u4e60\u7684\u5174\u8d77\u5bf9\u8ba1\u7b97\u673a\u7b97\u529b\u4e0e\u5b58\u50a8\u7684\u8981\u6c42\u90fd\u8fbe\u5230\u4e86\u524d\u6240\u672a\u6709\u7684\u9ad8\u5ea6\uff0c\u5927\u89c4\u6a21\u96c6\u7fa4\u7684\u90e8\u7f72\u548c\u4f18\u5316\u4e5f\u6210\u4e3a\u70ed\u95e8\u6280\u672f\u8bdd\u9898\u3002 \u5e76\u884c\u8ba1\u7b97 CMU 15-418/Stanford CS149: Parallel Computing \u5206\u5e03\u5f0f\u7cfb\u7edf MIT 6.824: Distributed System \u7cfb\u7edf\u5b89\u5168 \u4e0d\u77e5\u9053\u4f60\u5f53\u5e74\u9009\u62e9\u8ba1\u7b97\u673a\u662f\u4e0d\u662f\u56e0\u4e3a\u6000\u7740\u4e00\u4e2a\u4e2d\u4e8c\u7684\u9ed1\u5ba2\u68a6\u60f3\uff0c\u4f46\u73b0\u5b9e\u5374\u662f\u6210\u4e3a\u9ed1\u5ba2\u9053\u963b\u4e14\u957f\u3002 \u7406\u8bba UCB CS161: Computer Security \u662f\u4f2f\u514b\u5229\u7684\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u4f1a\u6db5\u76d6\u6808\u653b\u51fb\u3001\u5bc6\u7801\u5b66\u3001\u7f51\u7ad9\u5b89\u5168\u3001\u7f51\u7edc\u5b89\u5168\u7b49\u7b49\u5185\u5bb9\u3002 \u5b9e\u8df5 \u638c\u63e1\u8fd9\u4e9b\u7406\u8bba\u77e5\u8bc6\u4e4b\u540e\uff0c\u8fd8\u9700\u8981\u5728\u5b9e\u8df5\u4e2d\u57f9\u517b\u548c\u953b\u70bc\u8fd9\u4e9b\u201c\u9ed1\u5ba2\u7d20\u517b\u201d\u3002 CTF \u593a\u65d7\u8d5b \u662f\u4e00\u9879\u6bd4\u8f83\u70ed\u95e8\u7684\u7cfb\u7edf\u5b89\u5168\u6bd4\u8d5b\uff0c\u8d5b\u9898\u4e2d\u4f1a\u878d\u4f1a\u8d2f\u901a\u5730\u8003\u5bdf\u4f60\u5bf9\u8ba1\u7b97\u673a\u5404\u4e2a\u9886\u57df\u77e5\u8bc6\u7684\u7406\u89e3\u548c\u8fd0\u7528\u3002\u5317\u5927\u4eca\u5e74\u4e5f\u6210\u529f\u4e3e\u529e\u4e86 \u7b2c 0 \u5c4a\u548c\u7b2c 1 \u5c4a \uff0c\u9f13\u52b1\u5927\u5bb6\u540e\u671f\u8e0a\u8dc3\u53c2\u4e0e\uff0c\u5728\u5b9e\u8df5\u4e2d\u63d0\u9ad8\u81ea\u5df1\u3002\u4e0b\u9762\u5217\u4e3e\u4e00\u4e9b\u6211\u5e73\u65f6\u5b66\u4e60\uff08\u6478\u9c7c\uff09\u7528\u5230\u7684\u8d44\u6e90\uff1a CTF-wiki CTF-101 Hacker-101 \u8ba1\u7b97\u673a\u7f51\u7edc \u8ba1\u7f51\u8457\u540d\u6559\u6750\u300a\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u300b\u7684\u914d\u5957\u5b66\u4e60\u8d44\u6e90 Computer Networking: A Top-Down Approach \u3002 \u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a TCP/IP \u534f\u8bae\u6808\u66f4\u80fd\u52a0\u6df1\u5bf9\u8ba1\u7b97\u673a\u7f51\u7edc\u7684\u7406\u89e3\u4e86\uff0c\u6240\u4ee5\u4e0d\u59a8\u8bd5\u8bd5 Stanford CS144: Computer Network \uff0c8 \u4e2a Project \u5e26\u4f60\u5b9e\u73b0\u6574\u4e2a\u534f\u8bae\u6808\u3002 \u6570\u636e\u5e93\u7cfb\u7edf \u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a\u5173\u7cfb\u578b\u6570\u636e\u5e93\u66f4\u80fd\u52a0\u6df1\u5bf9\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u7406\u89e3\u4e86\u3002 C++\u7248 CMU 15-445: Introduction to Database System Java\u7248 UCB CS186: Introduction to Database System \u7f16\u8bd1\u539f\u7406 \u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a\u7f16\u8bd1\u5668\u66f4\u80fd\u52a0\u6df1\u5bf9\u7f16\u8bd1\u5668\u7684\u7406\u89e3\u4e86\u3002 Stanford CS143: Compilers \u8ba1\u7b97\u673a\u56fe\u5f62\u5b66 Stanford CS148 Games101 Games103 Games202 Web\u5f00\u53d1 \u7f51\u7ad9\u7684\u5f00\u53d1\u5f88\u5c11\u5728\u8ba1\u7b97\u673a\u7684\u57f9\u517b\u65b9\u6848\u91cc\u88ab\u91cd\u89c6\uff0c\u4f46\u5176\u5b9e\u638c\u63e1\u8fd9\u9879\u6280\u80fd\u8fd8\u662f\u597d\u5904\u591a\u591a\u7684\uff0c\u4f8b\u5982\u642d\u5efa\u81ea\u5df1\u7684\u4e2a\u4eba\u4e3b\u9875\uff0c\u6291\u6216\u662f\u7ed9\u81ea\u5df1\u7684\u8bfe\u7a0b\u9879\u76ee\u505a\u4e00\u4e2a\u7cbe\u5f69\u7684\u5c55\u793a\u7f51\u9875\u3002 \u4e24\u5468\u901f\u6210\u7248 MIT web development course \u7cfb\u7edf\u5b66\u4e60\u7248 Stanford CS142: Web Applications \u6570\u636e\u79d1\u5b66 UCB Data100: Principles and Techniques of Data Science \u4eba\u5de5\u667a\u80fd \u5165\u95e8\u8bfe Harvard CS50\u2019s Introduction to AI with Python \u4e13\u4e1a\u8bfe UCB CS188: Introduction to Artificial Intelligence \u673a\u5668\u5b66\u4e60 \u5165\u95e8\u8bfe Coursera: Machine Learning \u4e13\u4e1a\u8bfe Stanford CS229: Machine Learning UCB CS189: Introduction to Machine Learning \u6df1\u5ea6\u5b66\u4e60 \u5165\u95e8\u8bfe Coursera: Deep Learning \u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60 \u8ba1\u7b97\u673a\u89c6\u89c9 Stanford CS231n: CNN for Visual Recognition \u81ea\u7136\u8bed\u8a00\u5904\u7406 Stanford CS224n: Natural Language Processing \u56fe\u795e\u7ecf\u7f51\u7edc Stanford CS224w: Machine Learning with Graphs \u5f3a\u5316\u5b66\u4e60 UCB CS285: Deep Reinforcement Learning \u5b9a\u5236\u5c5e\u4e8e\u4f60\u7684\u8bfe\u7a0b\u5730\u56fe \u6388\u4eba\u4ee5\u9c7c\u4e0d\u5982\u6388\u4eba\u4ee5\u6e14\u3002 \u4ee5\u4e0a\u7684\u8bfe\u7a0b\u89c4\u5212\u96be\u514d\u5e26\u6709\u5f3a\u70c8\u7684\u4e2a\u4eba\u504f\u597d\uff0c\u4e0d\u4e00\u5b9a\u9002\u5408\u6240\u6709\u4eba\uff0c\u66f4\u591a\u662f\u8d77\u5230\u629b\u7816\u5f15\u7389\u7684\u4f5c\u7528\u3002\u5982\u679c\u4f60\u60f3\u6311\u9009\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\u548c\u5185\u5bb9\u52a0\u4ee5\u5b66\u4e60\uff0c\u53ef\u4ee5\u53c2\u8003\u6211\u5728\u4e0b\u9762\u5217\u51fa\u6765\u7684\u8d44\u6e90\u3002 MIT OpenCourseWare : \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u7684\u8bfe\u7a0b\u8d44\u6e90\u5f00\u653e\u5171\u4eab\u9879\u76ee\uff0c\u6536\u5f55\u4e86\u6570\u4ee5\u5343\u8ba1\u7684\u5404\u79d1\u8bfe\u7a0b\u8d44\u6e90\uff0c\u5176\u4e2d\u8ba1\u7b97\u673a\u7c7b\u7684\u8bfe\u53f7\u662f 6.xxx\u3002 MIT CS Course List : \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002 UC Berkeley EECS Course Map : UC Berkeley \u7684 EECS \u57f9\u517b\u65b9\u6848\uff0c\u4ee5\u8bfe\u7a0b\u5730\u56fe\u7684\u65b9\u5f0f\u5c06\u5404\u95e8\u8bfe\u7a0b\u7684\u7c7b\u522b\u548c\u5148\u4fee\u5173\u7cfb\u4e00\u76ee\u4e86\u7136\u5730\u5448\u73b0\uff0c\u5176\u4e2d\u7edd\u5927\u591a\u6570\u8bfe\u7a0b\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 UC Berkeley CS Course List : UC Berkeley \u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002 Stanford CS Course List : \u65af\u5766\u798f\u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002","title":"\u4e00\u4e2a\u4ec5\u4f9b\u53c2\u8003\u7684CS\u5b66\u4e60\u89c4\u5212"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#cs","text":"\u8ba1\u7b97\u673a\u9886\u57df\u65b9\u5411\u5e9e\u6742\uff0c\u77e5\u8bc6\u6d69\u5982\u70df\u6d77\uff0c\u6bcf\u4e2a\u7ec6\u5206\u9886\u57df\u5982\u679c\u6df1\u7a76\u4e0b\u53bb\u90fd\u53ef\u4ee5\u8bf4\u5b66\u65e0\u6b62\u5883\u3002\u56e0\u6b64\uff0c\u4e00\u4e2a\u6e05\u6670\u660e\u786e\u7684\u5b66\u4e60\u89c4\u5212\u662f\u975e\u5e38\u91cd\u8981\u7684\u3002\u8fd9\u4e00\u8282\u7684\u5185\u5bb9\u662f\u5bf9\u540e\u7eed\u6574\u672c\u4e66\u7684\u5185\u5bb9\u7684\u4e00\u4e2a\u6982\u89c8\uff0c\u4f60\u53ef\u4ee5\u5c06\u5176\u770b\u4f5c\u662f\u8fd9\u672c\u4e66\u7684\u76ee\u5f55\uff0c\u6309\u9700\u9009\u62e9\u81ea\u5df1\u611f\u5174\u8da3\u7684\u5185\u5bb9\u8fdb\u884c\u5b66\u4e60\u3002 \u4e0d\u8fc7\uff0c\u5728\u5f00\u59cb\u5b66\u4e60\u4e4b\u524d\uff0c\u5148\u5411\u5c0f\u767d\u4eec\u5f3a\u70c8\u63a8\u8350\u4e00\u4e2a\u79d1\u666e\u5411\u7cfb\u5217\u89c6\u9891 Crash Course: Computer Science \uff0c\u5728\u77ed\u77ed 8 \u4e2a\u5c0f\u65f6\u91cc\u975e\u5e38\u751f\u52a8\u4e14\u5168\u9762\u5730\u79d1\u666e\u4e86\u5173\u4e8e\u8ba1\u7b97\u673a\u79d1\u5b66\u7684\u65b9\u65b9\u9762\u9762\uff1a\u8ba1\u7b97\u673a\u7684\u5386\u53f2\u3001\u8ba1\u7b97\u673a\u662f\u5982\u4f55\u8fd0\u4f5c\u7684\u3001\u7ec4\u6210\u8ba1\u7b97\u673a\u7684\u5404\u4e2a\u91cd\u8981\u6a21\u5757\u3001\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\u7684\u91cd\u8981\u601d\u60f3\u7b49\u7b49\u7b49\u7b49\u3002\u6b63\u5982\u5b83\u7684\u53e3\u53f7\u6240\u8bf4\u7684 Computers are not magic! \uff0c\u5e0c\u671b\u770b\u5b8c\u8fd9\u4e2a\u89c6\u9891\u4e4b\u540e\uff0c\u5927\u5bb6\u80fd\u5bf9\u8ba1\u7b97\u673a\u79d1\u5b66\u6709\u4e2a\u5168\u8c8c\u6027\u5730\u611f\u77e5\uff0c\u4ece\u800c\u6000\u7740\u5174\u8da3\u53bb\u9762\u5bf9\u4e0b\u9762\u6d69\u5982\u70df\u6d77\u7684\u66f4\u4e3a\u7ec6\u81f4\u4e14\u6df1\u5165\u7684\u5b66\u4e60\u5185\u5bb9\u3002","title":"\u4e00\u4e2a\u4ec5\u4f9b\u53c2\u8003\u7684 CS \u5b66\u4e60\u89c4\u5212"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_1","text":"\u4fd7\u8bdd\u8bf4\uff1a\u78e8\u5200\u4e0d\u8bef\u780d\u67f4\u5de5\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u521a\u521a\u63a5\u89e6\u8ba1\u7b97\u673a\u768424k\u7eaf\u5c0f\u767d\uff0c\u5b66\u4f1a\u4e00\u4e9b\u5de5\u5177\u5c06\u4f1a\u8ba9\u4f60\u4e8b\u534a\u529f\u500d\u3002 \u5b66\u4f1a\u63d0\u95ee\uff1a\u4e5f\u8bb8\u4f60\u4f1a\u60ca\u8bb6\uff0c\u63d0\u95ee\u4e5f\u7b97\u8ba1\u7b97\u673a\u5fc5\u5907\u6280\u80fd\u5417\uff0c\u8fd8\u653e\u5728\u7b2c\u4e00\u6761\uff1f\u6211\u89c9\u5f97\u5728\u5f00\u6e90\u793e\u533a\u4e2d\uff0c\u5b66\u4f1a\u63d0\u95ee\u662f\u4e00\u9879\u975e\u5e38\u91cd\u8981\u7684\u80fd\u529b\uff0c\u5b83\u5305\u542b\u4e24\u65b9\u9762\u7684\u4e8b\u60c5\u3002\u5176\u4e00\u662f\u4f1a\u53d8\u76f8\u5730\u57f9\u517b\u4f60\u81ea\u4e3b\u89e3\u51b3\u95ee\u9898\u7684\u80fd\u529b\uff0c\u56e0\u4e3a\u4ece\u5f62\u6210\u95ee\u9898\u3001\u63cf\u8ff0\u95ee\u9898\u5e76\u53d1\u5e03\u3001\u4ed6\u4eba\u56de\u7b54\u3001\u6700\u540e\u518d\u5230\u7406\u89e3\u56de\u7b54\u8fd9\u4e2a\u5468\u671f\u662f\u975e\u5e38\u957f\u7684\uff0c\u5982\u679c\u9047\u5230\u4ec0\u4e48\u9e21\u6bdb\u849c\u76ae\u7684\u4e8b\u60c5\u90fd\u5e0c\u671b\u522b\u4eba\u6700\u597d\u8fdc\u7a0b\u684c\u9762\u624b\u628a\u624b\u5e2e\u4f60\u5b8c\u6210\uff0c\u90a3\u8ba1\u7b97\u673a\u7684\u4e16\u754c\u57fa\u672c\u4e0e\u4f60\u65e0\u7f18\u4e86\u3002\u5176\u4e8c\uff0c\u5982\u679c\u771f\u7684\u7ecf\u8fc7\u5c1d\u8bd5\u8fd8\u65e0\u6cd5\u89e3\u51b3\uff0c\u53ef\u4ee5\u501f\u52a9\u5f00\u6e90\u793e\u533a\u7684\u5e2e\u52a9\uff0c\u4f46\u8fd9\u65f6\u5019\u5982\u4f55\u901a\u8fc7\u7b80\u6d01\u7684\u6587\u5b57\u8ba9\u522b\u4eba\u77ac\u95f4\u7406\u89e3\u4f60\u7684\u5904\u5883\u4ee5\u53ca\u76ee\u7684\uff0c\u5c31\u663e\u5f97\u5c24\u4e3a\u91cd\u8981\u3002\u63a8\u8350\u9605\u8bfb \u63d0\u95ee\u7684\u667a\u6167 \u8fd9\u7bc7\u6587\u7ae0\uff0c\u8fd9\u4e0d\u4ec5\u80fd\u63d0\u9ad8\u4f60\u89e3\u51b3\u95ee\u9898\u7684\u6982\u7387\u548c\u6548\u7387\uff0c\u4e5f\u80fd\u8ba9\u5f00\u6e90\u793e\u533a\u91cc\u65e0\u507f\u63d0\u4f9b\u89e3\u7b54\u7684\u4eba\u4eec\u62e5\u6709\u4e00\u4e2a\u597d\u5fc3\u60c5\u3002 MIT-Missing-Semester \u8fd9\u95e8\u8bfe\u8986\u76d6\u4e86\u8fd9\u4e9b\u5de5\u5177\u4e2d\u7edd\u5927\u90e8\u5206\uff0c\u800c\u4e14\u6709\u76f8\u5f53\u8be6\u7ec6\u7684\u4f7f\u7528\u6307\u5bfc\uff0c\u5f3a\u70c8\u5efa\u8bae\u5c0f\u767d\u5b66\u4e60\u3002 \u7ffb\u5899 \uff1a\u7531\u4e8e\u4e00\u4e9b\u4f17\u6240\u5468\u77e5\u7684\u539f\u56e0\uff0c\u8c37\u6b4c\u3001GitHub \u7b49\u7f51\u7ad9\u5728\u5927\u9646\u65e0\u6cd5\u8bbf\u95ee\u3002\u7136\u800c\u5f88\u591a\u65f6\u5019\uff0c\u8c37\u6b4c\u548c StackOverflow \u53ef\u4ee5\u89e3\u51b3\u4f60\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684 95% \u7684\u95ee\u9898\u3002\u56e0\u6b64\uff0c\u5b66\u4f1a\u7ffb\u5899\u51e0\u4e4e\u662f\u4e00\u4e2a\u5185\u5730 CSer \u7684\u5fc5\u5907\u6280\u80fd\u3002\uff08\u8003\u8651\u5230\u6cd5\u5f8b\u95ee\u9898\uff0c\u8fd9\u4e2a\u6587\u6863\u63d0\u4f9b\u7684\u7ffb\u5899\u65b9\u5f0f\u4ec5\u5bf9\u62e5\u6709\u5317\u5927\u90ae\u7bb1\u7684\u7528\u6237\u9002\u7528\uff09\u3002 \u547d\u4ee4\u884c\uff1a\u719f\u7ec3\u4f7f\u7528\u547d\u4ee4\u884c\u662f\u4e00\u79cd\u5e38\u5e38\u88ab\u5ffd\u89c6\uff0c\u6216\u88ab\u8ba4\u4e3a\u96be\u4ee5\u638c\u63e1\u7684\u6280\u80fd\uff0c\u4f46\u5b9e\u9645\u4e0a\uff0c\u5b83\u4f1a\u63d0\u9ad8\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u4f5c\u4e3a\u5de5\u7a0b\u5e08\u7684\u7075\u6d3b\u6027\u4ee5\u53ca\u751f\u4ea7\u529b\u3002 \u547d\u4ee4\u884c\u7684\u827a\u672f \u662f\u4e00\u4efd\u975e\u5e38\u7ecf\u5178\u7684\u6559\u7a0b\uff0c\u5b83\u6e90\u4e8e Quora \u7684\u4e00\u4e2a\u63d0\u95ee\uff0c\u4f46\u5728\u5404\u8def\u5927\u795e\u7684\u8d21\u732e\u52aa\u529b\u4e0b\u5df2\u7ecf\u6210\u4e3a\u4e86\u4e00\u4e2a GitHub \u5341\u4e07 stars \u7684\u9876\u6d41\u9879\u76ee\uff0c\u88ab\u7ffb\u8bd1\u6210\u4e86\u5341\u51e0\u79cd\u8bed\u8a00\u3002\u6559\u7a0b\u4e0d\u957f\uff0c\u975e\u5e38\u5efa\u8bae\u5927\u5bb6\u53cd\u590d\u901a\u8bfb\uff0c\u5728\u5b9e\u8df5\u4e2d\u5185\u5316\u5438\u6536\u3002\u540c\u65f6\uff0c\u638c\u63e1 shell \u811a\u672c\u7f16\u7a0b\u4e5f\u662f\u4e00\u9879\u4e0d\u5bb9\u5ffd\u89c6\u7684\u6280\u672f\uff0c\u53ef\u4ee5\u53c2\u8003\u8fd9\u4e2a \u6559\u7a0b \u3002 IDE (Integrated Development Environment)\uff1a\u96c6\u6210\u5f00\u53d1\u73af\u5883\uff0c\u8bf4\u767d\u4e86\u5c31\u662f\u4f60\u5199\u4ee3\u7801\u7684\u5730\u65b9\u3002\u4f5c\u4e3a\u4e00\u4e2a\u7801\u519c\uff0cIDE \u7684\u91cd\u8981\u6027\u4e0d\u8a00\u800c\u55bb\uff0c\u4f46\u7531\u4e8e\u5f88\u591a IDE \u662f\u4e3a\u5927\u578b\u5de5\u7a0b\u9879\u76ee\u8bbe\u8ba1\u7684\uff0c\u4f53\u91cf\u8f83\u5927\uff0c\u529f\u80fd\u4e5f\u8fc7\u4e8e\u4e30\u5bcc\u3002\u5176\u5b9e\u5982\u4eca\u4e00\u4e9b\u8f7b\u4fbf\u7684\u6587\u672c\u7f16\u8f91\u5668\u914d\u5408\u4e30\u5bcc\u7684\u63d2\u4ef6\u751f\u6001\u57fa\u672c\u53ef\u4ee5\u6ee1\u8db3\u65e5\u5e38\u7684\u8f7b\u91cf\u7f16\u7a0b\u9700\u6c42\u3002\u4e2a\u4eba\u5e38\u7528\u7684\u7f16\u8f91\u5668\u662f VS Code \u548c Sublime\uff08\u524d\u8005\u7684\u63d2\u4ef6\u914d\u7f6e\u975e\u5e38\u7b80\u5355\uff0c\u540e\u8005\u7565\u663e\u590d\u6742\u4f46\u989c\u503c\u5f88\u9ad8\uff09\u3002\u5f53\u7136\u5bf9\u4e8e\u5927\u578b\u9879\u76ee\u6211\u8fd8\u662f\u4f1a\u91c7\u7528\u7565\u91cd\u578b\u7684 IDE\uff0c\u4f8b\u5982 Pycharm (Python)\uff0cIDEA (Java) \u7b49\u7b49\uff08\u514d\u8d23\u7533\u660e\uff1a\u6240\u6709\u7684 IDE \u90fd\u662f\u4e16\u754c\u4e0a\u6700\u597d\u7684 IDE\uff09\u3002 Vim \uff1a\u4e00\u6b3e\u547d\u4ee4\u884c\u7f16\u8f91\u5de5\u5177\u3002\u8fd9\u662f\u4e00\u4e2a\u5b66\u4e60\u66f2\u7ebf\u6709\u4e9b\u9661\u5ced\u7684\u7f16\u8f91\u5668\uff0c\u4e0d\u8fc7\u5b66\u4f1a\u5b83\u6211\u89c9\u5f97\u662f\u975e\u5e38\u6709\u5fc5\u8981\u7684\uff0c\u56e0\u4e3a\u5b83\u5c06\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u7684\u5f00\u53d1\u6548\u7387\u3002\u73b0\u5728\u7edd\u5927\u591a\u6570 IDE \u4e5f\u90fd\u652f\u6301 Vim \u63d2\u4ef6\uff0c\u8ba9\u4f60\u5728\u4eab\u53d7\u73b0\u4ee3\u5f00\u53d1\u73af\u5883\u7684\u540c\u65f6\u4fdd\u7559\u6781\u5ba2\u7684\u70ab\u9177\uff08yue\uff09\u3002 Git \uff1a\u4e00\u6b3e\u4ee3\u7801\u7248\u672c\u63a7\u5236\u5de5\u5177\u3002Git\u7684\u5b66\u4e60\u66f2\u7ebf\u53ef\u80fd\u66f4\u4e3a\u9661\u5ced\uff0c\u4f46\u51fa\u81ea Linux \u4e4b\u7236 Linus \u4e4b\u624b\u7684 Git \u7edd\u5bf9\u662f\u6bcf\u4e2a\u5b66 CS \u7684\u7ae5\u978b\u5fc5\u987b\u638c\u63e1\u7684\u795e\u5668\u4e4b\u4e00\u3002 GitHub \uff1a\u57fa\u4e8e Git \u7684\u4ee3\u7801\u6258\u7ba1\u5e73\u53f0\u3002\u5168\u4e16\u754c\u6700\u5927\u7684\u4ee3\u7801\u5f00\u6e90\u793e\u533a\uff0c\u5927\u4f6c\u96c6\u805a\u5730\u3002 GNU Make \uff1a\u4e00\u6b3e\u5de5\u7a0b\u6784\u5efa\u5de5\u5177\u3002\u5584\u7528 GNU Make \u4f1a\u8ba9\u4f60\u517b\u6210\u4ee3\u7801\u6a21\u5757\u5316\u7684\u4e60\u60ef\uff0c\u540c\u65f6\u4e5f\u80fd\u8ba9\u4f60\u719f\u6089\u4e00\u4e9b\u5927\u578b\u5de5\u7a0b\u7684\u7f16\u8bd1\u94fe\u63a5\u6d41\u7a0b\u3002 CMake \uff1a\u4e00\u6b3e\u529f\u80fd\u6bd4 GNU Make \u66f4\u4e3a\u5f3a\u5927\u7684\u6784\u5efa\u5de5\u5177\uff0c\u5efa\u8bae\u638c\u63e1 GNU Make \u4e4b\u540e\u518d\u52a0\u4ee5\u5b66\u4e60\u3002 LaTex \uff1a \u903c\u683c\u63d0\u5347 \u8bba\u6587\u6392\u7248\u5de5\u5177\u3002 Docker \uff1a\u4e00\u6b3e\u76f8\u8f83\u4e8e\u865a\u62df\u673a\u66f4\u8f7b\u91cf\u7ea7\u7684\u8f6f\u4ef6\u6253\u5305\u4e0e\u73af\u5883\u90e8\u7f72\u5de5\u5177\u3002 \u5b9e\u7528\u5de5\u5177\u7bb1 \uff1a\u9664\u4e86\u4e0a\u9762\u63d0\u5230\u7684\u8fd9\u4e9b\u5728\u5f00\u53d1\u4e2d\u4f7f\u7528\u9891\u7387\u6781\u9ad8\u7684\u5de5\u5177\u4e4b\u5916\uff0c\u6211\u8fd8\u6536\u96c6\u4e86\u5f88\u591a\u5b9e\u7528\u6709\u8da3\u7684\u514d\u8d39\u5de5\u5177\uff0c\u4f8b\u5982\u4e00\u4e9b\u4e0b\u8f7d\u5de5\u5177\u3001\u8bbe\u8ba1\u5de5\u5177\u3001\u5b66\u4e60\u7f51\u7ad9\u7b49\u7b49\u3002 Thesis \uff1a\u6bd5\u4e1a\u8bba\u6587 Word \u5199\u4f5c\u6559\u7a0b\u3002","title":"\u5fc5\u5b66\u5de5\u5177"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_2","text":"\u79c1\u4ee5\u4e3a\u4e00\u672c\u597d\u7684\u6559\u6750\u5e94\u5f53\u662f\u4ee5\u4eba\u4e3a\u672c\u7684\uff0c\u800c\u4e0d\u662f\u70ab\u6280\u5f0f\u7684\u7406\u8bba\u5806\u780c\u3002\u544a\u8bc9\u8bfb\u8005\u201c\u662f\u4ec0\u4e48\u201d\u56fa\u7136\u91cd\u8981\uff0c\u4f46\u66f4\u597d\u7684\u5e94\u5f53\u662f\u6559\u6750\u4f5c\u8005\u5c06\u5176\u5728\u8fd9\u4e2a\u9886\u57df\u6df1\u8015\u51e0\u5341\u5e74\u7684\u7ecf\u9a8c\u878d\u6c47\u8fdb\u4e66\u4e2d\uff0c\u5411\u8bfb\u8005\u5a13\u5a13\u9053\u6765\u201c\u4e3a\u4ec0\u4e48\u201d\u4ee5\u53ca\u672a\u6765\u5e94\u8be5\u201c\u600e\u4e48\u505a\u201d\u3002 \u94fe\u63a5\u6233\u8fd9\u91cc","title":"\u597d\u4e66\u63a8\u8350"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_3","text":"\u4f60\u4ee5\u4e3a\u7684\u5f00\u53d1 \u2014\u2014 \u5728 IDE \u91cc\u75af\u72c2\u7801\u4ee3\u7801\u6570\u5c0f\u65f6\u3002 \u5b9e\u9645\u4e0a\u7684\u5f00\u53d1 \u2014\u2014 \u914d\u73af\u5883\u914d\u51e0\u5929\u8fd8\u6ca1\u5f00\u59cb\u5199\u4ee3\u7801\u3002 \u63a8\u8350\u4e00\u4e2a\u975e\u5e38\u4e0d\u9519\u7684 GitHub \u9879\u76ee DevOps-Guide \uff0c\u5176\u4e2d\u6db5\u76d6\u4e86\u975e\u5e38\u591a\u7684\u8fd0\u7ef4\u65b9\u9762\u7684\u57fa\u7840\u77e5\u8bc6\u548c\u6559\u7a0b\uff0c\u4f8b\u5982 Docker, Kubernetes, Linux, CI-CD, GitHub Actions \u7b49\u7b49\u3002 \u53e6\u5916\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003\u4e00\u4efd\u7075\u611f\u6765\u81ea 6.NULL MIT-Missing-Semester \u7684 \u73af\u5883\u914d\u7f6e\u6307\u5357 \uff0c\u91cd\u70b9\u5728\u4e8e\u7ec8\u7aef\u7684\u7f8e\u5316\u914d\u7f6e\u3002\u6b64\u5916\u8fd8\u5305\u62ec\u5e38\u7528\u8f6f\u4ef6\u6e90\uff08\u5982 GitHub, Anaconda, PyPI \u7b49\uff09\u7684\u52a0\u901f\u4e0e\u66ff\u6362\u4ee5\u53ca\u4e00\u4e9b IDE \u7684\u914d\u7f6e\u4e0e\u6fc0\u6d3b\u6559\u7a0b\u3002 More contents under construction.","title":"\u73af\u5883\u914d\u7f6e"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_4","text":"\u6b63\u5982\u8fd9\u7ae0\u5f00\u5934\u63d0\u5230\u7684\uff0c\u8fd9\u4efd\u8bfe\u7a0b\u5730\u56fe\u4ec5\u4ec5\u662f\u4e00\u4e2a \u4ec5\u4f9b\u53c2\u8003 \u7684\u8bfe\u7a0b\u89c4\u5212\uff0c\u6211\u4f5c\u4e3a\u4e00\u4e2a\u4e34\u8fd1\u6bd5\u4e1a\u7684\u672c\u79d1\u751f\u3002\u6df1\u611f\u81ea\u5df1\u6ca1\u6709\u6743\u5229\u4e5f\u6ca1\u6709\u80fd\u529b\u5411\u522b\u4eba\u5ba3\u626c\u201c\u5e94\u8be5\u600e\u4e48\u5b66\u201d\u3002\u56e0\u6b64\u5982\u679c\u4f60\u89c9\u5f97\u4ee5\u4e0b\u7684\u8bfe\u7a0b\u5206\u7c7b\u4e0e\u9009\u62e9\u6709\u4e0d\u5408\u7406\u4e4b\u5904\uff0c\u6211\u5168\u76d8\u63a5\u53d7\uff0c\u5e76\u6df1\u611f\u62b1\u6b49\u3002\u4f60\u53ef\u4ee5\u5728\u4e0b\u4e00\u8282 \u5b9a\u5236\u5c5e\u4e8e\u4f60\u7684\u8bfe\u7a0b\u5730\u56fe \u4ee5\u4e0b\u8bfe\u7a0b\u7c7b\u522b\u4e2d\u9664\u4e86\u542b\u6709 \u57fa\u7840 \u548c \u5165\u95e8 \u5b57\u773c\u7684\u4ee5\u5916\uff0c\u5e76\u65e0\u660e\u786e\u7684\u5148\u540e\u6b21\u5e8f\uff0c\u5927\u5bb6\u53ea\u8981\u6ee1\u8db3\u67d0\u4e2a\u8bfe\u7a0b\u7684\u5148\u4fee\u8981\u6c42\uff0c\u5b8c\u5168\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u7684\u9700\u8981\u548c\u559c\u597d\u9009\u62e9\u60f3\u8981\u5b66\u4e60\u7684\u8bfe\u7a0b\u3002 \u53e6\u5916\u7531\u4e8e\u8d21\u732e\u8005\u7684\u4e0d\u65ad\u589e\u52a0\uff0c\u8fd9\u4efd\u8bfe\u7a0b\u5730\u56fe\u5df2\u7ecf\u4ece\u6700\u521d\u6211\u7684\u5b66\u4e60\u7ecf\u5386\uff0c\u53d1\u5c55\u6210\u4e3a\u5f88\u591a CS \u81ea\u5b66\u8005\u7684\u8d44\u6e90\u5408\u96c6\uff0c\u5176\u4e2d\u96be\u514d\u6709\u5185\u5bb9\u4ea4\u53c9\u751a\u81f3\u91cd\u590d\u7684\u3002\u4f46\u4e4b\u6240\u4ee5\u90fd\u5217\u51fa\u6765\uff0c\u8fd8\u662f\u5e0c\u671b\u96c6\u767e\u5bb6\u4e4b\u957f\uff0c\u7ed9\u5927\u5bb6\u5c3d\u53ef\u80fd\u591a\u7684\u9009\u62e9\u4e0e\u53c2\u8003\u3002","title":"\u8bfe\u7a0b\u5730\u56fe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_5","text":"","title":"\u6570\u5b66\u57fa\u7840"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_6","text":"\u4f5c\u4e3a\u5927\u4e00\u65b0\u751f\uff0c\u5b66\u597d\u5fae\u79ef\u5206\u7ebf\u4ee3\u662f\u548c\u5199\u4ee3\u7801\u81f3\u5c11\u540c\u7b49\u91cd\u8981\u7684\u4e8b\u60c5\uff0c\u76f8\u4fe1\u5df2\u7ecf\u6709\u65e0\u6570\u7684\u524d\u4eba\u7ecf\u9a8c\u63d0\u5230\u8fc7\u8fd9\u4e00\u70b9\uff0c\u4f46\u6211\u8fd8\u662f\u8981\u4e0d\u538c\u5176\u70e6\u5730\u518d\u5f3a\u8c03\u4e00\u904d\uff1a\u5b66\u597d\u5fae\u79ef\u5206\u7ebf\u4ee3\u771f\u7684\u5f88\u91cd\u8981\uff01\u4f60\u4e5f\u8bb8\u4f1a\u5410\u69fd\u8fd9\u4e9b\u4e1c\u897f\u5c82\u4e0d\u662f\u8003\u5b8c\u5c31\u5fd8\uff0c\u90a3\u6211\u89c9\u5f97\u4f60\u662f\u5e76\u6ca1\u6709\u628a\u63e1\u4f4f\u5b83\u4eec\u672c\u8d28\uff0c\u5bf9\u5b83\u4eec\u7684\u7406\u89e3\u8fd8\u6ca1\u6709\u8fbe\u5230\u523b\u9aa8\u94ed\u5fc3\u7684\u7a0b\u5ea6\u3002\u5982\u679c\u89c9\u5f97\u8001\u5e08\u8bfe\u4e0a\u8bb2\u7684\u5185\u5bb9\u6666\u6da9\u96be\u61c2\uff0c\u4e0d\u59a8\u53c2\u8003 MIT \u7684 Calculus Course \u548c 18.06: Linear Algebra \u7684\u8bfe\u7a0b notes\uff0c\u81f3\u5c11\u4e8e\u6211\u800c\u8a00\uff0c\u5b83\u5e2e\u52a9\u6211\u6df1\u523b\u7406\u89e3\u4e86\u5fae\u79ef\u5206\u548c\u7ebf\u6027\u4ee3\u6570\u7684\u8bb8\u591a\u672c\u8d28\u3002\u987a\u9053\u518d\u5b89\u5229\u4e00\u4e2a\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \uff0c\u4ed6\u7684\u9891\u9053\u6709\u5f88\u591a\u7528\u751f\u52a8\u5f62\u8c61\u7684\u52a8\u753b\u9610\u91ca\u6570\u5b66\u672c\u8d28\u5185\u6838\u7684\u89c6\u9891\uff0c\u517c\u5177\u6df1\u5ea6\u548c\u5e7f\u5ea6\uff0c\u8d28\u91cf\u975e\u5e38\u9ad8\u3002","title":"\u5fae\u79ef\u5206\u4e0e\u7ebf\u6027\u4ee3\u6570"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_7","text":"\u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u53ca\u65e9\u4e86\u89e3\u4e00\u4e9b\u4fe1\u606f\u8bba\u7684\u57fa\u7840\u77e5\u8bc6\uff0c\u6211\u89c9\u5f97\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002\u4f46\u5927\u591a\u4fe1\u606f\u8bba\u8bfe\u7a0b\u90fd\u9762\u5411\u9ad8\u5e74\u7ea7\u672c\u79d1\u751f\u751a\u81f3\u7814\u7a76\u751f\uff0c\u5bf9\u65b0\u624b\u6781\u4e0d\u53cb\u597d\u3002\u800c MIT \u7684 6.050J: Information theory and Entropy \u8fd9\u95e8\u8bfe\u6b63\u662f\u4e3a\u5927\u4e00\u65b0\u751f\u91cf\u8eab\u5b9a\u5236\u7684\uff0c\u51e0\u4e4e\u6ca1\u6709\u5148\u4fee\u8981\u6c42\uff0c\u6db5\u76d6\u4e86\u7f16\u7801\u3001\u538b\u7f29\u3001\u901a\u4fe1\u3001\u4fe1\u606f\u71b5\u7b49\u7b49\u5185\u5bb9\uff0c\u975e\u5e38\u6709\u8da3\u3002","title":"\u4fe1\u606f\u8bba\u5165\u95e8"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_8","text":"","title":"\u6570\u5b66\u8fdb\u9636"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_9","text":"\u96c6\u5408\u8bba\u3001\u56fe\u8bba\u3001\u6982\u7387\u8bba\u7b49\u7b49\u662f\u7b97\u6cd5\u63a8\u5bfc\u4e0e\u8bc1\u660e\u7684\u91cd\u8981\u5de5\u5177\uff0c\u4e5f\u662f\u540e\u7eed\u9ad8\u9636\u6570\u5b66\u8bfe\u7a0b\u7684\u57fa\u7840\u3002\u4f46\u6211\u89c9\u5f97\u8fd9\u7c7b\u8bfe\u7a0b\u7684\u8bb2\u6388\u5f88\u5bb9\u6613\u843d\u5165\u7406\u8bba\u5316\u4e0e\u5f62\u5f0f\u5316\u7684\u7aa0\u81fc\uff0c\u8ba9\u8bfe\u5802\u6210\u4e3a\u5b9a\u7406\u7ed3\u8bba\u7684\u5806\u780c\uff0c\u800c\u65e0\u6cd5\u4f7f\u5b66\u751f\u6df1\u523b\u628a\u63e1\u7406\u8bba\u7684\u672c\u8d28\uff0c\u8fdb\u800c\u9020\u6210\u5b66\u4e86\u5c31\u80cc\uff0c\u8003\u4e86\u5c31\u5fd8\u7684\u602a\u5708\u3002\u5982\u679c\u80fd\u5728\u7406\u8bba\u6559\u5b66\u4e2d\u7a7f\u63d2\u7b97\u6cd5\u8fd0\u7528\u5b9e\u4f8b\uff0c\u5b66\u751f\u5728\u62d3\u5c55\u7b97\u6cd5\u77e5\u8bc6\u7684\u540c\u65f6\u4e5f\u80fd\u7aa5\u89c1\u7406\u8bba\u7684\u529b\u91cf\u548c\u9b45\u529b\u3002 UCB CS70 : discrete Math and probability theory \u548c UCB CS126 : Probability theory \u662f UC Berkeley \u7684\u6982\u7387\u8bba\u8bfe\u7a0b\uff0c\u524d\u8005\u8986\u76d6\u4e86\u79bb\u6563\u6570\u5b66\u548c\u6982\u7387\u8bba\u57fa\u7840\uff0c\u540e\u8005\u5219\u6d89\u53ca\u968f\u673a\u8fc7\u7a0b\u4ee5\u53ca\u6df1\u5165\u7684\u7406\u8bba\u5185\u5bb9\u3002\u4e24\u8005\u90fd\u975e\u5e38\u6ce8\u91cd\u7406\u8bba\u548c\u5b9e\u8df5\u7684\u7ed3\u5408\uff0c\u6709\u4e30\u5bcc\u7684\u7b97\u6cd5\u5b9e\u9645\u8fd0\u7528\u5b9e\u4f8b\uff0c\u540e\u8005\u8fd8\u6709\u5927\u91cf\u7684Python\u7f16\u7a0b\u4f5c\u4e1a\u6765\u8ba9\u5b66\u751f\u8fd0\u7528\u6982\u7387\u8bba\u7684\u77e5\u8bc6\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u3002","title":"\u79bb\u6563\u6570\u5b66\u4e0e\u6982\u7387\u8bba"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_10","text":"\u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u57f9\u517b\u8ba1\u7b97\u601d\u7ef4\u662f\u5f88\u91cd\u8981\u7684\uff0c\u5b9e\u9645\u95ee\u9898\u7684\u5efa\u6a21\u3001\u79bb\u6563\u5316\uff0c\u8ba1\u7b97\u673a\u7684\u6a21\u62df\u3001\u5206\u6790\uff0c\u662f\u4e00\u9879\u5f88\u91cd\u8981\u7684\u80fd\u529b\u3002\u800c\u8fd9\u4e24\u5e74\u5f00\u59cb\u98ce\u9761\u7684\uff0c\u7531 MIT \u6253\u9020\u7684 Julia \u7f16\u7a0b\u8bed\u8a00\u4ee5\u5176 C \u4e00\u6837\u7684\u901f\u5ea6\u548c Python \u4e00\u6837\u53cb\u597d\u7684\u8bed\u6cd5\u5728\u6570\u503c\u8ba1\u7b97\u9886\u57df\u6709\u4e00\u7edf\u5929\u4e0b\u4e4b\u52bf\uff0cMIT \u7684\u8bb8\u591a\u6570\u5b66\u8bfe\u7a0b\u4e5f\u5f00\u59cb\u7528 Julia \u4f5c\u4e3a\u6559\u5b66\u5de5\u5177\uff0c\u628a\u8270\u6df1\u7684\u6570\u5b66\u7406\u8bba\u7528\u76f4\u89c2\u6e05\u6670\u7684\u4ee3\u7801\u5c55\u793a\u51fa\u6765\u3002 ComputationalThinking \u662f MIT \u5f00\u8bbe\u7684\u4e00\u95e8\u8ba1\u7b97\u601d\u7ef4\u5165\u95e8\u8bfe\uff0c\u6240\u6709\u8bfe\u7a0b\u5185\u5bb9\u5168\u90e8\u5f00\u6e90\uff0c\u53ef\u4ee5\u5728\u8bfe\u7a0b\u7f51\u7ad9\u76f4\u63a5\u8bbf\u95ee\u3002\u8fd9\u95e8\u8bfe\u5229\u7528 Julia \u7f16\u7a0b\u8bed\u8a00\uff0c\u5728\u56fe\u50cf\u5904\u7406\u3001\u793e\u4f1a\u79d1\u5b66\u4e0e\u6570\u636e\u79d1\u5b66\u3001\u6c14\u5019\u5b66\u5efa\u6a21\u4e09\u4e2a topic \u4e0b\u5e26\u9886\u5b66\u751f\u7406\u89e3\u7b97\u6cd5\u3001\u6570\u5b66\u5efa\u6a21\u3001\u6570\u636e\u5206\u6790\u3001\u4ea4\u4e92\u8bbe\u8ba1\u3001\u56fe\u4f8b\u5c55\u793a\uff0c\u8ba9\u5b66\u751f\u4f53\u9a8c\u8ba1\u7b97\u4e0e\u79d1\u5b66\u7684\u7f8e\u5999\u7ed3\u5408\u3002\u5185\u5bb9\u867d\u7136\u4e0d\u96be\uff0c\u4f46\u7ed9\u6211\u6700\u6df1\u523b\u7684\u611f\u53d7\u5c31\u662f\uff0c\u79d1\u5b66\u7684\u9b45\u529b\u5e76\u4e0d\u662f\u6545\u5f04\u7384\u865a\u7684\u8270\u6df1\u7406\u8bba\uff0c\u4e0d\u662f\u8bd8\u5c48\u8071\u7259\u7684\u672f\u8bed\u884c\u8bdd\uff0c\u800c\u662f\u7528\u76f4\u89c2\u751f\u52a8\u7684\u6848\u4f8b\uff0c\u7528\u7b80\u7ec3\u6df1\u523b\u7684\u8bed\u8a00\uff0c\u8ba9\u6bcf\u4e2a\u666e\u901a\u4eba\u90fd\u80fd\u7406\u89e3\u3002 \u4e0a\u5b8c\u4e0a\u9762\u7684\u4f53\u9a8c\u8bfe\u4e4b\u540e\uff0c\u5982\u679c\u610f\u72b9\u672a\u5c3d\u7684\u8bdd\uff0c\u4e0d\u59a8\u8bd5\u8bd5 MIT \u7684 18.330 : Introduction to numerical analysis \uff0c\u8fd9\u95e8\u8bfe\u7684\u7f16\u7a0b\u4f5c\u4e1a\u540c\u6837\u4f1a\u7528 Julia \u7f16\u7a0b\u8bed\u8a00\uff0c\u4e0d\u8fc7\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u90fd\u4e0a\u4e86\u4e00\u4e2a\u53f0\u9636\u3002\u5185\u5bb9\u6d89\u53ca\u4e86\u6d6e\u70b9\u7f16\u7801\u3001Root finding\u3001\u7ebf\u6027\u7cfb\u7edf\u3001\u5fae\u5206\u65b9\u7a0b\u7b49\u7b49\u65b9\u9762\uff0c\u6574\u95e8\u8bfe\u7684\u4e3b\u65e8\u5c31\u662f\u8ba9\u4f60\u5229\u7528\u79bb\u6563\u5316\u7684\u8ba1\u7b97\u673a\u8868\u793a\u53bb\u4f30\u8ba1\u548c\u903c\u8fd1\u4e00\u4e2a\u6570\u5b66\u4e0a\u8fde\u7eed\u7684\u6982\u5ff5\u3002\u8fd9\u95e8\u8bfe\u7684\u6559\u6388\u8fd8\u4e13\u95e8\u64b0\u5199\u4e86\u4e00\u672c\u914d\u5957\u7684\u5f00\u6e90\u6559\u6750 Fundamentals of Numerical Computation \uff0c\u91cc\u9762\u9644\u6709\u4e30\u5bcc\u7684 Julia \u4ee3\u7801\u5b9e\u4f8b\u548c\u4e25\u8c28\u7684\u516c\u5f0f\u63a8\u5bfc\u3002 \u5982\u679c\u4f60\u8fd8\u610f\u72b9\u672a\u5c3d\u7684\u8bdd\uff0c\u8fd8\u6709 MIT \u7684\u7814\u7a76\u751f\u8bfe\u7a0b 18.335: Introduction to numerical method \u4f9b\u4f60\u53c2\u8003\u3002","title":"\u6570\u503c\u5206\u6790"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_11","text":"\u5982\u679c\u4e16\u95f4\u4e07\u7269\u7684\u8fd0\u52a8\u53d1\u5c55\u90fd\u80fd\u7528\u65b9\u7a0b\u6765\u523b\u753b\u548c\u63cf\u8ff0\uff0c\u8fd9\u662f\u4e00\u4ef6\u591a\u4e48\u9177\u7684\u4e8b\u60c5\u5440\uff01\u867d\u7136\u51e0\u4e4e\u4efb\u4f55\u4e00\u6240\u5b66\u6821\u7684 CS \u57f9\u517b\u65b9\u6848\u4e2d\u90fd\u6ca1\u6709\u5fae\u5206\u65b9\u7a0b\u76f8\u5173\u7684\u5fc5\u4fee\u8bfe\u7a0b\uff0c\u4f46\u6211\u8fd8\u662f\u89c9\u5f97\u638c\u63e1\u5b83\u4f1a\u8d4b\u4e88\u4f60\u4e00\u4e2a\u65b0\u7684\u89c6\u89d2\u6765\u5ba1\u89c6\u8fd9\u4e2a\u4e16\u754c\u3002 \u7531\u4e8e\u5fae\u5206\u65b9\u7a0b\u4e2d\u5f80\u5f80\u4f1a\u7528\u5230\u5f88\u591a\u590d\u53d8\u51fd\u6570\u7684\u77e5\u8bc6\uff0c\u6240\u4ee5\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003 MIT18.04: Complex variables functions \u7684\u8bfe\u7a0b notes \u6765\u8865\u9f50\u5148\u4fee\u77e5\u8bc6\u3002 MIT18.03: differential equations ) \u4e3b\u8981\u8986\u76d6\u4e86\u5e38\u5fae\u5206\u65b9\u7a0b\u7684\u6c42\u89e3\uff0c\u5728\u6b64\u57fa\u7840\u4e4b\u4e0a MIT18.152: Partial differential equations ) \u5219\u4f1a\u6df1\u5165\u504f\u5fae\u5206\u65b9\u7a0b\u7684\u5efa\u6a21\u4e0e\u6c42\u89e3\u3002\u638c\u63e1\u4e86\u5fae\u5206\u65b9\u7a0b\u8fd9\u4e00\u6709\u5229\u5de5\u5177\uff0c\u76f8\u4fe1\u5bf9\u4e8e\u4f60\u7684\u5b9e\u9645\u95ee\u9898\u7684\u5efa\u6a21\u80fd\u529b\u4ee5\u53ca\u4ece\u4f17\u591a\u566a\u58f0\u53d8\u91cf\u4e2d\u628a\u63e1\u672c\u8d28\u7684\u76f4\u89c9\u90fd\u4f1a\u6709\u5f88\u5927\u5e2e\u52a9\u3002","title":"\u5fae\u5206\u65b9\u7a0b"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_12","text":"\u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u6211\u7ecf\u5e38\u542c\u5230\u6570\u5b66\u65e0\u7528\u8bba\u7684\u8bba\u65ad\uff0c\u5bf9\u6b64\u6211\u4e0d\u6562\u82df\u540c\u4f46\u4e5f\u65e0\u6743\u53cd\u5bf9\uff0c\u4f46\u82e5\u51e1\u4e8b\u90fd\u786c\u8981\u4e89\u51fa\u4e2a\u6709\u7528\u548c\u65e0\u7528\u7684\u533a\u522b\u6765\uff0c\u5012\u4e5f\u7740\u5b9e\u65e0\u8da3\uff0c\u56e0\u6b64\u4e0b\u9762\u8fd9\u4e9b\u9762\u5411\u9ad8\u5e74\u7ea7\u751a\u81f3\u7814\u7a76\u751f\u7684\u6570\u5b66\u8bfe\u7a0b\uff0c\u5927\u5bb6\u6309\u5174\u8da3\u81ea\u53d6\u6240\u9700\u3002","title":"\u6570\u5b66\u9ad8\u9636"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_13","text":"Standford EE364A: Convex Optimization","title":"\u51f8\u4f18\u5316"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_14","text":"MIT6.441: Information Theory","title":"\u4fe1\u606f\u8bba"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_15","text":"MIT18.650: Statistics for Applications","title":"\u5e94\u7528\u7edf\u8ba1\u5b66"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_16","text":"MIT18.781: Theory of Numbers","title":"\u521d\u7b49\u6570\u8bba"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_17","text":"Standford CS255: Cryptography","title":"\u5bc6\u7801\u5b66"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_18","text":"Languages are tools, you choose the right tool to do the right thing. Since there's no universally perfect tool, there's no universally perfect language.","title":"\u7f16\u7a0b\u5165\u95e8"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#shell","text":"MIT-Missing-Semester","title":"Shell"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#python","text":"Harvard CS50: This is CS50x \u6700\u597d\u7684\u8ba1\u7b97\u673a\u57fa\u7840\u5165\u95e8\u8bfe\uff0c\u4f60\u7edd\u5bf9\u4f1a\u7231\u4e0a\u7684\u3002 UCB CS61A: Structure and Interpretation of Computer Programs","title":"Python"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#c","text":"Stanford CS106B/X: Programming Abstractions Stanford CS106L: Standard C++ Programming","title":"C++"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#rust","text":"Stanford CS110L: Safety in Systems Programming","title":"Rust"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#ocaml","text":"Cornell CS3110 textbook: Functional Programming in OCaml","title":"OCaml"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_19","text":"","title":"\u7535\u5b50\u57fa\u7840"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_20","text":"\u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u4e86\u89e3\u4e00\u4e9b\u57fa\u7840\u7684\u7535\u8def\u77e5\u8bc6\uff0c\u611f\u53d7\u4ece\u4f20\u611f\u5668\u6536\u96c6\u6570\u636e\u5230\u6570\u636e\u5206\u6790\u518d\u5230\u7b97\u6cd5\u9884\u6d4b\u6574\u6761\u6d41\u6c34\u7ebf\uff0c\u5bf9\u4e8e\u540e\u7eed\u77e5\u8bc6\u7684\u5b66\u4e60\u4ee5\u53ca\u8ba1\u7b97\u601d\u7ef4\u7684\u57f9\u517b\u8fd8\u662f\u5f88\u6709\u5e2e\u52a9\u7684\u3002 EE16A&B: Designing Information Devices and Systems I&II \u662f\u4f2f\u514b\u5229 EE \u5b66\u751f\u7684\u5927\u4e00\u5165\u95e8\u8bfe\uff0c\u5176\u4e2d EE16A \u6ce8\u91cd\u901a\u8fc7\u7535\u8def\u4ece\u5b9e\u9645\u73af\u5883\u4e2d\u6536\u96c6\u548c\u5206\u6790\u6570\u636e\uff0c\u800c EE16B \u5219\u4fa7\u91cd\u4ece\u8fd9\u4e9b\u6536\u96c6\u5230\u7684\u6570\u636e\u8fdb\u884c\u5206\u6790\u5e76\u505a\u51fa\u9884\u6d4b\u884c\u4e3a\u3002","title":"\u7535\u8def\u57fa\u7840"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_21","text":"\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u662f\u4e00\u95e8\u6211\u89c9\u5f97\u975e\u5e38\u503c\u5f97\u4e00\u4e0a\u7684\u8bfe\uff0c\u6700\u521d\u5b66\u5b83\u53ea\u662f\u4e3a\u4e86\u6ee1\u8db3\u6211\u5bf9\u5085\u91cc\u53f6\u53d8\u6362\u7684\u597d\u5947\uff0c\u4f46\u5b66\u5b8c\u4e4b\u540e\u6211\u624d\u4e0d\u7981\u611f\u53f9\uff0c\u5085\u7acb\u53f6\u53d8\u6362\u7ed9\u6211\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5168\u65b0\u7684\u89c6\u89d2\u53bb\u770b\u5f85\u8fd9\u4e2a\u4e16\u754c\uff0c\u5c31\u5982\u540c\u5fae\u5206\u65b9\u7a0b\u4e00\u6837\uff0c\u8ba9\u4f60\u6c89\u6d78\u5728\u7528\u6570\u5b66\u53bb\u7cbe\u786e\u63cf\u7ed8\u548c\u523b\u753b\u8fd9\u4e2a\u4e16\u754c\u7684\u4f18\u96c5\u4e0e\u795e\u5947\u4e4b\u4e2d\u3002 MIT 6.003: signal and systems \u63d0\u4f9b\u4e86\u5168\u90e8\u7684\u8bfe\u7a0b\u5f55\u5f71\u3001\u4e66\u9762\u4f5c\u4e1a\u4ee5\u53ca\u7b54\u6848\u3002\u4e5f\u53ef\u4ee5\u53bb\u770b\u8fd9\u95e8\u8bfe\u7684 \u8fdc\u53e4\u7248\u672c \u800c UCB EE120: Signal and Systems \u5173\u4e8e\u5085\u7acb\u53f6\u53d8\u6362\u7684 notes \u5199\u5f97\u975e\u5e38\u597d\uff0c\u5e76\u4e14\u63d0\u4f9b\u4e866 \u4e2a\u975e\u5e38\u6709\u8da3\u7684 Python \u7f16\u7a0b\u4f5c\u4e1a\uff0c\u8ba9\u4f60\u5b9e\u8df5\u4e2d\u8fd0\u7528\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u7684\u7406\u8bba\u4e0e\u7b97\u6cd5\u3002","title":"\u4fe1\u53f7\u4e0e\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_22","text":"","title":"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_23","text":"UCB CS61B: Data Structures and Algorithms Coursera: Algorithms I & II","title":"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_24","text":"UCB CS170: Efficient Algorithms and Intractable Problems","title":"\u7b97\u6cd5\u8bbe\u8ba1\u4e0e\u5206\u6790"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_25","text":"","title":"\u8f6f\u4ef6\u5de5\u7a0b"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_26","text":"\u4e00\u4efd\u201c\u80fd\u8dd1\u201d\u7684\u4ee3\u7801\uff0c\u548c\u4e00\u4efd\u9ad8\u8d28\u91cf\u7684\u5de5\u4e1a\u7ea7\u4ee3\u7801\u662f\u6709\u672c\u8d28\u533a\u522b\u7684\u3002\u56e0\u6b64\u6211\u975e\u5e38\u63a8\u8350\u4f4e\u5e74\u7ea7\u7684\u540c\u5b66\u5b66\u4e60\u4e00\u4e0b MIT 6.031: Software Construction \u8fd9\u95e8\u8bfe\uff0c\u5b83\u4f1a\u4ee5 Java \u8bed\u8a00\u4e3a\u57fa\u7840\uff0c\u4ee5\u4e30\u5bcc\u7ec6\u81f4\u7684\u9605\u8bfb\u6750\u6599\u548c\u7cbe\u5fc3\u8bbe\u8ba1\u7684\u7f16\u7a0b\u7ec3\u4e60\u4f20\u6388\u5982\u4f55\u7f16\u5199 \u4e0d\u6613\u51fa bug\u3001\u7b80\u660e\u6613\u61c2\u3001\u6613\u4e8e\u7ef4\u62a4\u4fee\u6539 \u7684\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5927\u5230\u5b8f\u89c2\u6570\u636e\u7ed3\u6784\u8bbe\u8ba1\uff0c\u5c0f\u5230\u5982\u4f55\u5199\u6ce8\u91ca\uff0c\u9075\u5faa\u8fd9\u4e9b\u524d\u4eba\u603b\u7ed3\u7684\u7ec6\u8282\u548c\u7ecf\u9a8c\uff0c\u5bf9\u4e8e\u4f60\u6b64\u540e\u7684\u7f16\u7a0b\u751f\u6daf\u5927\u6709\u88e8\u76ca\u3002","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_27","text":"\u5f53\u7136\uff0c\u5982\u679c\u4f60\u60f3\u7cfb\u7edf\u6027\u5730\u4e0a\u4e00\u95e8\u8f6f\u4ef6\u5de5\u7a0b\u7684\u8bfe\u7a0b\uff0c\u90a3\u6211\u63a8\u8350\u7684\u662f\u4f2f\u514b\u5229\u7684 UCB CS169: software engineering \u3002\u4f46\u9700\u8981\u63d0\u9192\u7684\u662f\uff0c\u548c\u5927\u591a\u5b66\u6821\uff08\u5305\u62ec\u8d35\u6821\uff09\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u7a0b\u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe\u4e0d\u4f1a\u6d89\u53ca\u4f20\u7edf\u7684 design and document \u6a21\u5f0f\uff0c\u5373\u5f3a\u8c03\u5404\u79cd\u7c7b\u56fe\u3001\u6d41\u7a0b\u56fe\u53ca\u6587\u6863\u8bbe\u8ba1\uff0c\u800c\u662f\u91c7\u7528\u8fd1\u4e9b\u5e74\u6d41\u884c\u8d77\u6765\u7684\u5c0f\u56e2\u961f\u5feb\u901f\u8fed\u4ee3 Agile Develepment \u5f00\u53d1\u6a21\u5f0f\u4ee5\u53ca\u5229\u7528\u4e91\u5e73\u53f0\u7684 Software as a service \u670d\u52a1\u6a21\u5f0f\u3002","title":"\u4e13\u4e1a\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_28","text":"","title":"\u4f53\u7cfb\u7ed3\u6784"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_29","text":"\u4ece\u5c0f\u6211\u5c31\u4e00\u76f4\u542c\u8bf4\uff0c\u8ba1\u7b97\u673a\u7684\u4e16\u754c\u662f\u7531 01 \u6784\u6210\u7684\uff0c\u6211\u4e0d\u7406\u89e3\u4f46\u5927\u53d7\u9707\u64bc\u3002\u5982\u679c\u4f60\u7684\u5185\u5fc3\u4e5f\u6000\u6709\u8fd9\u4efd\u597d\u5947\uff0c\u4e0d\u59a8\u82b1\u4e00\u5230\u4e24\u4e2a\u6708\u7684\u65f6\u95f4\u5b66\u4e60 Coursera: Nand2Tetris \u8fd9\u95e8\u65e0\u95e8\u69db\u7684\u8ba1\u7b97\u673a\u8bfe\u7a0b\u3002\u8fd9\u95e8\u9ebb\u96c0\u867d\u5c0f\u4e94\u810f\u4ff1\u5168\u7684\u8bfe\u7a0b\u4f1a\u4ece 01 \u5f00\u59cb\u8ba9\u4f60\u4eb2\u624b\u9020\u51fa\u4e00\u53f0\u8ba1\u7b97\u673a\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c\u4fc4\u7f57\u65af\u65b9\u5757\u5c0f\u6e38\u620f\u3002\u4e00\u95e8\u8bfe\u91cc\u6db5\u76d6\u4e86\u7f16\u8bd1\u3001\u865a\u62df\u673a\u3001\u6c47\u7f16\u3001\u4f53\u7cfb\u7ed3\u6784\u3001\u6570\u5b57\u7535\u8def\u3001\u903b\u8f91\u95e8\u7b49\u7b49\u4ece\u4e0a\u81f3\u4e0b\u3001\u4ece\u8f6f\u81f3\u786c\u7684\u5404\u7c7b\u77e5\u8bc6\uff0c\u975e\u5e38\u5168\u9762\u3002\u96be\u5ea6\u4e0a\u4e5f\u662f\u901a\u8fc7\u7cbe\u5fc3\u7684\u8bbe\u8ba1\uff0c\u7565\u53bb\u4e86\u4f17\u591a\u73b0\u4ee3\u8ba1\u7b97\u673a\u590d\u6742\u7684\u7ec6\u8282\uff0c\u63d0\u53d6\u51fa\u4e86\u6700\u6838\u5fc3\u672c\u8d28\u7684\u4e1c\u897f\uff0c\u529b\u56fe\u8ba9\u6bcf\u4e2a\u4eba\u90fd\u80fd\u7406\u89e3\u3002\u5728\u4f4e\u5e74\u7ea7\uff0c\u5982\u679c\u5c31\u80fd\u4ece\u5b8f\u89c2\u4e0a\u5efa\u7acb\u5bf9\u6574\u4e2a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7684\u9e1f\u77b0\u56fe\uff0c\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_30","text":"\u5f53\u7136\uff0c\u5982\u679c\u60f3\u6df1\u5165\u73b0\u4ee3\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u7684\u590d\u6742\u7ec6\u8282\uff0c\u8fd8\u5f97\u4e0a\u4e00\u95e8\u5927\u5b66\u672c\u79d1\u96be\u5ea6\u7684\u8bfe\u7a0b UCB CS61C: Great Ideas in Computer Architecture \u3002UC Berkeley \u4f5c\u4e3a RISC-V \u67b6\u6784\u7684\u53d1\u6e90\u5730\uff0c\u5728\u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u7b97\u5f97\u4e0a\u9996\u5c48\u4e00\u6307\u3002\u5176\u8bfe\u7a0b\u975e\u5e38\u6ce8\u91cd\u5b9e\u8df5\uff0c\u4f60\u4f1a\u5728 Project \u4e2d\u624b\u5199\u6c47\u7f16\u6784\u9020\u795e\u7ecf\u7f51\u7edc\uff0c\u4ece\u96f6\u5f00\u59cb\u642d\u5efa\u4e00\u4e2a CPU\uff0c\u8fd9\u4e9b\u5b9e\u8df5\u90fd\u4f1a\u8ba9\u4f60\u5bf9\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u6709\u66f4\u4e3a\u6df1\u5165\u7684\u7406\u89e3\uff0c\u800c\u4e0d\u662f\u4ec5\u505c\u7559\u4e8e\u201c\u53d6\u6307\u8bd1\u7801\u6267\u884c\u8bbf\u5b58\u5199\u56de\u201d\u7684\u5355\u8c03\u80cc\u8bf5\u91cc\u3002","title":"\u4e13\u4e1a\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_31","text":"\u8ba1\u7b97\u673a\u7cfb\u7edf\u662f\u4e00\u4e2a\u5e9e\u6742\u800c\u6df1\u523b\u7684\u4e3b\u9898\uff0c\u5728\u6df1\u5165\u5b66\u4e60\u67d0\u4e2a\u7ec6\u5206\u9886\u57df\u4e4b\u524d\uff0c\u5bf9\u5404\u4e2a\u9886\u57df\u6709\u4e00\u4e2a\u5b8f\u89c2\u6982\u5ff5\u6027\u7684\u7406\u89e3\uff0c\u5bf9\u4e00\u4e9b\u901a\u7528\u6027\u7684\u8bbe\u8ba1\u539f\u5219\u6709\u6240\u77e5\u6653\uff0c\u4f1a\u8ba9\u4f60\u5728\u4e4b\u540e\u7684\u6df1\u5165\u5b66\u4e60\u4e2d\u4e0d\u65ad\u5f3a\u5316\u4e00\u4e9b\u6700\u4e3a\u6838\u5fc3\u4e43\u81f3\u54f2\u5b66\u7684\u6982\u5ff5\uff0c\u800c\u4e0d\u4f1a\u684e\u688f\u4e8e\u590d\u6742\u7684\u5185\u90e8\u7ec6\u8282\u548c\u5404\u79cd trick\u3002\u56e0\u4e3a\u5728\u6211\u770b\u6765\uff0c\u5b66\u4e60\u7cfb\u7edf\u6700\u5173\u952e\u7684\u8fd8\u662f\u60f3\u8ba9\u4f60\u9886\u609f\u5230\u8fd9\u4e9b\u6700\u6838\u5fc3\u7684\u4e1c\u897f\uff0c\u4ece\u800c\u80fd\u591f\u8bbe\u8ba1\u548c\u5b9e\u73b0\u51fa\u5c5e\u4e8e\u81ea\u5df1\u7684\u7cfb\u7edf\u3002 MIT6.033: System Engineering \u662f MIT \u7684\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u4e3b\u9898\u6d89\u53ca\u4e86\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f51\u7edc\u3001\u5206\u5e03\u5f0f\u548c\u7cfb\u7edf\u5b89\u5168\uff0c\u9664\u4e86\u77e5\u8bc6\u70b9\u7684\u4f20\u6388\u5916\uff0c\u8fd9\u95e8\u8bfe\u8fd8\u4f1a\u8bb2\u6388\u4e00\u4e9b\u5199\u4f5c\u548c\u8868\u8fbe\u4e0a\u7684\u6280\u5de7\uff0c\u8ba9\u4f60\u5b66\u4f1a\u5982\u4f55\u8bbe\u8ba1\u5e76\u5411\u522b\u4eba\u4ecb\u7ecd\u548c\u5206\u6790\u81ea\u5df1\u7684\u7cfb\u7edf\u3002\u8fd9\u672c\u4e66\u914d\u5957\u7684\u6559\u6750 Principles of Computer System Design: An Introduction \u4e5f\u5199\u5f97\u975e\u5e38\u597d\uff0c\u63a8\u8350\u5927\u5bb6\u9605\u8bfb\u3002 CMU 15-213: Introduction to Computer System \u662f CMU \u7684\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u5185\u5bb9\u8986\u76d6\u4e86\u4f53\u7cfb\u7ed3\u6784\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u94fe\u63a5\u3001\u5e76\u884c\u3001\u7f51\u7edc\u7b49\u7b49\uff0c\u517c\u5177\u5e7f\u5ea6\u548c\u6df1\u5ea6\uff0c\u914d\u5957\u7684\u6559\u6750 Computer Systems: A Programmer's Perspective \u4e5f\u662f\u8d28\u91cf\u6781\u9ad8\uff0c\u5f3a\u70c8\u5efa\u8bae\u9605\u8bfb\u3002","title":"\u7cfb\u7edf\u5165\u95e8"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_32","text":"\u64cd\u4f5c\u7cfb\u7edf\u4f5c\u4e3a\u5404\u7c7b\u7eb7\u7e41\u590d\u6742\u7684\u5e95\u5c42\u786c\u4ef6\u865a\u62df\u5316\u51fa\u4e00\u5957\u89c4\u8303\u4f18\u96c5\u7684\u62bd\u8c61\uff0c\u7ed9\u6240\u6709\u5e94\u7528\u8f6f\u4ef6\u63d0\u4f9b\u4e30\u5bcc\u7684\u529f\u80fd\u652f\u6301\u3002\u4e86\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u8bbe\u8ba1\u539f\u5219\u548c\u5185\u90e8\u539f\u7406\u5bf9\u4e8e\u4e00\u4e2a\u4e0d\u6ee1\u8db3\u4e8e\u5f53\u8c03\u5305\u4fa0\u7684\u7a0b\u5e8f\u5458\u6765\u8bf4\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002\u51fa\u4e8e\u5bf9\u64cd\u4f5c\u7cfb\u7edf\u7684\u70ed\u7231\uff0c\u6211\u4e0a\u8fc7\u56fd\u5185\u5916\u5f88\u591a\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\uff0c\u5b83\u4eec\u5404\u6709\u4fa7\u91cd\u548c\u4f18\u52a3\uff0c\u5927\u5bb6\u53ef\u4ee5\u6839\u636e\u5174\u8da3\u5404\u53d6\u6240\u9700\u3002 MIT 6.S081: Operating System Engineering \uff0cMIT \u8457\u540d PDOS \u5b9e\u9a8c\u5ba4\u51fa\u54c1\uff0c11 \u4e2a Project \u8ba9\u4f60\u5728\u4e00\u4e2a\u5b9e\u73b0\u975e\u5e38\u4f18\u96c5\u7684\u7c7bUnix\u64cd\u4f5c\u7cfb\u7edfxv6\u4e0a\u589e\u52a0\u5404\u7c7b\u529f\u80fd\u6a21\u5757\u3002\u8fd9\u95e8\u8bfe\u4e5f\u8ba9\u6211\u6df1\u523b\u8ba4\u8bc6\u5230\uff0c\u505a\u7cfb\u7edf\u4e0d\u662f\u9760 PPT \u5ff5\u51fa\u6765\u7684\uff0c\u662f\u5f97\u51e0\u4e07\u884c\u4ee3\u7801\u4e00\u70b9\u70b9\u7d2f\u8d77\u6765\u7684\u3002 UCB CS162: Operating System \uff0c\u4f2f\u514b\u5229\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\uff0c\u91c7\u7528\u548c Stanford \u540c\u6837\u7684 Project \u2014\u2014 \u4e00\u4e2a\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf Pintos\u3002\u6211\u4f5c\u4e3a\u5317\u4eac\u5927\u5b662022\u5e74\u6625\u5b63\u5b66\u671f\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9a8c\u73ed\u7684\u52a9\u6559\uff0c\u5f15\u5165\u5e76\u6539\u5584\u4e86\u8fd9\u4e2a Project\uff0c\u8bfe\u7a0b\u8d44\u6e90\u4e5f\u4f1a\u5168\u90e8\u5f00\u6e90\uff0c\u5177\u4f53\u53c2\u89c1 \u8bfe\u7a0b\u7f51\u7ad9 \u3002 NJU: Operating System Design and Implementation \uff0c\u5357\u4eac\u5927\u5b66\u7684\u848b\u708e\u5ca9\u8001\u5e08\u5f00\u8bbe\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u3002\u848b\u8001\u5e08\u4ee5\u5176\u72ec\u5230\u7684\u89c6\u89d2","title":"\u64cd\u4f5c\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_33","text":"\u60f3\u5fc5\u8fd9\u4e24\u5e74\u5404\u7c7b CS \u8bb2\u5ea7\u91cc\u6700\u5e38\u542c\u5230\u7684\u8bdd\u5c31\u662f\u201c\u6469\u5c14\u5b9a\u5f8b\u6b63\u5728\u8d70\u5411\u7ec8\u7ed3\u201d\uff0c\u6b64\u8bdd\u4e0d\u5047\uff0c\u5f53\u5355\u6838\u80fd\u529b\u8fbe\u5230\u4e0a\u9650\u65f6\uff0c\u591a\u6838\u4e43\u81f3\u4f17\u6838\u67b6\u6784\u5982\u65e5\u4e2d\u5929\u3002\u786c\u4ef6\u7684\u53d8\u5316\u5e26\u6765\u7684\u662f\u4e0a\u5c42\u7f16\u7a0b\u903b\u8f91\u7684\u9002\u5e94\u4e0e\u6539\u53d8\uff0c\u8981\u60f3\u5145\u5206\u5229\u7528\u786c\u4ef6\u6027\u80fd\uff0c\u7f16\u5199\u5e76\u884c\u7a0b\u5e8f\u51e0\u4e4e\u6210\u4e86\u7a0b\u5e8f\u5458\u7684\u5fc5\u5907\u6280\u80fd\u3002\u4e0e\u6b64\u540c\u65f6\uff0c\u6df1\u5ea6\u5b66\u4e60\u7684\u5174\u8d77\u5bf9\u8ba1\u7b97\u673a\u7b97\u529b\u4e0e\u5b58\u50a8\u7684\u8981\u6c42\u90fd\u8fbe\u5230\u4e86\u524d\u6240\u672a\u6709\u7684\u9ad8\u5ea6\uff0c\u5927\u89c4\u6a21\u96c6\u7fa4\u7684\u90e8\u7f72\u548c\u4f18\u5316\u4e5f\u6210\u4e3a\u70ed\u95e8\u6280\u672f\u8bdd\u9898\u3002","title":"\u5e76\u884c\u4e0e\u5206\u5e03\u5f0f\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_34","text":"CMU 15-418/Stanford CS149: Parallel Computing","title":"\u5e76\u884c\u8ba1\u7b97"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_35","text":"MIT 6.824: Distributed System","title":"\u5206\u5e03\u5f0f\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_36","text":"\u4e0d\u77e5\u9053\u4f60\u5f53\u5e74\u9009\u62e9\u8ba1\u7b97\u673a\u662f\u4e0d\u662f\u56e0\u4e3a\u6000\u7740\u4e00\u4e2a\u4e2d\u4e8c\u7684\u9ed1\u5ba2\u68a6\u60f3\uff0c\u4f46\u73b0\u5b9e\u5374\u662f\u6210\u4e3a\u9ed1\u5ba2\u9053\u963b\u4e14\u957f\u3002","title":"\u7cfb\u7edf\u5b89\u5168"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_37","text":"UCB CS161: Computer Security \u662f\u4f2f\u514b\u5229\u7684\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u4f1a\u6db5\u76d6\u6808\u653b\u51fb\u3001\u5bc6\u7801\u5b66\u3001\u7f51\u7ad9\u5b89\u5168\u3001\u7f51\u7edc\u5b89\u5168\u7b49\u7b49\u5185\u5bb9\u3002","title":"\u7406\u8bba"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_38","text":"\u638c\u63e1\u8fd9\u4e9b\u7406\u8bba\u77e5\u8bc6\u4e4b\u540e\uff0c\u8fd8\u9700\u8981\u5728\u5b9e\u8df5\u4e2d\u57f9\u517b\u548c\u953b\u70bc\u8fd9\u4e9b\u201c\u9ed1\u5ba2\u7d20\u517b\u201d\u3002 CTF \u593a\u65d7\u8d5b \u662f\u4e00\u9879\u6bd4\u8f83\u70ed\u95e8\u7684\u7cfb\u7edf\u5b89\u5168\u6bd4\u8d5b\uff0c\u8d5b\u9898\u4e2d\u4f1a\u878d\u4f1a\u8d2f\u901a\u5730\u8003\u5bdf\u4f60\u5bf9\u8ba1\u7b97\u673a\u5404\u4e2a\u9886\u57df\u77e5\u8bc6\u7684\u7406\u89e3\u548c\u8fd0\u7528\u3002\u5317\u5927\u4eca\u5e74\u4e5f\u6210\u529f\u4e3e\u529e\u4e86 \u7b2c 0 \u5c4a\u548c\u7b2c 1 \u5c4a \uff0c\u9f13\u52b1\u5927\u5bb6\u540e\u671f\u8e0a\u8dc3\u53c2\u4e0e\uff0c\u5728\u5b9e\u8df5\u4e2d\u63d0\u9ad8\u81ea\u5df1\u3002\u4e0b\u9762\u5217\u4e3e\u4e00\u4e9b\u6211\u5e73\u65f6\u5b66\u4e60\uff08\u6478\u9c7c\uff09\u7528\u5230\u7684\u8d44\u6e90\uff1a CTF-wiki CTF-101 Hacker-101","title":"\u5b9e\u8df5"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_39","text":"\u8ba1\u7f51\u8457\u540d\u6559\u6750\u300a\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u300b\u7684\u914d\u5957\u5b66\u4e60\u8d44\u6e90 Computer Networking: A Top-Down Approach \u3002 \u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a TCP/IP \u534f\u8bae\u6808\u66f4\u80fd\u52a0\u6df1\u5bf9\u8ba1\u7b97\u673a\u7f51\u7edc\u7684\u7406\u89e3\u4e86\uff0c\u6240\u4ee5\u4e0d\u59a8\u8bd5\u8bd5 Stanford CS144: Computer Network \uff0c8 \u4e2a Project \u5e26\u4f60\u5b9e\u73b0\u6574\u4e2a\u534f\u8bae\u6808\u3002","title":"\u8ba1\u7b97\u673a\u7f51\u7edc"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_40","text":"\u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a\u5173\u7cfb\u578b\u6570\u636e\u5e93\u66f4\u80fd\u52a0\u6df1\u5bf9\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u7406\u89e3\u4e86\u3002","title":"\u6570\u636e\u5e93\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#c_1","text":"CMU 15-445: Introduction to Database System","title":"C++\u7248"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#java","text":"UCB CS186: Introduction to Database System","title":"Java\u7248"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_41","text":"\u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a\u7f16\u8bd1\u5668\u66f4\u80fd\u52a0\u6df1\u5bf9\u7f16\u8bd1\u5668\u7684\u7406\u89e3\u4e86\u3002 Stanford CS143: Compilers","title":"\u7f16\u8bd1\u539f\u7406"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_42","text":"Stanford CS148 Games101 Games103 Games202","title":"\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#web","text":"\u7f51\u7ad9\u7684\u5f00\u53d1\u5f88\u5c11\u5728\u8ba1\u7b97\u673a\u7684\u57f9\u517b\u65b9\u6848\u91cc\u88ab\u91cd\u89c6\uff0c\u4f46\u5176\u5b9e\u638c\u63e1\u8fd9\u9879\u6280\u80fd\u8fd8\u662f\u597d\u5904\u591a\u591a\u7684\uff0c\u4f8b\u5982\u642d\u5efa\u81ea\u5df1\u7684\u4e2a\u4eba\u4e3b\u9875\uff0c\u6291\u6216\u662f\u7ed9\u81ea\u5df1\u7684\u8bfe\u7a0b\u9879\u76ee\u505a\u4e00\u4e2a\u7cbe\u5f69\u7684\u5c55\u793a\u7f51\u9875\u3002","title":"Web\u5f00\u53d1"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_43","text":"MIT web development course","title":"\u4e24\u5468\u901f\u6210\u7248"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_44","text":"Stanford CS142: Web Applications","title":"\u7cfb\u7edf\u5b66\u4e60\u7248"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_45","text":"UCB Data100: Principles and Techniques of Data Science","title":"\u6570\u636e\u79d1\u5b66"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_46","text":"","title":"\u4eba\u5de5\u667a\u80fd"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_47","text":"Harvard CS50\u2019s Introduction to AI with Python","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_48","text":"UCB CS188: Introduction to Artificial Intelligence","title":"\u4e13\u4e1a\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_49","text":"","title":"\u673a\u5668\u5b66\u4e60"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_50","text":"Coursera: Machine Learning","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_51","text":"Stanford CS229: Machine Learning UCB CS189: Introduction to Machine Learning","title":"\u4e13\u4e1a\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_52","text":"","title":"\u6df1\u5ea6\u5b66\u4e60"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_53","text":"Coursera: Deep Learning \u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_54","text":"Stanford CS231n: CNN for Visual Recognition","title":"\u8ba1\u7b97\u673a\u89c6\u89c9"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_55","text":"Stanford CS224n: Natural Language Processing","title":"\u81ea\u7136\u8bed\u8a00\u5904\u7406"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_56","text":"Stanford CS224w: Machine Learning with Graphs","title":"\u56fe\u795e\u7ecf\u7f51\u7edc"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_57","text":"UCB CS285: Deep Reinforcement Learning","title":"\u5f3a\u5316\u5b66\u4e60"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_58","text":"\u6388\u4eba\u4ee5\u9c7c\u4e0d\u5982\u6388\u4eba\u4ee5\u6e14\u3002 \u4ee5\u4e0a\u7684\u8bfe\u7a0b\u89c4\u5212\u96be\u514d\u5e26\u6709\u5f3a\u70c8\u7684\u4e2a\u4eba\u504f\u597d\uff0c\u4e0d\u4e00\u5b9a\u9002\u5408\u6240\u6709\u4eba\uff0c\u66f4\u591a\u662f\u8d77\u5230\u629b\u7816\u5f15\u7389\u7684\u4f5c\u7528\u3002\u5982\u679c\u4f60\u60f3\u6311\u9009\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\u548c\u5185\u5bb9\u52a0\u4ee5\u5b66\u4e60\uff0c\u53ef\u4ee5\u53c2\u8003\u6211\u5728\u4e0b\u9762\u5217\u51fa\u6765\u7684\u8d44\u6e90\u3002 MIT OpenCourseWare : \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u7684\u8bfe\u7a0b\u8d44\u6e90\u5f00\u653e\u5171\u4eab\u9879\u76ee\uff0c\u6536\u5f55\u4e86\u6570\u4ee5\u5343\u8ba1\u7684\u5404\u79d1\u8bfe\u7a0b\u8d44\u6e90\uff0c\u5176\u4e2d\u8ba1\u7b97\u673a\u7c7b\u7684\u8bfe\u53f7\u662f 6.xxx\u3002 MIT CS Course List : \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002 UC Berkeley EECS Course Map : UC Berkeley \u7684 EECS \u57f9\u517b\u65b9\u6848\uff0c\u4ee5\u8bfe\u7a0b\u5730\u56fe\u7684\u65b9\u5f0f\u5c06\u5404\u95e8\u8bfe\u7a0b\u7684\u7c7b\u522b\u548c\u5148\u4fee\u5173\u7cfb\u4e00\u76ee\u4e86\u7136\u5730\u5448\u73b0\uff0c\u5176\u4e2d\u7edd\u5927\u591a\u6570\u8bfe\u7a0b\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 UC Berkeley CS Course List : UC Berkeley \u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002 Stanford CS Course List : \u65af\u5766\u798f\u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002","title":"\u5b9a\u5236\u5c5e\u4e8e\u4f60\u7684\u8bfe\u7a0b\u5730\u56fe"},{"location":"%E5%90%8E%E8%AE%B0/","text":"\u540e\u8bb0 \u4ece\u6700\u521d\u7684\u60f3\u6cd5\u5f00\u59cb\uff0c\u5230\u65ad\u65ad\u7eed\u7eed\u5b8c\u6210\u8fd9\u672c\u4e66\uff0c\u518d\u5230\u6811\u6d1e\u7684\u70ed\u70c8\u53cd\u54cd\uff0c\u6211\u5f88\u6fc0\u52a8\uff0c\u4f46\u4e5f\u4e94\u5473\u6742\u9648\u3002\u539f\u6765\u5728\u5317\u5927\u8fd9\u4e2a\u56ed\u5b50\u91cc\uff0c\u4e5f\u6709\u90a3\u4e48\u591a\u4eba\uff0c\u5bf9\u81ea\u5df1\u7684\u672c\u79d1\u751f\u6daf\u5e76\u4e0d\u6ee1\u610f\u3002\u800c\u8fd9\u91cc\uff0c\u53ef\u662f\u56ca\u62ec\u4e86\u4e2d\u56fd\u975e\u5e38\u4f18\u79c0\u7684\u4e00\u5e2e\u5e74\u8f7b\u4eba\u3002\u6240\u4ee5\u95ee\u9898\u51fa\u5728\u54ea\u91cc\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u662f\u4e2a\u7c4d\u7c4d\u65e0\u540d\u7684\u672c\u79d1\u751f\u5440\uff0c\u53ea\u662f\u4e00\u4e2a\u5355\u7eaf\u7684\u6c42\u5b66\u8005\uff0c\u6211\u7684\u76ee\u6807\u53ea\u662f\u60f3\u5feb\u4e50\u5730\u3001\u81ea\u7531\u5730\u3001\u9ad8\u8d28\u91cf\u5730\u638c\u63e1\u90a3\u4e9b\u4e13\u4e1a\u77e5\u8bc6\uff0c\u6211\u60f3\uff0c\u6b63\u5728\u770b\u8fd9\u672c\u4e66\u7684\u5927\u591a\u6570\u672c\u79d1\u751f\u4e5f\u662f\u5982\u6b64\uff0c\u8c01\u60f3\u4ed8\u51fa\u65f6\u95f4\u4f46\u5374\u6536\u6548\u751a\u5fae\u5462\uff1f\u53c8\u662f\u8c01\u8feb\u4f7f\u5927\u5bb6\u5e26\u7740\u75db\u82e6\u53bb\u5e94\u4ed8\u5462\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u5199\u8fd9\u672c\u4e66\u7edd\u4e0d\u662f\u4e3a\u4e86\u9f13\u52b1\u5927\u5bb6\u7fd8\u8bfe\u81ea\u5b66\uff0c\u8bd5\u95ee\u8c01\u4e0d\u60f3\u5728\u8bfe\u5802\u4e0a\u548c\u90a3\u4e48\u591a\u4f18\u79c0\u7684\u540c\u5b66\u6d4e\u6d4e\u4e00\u5802\uff0c\u70ed\u70c8\u8ba8\u8bba\u5462\uff1f\u8c01\u4e0d\u60f3\u9047\u5230\u95ee\u9898\u76f4\u63a5\u627e\u8001\u5e08\u7b54\u7591\u89e3\u60d1\u5462\uff1f\u8c01\u4e0d\u60f3\u8f9b\u82e6\u5b66\u4e60\u7684\u6210\u679c\u53ef\u4ee5\u76f4\u63a5\u5316\u4f5c\u5b66\u6821\u627f\u8ba4\u7684\u5b66\u5206\u7ee9\u70b9\u5462\uff1f\u53ef\u5982\u679c\u4e00\u4e2a\u5162\u5162\u4e1a\u4e1a\u3001\u6309\u65f6\u5230\u5802\u7684\u5b66\u751f\u6536\u83b7\u7684\u5374\u662f\u75db\u82e6\uff0c\u800c\u90a3\u4e2a\u4e00\u5b66\u671f\u53ea\u6709\u8003\u8bd5\u4f1a\u51fa\u5e2d\u7684\u5b66\u751f\u5374\u5b66\u5f97\u81ea\u5f97\u5176\u4e50\uff0c\u8fd9\u516c\u5e73\u5417\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u662f\u4e0d\u7518\uff0c\u4e0d\u7518\u5fc3\u8fd9\u4e9b\u901a\u8fc7\u9ad8\u8003\u6218\u80dc\u65e0\u6570\u4eba\u8fdb\u5165\u9ad8\u6821\u7684\u5b66\u5b50\u672c\u53ef\u4ee5\u6536\u83b7\u4e00\u4e2a\u66f4\u5feb\u4e50\u7684\u672c\u79d1\u751f\u6daf\uff0c\u4f46\u73b0\u5b9e\u5374\u7559\u7ed9\u4e86\u4ed6\u4eec\u9057\u61be\u3002\u6211\u53cd\u95ee\u81ea\u5df1\uff0c\u672c\u79d1\u6559\u80b2\u7a76\u7adf\u5e94\u8be5\u5e26\u7ed9\u6211\u4eec\u4ec0\u4e48\u5462\uff1f\u662f\u5b66\u5b8c\u6240\u6709\u8fd9\u4e9b\u8bfe\u7a0b\u5417\uff1f\u5012\u4e5f\u672a\u5fc5\uff0c\u5b83\u4e5f\u8bb8\u53ea\u9002\u5408\u6211\u8fd9\u79cdnerd\u3002\u4f46\u6211\u89c9\u5f97\uff0c\u672c\u79d1\u6559\u80b2\u81f3\u5c11\u5f97\u5c55\u73b0\u5b83\u5e94\u6709\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u5206\u4eab\u77e5\u8bc6\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u4ee5\u4eba\u4e3a\u672c\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u6ce8\u91cd\u5b66\u751f\u4f53\u9a8c\u7684\u8bda\u610f\u3002\u5b83\u81f3\u5c11\u4e0d\u5e94\u8be5\u662f\u4e00\u79cd\u6076\u610f\uff0c\u4e00\u79cd\u62fc\u6bd4\u77e5\u8bc6\u7684\u6076\u610f\uff0c\u4e00\u79cd\u80dc\u8005\u4e3a\u738b\u7684\u6076\u610f\uff0c\u4e00\u79cd\u8ba9\u4eba\u5b66\u65e0\u6240\u5f97\u7684\u6076\u610f\u3002\u4f46\u8fd9\u4e00\u5207\u80fd\u6539\u53d8\u5417\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u77e5\u9053\u6211\u505a\u4e86\u5e94\u8be5\u505a\u7684\u4e8b\u60c5\uff0c\u5b66\u751f\u4eec\u4f1a\u7528\u811a\u6295\u7968\uff0c\u6811\u6d1e\u7684\u5173\u6ce8\u91cf\u548c\u56de\u5e16\u6570\u8bc1\u660e\u4e86\u8fd9\u6837\u4e00\u4efd\u8d44\u6599\u662f\u6709\u4ef7\u503c\u7684\uff0c\u4e5f\u9053\u51fa\u4e86\u56fd\u5185CS\u672c\u79d1\u6559\u80b2\u548c\u56fd\u5916\u7684\u5dee\u8ddd\u3002\u4e5f\u8bb8\u8fd9\u6837\u7684\u6539\u53d8\u662f\u5fae\u4e4e\u5176\u5fae\u7684\uff0c\u4f46\u522b\u5fd8\u4e86\u6211\u53ea\u662f\u4e00\u4e2a\u7c4d\u7c4d\u65e0\u540d\u7684\u672c\u79d1\u751f\uff0c\u662f\u5317\u5927\u4fe1\u79d1\u4e00\u5343\u591a\u540d\u672c\u79d1\u751f\u4e2d\u7684\u666e\u901a\u4e00\u5458\uff0c\u662f\u4e2d\u56fd\u51e0\u767e\u4e07\u5728\u8bfb\u672c\u79d1\u751f\u4e2d\u7684\u4e00\u5206\u5b50\uff0c\u5982\u679c\u6709\u66f4\u591a\u7684\u4eba\u7ad9\u51fa\u6765\uff0c\u6bcf\u4e2a\u4eba\u505a\u4e00\u70b9\u70b9\uff0c\u4e5f\u8bb8\u662f\u5206\u4eab\u4e00\u4e2a\u5e16\u5b50\uff0c\u4e5f\u8bb8\u662f\u5f53\u4e00\u95e8\u8bfe\u7684\u52a9\u6559\uff0c\u4e5f\u8bb8\u662f\u7cbe\u5fc3\u8bbe\u8ba1\u4e00\u95e8\u8bfe\u7684lab\uff0c\u66f4\u6216\u8bb8\u662f\u5c06\u6765\u83b7\u5f97\u6559\u804c\u4e4b\u540e\u5f00\u8bbe\u4e00\u95e8\u9ad8\u8d28\u91cf\u7684\u8bfe\u7a0b\uff0c\u51fa\u7248\u4e00\u672c\u7ecf\u5178\u7684\u6559\u6750\u3002\u672c\u79d1\u6559\u80b2\u771f\u7684\u6709\u4ec0\u4e48\u6280\u672f\u58c1\u5792\u5417\uff1f\u6211\u770b\u672a\u5fc5\uff0c\u6559\u80b2\u9760\u7684\u662f\u8bda\u610f\uff0c\u9760\u7684\u662f\u80b2\u4eba\u4e4b\u5fc3\u3002 \u4eca\u5929\u662f2021\u5e7412\u670812\u65e5\uff0c\u6211\u671f\u5f85\u5728\u4e0d\u4e45\u7684\u5c06\u6765\u8fd9\u4e2a\u5e16\u5b50\u4f1a\u88ab\u9057\u5fd8\uff0c\u5927\u5bb6\u53ef\u4ee5\u6ee1\u5fc3\u6b22\u559c\u5730\u9009\u7740\u81ea\u5df1\u57f9\u517b\u65b9\u6848\u4e0a\u7684\u8bfe\u7a0b\uff0c\u505a\u7740\u5b66\u6821\u81ea\u884c\u8bbe\u8ba1\u7684\u5404\u7c7b\u7f16\u7a0b\u5b9e\u9a8c\uff0c\u8bfe\u5802\u6ca1\u6709\u7b7e\u5230\u4e5f\u80fd\u6d4e\u6d4e\u4e00\u5802\uff0c\u5b66\u751f\u8e0a\u8dc3\u5730\u53d1\u8a00\u4e92\u52a8\uff0c\u5927\u5bb6\u7684\u6536\u83b7\u53ef\u4ee5\u548c\u52aa\u529b\u6210\u6b63\u6bd4\uff0c\u90a3\u4e9b\u66fe\u7ecf\u7684\u9057\u61be\u548c\u75db\u82e6\u53ef\u4ee5\u6c38\u8fdc\u6210\u4e3a\u5386\u53f2\u3002\u6211\u771f\u7684\u5f88\u671f\u5f85\u90a3\u4e00\u5929\uff0c\u771f\u7684\u771f\u7684\u771f\u7684\u5f88\u671f\u5f85\u3002 PKUFlyingPig 2021\u5e7412\u670812\u65e5\u5199\u4e8e\u71d5\u56ed","title":"\u540e\u8bb0"},{"location":"%E5%90%8E%E8%AE%B0/#_1","text":"\u4ece\u6700\u521d\u7684\u60f3\u6cd5\u5f00\u59cb\uff0c\u5230\u65ad\u65ad\u7eed\u7eed\u5b8c\u6210\u8fd9\u672c\u4e66\uff0c\u518d\u5230\u6811\u6d1e\u7684\u70ed\u70c8\u53cd\u54cd\uff0c\u6211\u5f88\u6fc0\u52a8\uff0c\u4f46\u4e5f\u4e94\u5473\u6742\u9648\u3002\u539f\u6765\u5728\u5317\u5927\u8fd9\u4e2a\u56ed\u5b50\u91cc\uff0c\u4e5f\u6709\u90a3\u4e48\u591a\u4eba\uff0c\u5bf9\u81ea\u5df1\u7684\u672c\u79d1\u751f\u6daf\u5e76\u4e0d\u6ee1\u610f\u3002\u800c\u8fd9\u91cc\uff0c\u53ef\u662f\u56ca\u62ec\u4e86\u4e2d\u56fd\u975e\u5e38\u4f18\u79c0\u7684\u4e00\u5e2e\u5e74\u8f7b\u4eba\u3002\u6240\u4ee5\u95ee\u9898\u51fa\u5728\u54ea\u91cc\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u662f\u4e2a\u7c4d\u7c4d\u65e0\u540d\u7684\u672c\u79d1\u751f\u5440\uff0c\u53ea\u662f\u4e00\u4e2a\u5355\u7eaf\u7684\u6c42\u5b66\u8005\uff0c\u6211\u7684\u76ee\u6807\u53ea\u662f\u60f3\u5feb\u4e50\u5730\u3001\u81ea\u7531\u5730\u3001\u9ad8\u8d28\u91cf\u5730\u638c\u63e1\u90a3\u4e9b\u4e13\u4e1a\u77e5\u8bc6\uff0c\u6211\u60f3\uff0c\u6b63\u5728\u770b\u8fd9\u672c\u4e66\u7684\u5927\u591a\u6570\u672c\u79d1\u751f\u4e5f\u662f\u5982\u6b64\uff0c\u8c01\u60f3\u4ed8\u51fa\u65f6\u95f4\u4f46\u5374\u6536\u6548\u751a\u5fae\u5462\uff1f\u53c8\u662f\u8c01\u8feb\u4f7f\u5927\u5bb6\u5e26\u7740\u75db\u82e6\u53bb\u5e94\u4ed8\u5462\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u5199\u8fd9\u672c\u4e66\u7edd\u4e0d\u662f\u4e3a\u4e86\u9f13\u52b1\u5927\u5bb6\u7fd8\u8bfe\u81ea\u5b66\uff0c\u8bd5\u95ee\u8c01\u4e0d\u60f3\u5728\u8bfe\u5802\u4e0a\u548c\u90a3\u4e48\u591a\u4f18\u79c0\u7684\u540c\u5b66\u6d4e\u6d4e\u4e00\u5802\uff0c\u70ed\u70c8\u8ba8\u8bba\u5462\uff1f\u8c01\u4e0d\u60f3\u9047\u5230\u95ee\u9898\u76f4\u63a5\u627e\u8001\u5e08\u7b54\u7591\u89e3\u60d1\u5462\uff1f\u8c01\u4e0d\u60f3\u8f9b\u82e6\u5b66\u4e60\u7684\u6210\u679c\u53ef\u4ee5\u76f4\u63a5\u5316\u4f5c\u5b66\u6821\u627f\u8ba4\u7684\u5b66\u5206\u7ee9\u70b9\u5462\uff1f\u53ef\u5982\u679c\u4e00\u4e2a\u5162\u5162\u4e1a\u4e1a\u3001\u6309\u65f6\u5230\u5802\u7684\u5b66\u751f\u6536\u83b7\u7684\u5374\u662f\u75db\u82e6\uff0c\u800c\u90a3\u4e2a\u4e00\u5b66\u671f\u53ea\u6709\u8003\u8bd5\u4f1a\u51fa\u5e2d\u7684\u5b66\u751f\u5374\u5b66\u5f97\u81ea\u5f97\u5176\u4e50\uff0c\u8fd9\u516c\u5e73\u5417\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u662f\u4e0d\u7518\uff0c\u4e0d\u7518\u5fc3\u8fd9\u4e9b\u901a\u8fc7\u9ad8\u8003\u6218\u80dc\u65e0\u6570\u4eba\u8fdb\u5165\u9ad8\u6821\u7684\u5b66\u5b50\u672c\u53ef\u4ee5\u6536\u83b7\u4e00\u4e2a\u66f4\u5feb\u4e50\u7684\u672c\u79d1\u751f\u6daf\uff0c\u4f46\u73b0\u5b9e\u5374\u7559\u7ed9\u4e86\u4ed6\u4eec\u9057\u61be\u3002\u6211\u53cd\u95ee\u81ea\u5df1\uff0c\u672c\u79d1\u6559\u80b2\u7a76\u7adf\u5e94\u8be5\u5e26\u7ed9\u6211\u4eec\u4ec0\u4e48\u5462\uff1f\u662f\u5b66\u5b8c\u6240\u6709\u8fd9\u4e9b\u8bfe\u7a0b\u5417\uff1f\u5012\u4e5f\u672a\u5fc5\uff0c\u5b83\u4e5f\u8bb8\u53ea\u9002\u5408\u6211\u8fd9\u79cdnerd\u3002\u4f46\u6211\u89c9\u5f97\uff0c\u672c\u79d1\u6559\u80b2\u81f3\u5c11\u5f97\u5c55\u73b0\u5b83\u5e94\u6709\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u5206\u4eab\u77e5\u8bc6\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u4ee5\u4eba\u4e3a\u672c\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u6ce8\u91cd\u5b66\u751f\u4f53\u9a8c\u7684\u8bda\u610f\u3002\u5b83\u81f3\u5c11\u4e0d\u5e94\u8be5\u662f\u4e00\u79cd\u6076\u610f\uff0c\u4e00\u79cd\u62fc\u6bd4\u77e5\u8bc6\u7684\u6076\u610f\uff0c\u4e00\u79cd\u80dc\u8005\u4e3a\u738b\u7684\u6076\u610f\uff0c\u4e00\u79cd\u8ba9\u4eba\u5b66\u65e0\u6240\u5f97\u7684\u6076\u610f\u3002\u4f46\u8fd9\u4e00\u5207\u80fd\u6539\u53d8\u5417\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u77e5\u9053\u6211\u505a\u4e86\u5e94\u8be5\u505a\u7684\u4e8b\u60c5\uff0c\u5b66\u751f\u4eec\u4f1a\u7528\u811a\u6295\u7968\uff0c\u6811\u6d1e\u7684\u5173\u6ce8\u91cf\u548c\u56de\u5e16\u6570\u8bc1\u660e\u4e86\u8fd9\u6837\u4e00\u4efd\u8d44\u6599\u662f\u6709\u4ef7\u503c\u7684\uff0c\u4e5f\u9053\u51fa\u4e86\u56fd\u5185CS\u672c\u79d1\u6559\u80b2\u548c\u56fd\u5916\u7684\u5dee\u8ddd\u3002\u4e5f\u8bb8\u8fd9\u6837\u7684\u6539\u53d8\u662f\u5fae\u4e4e\u5176\u5fae\u7684\uff0c\u4f46\u522b\u5fd8\u4e86\u6211\u53ea\u662f\u4e00\u4e2a\u7c4d\u7c4d\u65e0\u540d\u7684\u672c\u79d1\u751f\uff0c\u662f\u5317\u5927\u4fe1\u79d1\u4e00\u5343\u591a\u540d\u672c\u79d1\u751f\u4e2d\u7684\u666e\u901a\u4e00\u5458\uff0c\u662f\u4e2d\u56fd\u51e0\u767e\u4e07\u5728\u8bfb\u672c\u79d1\u751f\u4e2d\u7684\u4e00\u5206\u5b50\uff0c\u5982\u679c\u6709\u66f4\u591a\u7684\u4eba\u7ad9\u51fa\u6765\uff0c\u6bcf\u4e2a\u4eba\u505a\u4e00\u70b9\u70b9\uff0c\u4e5f\u8bb8\u662f\u5206\u4eab\u4e00\u4e2a\u5e16\u5b50\uff0c\u4e5f\u8bb8\u662f\u5f53\u4e00\u95e8\u8bfe\u7684\u52a9\u6559\uff0c\u4e5f\u8bb8\u662f\u7cbe\u5fc3\u8bbe\u8ba1\u4e00\u95e8\u8bfe\u7684lab\uff0c\u66f4\u6216\u8bb8\u662f\u5c06\u6765\u83b7\u5f97\u6559\u804c\u4e4b\u540e\u5f00\u8bbe\u4e00\u95e8\u9ad8\u8d28\u91cf\u7684\u8bfe\u7a0b\uff0c\u51fa\u7248\u4e00\u672c\u7ecf\u5178\u7684\u6559\u6750\u3002\u672c\u79d1\u6559\u80b2\u771f\u7684\u6709\u4ec0\u4e48\u6280\u672f\u58c1\u5792\u5417\uff1f\u6211\u770b\u672a\u5fc5\uff0c\u6559\u80b2\u9760\u7684\u662f\u8bda\u610f\uff0c\u9760\u7684\u662f\u80b2\u4eba\u4e4b\u5fc3\u3002 \u4eca\u5929\u662f2021\u5e7412\u670812\u65e5\uff0c\u6211\u671f\u5f85\u5728\u4e0d\u4e45\u7684\u5c06\u6765\u8fd9\u4e2a\u5e16\u5b50\u4f1a\u88ab\u9057\u5fd8\uff0c\u5927\u5bb6\u53ef\u4ee5\u6ee1\u5fc3\u6b22\u559c\u5730\u9009\u7740\u81ea\u5df1\u57f9\u517b\u65b9\u6848\u4e0a\u7684\u8bfe\u7a0b\uff0c\u505a\u7740\u5b66\u6821\u81ea\u884c\u8bbe\u8ba1\u7684\u5404\u7c7b\u7f16\u7a0b\u5b9e\u9a8c\uff0c\u8bfe\u5802\u6ca1\u6709\u7b7e\u5230\u4e5f\u80fd\u6d4e\u6d4e\u4e00\u5802\uff0c\u5b66\u751f\u8e0a\u8dc3\u5730\u53d1\u8a00\u4e92\u52a8\uff0c\u5927\u5bb6\u7684\u6536\u83b7\u53ef\u4ee5\u548c\u52aa\u529b\u6210\u6b63\u6bd4\uff0c\u90a3\u4e9b\u66fe\u7ecf\u7684\u9057\u61be\u548c\u75db\u82e6\u53ef\u4ee5\u6c38\u8fdc\u6210\u4e3a\u5386\u53f2\u3002\u6211\u771f\u7684\u5f88\u671f\u5f85\u90a3\u4e00\u5929\uff0c\u771f\u7684\u771f\u7684\u771f\u7684\u5f88\u671f\u5f85\u3002 PKUFlyingPig 2021\u5e7412\u670812\u65e5\u5199\u4e8e\u71d5\u56ed","title":"\u540e\u8bb0"},{"location":"%E5%9F%B9%E5%85%BB%E6%96%B9%E6%A1%88Pro/","text":"under construction.","title":"\u57f9\u517b\u65b9\u6848Pro"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/","text":"\u597d\u4e66\u63a8\u8350 \u7531\u4e8e\u7248\u6743\u539f\u56e0\uff0c\u4e0b\u9762\u5217\u4e3e\u7684\u56fe\u4e66\u4e2d\u9664\u4e86\u5f00\u6e90\u8d44\u6e90\u63d0\u4f9b\u4e86\u94fe\u63a5\uff0c\u5176\u4ed6\u7684\u8d44\u6e90\u8bf7\u5927\u5bb6\u81ea\u884c\u901a\u8fc7 libgen \u6216 z-lib \u67e5\u627e\u3002 \u8d44\u6e90\u6c47\u603b Free Programming Books : \u5f00\u6e90\u7f16\u7a0b\u4e66\u7c4d\u8d44\u6e90\u6c47\u603b CS Textbook Recommendations : \u8ba1\u7b97\u673a\u79d1\u5b66\u65b9\u5411\u63a8\u8350\u6559\u6750\u5217\u8868 C Book Guide and List : C\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 C++ Book Guide and List : C++\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 Python Book Guide and List : Python\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 \u7cfb\u7edf\u5165\u95e8 Computer Systems: A Programmer's Perspective [ \u8c46\u74e3 ] Principles of Computer System Design: An Introduction [ \u8c46\u74e3 ] \u64cd\u4f5c\u7cfb\u7edf \u73b0\u4ee3\u64cd\u4f5c\u7cfb\u7edf: \u539f\u7406\u4e0e\u5b9e\u73b0 [ \u8c46\u74e3 ] Operating Systems: Three Easy Pieces [ \u8c46\u74e3 ] Modern Operating Systems [ \u8c46\u74e3 ] Operating Systems: Principles and Practice [ \u8c46\u74e3 ] \u8ba1\u7b97\u673a\u7f51\u7edc Computer Networks: A Systems Approach [ \u8c46\u74e3 ] Computer Networking: A Top-Down Approach [ \u8c46\u74e3 ] \u5206\u5e03\u5f0f\u7cfb\u7edf Patterns of Distributed System (Blog) Distributed Systems for Fun and Profit (Blog) Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems [ \u8c46\u74e3 ] \u6570\u636e\u5e93\u7cfb\u7edf Architecture of a Database System [ \u8c46\u74e3 ] Readings in Database Systems [ \u8c46\u74e3 ] Database System Concepts [ \u8c46\u74e3 ] \u7f16\u8bd1\u539f\u7406 Engineering a Compiler [ \u8c46\u74e3 ] Compilers: Principles, Techniques, and Tools [ \u8c46\u74e3 ] \u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00 \u8ba1\u7b97\u673a\u7a0b\u5e8f\u7684\u6784\u9020\u548c\u89e3\u91ca [ \u8c46\u74e3 ] Essentials of Programming Languages [ \u8c46\u74e3 ] Practical Foundations for Programming Languages [ \u8c46\u74e3 ] Software Foundations [ \u8c46\u74e3 ] [ \u5317\u5927\u76f8\u5173\u8bfe\u7a0b ] Types and Programming Languages [ \u8c46\u74e3 ] [ \u5317\u5927\u76f8\u5173\u8bfe\u7a0b ] \u4f53\u7cfb\u7ed3\u6784 \u8d85\u6807\u91cf\u5904\u7406\u5668\u8bbe\u8ba1: Superscalar RISC Processor Design [ \u8c46\u74e3 ] Computer Organization and Design RISC-V Edition [ \u8c46\u74e3 ] Computer Organization and Design: The Hardware/Software Interface [ \u8c46\u74e3 ] Computer Architecture: A Quantitative Approach [ \u8c46\u74e3 ] \u7406\u8bba\u8ba1\u7b97\u673a\u79d1\u5b66 Introduction to the Theory of Computation [ \u8c46\u74e3 ] \u5bc6\u7801\u5b66 Cryptography Engineering: Design Principles and Practical Applications [ \u8c46\u74e3 ] Introduction to Modern Cryptography [ \u8c46\u74e3 ] \u9006\u5411\u5de5\u7a0b \u9006\u5411\u5de5\u7a0b\u6838\u5fc3\u539f\u7406 [ \u8c46\u74e3 ] \u52a0\u5bc6\u4e0e\u89e3\u5bc6 [ \u8c46\u74e3 ] \u8ba1\u7b97\u673a\u56fe\u5f62\u5b66 Monte Carlo theory, methods and examples Advanced Global Illumination [ \u8c46\u74e3 ] Fundamentals of Computer Graphics [ \u8c46\u74e3 ] Fluid Simulation for Computer Graphics [ \u8c46\u74e3 ] Physically Based Rendering: From Theory To Implementation [ \u8c46\u74e3 ] Real-Time Rendering [ \u8c46\u74e3 ] \u6e38\u620f\u5f15\u64ce \u6e38\u620f\u7f16\u7a0b\u6a21\u5f0f: Game Programming Patterns [ \u8c46\u74e3 ] \u5b9e\u65f6\u78b0\u649e\u68c0\u6d4b\u7b97\u6cd5\u6280\u672f [ \u8c46\u74e3 ] Game AI Pro Series [ \u8c46\u74e3 ] Artificial Intelligence for Games [ \u8c46\u74e3 ] Game Engine Architecture [ \u8c46\u74e3 ] Game Programming Gems Series [ \u8c46\u74e3 ] \u8f6f\u4ef6\u5de5\u7a0b Software Engineering at Google [ \u8c46\u74e3 ] \u8bbe\u8ba1\u6a21\u5f0f \u8bbe\u8ba1\u6a21\u5f0f: \u53ef\u590d\u7528\u9762\u5411\u5bf9\u8c61\u8f6f\u4ef6\u7684\u57fa\u7840 [ \u8c46\u74e3 ] \u5927\u8bdd\u8bbe\u8ba1\u6a21\u5f0f [ \u8c46\u74e3 ] Head First \u8bbe\u8ba1\u6a21\u5f0f [ \u8c46\u74e3 ] \u6df1\u5ea6\u5b66\u4e60 \u52a8\u624b\u5b66\u6df1\u5ea6\u5b66\u4e60 [ \u8c46\u74e3 ] \u795e\u7ecf\u7f51\u7edc\u4e0e\u6df1\u5ea6\u5b66\u4e60 [ \u8c46\u74e3 ] \u6df1\u5ea6\u5b66\u4e60\u5165\u95e8 [ \u8c46\u74e3 ] \u7b80\u5355\u7c97\u66b4 TensorFlow 2 (Tutorial) Speech and Language Processing [ \u8c46\u74e3 ] \u8ba1\u7b97\u673a\u89c6\u89c9 Multiple View Geometry in Computer Vision [ \u8c46\u74e3 ] \u673a\u5668\u4eba Probabilistic Robotics [ \u8c46\u74e3 ] \u9762\u8bd5 \u5251\u6307 Offer\uff1a\u540d\u4f01\u9762\u8bd5\u5b98\u7cbe\u8bb2\u5178\u578b\u7f16\u7a0b\u9898 [ \u8c46\u74e3 ] Cracking The Coding Interview [ \u8c46\u74e3 ]","title":"\u597d\u4e66\u63a8\u8350"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_1","text":"\u7531\u4e8e\u7248\u6743\u539f\u56e0\uff0c\u4e0b\u9762\u5217\u4e3e\u7684\u56fe\u4e66\u4e2d\u9664\u4e86\u5f00\u6e90\u8d44\u6e90\u63d0\u4f9b\u4e86\u94fe\u63a5\uff0c\u5176\u4ed6\u7684\u8d44\u6e90\u8bf7\u5927\u5bb6\u81ea\u884c\u901a\u8fc7 libgen \u6216 z-lib \u67e5\u627e\u3002","title":"\u597d\u4e66\u63a8\u8350"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_2","text":"Free Programming Books : \u5f00\u6e90\u7f16\u7a0b\u4e66\u7c4d\u8d44\u6e90\u6c47\u603b CS Textbook Recommendations : \u8ba1\u7b97\u673a\u79d1\u5b66\u65b9\u5411\u63a8\u8350\u6559\u6750\u5217\u8868 C Book Guide and List : C\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 C++ Book Guide and List : C++\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 Python Book Guide and List : Python\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_3","text":"Computer Systems: A Programmer's Perspective [ \u8c46\u74e3 ] Principles of Computer System Design: An Introduction [ \u8c46\u74e3 ]","title":"\u7cfb\u7edf\u5165\u95e8"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_4","text":"\u73b0\u4ee3\u64cd\u4f5c\u7cfb\u7edf: \u539f\u7406\u4e0e\u5b9e\u73b0 [ \u8c46\u74e3 ] Operating Systems: Three Easy Pieces [ \u8c46\u74e3 ] Modern Operating Systems [ \u8c46\u74e3 ] Operating Systems: Principles and Practice [ \u8c46\u74e3 ]","title":"\u64cd\u4f5c\u7cfb\u7edf"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_5","text":"Computer Networks: A Systems Approach [ \u8c46\u74e3 ] Computer Networking: A Top-Down Approach [ \u8c46\u74e3 ]","title":"\u8ba1\u7b97\u673a\u7f51\u7edc"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_6","text":"Patterns of Distributed System (Blog) Distributed Systems for Fun and Profit (Blog) Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems [ \u8c46\u74e3 ]","title":"\u5206\u5e03\u5f0f\u7cfb\u7edf"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_7","text":"Architecture of a Database System [ \u8c46\u74e3 ] Readings in Database Systems [ \u8c46\u74e3 ] Database System Concepts [ \u8c46\u74e3 ]","title":"\u6570\u636e\u5e93\u7cfb\u7edf"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_8","text":"Engineering a Compiler [ \u8c46\u74e3 ] Compilers: Principles, Techniques, and Tools [ \u8c46\u74e3 ]","title":"\u7f16\u8bd1\u539f\u7406"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_9","text":"\u8ba1\u7b97\u673a\u7a0b\u5e8f\u7684\u6784\u9020\u548c\u89e3\u91ca [ \u8c46\u74e3 ] Essentials of Programming Languages [ \u8c46\u74e3 ] Practical Foundations for Programming Languages [ \u8c46\u74e3 ] Software Foundations [ \u8c46\u74e3 ] [ \u5317\u5927\u76f8\u5173\u8bfe\u7a0b ] Types and Programming Languages [ \u8c46\u74e3 ] [ \u5317\u5927\u76f8\u5173\u8bfe\u7a0b ]","title":"\u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_10","text":"\u8d85\u6807\u91cf\u5904\u7406\u5668\u8bbe\u8ba1: Superscalar RISC Processor Design [ \u8c46\u74e3 ] Computer Organization and Design RISC-V Edition [ \u8c46\u74e3 ] Computer Organization and Design: The Hardware/Software Interface [ \u8c46\u74e3 ] Computer Architecture: A Quantitative Approach [ \u8c46\u74e3 ]","title":"\u4f53\u7cfb\u7ed3\u6784"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_11","text":"Introduction to the Theory of Computation [ \u8c46\u74e3 ]","title":"\u7406\u8bba\u8ba1\u7b97\u673a\u79d1\u5b66"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_12","text":"Cryptography Engineering: Design Principles and Practical Applications [ \u8c46\u74e3 ] Introduction to Modern Cryptography [ \u8c46\u74e3 ]","title":"\u5bc6\u7801\u5b66"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_13","text":"\u9006\u5411\u5de5\u7a0b\u6838\u5fc3\u539f\u7406 [ \u8c46\u74e3 ] \u52a0\u5bc6\u4e0e\u89e3\u5bc6 [ \u8c46\u74e3 ]","title":"\u9006\u5411\u5de5\u7a0b"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_14","text":"Monte Carlo theory, methods and examples Advanced Global Illumination [ \u8c46\u74e3 ] Fundamentals of Computer Graphics [ \u8c46\u74e3 ] Fluid Simulation for Computer Graphics [ \u8c46\u74e3 ] Physically Based Rendering: From Theory To Implementation [ \u8c46\u74e3 ] Real-Time Rendering [ \u8c46\u74e3 ]","title":"\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_15","text":"\u6e38\u620f\u7f16\u7a0b\u6a21\u5f0f: Game Programming Patterns [ \u8c46\u74e3 ] \u5b9e\u65f6\u78b0\u649e\u68c0\u6d4b\u7b97\u6cd5\u6280\u672f [ \u8c46\u74e3 ] Game AI Pro Series [ \u8c46\u74e3 ] Artificial Intelligence for Games [ \u8c46\u74e3 ] Game Engine Architecture [ \u8c46\u74e3 ] Game Programming Gems Series [ \u8c46\u74e3 ]","title":"\u6e38\u620f\u5f15\u64ce"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_16","text":"Software Engineering at Google [ \u8c46\u74e3 ]","title":"\u8f6f\u4ef6\u5de5\u7a0b"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_17","text":"\u8bbe\u8ba1\u6a21\u5f0f: \u53ef\u590d\u7528\u9762\u5411\u5bf9\u8c61\u8f6f\u4ef6\u7684\u57fa\u7840 [ \u8c46\u74e3 ] \u5927\u8bdd\u8bbe\u8ba1\u6a21\u5f0f [ \u8c46\u74e3 ] Head First \u8bbe\u8ba1\u6a21\u5f0f [ \u8c46\u74e3 ]","title":"\u8bbe\u8ba1\u6a21\u5f0f"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_18","text":"\u52a8\u624b\u5b66\u6df1\u5ea6\u5b66\u4e60 [ \u8c46\u74e3 ] \u795e\u7ecf\u7f51\u7edc\u4e0e\u6df1\u5ea6\u5b66\u4e60 [ \u8c46\u74e3 ] \u6df1\u5ea6\u5b66\u4e60\u5165\u95e8 [ \u8c46\u74e3 ] \u7b80\u5355\u7c97\u66b4 TensorFlow 2 (Tutorial) Speech and Language Processing [ \u8c46\u74e3 ]","title":"\u6df1\u5ea6\u5b66\u4e60"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_19","text":"Multiple View Geometry in Computer Vision [ \u8c46\u74e3 ]","title":"\u8ba1\u7b97\u673a\u89c6\u89c9"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_20","text":"Probabilistic Robotics [ \u8c46\u74e3 ]","title":"\u673a\u5668\u4eba"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_21","text":"\u5251\u6307 Offer\uff1a\u540d\u4f01\u9762\u8bd5\u5b98\u7cbe\u8bb2\u5178\u578b\u7f16\u7a0b\u9898 [ \u8c46\u74e3 ] Cracking The Coding Interview [ \u8c46\u74e3 ]","title":"\u9762\u8bd5"},{"location":"Web%E5%BC%80%E5%8F%91/CS142/","text":"Stanford CS142: Web Applications \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6709\u4e00\u5b9a\u7684\u7f16\u7a0b\u7ecf\u9a8c \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u65af\u5766\u798f\u7684 Web \u5e94\u7528\u5f00\u53d1\u8bfe\u7a0b\uff0c\u5185\u5bb9\u8986\u76d6\u4e86 HTML, CSS, JavaScript, ReactJs, NodeJS, ExpressJS, Web\u5b89\u5168\u7b49\u7b49\u30028 \u4e2a Project \u4f1a\u8ba9\u4f60\u5728\u5b9e\u6218\u4e2d\u953b\u70bc\u81ea\u5df1\u7684 Web \u5f00\u53d1\u6280\u5de7\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://web.stanford.edu/class/cs142/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://web.stanford.edu/class/cs142/lectures.html \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://web.stanford.edu/class/cs142/projects.html","title":"Stanford CS142: Web Applications"},{"location":"Web%E5%BC%80%E5%8F%91/CS142/#stanford-cs142-web-applications","text":"","title":"Stanford CS142: Web Applications"},{"location":"Web%E5%BC%80%E5%8F%91/CS142/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6709\u4e00\u5b9a\u7684\u7f16\u7a0b\u7ecf\u9a8c \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u65af\u5766\u798f\u7684 Web \u5e94\u7528\u5f00\u53d1\u8bfe\u7a0b\uff0c\u5185\u5bb9\u8986\u76d6\u4e86 HTML, CSS, JavaScript, ReactJs, NodeJS, ExpressJS, Web\u5b89\u5168\u7b49\u7b49\u30028 \u4e2a Project \u4f1a\u8ba9\u4f60\u5728\u5b9e\u6218\u4e2d\u953b\u70bc\u81ea\u5df1\u7684 Web \u5f00\u53d1\u6280\u5de7\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"Web%E5%BC%80%E5%8F%91/CS142/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://web.stanford.edu/class/cs142/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://web.stanford.edu/class/cs142/lectures.html \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://web.stanford.edu/class/cs142/projects.html","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"Web%E5%BC%80%E5%8F%91/fullstackopen/","text":"University of Helsinki: Full Stack open 2022 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUniversity of Helsinki \u5148\u4fee\u8981\u6c42\uff1a\u5177\u5907\u826f\u597d\u7684\u7f16\u7a0b\u6280\u80fd\u3001\u57fa\u672c\u7684\u7f51\u7edc\u7f16\u7a0b\u548c\u6570\u636e\u5e93\u77e5\u8bc6\uff0c\u5e76\u4e14\u4e86\u89e3\u4f7f\u7528 Git \u8fd9\u4e2a\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u7684\u57fa\u7840\u77e5\u8bc6\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS/NoSQL/SQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 \u672c\u8bfe\u7a0b\u662f\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528 JavaScript \u5f00\u53d1\u73b0\u4ee3Web\u5e94\u7528\u7a0b\u5e8f\u3002 \u8bfe\u7a0b\u7684\u91cd\u70b9\u662f\u4f7f\u7528 ReactJS \u6784\u5efa\u5355\u9875\u9762\u5e94\u7528\u7a0b\u5e8f\uff08SPA\uff09\uff0c\u5e76\u4f7f\u7528\u7531 Node.js \u6784\u5efa REST API\u3002\u8be5\u8bfe\u7a0b\u8fd8\u5305\u542b\u4ecb\u7ecd GraphQL \u7684\u90e8\u5206\uff0c\u8fd9\u662f REST API \u7684\u73b0\u4ee3\u66ff\u4ee3\u65b9\u6848\u3002 \u8bfe\u7a0b\u8fd8\u5305\u62ec\u6d4b\u8bd5\u3001\u914d\u7f6e\u548c\u73af\u5883\u7ba1\u7406\uff0c\u4ee5\u53ca\u4f7f\u7528 MongoDB \u6765\u5b58\u50a8\u5e94\u7528\u7684\u6570\u636e\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://fullstackopen.com/zh/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b Discord \u7fa4\u7ec4\uff1a https://study.cs.helsinki.fi/discord/join/fullstack/ \u8bfe\u7a0b Telegram \u7fa4\u7ec4\uff1a https://t.me/fullstackcourse/","title":"University of Helsinki: Full Stack open 2022"},{"location":"Web%E5%BC%80%E5%8F%91/fullstackopen/#university-of-helsinki-full-stack-open-2022","text":"","title":"University of Helsinki: Full Stack open 2022"},{"location":"Web%E5%BC%80%E5%8F%91/fullstackopen/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUniversity of Helsinki \u5148\u4fee\u8981\u6c42\uff1a\u5177\u5907\u826f\u597d\u7684\u7f16\u7a0b\u6280\u80fd\u3001\u57fa\u672c\u7684\u7f51\u7edc\u7f16\u7a0b\u548c\u6570\u636e\u5e93\u77e5\u8bc6\uff0c\u5e76\u4e14\u4e86\u89e3\u4f7f\u7528 Git \u8fd9\u4e2a\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u7684\u57fa\u7840\u77e5\u8bc6\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS/NoSQL/SQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 \u672c\u8bfe\u7a0b\u662f\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528 JavaScript \u5f00\u53d1\u73b0\u4ee3Web\u5e94\u7528\u7a0b\u5e8f\u3002 \u8bfe\u7a0b\u7684\u91cd\u70b9\u662f\u4f7f\u7528 ReactJS \u6784\u5efa\u5355\u9875\u9762\u5e94\u7528\u7a0b\u5e8f\uff08SPA\uff09\uff0c\u5e76\u4f7f\u7528\u7531 Node.js \u6784\u5efa REST API\u3002\u8be5\u8bfe\u7a0b\u8fd8\u5305\u542b\u4ecb\u7ecd GraphQL \u7684\u90e8\u5206\uff0c\u8fd9\u662f REST API \u7684\u73b0\u4ee3\u66ff\u4ee3\u65b9\u6848\u3002 \u8bfe\u7a0b\u8fd8\u5305\u62ec\u6d4b\u8bd5\u3001\u914d\u7f6e\u548c\u73af\u5883\u7ba1\u7406\uff0c\u4ee5\u53ca\u4f7f\u7528 MongoDB \u6765\u5b58\u50a8\u5e94\u7528\u7684\u6570\u636e\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"Web%E5%BC%80%E5%8F%91/fullstackopen/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://fullstackopen.com/zh/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b Discord \u7fa4\u7ec4\uff1a https://study.cs.helsinki.fi/discord/join/fullstack/ \u8bfe\u7a0b Telegram \u7fa4\u7ec4\uff1a https://t.me/fullstackcourse/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"Web%E5%BC%80%E5%8F%91/mitweb/","text":"MIT Web Development Crash Course \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS/NoSQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 MIT \u5728\u6bcf\u5e74 1 \u6708\u4efd\u4f1a\u6709\u4e00\u4e2a\u4e3a\u671f 4 \u5468\u7684 Independent Activities Period (IAP)\uff0c\u5728\u8fd9\u4e2a\u6708\u91cc\uff0cMIT \u7684\u5b66\u751f\u548c\u8001\u5e08\u53ef\u4ee5\u81ea\u7531\u5730\u5f00\u8bbe\u5f88\u591a\u6709\u8da3\u7684\u8bfe\u7a0b\uff0c\u800c\u8fd9\u95e8\u7f51\u7ad9\u5f00\u53d1\u8bfe\u7a0b\u5c31\u662f\u5176\u4e2d\u4e4b\u4e00\u3002 \u5728\u4e00\u4e2a\u6708\u7684\u65f6\u95f4\u91cc\uff0c\u4f60\u4f1a\u4ece\u96f6\u5f00\u59cb\u638c\u63e1\u4e00\u4e2a\u7f51\u7ad9\u7684\u8bbe\u8ba1\u3001\u642d\u5efa\u3001\u7f8e\u5316\u3001\u4ea4\u4e92\u7b49\u7b49\u6838\u5fc3\u5185\u5bb9\uff0c\u57fa\u672c\u8986\u76d6\u4e86 Web \u5f00\u53d1\u7684\u524d\u540e\u7aef\u5927\u90e8\u5206\u6280\u672f\u6808\u3002\u5982\u679c\u4f60\u4e0d\u9700\u8981\u7cfb\u7edf\u5730\u5b66\u4e60\u7f51\u7edc\u5f00\u53d1\uff0c\u800c\u53ea\u662f\u51fa\u4e8e\u5174\u8da3\u60f3\u628a\u5b83\u52a0\u5165\u81ea\u5df1\u7684\u6280\u80fd\u5305\u91cc\uff0c\u90a3\u4e48\u8fd9\u95e8\u8bfe\u5c06\u975e\u5e38\u9002\u5408\u4f60\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://weblab.mit.edu/schedule/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b Schedule","title":"MIT web development course"},{"location":"Web%E5%BC%80%E5%8F%91/mitweb/#mit-web-development-crash-course","text":"","title":"MIT Web Development Crash Course"},{"location":"Web%E5%BC%80%E5%8F%91/mitweb/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS/NoSQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 MIT \u5728\u6bcf\u5e74 1 \u6708\u4efd\u4f1a\u6709\u4e00\u4e2a\u4e3a\u671f 4 \u5468\u7684 Independent Activities Period (IAP)\uff0c\u5728\u8fd9\u4e2a\u6708\u91cc\uff0cMIT \u7684\u5b66\u751f\u548c\u8001\u5e08\u53ef\u4ee5\u81ea\u7531\u5730\u5f00\u8bbe\u5f88\u591a\u6709\u8da3\u7684\u8bfe\u7a0b\uff0c\u800c\u8fd9\u95e8\u7f51\u7ad9\u5f00\u53d1\u8bfe\u7a0b\u5c31\u662f\u5176\u4e2d\u4e4b\u4e00\u3002 \u5728\u4e00\u4e2a\u6708\u7684\u65f6\u95f4\u91cc\uff0c\u4f60\u4f1a\u4ece\u96f6\u5f00\u59cb\u638c\u63e1\u4e00\u4e2a\u7f51\u7ad9\u7684\u8bbe\u8ba1\u3001\u642d\u5efa\u3001\u7f8e\u5316\u3001\u4ea4\u4e92\u7b49\u7b49\u6838\u5fc3\u5185\u5bb9\uff0c\u57fa\u672c\u8986\u76d6\u4e86 Web \u5f00\u53d1\u7684\u524d\u540e\u7aef\u5927\u90e8\u5206\u6280\u672f\u6808\u3002\u5982\u679c\u4f60\u4e0d\u9700\u8981\u7cfb\u7edf\u5730\u5b66\u4e60\u7f51\u7edc\u5f00\u53d1\uff0c\u800c\u53ea\u662f\u51fa\u4e8e\u5174\u8da3\u60f3\u628a\u5b83\u52a0\u5165\u81ea\u5df1\u7684\u6280\u80fd\u5305\u91cc\uff0c\u90a3\u4e48\u8fd9\u95e8\u8bfe\u5c06\u975e\u5e38\u9002\u5408\u4f60\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"Web%E5%BC%80%E5%8F%91/mitweb/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://weblab.mit.edu/schedule/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b Schedule","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/","text":"CS188: Introduction to Artificial Intelligence \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS70 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u4eba\u5de5\u667a\u80fd\u5165\u95e8\u8bfe\uff0c\u8bfe\u7a0b notes \u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u57fa\u672c\u4e0d\u9700\u8981\u89c2\u770b\u8bfe\u7a0b\u89c6\u9891\u3002\u8bfe\u7a0b\u5185\u5bb9\u7684\u5b89\u6392\u57fa\u672c\u6309\u7167\u4eba\u5de5\u667a\u80fd\u7684\u7ecf\u5178\u6559\u6750 Artificial intelligence: A Modern Approach \u7684\u7ae0\u8282\u987a\u5e8f\uff0c\u8986\u76d6\u4e86\u641c\u7d22\u526a\u679d\u3001\u7ea6\u675f\u6ee1\u8db3\u95ee\u9898\u3001\u9a6c\u5c14\u53ef\u592b\u51b3\u7b56\u8fc7\u7a0b\u3001\u5f3a\u5316\u5b66\u4e60\u3001\u8d1d\u53f6\u65af\u7f51\u7edc\u3001\u9690\u9a6c\u5c14\u53ef\u592b\u6a21\u578b\u4ee5\u53ca\u57fa\u7840\u7684\u673a\u5668\u5b66\u4e60\u548c\u795e\u7ecf\u7f51\u7edc\u7684\u76f8\u5173\u5185\u5bb9\u3002 2018\u5e74\u79cb\u5b63\u5b66\u671f\u7684\u7248\u672c\u514d\u8d39\u5f00\u653e\u4e86 gradescope\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728\u7ebf\u5b8c\u6210\u4e66\u9762\u4f5c\u4e1a\u5e76\u5b9e\u65f6\u5f97\u5230\u6d4b\u8bc4\u7ed3\u679c\u3002\u540c\u65f6\u8bfe\u7a0b\u7684 6 \u4e2a Project \u4e5f\u662f\u8d28\u91cf\u7206\u70b8\uff0c\u590d\u73b0\u4e86\u7ecf\u5178\u7684 Packman\uff08\u5403\u8c46\u4eba\uff09\u5c0f\u6e38\u620f\uff0c\u4f1a\u8ba9\u4f60\u5229\u7528\u5b66\u5230\u7684 AI \u77e5\u8bc6\uff0c\u53bb\u5b9e\u73b0\u76f8\u5173\u7b97\u6cd5\uff0c\u8ba9\u4f60\u7684\u5403\u8c46\u4eba\u5728\u8ff7\u5bab\u91cc\u81ea\u7531\u7a7f\u68ad\uff0c\u8eb2\u907f\u9b3c\u602a\uff0c\u6536\u96c6\u8c46\u5b50\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1aArtificial intelligence: A Modern Approach \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \uff0c14\u4e2a\u5728\u7ebf\u6d4b\u8bc4\u4e66\u9762\u4f5c\u4e1a\u548c 6 \u4e2aProject","title":"UCB CS188: Introduction to Artificial Intelligence"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/#cs188-introduction-to-artificial-intelligence","text":"","title":"CS188: Introduction to Artificial Intelligence"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS70 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u4eba\u5de5\u667a\u80fd\u5165\u95e8\u8bfe\uff0c\u8bfe\u7a0b notes \u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u57fa\u672c\u4e0d\u9700\u8981\u89c2\u770b\u8bfe\u7a0b\u89c6\u9891\u3002\u8bfe\u7a0b\u5185\u5bb9\u7684\u5b89\u6392\u57fa\u672c\u6309\u7167\u4eba\u5de5\u667a\u80fd\u7684\u7ecf\u5178\u6559\u6750 Artificial intelligence: A Modern Approach \u7684\u7ae0\u8282\u987a\u5e8f\uff0c\u8986\u76d6\u4e86\u641c\u7d22\u526a\u679d\u3001\u7ea6\u675f\u6ee1\u8db3\u95ee\u9898\u3001\u9a6c\u5c14\u53ef\u592b\u51b3\u7b56\u8fc7\u7a0b\u3001\u5f3a\u5316\u5b66\u4e60\u3001\u8d1d\u53f6\u65af\u7f51\u7edc\u3001\u9690\u9a6c\u5c14\u53ef\u592b\u6a21\u578b\u4ee5\u53ca\u57fa\u7840\u7684\u673a\u5668\u5b66\u4e60\u548c\u795e\u7ecf\u7f51\u7edc\u7684\u76f8\u5173\u5185\u5bb9\u3002 2018\u5e74\u79cb\u5b63\u5b66\u671f\u7684\u7248\u672c\u514d\u8d39\u5f00\u653e\u4e86 gradescope\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728\u7ebf\u5b8c\u6210\u4e66\u9762\u4f5c\u4e1a\u5e76\u5b9e\u65f6\u5f97\u5230\u6d4b\u8bc4\u7ed3\u679c\u3002\u540c\u65f6\u8bfe\u7a0b\u7684 6 \u4e2a Project \u4e5f\u662f\u8d28\u91cf\u7206\u70b8\uff0c\u590d\u73b0\u4e86\u7ecf\u5178\u7684 Packman\uff08\u5403\u8c46\u4eba\uff09\u5c0f\u6e38\u620f\uff0c\u4f1a\u8ba9\u4f60\u5229\u7528\u5b66\u5230\u7684 AI \u77e5\u8bc6\uff0c\u53bb\u5b9e\u73b0\u76f8\u5173\u7b97\u6cd5\uff0c\u8ba9\u4f60\u7684\u5403\u8c46\u4eba\u5728\u8ff7\u5bab\u91cc\u81ea\u7531\u7a7f\u68ad\uff0c\u8eb2\u907f\u9b3c\u602a\uff0c\u6536\u96c6\u8c46\u5b50\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1aArtificial intelligence: A Modern Approach \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \uff0c14\u4e2a\u5728\u7ebf\u6d4b\u8bc4\u4e66\u9762\u4f5c\u4e1a\u548c 6 \u4e2aProject","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/","text":"CS50\u2019s Introduction to AI with Python \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aHarvard \u5148\u4fee\u8981\u6c42\uff1a\u57fa\u672c\u6982\u7387\u8bba + Python\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30 \u5c0f\u65f6 \u4e00\u95e8\u975e\u5e38\u57fa\u7840\u7684AI\u5165\u95e8\u8bfe\uff0c\u8ba9\u4eba\u773c\u524d\u4e00\u4eae\u7684\u662f12\u4e2a\u8bbe\u8ba1\u7cbe\u5de7\u7684\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u90fd\u4f1a\u7528\u5b66\u5230\u7684AI\u77e5\u8bc6\u53bb\u5b9e\u73b0\u4e00\u4e2a\u7b80\u6613\u7684\u6e38\u620fAI\uff0c\u6bd4\u5982\u7528\u5f3a\u5316\u5b66\u4e60\u8bad\u7ec3\u4e00\u4e2aNim\u6e38\u620f\u7684AI\uff0c\u7528alpha-beta\u526a\u679d\u53bb\u626b\u96f7\u7b49\u7b49\uff0c\u975e\u5e38\u9002\u5408\u65b0\u624b\u5165\u95e8\u6216\u8005\u5927\u4f6c\u4f11\u95f2\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs50.harvard.edu/ai/2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://cs50.harvard.edu/ai/2020/ \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs50.harvard.edu/ai/2020/ \uff0c12\u4e2a\u7cbe\u5de7\u7684\u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/cs50_ai - GitHub \u4e2d\u3002","title":"Harvard CS50's Introduction to AI with Python"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/#cs50s-introduction-to-ai-with-python","text":"","title":"CS50\u2019s Introduction to AI with Python"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aHarvard \u5148\u4fee\u8981\u6c42\uff1a\u57fa\u672c\u6982\u7387\u8bba + Python\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30 \u5c0f\u65f6 \u4e00\u95e8\u975e\u5e38\u57fa\u7840\u7684AI\u5165\u95e8\u8bfe\uff0c\u8ba9\u4eba\u773c\u524d\u4e00\u4eae\u7684\u662f12\u4e2a\u8bbe\u8ba1\u7cbe\u5de7\u7684\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u90fd\u4f1a\u7528\u5b66\u5230\u7684AI\u77e5\u8bc6\u53bb\u5b9e\u73b0\u4e00\u4e2a\u7b80\u6613\u7684\u6e38\u620fAI\uff0c\u6bd4\u5982\u7528\u5f3a\u5316\u5b66\u4e60\u8bad\u7ec3\u4e00\u4e2aNim\u6e38\u620f\u7684AI\uff0c\u7528alpha-beta\u526a\u679d\u53bb\u626b\u96f7\u7b49\u7b49\uff0c\u975e\u5e38\u9002\u5408\u65b0\u624b\u5165\u95e8\u6216\u8005\u5927\u4f6c\u4f11\u95f2\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs50.harvard.edu/ai/2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://cs50.harvard.edu/ai/2020/ \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs50.harvard.edu/ai/2020/ \uff0c12\u4e2a\u7cbe\u5de7\u7684\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/cs50_ai - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/","text":"\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u4e2d\u56fd\u79d1\u5b66\u9662\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784\uff0c\u6df1\u5ea6\u5b66\u4e60 \u7f16\u7a0b\u8bed\u8a00\uff1aPython, C++, BCL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6+ \u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u662f\u667a\u80fd\u7684\u6838\u5fc3\u7269\u8d28\u8f7d\u4f53\uff0c\u6bcf\u5e74\u5168\u7403\u8981\u5236\u9020\u6570\u4ee5\u5341\u4ebf\u8ba1\u7684\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\uff08\u5305\u62ec\u667a\u80fd\u624b\u673a\u3001\u667a\u80fd\u670d\u52a1\u5668\u3001\u667a\u80fd\u53ef\u7a7f\u6234\u8bbe\u5907\u7b49\uff09\uff0c\u9700\u8981\u5927\u91cf\u7684\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u7684\u8bbe\u8ba1\u8005\u548c\u5f00\u53d1\u8005\u3002\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u4eba\u624d\u7684\u57f9\u517b\u76f4\u63a5\u5173\u7cfb\u5230\u6211\u56fd\u667a\u80fd\u4ea7\u4e1a\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002\u56e0\u6b64\uff0c\u5bf9\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u7684\u8ba4\u8bc6\u548c\u7406\u89e3\u662f\u667a\u80fd\u65f6\u4ee3\u8ba1\u7b97\u673a\u7c7b\u4e13\u4e1a\u5b66\u751f\u57f9\u517b\u65b9\u6848\u4e2d\u4e0d\u53ef\u6216\u7f3a\u7684\u91cd\u8981\u7ec4\u6210\u90e8\u5206\uff0c\u662f\u8ba1\u7b97\u673a\u7c7b\u4e13\u4e1a\u5b66\u751f\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002 \u56fd\u5185\u7684\u9648\u4e91\u9701\u8001\u5e08\u5f00\u7684\u8bfe\uff0c\u5728\u5176\u4ed6\u82e5\u5e72\u4e2a\u5927\u5b66\u4e5f\u90fd\u6709\u5f00\u5bf9\u5e94\u7684\u8bfe\u7a0b\u3002\u8fd9\u95e8\u8bfe\u7528\u4e00\u4e2a\u4e2a\u5b9e\u9a8c\u5e26\u5927\u5bb6\u4ee5\u4e00\u4e2a\u5b8c\u6574\u7684\u89c6\u91ce\u7406\u89e3\u4eba\u5de5\u667a\u80fd\u7684\u6280\u672f\u6808\u3002\u4ece\u4e0a\u5c42\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\uff0c\u5230\u7528\u5e95\u5c42\u8bed\u8a00\u7f16\u5199\u7b97\u5b50\uff0c\u518d\u5230\u786c\u4ef6\u4e2d MLU \u7684\u8bbe\u8ba1\uff0c\u8ba9\u5927\u5bb6\u5f62\u6210\u7cfb\u7edf\u601d\u7ef4\uff0c\u4f53\u4f1a\u81ea\u4e0a\u800c\u4e0b\uff0c\u878d\u4f1a\u8d2f\u901a\u7684\u4e50\u8da3\u3002 \u6211\u505a\u4e86\u5176\u4e2d\u7684 2,3,4,5 \u8fd9\u51e0\u4e2a\u5b9e\u9a8c\uff0c\u5176\u4e2d\u7efc\u5408\u5b9e\u9a8c\u548c\u786c\u4ef6\u5b9e\u9a8c\u6ca1\u6709\u505a\uff0c\u5982\u679c\u6709\u505a\u4e86\u7684\u540c\u5b66\u6b22\u8fce\u5927\u5bb6\u8865\u4e0a\u4f60\u7684\u94fe\u63a5\u3002 \u4e2a\u4eba\u4f53\u4f1a\u662f\u7b2c\u4e09\u7ae0\u5b9e\u73b0\u7b97\u5b50\u7684\u5b9e\u9a8c\u8ba9\u6211\u5bf9\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u4e86\u89e3\u52a0\u6df1\u4e86\u5f88\u591a\u3002\u7b2c\u4e94\u7ae0\u7684\u5b9e\u9a8cBCL\u8bed\u8a00\u7f16\u5199\u7b97\u5b50\u5982\u679c\u4e86\u89e3 CUDA \u7684\u8bdd\u4f1a\u611f\u89c9\u5f88\u719f\u6089\u3002 \u63a8\u8350\u53bb\u4e70\u4e00\u672c\u6559\u6750\u770b\u4e00\u770b\uff0c\u4f1a\u8ba9\u6211\u4eec\u7406\u89e3\u6574\u4f53\u7684\u6280\u672f\u6808\u3002\u719f\u6089\u6df1\u5ea6\u5b66\u4e60\u7684\u540c\u5b66\u53ef\u4ee5\u76f4\u63a5\u4ece\u7b2c\u4e94\u7ae0\u5f00\u59cb\u770b\uff0c\u770b\u770b\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u5e95\u5c42\u5230\u5e95\u662f\u4ec0\u4e48\u6837\u7684\u3002 \u6211\u56e0\u4e3a\u8fd9\u95e8\u8bfe\u7684\u542f\u53d1\uff0c\u53c2\u8003\u4e00\u672c\u4e66\uff08\u4e66\u540d\u5728\u4ed3\u5e93\u4e2d\uff09\u5199\u4e86\u4e00\u4e2a\u7b80\u6613\u7684 \u6df1\u5ea6\u5b66\u4e60\u6846\u67b6 \u3002\u5728\u8fd9\u4e2a\u6846\u67b6\u91cc\u53ef\u4ee5\u770b\u5230\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u5b9e\u9a8c\u4e2d\u7684\u4e00\u4e9b\u5f71\u5b50\u3002\u540c\u65f6\u53d7\u5230 build-your-own-x \u7cfb\u5217\u7684\u542f\u53d1\uff0c\u6211\u4e5f\u6253\u7b97\u5199\u4e00\u4e0b\u6559\u7a0b\uff0c\u6559\u5927\u5bb6\u5199\u4e00\u4e2a\u81ea\u5df1\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\u4ee3\u7801\u7528 Python \u5199\u7684\uff0c\u4ee3\u7801\u91cf\u8f83\u5c11\uff0c\u9002\u5408\u6709\u4e00\u5b9a\u57fa\u7840\u7684\u540c\u5b66\u9605\u8bfb\u3002\u4e4b\u540e\u6253\u7b97\u6dfb\u52a0\u66f4\u591a\u7684\u7b97\u5b50\uff0c\u6709\u671b\u5b9e\u73b0\u4e00\u4e2a\u8f83\u4e3a\u5168\u9762\u7684\u6846\u67b6\uff0c\u5e76\u5e0c\u671b\u79fb\u690d\u5230 C++ \u4e2d\uff0c\u4ee5\u517c\u987e\u6027\u80fd\u4e0e\u5f00\u53d1\u6548\u7387\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a \u5b98\u7f51 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u8bfe\u7a0b\u6559\u6750\uff1a\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\uff08\u9648\u4e91\u9701\uff09 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a6 \u4e2a\u5b9e\u9a8c(\u5305\u62ec\u7f16\u5199\u5377\u79ef\u7b97\u5b50\uff0c\u4e3a TensorFlow \u6dfb\u52a0\u7b97\u5b50\uff0c\u7528 BCL \u7f16\u5199\u7b97\u5b50\u5e76\u96c6\u6210\u5230 TensorFlow \u4e2d\u7b49)(\u5177\u4f53\u5185\u5bb9\u5728\u5b98\u7f51\u53ef\u4ee5\u627e\u5230) \u5b9e\u9a8c\u624b\u518c\uff1a http://forum.cambricon.com/show-8-708-1.html \uff0c\u5b9e\u9a8c 2.0 \u6307\u5bfc\u624b\u518c \u5b66\u4e60\u7b14\u8bb0\uff1a https://sanzo.top/categories/AI-Computing-Systems/ \uff0c\u53c2\u8003\u5b9e\u9a8c\u624b\u518c\u603b\u7ed3\u7684\u7b14\u8bb0 \u8d44\u6e90\u6c47\u603b @ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: ai-system - GitHub \u4e2d\u3002","title":"\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/#_1","text":"","title":"\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/#_2","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u4e2d\u56fd\u79d1\u5b66\u9662\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784\uff0c\u6df1\u5ea6\u5b66\u4e60 \u7f16\u7a0b\u8bed\u8a00\uff1aPython, C++, BCL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6+ \u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u662f\u667a\u80fd\u7684\u6838\u5fc3\u7269\u8d28\u8f7d\u4f53\uff0c\u6bcf\u5e74\u5168\u7403\u8981\u5236\u9020\u6570\u4ee5\u5341\u4ebf\u8ba1\u7684\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\uff08\u5305\u62ec\u667a\u80fd\u624b\u673a\u3001\u667a\u80fd\u670d\u52a1\u5668\u3001\u667a\u80fd\u53ef\u7a7f\u6234\u8bbe\u5907\u7b49\uff09\uff0c\u9700\u8981\u5927\u91cf\u7684\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u7684\u8bbe\u8ba1\u8005\u548c\u5f00\u53d1\u8005\u3002\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u4eba\u624d\u7684\u57f9\u517b\u76f4\u63a5\u5173\u7cfb\u5230\u6211\u56fd\u667a\u80fd\u4ea7\u4e1a\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002\u56e0\u6b64\uff0c\u5bf9\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u7684\u8ba4\u8bc6\u548c\u7406\u89e3\u662f\u667a\u80fd\u65f6\u4ee3\u8ba1\u7b97\u673a\u7c7b\u4e13\u4e1a\u5b66\u751f\u57f9\u517b\u65b9\u6848\u4e2d\u4e0d\u53ef\u6216\u7f3a\u7684\u91cd\u8981\u7ec4\u6210\u90e8\u5206\uff0c\u662f\u8ba1\u7b97\u673a\u7c7b\u4e13\u4e1a\u5b66\u751f\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002 \u56fd\u5185\u7684\u9648\u4e91\u9701\u8001\u5e08\u5f00\u7684\u8bfe\uff0c\u5728\u5176\u4ed6\u82e5\u5e72\u4e2a\u5927\u5b66\u4e5f\u90fd\u6709\u5f00\u5bf9\u5e94\u7684\u8bfe\u7a0b\u3002\u8fd9\u95e8\u8bfe\u7528\u4e00\u4e2a\u4e2a\u5b9e\u9a8c\u5e26\u5927\u5bb6\u4ee5\u4e00\u4e2a\u5b8c\u6574\u7684\u89c6\u91ce\u7406\u89e3\u4eba\u5de5\u667a\u80fd\u7684\u6280\u672f\u6808\u3002\u4ece\u4e0a\u5c42\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\uff0c\u5230\u7528\u5e95\u5c42\u8bed\u8a00\u7f16\u5199\u7b97\u5b50\uff0c\u518d\u5230\u786c\u4ef6\u4e2d MLU \u7684\u8bbe\u8ba1\uff0c\u8ba9\u5927\u5bb6\u5f62\u6210\u7cfb\u7edf\u601d\u7ef4\uff0c\u4f53\u4f1a\u81ea\u4e0a\u800c\u4e0b\uff0c\u878d\u4f1a\u8d2f\u901a\u7684\u4e50\u8da3\u3002 \u6211\u505a\u4e86\u5176\u4e2d\u7684 2,3,4,5 \u8fd9\u51e0\u4e2a\u5b9e\u9a8c\uff0c\u5176\u4e2d\u7efc\u5408\u5b9e\u9a8c\u548c\u786c\u4ef6\u5b9e\u9a8c\u6ca1\u6709\u505a\uff0c\u5982\u679c\u6709\u505a\u4e86\u7684\u540c\u5b66\u6b22\u8fce\u5927\u5bb6\u8865\u4e0a\u4f60\u7684\u94fe\u63a5\u3002 \u4e2a\u4eba\u4f53\u4f1a\u662f\u7b2c\u4e09\u7ae0\u5b9e\u73b0\u7b97\u5b50\u7684\u5b9e\u9a8c\u8ba9\u6211\u5bf9\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u4e86\u89e3\u52a0\u6df1\u4e86\u5f88\u591a\u3002\u7b2c\u4e94\u7ae0\u7684\u5b9e\u9a8cBCL\u8bed\u8a00\u7f16\u5199\u7b97\u5b50\u5982\u679c\u4e86\u89e3 CUDA \u7684\u8bdd\u4f1a\u611f\u89c9\u5f88\u719f\u6089\u3002 \u63a8\u8350\u53bb\u4e70\u4e00\u672c\u6559\u6750\u770b\u4e00\u770b\uff0c\u4f1a\u8ba9\u6211\u4eec\u7406\u89e3\u6574\u4f53\u7684\u6280\u672f\u6808\u3002\u719f\u6089\u6df1\u5ea6\u5b66\u4e60\u7684\u540c\u5b66\u53ef\u4ee5\u76f4\u63a5\u4ece\u7b2c\u4e94\u7ae0\u5f00\u59cb\u770b\uff0c\u770b\u770b\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u5e95\u5c42\u5230\u5e95\u662f\u4ec0\u4e48\u6837\u7684\u3002 \u6211\u56e0\u4e3a\u8fd9\u95e8\u8bfe\u7684\u542f\u53d1\uff0c\u53c2\u8003\u4e00\u672c\u4e66\uff08\u4e66\u540d\u5728\u4ed3\u5e93\u4e2d\uff09\u5199\u4e86\u4e00\u4e2a\u7b80\u6613\u7684 \u6df1\u5ea6\u5b66\u4e60\u6846\u67b6 \u3002\u5728\u8fd9\u4e2a\u6846\u67b6\u91cc\u53ef\u4ee5\u770b\u5230\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u5b9e\u9a8c\u4e2d\u7684\u4e00\u4e9b\u5f71\u5b50\u3002\u540c\u65f6\u53d7\u5230 build-your-own-x \u7cfb\u5217\u7684\u542f\u53d1\uff0c\u6211\u4e5f\u6253\u7b97\u5199\u4e00\u4e0b\u6559\u7a0b\uff0c\u6559\u5927\u5bb6\u5199\u4e00\u4e2a\u81ea\u5df1\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\u4ee3\u7801\u7528 Python \u5199\u7684\uff0c\u4ee3\u7801\u91cf\u8f83\u5c11\uff0c\u9002\u5408\u6709\u4e00\u5b9a\u57fa\u7840\u7684\u540c\u5b66\u9605\u8bfb\u3002\u4e4b\u540e\u6253\u7b97\u6dfb\u52a0\u66f4\u591a\u7684\u7b97\u5b50\uff0c\u6709\u671b\u5b9e\u73b0\u4e00\u4e2a\u8f83\u4e3a\u5168\u9762\u7684\u6846\u67b6\uff0c\u5e76\u5e0c\u671b\u79fb\u690d\u5230 C++ \u4e2d\uff0c\u4ee5\u517c\u987e\u6027\u80fd\u4e0e\u5f00\u53d1\u6548\u7387\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/#_3","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a \u5b98\u7f51 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u8bfe\u7a0b\u6559\u6750\uff1a\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\uff08\u9648\u4e91\u9701\uff09 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a6 \u4e2a\u5b9e\u9a8c(\u5305\u62ec\u7f16\u5199\u5377\u79ef\u7b97\u5b50\uff0c\u4e3a TensorFlow \u6dfb\u52a0\u7b97\u5b50\uff0c\u7528 BCL \u7f16\u5199\u7b97\u5b50\u5e76\u96c6\u6210\u5230 TensorFlow \u4e2d\u7b49)(\u5177\u4f53\u5185\u5bb9\u5728\u5b98\u7f51\u53ef\u4ee5\u627e\u5230) \u5b9e\u9a8c\u624b\u518c\uff1a http://forum.cambricon.com/show-8-708-1.html \uff0c\u5b9e\u9a8c 2.0 \u6307\u5bfc\u624b\u518c \u5b66\u4e60\u7b14\u8bb0\uff1a https://sanzo.top/categories/AI-Computing-Systems/ \uff0c\u53c2\u8003\u5b9e\u9a8c\u624b\u518c\u603b\u7ed3\u7684\u7b14\u8bb0","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/#_4","text":"@ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: ai-system - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/","text":"CS61C: Great Ideas in Computer Architecture \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u6700\u540e\u4e00\u95e8\u8bfe\u7a0b\uff0c\u6df1\u5165\u8ba1\u7b97\u673a\u7684\u786c\u4ef6\u7ec6\u8282\uff0c\u5e26\u9886\u5b66\u751f\u9010\u6b65\u7406\u89e3 C \u8bed\u8a00\u662f\u5982\u4f55\u4e00\u6b65\u6b65\u8f6c\u5316\u4e3a RISC-V \u6c47\u7f16\u5e76\u5728 CPU \u4e0a\u6267\u884c\u7684\u3002\u548c Nand2Tetris \u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe \u5728\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u90fd\u4f1a\u63d0\u9ad8\u5f88\u591a\uff0c\u5177\u4f53\u4f1a\u6d89\u53ca\u5230\u6d41\u6c34\u7ebf\u3001Cache\u3001\u865a\u5b58\u4ee5\u53ca\u5e76\u53d1\u76f8\u5173\u7684\u5185\u5bb9\u3002 \u8fd9\u95e8\u8bfe\u7684 Project \u4e5f\u975e\u5e38\u65b0\u9896\u6709\u8da3\u3002Project1 \u4f1a\u8ba9\u4f60\u7528 C \u8bed\u8a00\u5199\u4e00\u4e2a\u5c0f\u7a0b\u5e8f\uff0c20 \u5e74\u79cb\u5b63\u5b66\u671f\u662f\u8457\u540d\u7684\u6e38\u620f Game of Life \u3002Project2 \u4f1a\u8ba9\u4f60\u7528 RISC-V \u6c47\u7f16\u7f16\u5199\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc\uff0c\u7528\u6765 \u8bc6\u522b MNIST \u624b\u5199\u6570\u5b57\uff0c\u975e\u5e38\u953b\u70bc\u4f60\u5bf9\u6c47\u7f16\u4ee3\u7801\u7684\u7406\u89e3\u548c\u8fd0\u7528\u3002Project3 \u4e2d\u4f60\u4f1a\u7528 Logisim \u8fd9\u4e2a\u6570\u5b57\u7535\u8def\u6a21\u62df\u8f6f\u4ef6\u642d\u5efa\u51fa\u4e00\u4e2a\u4e8c\u7ea7\u6d41\u6c34\u7ebf\u7684 CPU\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c RISC-V \u6c47\u7f16\u4ee3\u7801\u3002Project4 \u4f1a\u8ba9\u4f60\u4f7f\u7528 OpenMP, SIMD \u7b49\u65b9\u6cd5\u5e76\u884c\u4f18\u5316\u77e9\u9635\u8fd0\u7b97\uff0c\u5b9e\u73b0\u4e00\u4e2a\u7b80\u6613\u7684 Numpy\u3002 \u603b\u800c\u8a00\u4e4b\uff0c\u8fd9\u662f\u4e2a\u4eba\u4e0a\u8fc7\u7684\u6700\u597d\u7684\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u7684\u8bfe\u7a0b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs61c.org/su20/ \u8bfe\u7a0b\u89c6\u9891\uff1a B \u7ad9 , Youtube \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a11 \u4e2a Lab\uff0c4 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS61C-summer20 - GitHub \u4e2d\u3002","title":"UCB CS61C: Great Ideas in Computer Architecture"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/#cs61c-great-ideas-in-computer-architecture","text":"","title":"CS61C: Great Ideas in Computer Architecture"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u6700\u540e\u4e00\u95e8\u8bfe\u7a0b\uff0c\u6df1\u5165\u8ba1\u7b97\u673a\u7684\u786c\u4ef6\u7ec6\u8282\uff0c\u5e26\u9886\u5b66\u751f\u9010\u6b65\u7406\u89e3 C \u8bed\u8a00\u662f\u5982\u4f55\u4e00\u6b65\u6b65\u8f6c\u5316\u4e3a RISC-V \u6c47\u7f16\u5e76\u5728 CPU \u4e0a\u6267\u884c\u7684\u3002\u548c Nand2Tetris \u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe \u5728\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u90fd\u4f1a\u63d0\u9ad8\u5f88\u591a\uff0c\u5177\u4f53\u4f1a\u6d89\u53ca\u5230\u6d41\u6c34\u7ebf\u3001Cache\u3001\u865a\u5b58\u4ee5\u53ca\u5e76\u53d1\u76f8\u5173\u7684\u5185\u5bb9\u3002 \u8fd9\u95e8\u8bfe\u7684 Project \u4e5f\u975e\u5e38\u65b0\u9896\u6709\u8da3\u3002Project1 \u4f1a\u8ba9\u4f60\u7528 C \u8bed\u8a00\u5199\u4e00\u4e2a\u5c0f\u7a0b\u5e8f\uff0c20 \u5e74\u79cb\u5b63\u5b66\u671f\u662f\u8457\u540d\u7684\u6e38\u620f Game of Life \u3002Project2 \u4f1a\u8ba9\u4f60\u7528 RISC-V \u6c47\u7f16\u7f16\u5199\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc\uff0c\u7528\u6765 \u8bc6\u522b MNIST \u624b\u5199\u6570\u5b57\uff0c\u975e\u5e38\u953b\u70bc\u4f60\u5bf9\u6c47\u7f16\u4ee3\u7801\u7684\u7406\u89e3\u548c\u8fd0\u7528\u3002Project3 \u4e2d\u4f60\u4f1a\u7528 Logisim \u8fd9\u4e2a\u6570\u5b57\u7535\u8def\u6a21\u62df\u8f6f\u4ef6\u642d\u5efa\u51fa\u4e00\u4e2a\u4e8c\u7ea7\u6d41\u6c34\u7ebf\u7684 CPU\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c RISC-V \u6c47\u7f16\u4ee3\u7801\u3002Project4 \u4f1a\u8ba9\u4f60\u4f7f\u7528 OpenMP, SIMD \u7b49\u65b9\u6cd5\u5e76\u884c\u4f18\u5316\u77e9\u9635\u8fd0\u7b97\uff0c\u5b9e\u73b0\u4e00\u4e2a\u7b80\u6613\u7684 Numpy\u3002 \u603b\u800c\u8a00\u4e4b\uff0c\u8fd9\u662f\u4e2a\u4eba\u4e0a\u8fc7\u7684\u6700\u597d\u7684\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u7684\u8bfe\u7a0b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs61c.org/su20/ \u8bfe\u7a0b\u89c6\u9891\uff1a B \u7ad9 , Youtube \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a11 \u4e2a Lab\uff0c4 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS61C-summer20 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/","text":"CMU CS15213: CSAPP \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 CMU \u5927\u540d\u9f0e\u9f0e\u7684\u9547\u7cfb\u795e\u8bfe\uff0c\u4ee5\u5176\u5185\u5bb9\u5e9e\u6742\uff0cProject \u5de8\u96be\u800c\u95fb\u540d\u9050\u8fe9\u3002\u8bfe\u7a0b\u5185\u5bb9\u8986\u76d6\u4e86\u6c47\u7f16\u8bed\u8a00\u3001\u4f53\u7cfb\u7ed3\u6784\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f16\u8bd1\u94fe\u63a5\u3001\u5e76\u884c\u3001\u7f51\u7edc\u7b49\uff0c\u4f5c\u4e3a\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u517c\u5177\u6df1\u5ea6\u548c\u5e7f\u5ea6\uff0c\u5982\u679c\u81ea\u5b66\u786e\u5b9e\u9700\u8981\u76f8\u5f53\u7684\u6bc5\u529b\u548c\u4ee3\u7801\u529f\u5e95\u3002 \u8fd9\u95e8\u8bfe\u914d\u5408\u7684\u6559\u6750\u7531 CMU \u8ba1\u7b97\u673a\u7cfb\u4e3b\u4efb Bryant \u6559\u6388\u6267\u7b14\uff0c\u4e5f\u5373\u6240\u8c13\u7684 CSAPP\u3002\u8fd9\u4e5f\u662f\u6211\u7b2c\u4e00\u672c\u8ba4\u8ba4\u771f\u771f\u4e00\u9875\u4e00\u9875\u8bfb\u8fc7\u53bb\u7684\u8ba1\u7b97\u673a\u6559\u6750\uff0c\u867d\u7136\u5f88\u96be\u5543\uff0c\u4f46\u7740\u5b9e\u6536\u83b7\u826f\u591a\u3002 \u5317\u5927\u8d2d\u4e70\u4e86\u8fd9\u95e8\u8bfe\u7684\u7248\u6743\u5e76\u5f00\u8bbe\u4e86 Introduction to Computer System \u8fd9\u95e8\u8bfe\uff0c\u4f46\u5176\u5b9e CSAPP \u6240\u6709\u7684\u8bfe\u7a0b\u8d44\u6e90\u548c\u5b9e\u9a8c\u4ee3\u7801\u90fd\u80fd\u5728\u5b83\u7684\u5b98\u65b9\u4e3b\u9875\u4e0a\u8bbf\u95ee\u5230\uff08\u5177\u4f53\u53c2\u89c1\u4e0b\u65b9\u94fe\u63a5\uff09\u3002 \u8fd9\u95e8\u8bfe\u7531\u4e8e\u8fc7\u4e8e\u51fa\u540d\uff0c\u5168\u4e16\u754c\u7684\u7801\u519c\u4e89\u76f8\u5b66\u4e60\uff0c\u5bfc\u81f4\u5176 Project \u7684\u7b54\u6848\u5728\u7f51\u4e0a\u51e0\u4e4e\u553e\u624b\u53ef\u5f97\u3002\u4f46\u5982\u679c\u4f60\u771f\u7684\u60f3\u953b\u70bc\u81ea\u5df1\u7684\u4ee3\u7801\u80fd\u529b\uff0c\u5e0c\u671b\u4f60\u4e0d\u8981\u501f\u9274\u4efb\u4f55\u7b2c\u4e09\u65b9\u4ee3\u7801\u3002 \u8ba4\u771f\u5b66\u5b8c\u8fd9\u4e00\u95e8\u8bfe\uff0c\u4f60\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u7684\u7406\u89e3\u7edd\u5bf9\u4f1a\u4e0a\u5347\u4e00\u4e2a\u53f0\u9636\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://csapp.cs.cmu.edu/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1iW411d7hd \u8bfe\u7a0b\u6559\u6750\uff1aComputer Systems: A Programmer's Perspective, 3/E \u8bfe\u7a0b\u4f5c\u4e1a\uff1a11 \u4e2a Project\uff0c \u4ee3\u7801\u6846\u67b6\u5168\u90e8\u5f00\u6e90 \u82f1\u8bed\u6709\u56f0\u96be\u7684\u540c\u5b66\u53ef\u4ee5\u53c2\u8003B\u7ad9UP\u4e3b \u4e5d\u66f2\u9611\u5e72 \u5bf9 CSAPP \u7684 \u4e2d\u6587\u8bb2\u89e3 \uff08\u636e\u8bf4CMU\u7684\u4e2d\u56fd\u7559\u5b66\u751f\u4e5f\u5728CMU\u7684\u8bfe\u5802\u4e0a\u770b\u8fd9\u4e2a\u89c6\u9891\u5462\uff09\u3002\u53e6\u5916\u5982\u679c\u5927\u5bb6\u5728\u770b\u5b8c CSAPP \u540e\u5bf9\u4e66\u4e2d\u7684\u7b2c\u4e03\u7ae0\u94fe\u63a5\u6709\u4e00\u5b9a\u7684\u7591\u95ee\uff0c\u63a8\u8350\u9605\u8bfb\u300a\u7a0b\u5e8f\u5458\u7684\u81ea\u6211\u4fee\u517b\u300b\u8fd9\u672c\u4e66\uff0c\u4e66\u7684\u526f\u6807\u9898\u662f\u94fe\u63a5\uff0c\u88c5\u8f7d\u4e0e\u5e93\u3002\u8fd9\u672c\u4e66\u80fd\u591f\u5e2e\u52a9\u6211\u4eec\u5b8c\u5584\u5bf9\u7a0b\u5e8f\u94fe\u63a5\u7684\u7406\u89e3\uff0c\u76f8\u4fe1\u4f60\u5728\u770b\u5b8c\u8fd9\u672c\u4e66\u4ee5\u540e\u53ef\u4ee5\u5bf9\u7a0b\u5e8f\u7684\u94fe\u63a5\uff0cELF \u6587\u4ef6\uff0c\u52a8\u6001\u5e93\u90fd\u5c06\u6709\u4e00\u4e2a\u66f4\u52a0\u6df1\u5165\u7684\u7406\u89e3\u3002\u5341\u5206\u63a8\u8350\u5728\u8bfb\u5b8c CSAPP\uff0c\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u4e00\u5b9a\u7684\u4e86\u89e3\u4ee5\u540e\u4f5c\u4e3a\u8865\u5145\u8d44\u6599\u6765\u9605\u8bfb\u3002","title":"CMU 15-213: CSAPP"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/#cmu-cs15213-csapp","text":"","title":"CMU CS15213: CSAPP"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 CMU \u5927\u540d\u9f0e\u9f0e\u7684\u9547\u7cfb\u795e\u8bfe\uff0c\u4ee5\u5176\u5185\u5bb9\u5e9e\u6742\uff0cProject \u5de8\u96be\u800c\u95fb\u540d\u9050\u8fe9\u3002\u8bfe\u7a0b\u5185\u5bb9\u8986\u76d6\u4e86\u6c47\u7f16\u8bed\u8a00\u3001\u4f53\u7cfb\u7ed3\u6784\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f16\u8bd1\u94fe\u63a5\u3001\u5e76\u884c\u3001\u7f51\u7edc\u7b49\uff0c\u4f5c\u4e3a\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u517c\u5177\u6df1\u5ea6\u548c\u5e7f\u5ea6\uff0c\u5982\u679c\u81ea\u5b66\u786e\u5b9e\u9700\u8981\u76f8\u5f53\u7684\u6bc5\u529b\u548c\u4ee3\u7801\u529f\u5e95\u3002 \u8fd9\u95e8\u8bfe\u914d\u5408\u7684\u6559\u6750\u7531 CMU \u8ba1\u7b97\u673a\u7cfb\u4e3b\u4efb Bryant \u6559\u6388\u6267\u7b14\uff0c\u4e5f\u5373\u6240\u8c13\u7684 CSAPP\u3002\u8fd9\u4e5f\u662f\u6211\u7b2c\u4e00\u672c\u8ba4\u8ba4\u771f\u771f\u4e00\u9875\u4e00\u9875\u8bfb\u8fc7\u53bb\u7684\u8ba1\u7b97\u673a\u6559\u6750\uff0c\u867d\u7136\u5f88\u96be\u5543\uff0c\u4f46\u7740\u5b9e\u6536\u83b7\u826f\u591a\u3002 \u5317\u5927\u8d2d\u4e70\u4e86\u8fd9\u95e8\u8bfe\u7684\u7248\u6743\u5e76\u5f00\u8bbe\u4e86 Introduction to Computer System \u8fd9\u95e8\u8bfe\uff0c\u4f46\u5176\u5b9e CSAPP \u6240\u6709\u7684\u8bfe\u7a0b\u8d44\u6e90\u548c\u5b9e\u9a8c\u4ee3\u7801\u90fd\u80fd\u5728\u5b83\u7684\u5b98\u65b9\u4e3b\u9875\u4e0a\u8bbf\u95ee\u5230\uff08\u5177\u4f53\u53c2\u89c1\u4e0b\u65b9\u94fe\u63a5\uff09\u3002 \u8fd9\u95e8\u8bfe\u7531\u4e8e\u8fc7\u4e8e\u51fa\u540d\uff0c\u5168\u4e16\u754c\u7684\u7801\u519c\u4e89\u76f8\u5b66\u4e60\uff0c\u5bfc\u81f4\u5176 Project \u7684\u7b54\u6848\u5728\u7f51\u4e0a\u51e0\u4e4e\u553e\u624b\u53ef\u5f97\u3002\u4f46\u5982\u679c\u4f60\u771f\u7684\u60f3\u953b\u70bc\u81ea\u5df1\u7684\u4ee3\u7801\u80fd\u529b\uff0c\u5e0c\u671b\u4f60\u4e0d\u8981\u501f\u9274\u4efb\u4f55\u7b2c\u4e09\u65b9\u4ee3\u7801\u3002 \u8ba4\u771f\u5b66\u5b8c\u8fd9\u4e00\u95e8\u8bfe\uff0c\u4f60\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u7684\u7406\u89e3\u7edd\u5bf9\u4f1a\u4e0a\u5347\u4e00\u4e2a\u53f0\u9636\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://csapp.cs.cmu.edu/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1iW411d7hd \u8bfe\u7a0b\u6559\u6750\uff1aComputer Systems: A Programmer's Perspective, 3/E \u8bfe\u7a0b\u4f5c\u4e1a\uff1a11 \u4e2a Project\uff0c \u4ee3\u7801\u6846\u67b6\u5168\u90e8\u5f00\u6e90 \u82f1\u8bed\u6709\u56f0\u96be\u7684\u540c\u5b66\u53ef\u4ee5\u53c2\u8003B\u7ad9UP\u4e3b \u4e5d\u66f2\u9611\u5e72 \u5bf9 CSAPP \u7684 \u4e2d\u6587\u8bb2\u89e3 \uff08\u636e\u8bf4CMU\u7684\u4e2d\u56fd\u7559\u5b66\u751f\u4e5f\u5728CMU\u7684\u8bfe\u5802\u4e0a\u770b\u8fd9\u4e2a\u89c6\u9891\u5462\uff09\u3002\u53e6\u5916\u5982\u679c\u5927\u5bb6\u5728\u770b\u5b8c CSAPP \u540e\u5bf9\u4e66\u4e2d\u7684\u7b2c\u4e03\u7ae0\u94fe\u63a5\u6709\u4e00\u5b9a\u7684\u7591\u95ee\uff0c\u63a8\u8350\u9605\u8bfb\u300a\u7a0b\u5e8f\u5458\u7684\u81ea\u6211\u4fee\u517b\u300b\u8fd9\u672c\u4e66\uff0c\u4e66\u7684\u526f\u6807\u9898\u662f\u94fe\u63a5\uff0c\u88c5\u8f7d\u4e0e\u5e93\u3002\u8fd9\u672c\u4e66\u80fd\u591f\u5e2e\u52a9\u6211\u4eec\u5b8c\u5584\u5bf9\u7a0b\u5e8f\u94fe\u63a5\u7684\u7406\u89e3\uff0c\u76f8\u4fe1\u4f60\u5728\u770b\u5b8c\u8fd9\u672c\u4e66\u4ee5\u540e\u53ef\u4ee5\u5bf9\u7a0b\u5e8f\u7684\u94fe\u63a5\uff0cELF \u6587\u4ef6\uff0c\u52a8\u6001\u5e93\u90fd\u5c06\u6709\u4e00\u4e2a\u66f4\u52a0\u6df1\u5165\u7684\u7406\u89e3\u3002\u5341\u5206\u63a8\u8350\u5728\u8bfb\u5b8c CSAPP\uff0c\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u4e00\u5b9a\u7684\u4e86\u89e3\u4ee5\u540e\u4f5c\u4e3a\u8865\u5145\u8d44\u6599\u6765\u9605\u8bfb\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/","text":"Digital Design and Computer Architecture \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aETH Zurich \u5148\u4fee\u8981\u6c42\uff1aCS50 \u6216\u540c\u9636\u8bfe\u7a0b\uff0c\u6700\u597d\u6709 C \u8bed\u8a00\u57fa\u7840\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aC\uff0cVerilog\uff0cMIPS \u6c47\u7f16\uff0cLC3 \u6c47\u7f16 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u7684\u5927\u725b Onur Mutlu \u6765\u6559\u4f60\u6570\u5b57\u7535\u8def\u548c\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u3002\u8bfe\u7a0b\u5b8c\u5168\u4ece\u8ba1\u7b97\u673a\u8bbe\u8ba1\u7684\u89d2\u5ea6\u51fa\u53d1\uff0c\u4ece\u6676\u4f53\u7ba1\u3001\u903b\u8f91\u95e8\u5f00\u59cb\uff0c\u4e00\u76f4\u8bb2\u89e3\u5230\u5fae\u67b6\u6784\u3001\u7f13\u5b58\u548c\u865a\u62df\u5185\u5b58\uff0c\u8fd8\u4f1a\u4ecb\u7ecd \u5f88\u591a\u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u6700\u65b0\u7684\u7814\u7a76\u8fdb\u5c55\u3002\u8bfe\u7a0b\u5171\u6709 9 \u4e2a lab\uff0c\u4f7f\u7528 Basys 3 FPGA \u5f00\u53d1\u677f\uff08\u53ef\u81ea\u884c\u8d2d\u4e70\uff09\u548c Xilinx \u516c\u53f8\u7684 Vivado \u8f6f\u4ef6 \uff08\u53ef\u5728\u5b98\u7f51\u514d\u8d39\u4e0b\u8f7d\u4f7f\u7528\uff09\u8fdb\u884c\u7535\u8def\u8bbe\u8ba1\uff0c\u4ece\u7ec4\u5408\u7535\u8def \u548c\u65f6\u5e8f\u7535\u8def\u5f00\u59cb\uff0c\u4e00\u76f4\u5230\u6700\u540e\u90e8\u7f72\u4e00\u4e2a\u5b8c\u6574\u7684 CPU\u3002\u8bfe\u7a0b\u8d44\u6599\u9664\u4e86 lab \u7b54\u6848\u548c\u5f53\u671f\u8003\u8bd5\u7b54\u6848\u4e4b\u5916\u5168\u90e8\u5f00\u6e90\uff0c\u5b66\u5b8c\u4e4b\u540e\u4f60\u53ef\u4ee5\u638c\u63e1\u8ba1\u7b97\u673a\u76f8\u5173\u7684\u6570\u5b57\u7535\u8def\uff0cVerilog \u786c\u4ef6\u63cf\u8ff0\u8bed\u8a00\uff0cMIPS \u4e0e C \u4e4b\u95f4\u7684\u8f6c\u6362\u5173\u7cfb\uff0cMIPS \u5355\u5468\u671f\u591a\u5468\u671f\u6d41\u6c34\u7ebf CPU \u7684\u8bbe\u8ba1\u548c\u6027\u80fd\u5206\u6790\uff0c\u7f13\u5b58\uff0c\u865a\u62df\u5185\u5b58\u7b49\u91cd\u8981\u6982\u5ff5\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://safari.ethz.ch/digitaltechnik/spring2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2 \u8bfe\u7a0b\u6559\u67501\uff1aPatt and Patel, Introduction to Computing Systems \u8bfe\u7a0b\u6559\u67502\uff1aHarris and Harris, Digital Design and Computer Architecture (MIPS Edition) \u8bfe\u7a0b\u5b9e\u9a8c\uff1a9 \u4e2a\u5b9e\u9a8c\u4ece\u96f6\u5f00\u59cb\u8bbe\u8ba1 MIPS CPU\uff0c\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"Digital Design and Computer Architecture"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/#digital-design-and-computer-architecture","text":"","title":"Digital Design and Computer Architecture"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aETH Zurich \u5148\u4fee\u8981\u6c42\uff1aCS50 \u6216\u540c\u9636\u8bfe\u7a0b\uff0c\u6700\u597d\u6709 C \u8bed\u8a00\u57fa\u7840\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aC\uff0cVerilog\uff0cMIPS \u6c47\u7f16\uff0cLC3 \u6c47\u7f16 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u7684\u5927\u725b Onur Mutlu \u6765\u6559\u4f60\u6570\u5b57\u7535\u8def\u548c\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u3002\u8bfe\u7a0b\u5b8c\u5168\u4ece\u8ba1\u7b97\u673a\u8bbe\u8ba1\u7684\u89d2\u5ea6\u51fa\u53d1\uff0c\u4ece\u6676\u4f53\u7ba1\u3001\u903b\u8f91\u95e8\u5f00\u59cb\uff0c\u4e00\u76f4\u8bb2\u89e3\u5230\u5fae\u67b6\u6784\u3001\u7f13\u5b58\u548c\u865a\u62df\u5185\u5b58\uff0c\u8fd8\u4f1a\u4ecb\u7ecd \u5f88\u591a\u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u6700\u65b0\u7684\u7814\u7a76\u8fdb\u5c55\u3002\u8bfe\u7a0b\u5171\u6709 9 \u4e2a lab\uff0c\u4f7f\u7528 Basys 3 FPGA \u5f00\u53d1\u677f\uff08\u53ef\u81ea\u884c\u8d2d\u4e70\uff09\u548c Xilinx \u516c\u53f8\u7684 Vivado \u8f6f\u4ef6 \uff08\u53ef\u5728\u5b98\u7f51\u514d\u8d39\u4e0b\u8f7d\u4f7f\u7528\uff09\u8fdb\u884c\u7535\u8def\u8bbe\u8ba1\uff0c\u4ece\u7ec4\u5408\u7535\u8def \u548c\u65f6\u5e8f\u7535\u8def\u5f00\u59cb\uff0c\u4e00\u76f4\u5230\u6700\u540e\u90e8\u7f72\u4e00\u4e2a\u5b8c\u6574\u7684 CPU\u3002\u8bfe\u7a0b\u8d44\u6599\u9664\u4e86 lab \u7b54\u6848\u548c\u5f53\u671f\u8003\u8bd5\u7b54\u6848\u4e4b\u5916\u5168\u90e8\u5f00\u6e90\uff0c\u5b66\u5b8c\u4e4b\u540e\u4f60\u53ef\u4ee5\u638c\u63e1\u8ba1\u7b97\u673a\u76f8\u5173\u7684\u6570\u5b57\u7535\u8def\uff0cVerilog \u786c\u4ef6\u63cf\u8ff0\u8bed\u8a00\uff0cMIPS \u4e0e C \u4e4b\u95f4\u7684\u8f6c\u6362\u5173\u7cfb\uff0cMIPS \u5355\u5468\u671f\u591a\u5468\u671f\u6d41\u6c34\u7ebf CPU \u7684\u8bbe\u8ba1\u548c\u6027\u80fd\u5206\u6790\uff0c\u7f13\u5b58\uff0c\u865a\u62df\u5185\u5b58\u7b49\u91cd\u8981\u6982\u5ff5\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://safari.ethz.ch/digitaltechnik/spring2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2 \u8bfe\u7a0b\u6559\u67501\uff1aPatt and Patel, Introduction to Computing Systems \u8bfe\u7a0b\u6559\u67502\uff1aHarris and Harris, Digital Design and Computer Architecture (MIPS Edition) \u8bfe\u7a0b\u5b9e\u9a8c\uff1a9 \u4e2a\u5b9e\u9a8c\u4ece\u96f6\u5f00\u59cb\u8bbe\u8ba1 MIPS CPU\uff0c\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/","text":"Coursera: Nand2Tetris \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u5e0c\u4f2f\u6765\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u4efb\u9009\u4e00\u4e2a\u7f16\u7a0b\u8bed\u8a00 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 Coursera \u4e0a\u88ab\u6570\u4e07\u4eba\u8bc4\u4e3a\u6ee1\u5206\uff0c\u5728\u5168\u7403\u56db\u767e\u591a\u6240\u9ad8\u6821\u3001\u9ad8\u4e2d\u88ab\u91c7\u7528\uff0c\u8ba9\u4e00\u4e2a\u5b8c\u5168\u6ca1\u6709\u8ba1\u7b97\u673a\u57fa\u7840\u7684\u4eba\u4ece\u4e0e\u975e\u95e8\u5f00\u59cb\u9020\u4e00\u53f0\u8ba1\u7b97\u673a\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c\u4fc4\u7f57\u65af\u65b9\u5757\u5c0f\u6e38\u620f\u3002 \u542c\u8d77\u6765\u5c31\u5f88\u9177\u5bf9\u4e0d\u5bf9\uff1f\u5b9e\u73b0\u8d77\u6765\u66f4\u9177\uff01\u8fd9\u95e8\u8bfe\u5206\u4e3a\u786c\u4ef6\u548c\u8f6f\u4ef6\u4e24\u4e2a\u90e8\u5206\u3002\u5728\u786c\u4ef6\u90e8\u5206\uff0c\u4f60\u5c06\u8fdb\u5165 01 \u7684\u4e16\u754c\uff0c\u7528\u4e0e\u975e\u95e8\u6784\u9020\u51fa\u903b\u8f91\u7535\u8def\uff0c\u5e76\u9010\u6b65\u642d\u5efa\u51fa\u4e00\u4e2a CPU \u6765\u8fd0\u884c\u4e00\u5957\u8bfe\u7a0b\u4f5c\u8005\u5b9a\u4e49\u7684\u7b80\u6613\u6c47\u7f16\u4ee3\u7801\u3002\u5728\u8f6f\u4ef6\u90e8\u5206\uff0c\u4f60\u5c06\u7f16\u5199\u4e00\u4e2a\u7f16\u8bd1\u5668\uff0c\u5c06\u4f5c\u8005\u5f00\u53d1\u7684\u4e00\u4e2a\u540d\u4e3aJack\u7684\u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u4e3a\u53ef\u4ee5\u8fd0\u884c\u5728\u865a\u62df\u673a\u4e0a\u7684\u5b57\u8282\u7801\uff0c\u7136\u540e\u8fdb\u4e00\u6b65\u7ffb\u8bd1\u4e3a\u6c47\u7f16\u4ee3\u7801\u3002\u4f60\u8fd8\u5c06\u5f00\u53d1\u4e00\u4e2a\u7b80\u6613\u7684 OS\uff0c\u8ba9\u4f60\u7684\u8ba1\u7b97\u673a\u652f\u6301\u8f93\u5165\u8f93\u51fa\u56fe\u5f62\u754c\u9762\u3002\u81f3\u6b64\uff0c\u4f60\u53ef\u4ee5\u7528 Jack \u5f00\u53d1\u4e00\u4e2a\u4fc4\u7f57\u65af\u65b9\u5757\u7684\u5c0f\u6e38\u620f\uff0c\u5c06\u5b83\u7f16\u8bd1\u4e3a\u6c47\u7f16\u4ee3\u7801\uff0c\u8fd0\u884c\u5728\u4f60\u7528\u4e0e\u975e\u95e8\u642d\u5efa\u51fa\u7684 CPU \u4e0a\uff0c\u901a\u8fc7\u4f60\u5f00\u53d1\u7684 OS \u8fdb\u884c\u4ea4\u4e92\u3002\u5b66\u5b8c\u8fd9\u95e8\u8bfe\u7a0b\uff0c\u4f60\u5c06\u5bf9\u6574\u4e2a\u8ba1\u7b97\u673a\u7684\u4f53\u7cfb\u7ed3\u6784\u6709\u4e00\u4e2a\u5168\u5c40\u4e14\u6df1\u523b\u7684\u7406\u89e3\uff0c\u5bf9\u4e8e\u4f60\u540e\u7eed\u8bfe\u7a0b\u7684\u5b66\u4e60\u6709\u7740\u83ab\u5927\u7684\u5e2e\u52a9\u3002 \u4f60\u4e5f\u8bb8\u4f1a\u62c5\u5fc3\u8bfe\u7a0b\u4f1a\u4e0d\u4f1a\u5f88\u96be\uff0c\u4f46\u8fd9\u95e8\u8bfe\u9762\u5411\u7684\u4eba\u7fa4\u662f\u5b8c\u5168\u6ca1\u6709\u8ba1\u7b97\u673a\u57fa\u7840\u7684\u4eba\uff0c\u8bfe\u7a0b\u4f5c\u8005\u7684\u76ee\u6807\u662f\u8ba9\u9ad8\u4e2d\u751f\u90fd\u80fd\u7406\u89e3\u3002\u56e0\u6b64\uff0c\u53ea\u8981\u4f60\u6309\u90e8\u5c31\u73ed\u8ddf\u7740\u8bfe\u7a0b\u89c4\u5212\u8d70\uff0c\u4e00\u4e2a\u6708\u5185\u5b66\u5b8c\u5e94\u8be5\u7ef0\u7ef0\u6709\u4f59\u3002\u9ebb\u96c0\u867d\u5c0f\u4f46\u662f\u4e94\u810f\u4ff1\u5168\uff0c\u8fd9\u95e8\u8bfe\u5f88\u597d\u5730\u63d0\u53d6\u51fa\u4e86\u8ba1\u7b97\u673a\u7684\u672c\u8d28\uff0c\u800c\u4e0d\u8fc7\u591a\u5730\u9677\u4e8e\u73b0\u4ee3\u8ba1\u7b97\u673a\u4e3a\u4e86\u6027\u80fd\u800c\u8bbe\u8ba1\u51fa\u7684\u4f17\u591a\u590d\u6742\u7ec6\u8282\u3002\u8ba9\u5b66\u4e60\u8005\u80fd\u5728\u8f7b\u677e\u6109\u5feb\u7684\u5b66\u4e60\u4f53\u9a8c\u4e2d\u611f\u53d7\u8ba1\u7b97\u673a\u7684\u4f18\u96c5\u4e0e\u795e\u5947\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a Nand2Tetris I , Nand2Tetris II \u8bfe\u7a0b\u89c6\u9891\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a \u8ba1\u7b97\u673a\u7cfb\u7edf\u8981\u7d20\uff1a\u4ece\u96f6\u5f00\u59cb\u6784\u5efa\u73b0\u4ee3\u8ba1\u7b97\u673a \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10 \u4e2a Project \u5e26\u4f60\u9020\u53f0\u8ba1\u7b97\u673a\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/NandToTetris - GitHub \u4e2d\u3002","title":"Coursera: Nand2Tetris"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/#coursera-nand2tetris","text":"","title":"Coursera: Nand2Tetris"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u5e0c\u4f2f\u6765\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u4efb\u9009\u4e00\u4e2a\u7f16\u7a0b\u8bed\u8a00 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 Coursera \u4e0a\u88ab\u6570\u4e07\u4eba\u8bc4\u4e3a\u6ee1\u5206\uff0c\u5728\u5168\u7403\u56db\u767e\u591a\u6240\u9ad8\u6821\u3001\u9ad8\u4e2d\u88ab\u91c7\u7528\uff0c\u8ba9\u4e00\u4e2a\u5b8c\u5168\u6ca1\u6709\u8ba1\u7b97\u673a\u57fa\u7840\u7684\u4eba\u4ece\u4e0e\u975e\u95e8\u5f00\u59cb\u9020\u4e00\u53f0\u8ba1\u7b97\u673a\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c\u4fc4\u7f57\u65af\u65b9\u5757\u5c0f\u6e38\u620f\u3002 \u542c\u8d77\u6765\u5c31\u5f88\u9177\u5bf9\u4e0d\u5bf9\uff1f\u5b9e\u73b0\u8d77\u6765\u66f4\u9177\uff01\u8fd9\u95e8\u8bfe\u5206\u4e3a\u786c\u4ef6\u548c\u8f6f\u4ef6\u4e24\u4e2a\u90e8\u5206\u3002\u5728\u786c\u4ef6\u90e8\u5206\uff0c\u4f60\u5c06\u8fdb\u5165 01 \u7684\u4e16\u754c\uff0c\u7528\u4e0e\u975e\u95e8\u6784\u9020\u51fa\u903b\u8f91\u7535\u8def\uff0c\u5e76\u9010\u6b65\u642d\u5efa\u51fa\u4e00\u4e2a CPU \u6765\u8fd0\u884c\u4e00\u5957\u8bfe\u7a0b\u4f5c\u8005\u5b9a\u4e49\u7684\u7b80\u6613\u6c47\u7f16\u4ee3\u7801\u3002\u5728\u8f6f\u4ef6\u90e8\u5206\uff0c\u4f60\u5c06\u7f16\u5199\u4e00\u4e2a\u7f16\u8bd1\u5668\uff0c\u5c06\u4f5c\u8005\u5f00\u53d1\u7684\u4e00\u4e2a\u540d\u4e3aJack\u7684\u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u4e3a\u53ef\u4ee5\u8fd0\u884c\u5728\u865a\u62df\u673a\u4e0a\u7684\u5b57\u8282\u7801\uff0c\u7136\u540e\u8fdb\u4e00\u6b65\u7ffb\u8bd1\u4e3a\u6c47\u7f16\u4ee3\u7801\u3002\u4f60\u8fd8\u5c06\u5f00\u53d1\u4e00\u4e2a\u7b80\u6613\u7684 OS\uff0c\u8ba9\u4f60\u7684\u8ba1\u7b97\u673a\u652f\u6301\u8f93\u5165\u8f93\u51fa\u56fe\u5f62\u754c\u9762\u3002\u81f3\u6b64\uff0c\u4f60\u53ef\u4ee5\u7528 Jack \u5f00\u53d1\u4e00\u4e2a\u4fc4\u7f57\u65af\u65b9\u5757\u7684\u5c0f\u6e38\u620f\uff0c\u5c06\u5b83\u7f16\u8bd1\u4e3a\u6c47\u7f16\u4ee3\u7801\uff0c\u8fd0\u884c\u5728\u4f60\u7528\u4e0e\u975e\u95e8\u642d\u5efa\u51fa\u7684 CPU \u4e0a\uff0c\u901a\u8fc7\u4f60\u5f00\u53d1\u7684 OS \u8fdb\u884c\u4ea4\u4e92\u3002\u5b66\u5b8c\u8fd9\u95e8\u8bfe\u7a0b\uff0c\u4f60\u5c06\u5bf9\u6574\u4e2a\u8ba1\u7b97\u673a\u7684\u4f53\u7cfb\u7ed3\u6784\u6709\u4e00\u4e2a\u5168\u5c40\u4e14\u6df1\u523b\u7684\u7406\u89e3\uff0c\u5bf9\u4e8e\u4f60\u540e\u7eed\u8bfe\u7a0b\u7684\u5b66\u4e60\u6709\u7740\u83ab\u5927\u7684\u5e2e\u52a9\u3002 \u4f60\u4e5f\u8bb8\u4f1a\u62c5\u5fc3\u8bfe\u7a0b\u4f1a\u4e0d\u4f1a\u5f88\u96be\uff0c\u4f46\u8fd9\u95e8\u8bfe\u9762\u5411\u7684\u4eba\u7fa4\u662f\u5b8c\u5168\u6ca1\u6709\u8ba1\u7b97\u673a\u57fa\u7840\u7684\u4eba\uff0c\u8bfe\u7a0b\u4f5c\u8005\u7684\u76ee\u6807\u662f\u8ba9\u9ad8\u4e2d\u751f\u90fd\u80fd\u7406\u89e3\u3002\u56e0\u6b64\uff0c\u53ea\u8981\u4f60\u6309\u90e8\u5c31\u73ed\u8ddf\u7740\u8bfe\u7a0b\u89c4\u5212\u8d70\uff0c\u4e00\u4e2a\u6708\u5185\u5b66\u5b8c\u5e94\u8be5\u7ef0\u7ef0\u6709\u4f59\u3002\u9ebb\u96c0\u867d\u5c0f\u4f46\u662f\u4e94\u810f\u4ff1\u5168\uff0c\u8fd9\u95e8\u8bfe\u5f88\u597d\u5730\u63d0\u53d6\u51fa\u4e86\u8ba1\u7b97\u673a\u7684\u672c\u8d28\uff0c\u800c\u4e0d\u8fc7\u591a\u5730\u9677\u4e8e\u73b0\u4ee3\u8ba1\u7b97\u673a\u4e3a\u4e86\u6027\u80fd\u800c\u8bbe\u8ba1\u51fa\u7684\u4f17\u591a\u590d\u6742\u7ec6\u8282\u3002\u8ba9\u5b66\u4e60\u8005\u80fd\u5728\u8f7b\u677e\u6109\u5feb\u7684\u5b66\u4e60\u4f53\u9a8c\u4e2d\u611f\u53d7\u8ba1\u7b97\u673a\u7684\u4f18\u96c5\u4e0e\u795e\u5947\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a Nand2Tetris I , Nand2Tetris II \u8bfe\u7a0b\u89c6\u9891\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a \u8ba1\u7b97\u673a\u7cfb\u7edf\u8981\u7d20\uff1a\u4ece\u96f6\u5f00\u59cb\u6784\u5efa\u73b0\u4ee3\u8ba1\u7b97\u673a \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10 \u4e2a Project \u5e26\u4f60\u9020\u53f0\u8ba1\u7b97\u673a\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/NandToTetris - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/","text":"CMU 15-418/Stanford CS149: Parallel Computing \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u548c Stanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u719f\u6089 C++ \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 Kayvon Fatahalian \u6559\u6388\u6b64\u524d\u5728 CMU \u5f00\u4e86 15-418 \u8fd9\u95e8\u8bfe\uff0c\u540e\u6765\u4ed6\u6210\u4e3a Stanford \u7684\u52a9\u7406\u6559\u6388\u540e\u53c8\u5f00\u4e86\u7c7b\u4f3c\u7684\u8bfe\u7a0b CS149\u3002\u4f46\u603b\u4f53\u6765\u8bf4\uff0c15-418 \u5305\u542b\u7684\u8bfe\u7a0b\u5185\u5bb9\u66f4\u4e30\u5bcc\uff0c\u5e76\u4e14\u6709\u8bfe\u7a0b\u56de\u653e\uff0c\u4f46 CS149 \u7684\u7f16\u7a0b\u4f5c\u4e1a\u66f4 fashion \u4e00\u4e9b\u3002\u6211\u4e2a\u4eba\u662f\u89c2\u770b\u7684 15-418 \u7684\u8bfe\u7a0b\u5f55\u5f71\u4f46\u5b8c\u6210\u7684 CS149 \u7684\u4f5c\u4e1a\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u5e26\u4f60\u6df1\u5165\u7406\u89e3\u73b0\u4ee3\u5e76\u884c\u8ba1\u7b97\u67b6\u6784\u7684\u8bbe\u8ba1\u539f\u5219\u4e0e\u5fc5\u8981\u6743\u8861\uff0c\u5e76\u5b66\u4f1a\u5982\u4f55\u5145\u5206\u5229\u7528\u786c\u4ef6\u8d44\u6e90\u4ee5\u53ca\u8f6f\u4ef6\u7f16\u7a0b\u6846\u67b6\uff08\u4f8b\u5982 CUDA\uff0cMPI\uff0cOpenMP \u7b49\uff09\u7f16\u5199\u9ad8\u6027\u80fd\u7684\u5e76\u884c\u7a0b\u5e8f\u3002\u7531\u4e8e\u5e76\u884c\u8ba1\u7b97\u67b6\u6784\u7684\u590d\u6742\u6027\uff0c\u8fd9\u95e8\u8bfe\u4f1a\u6d89\u53ca\u8bf8\u591a\u9ad8\u7ea7\u4f53\u7cfb\u7ed3\u6784\u4e0e\u7f51\u7edc\u901a\u4fe1\u7684\u5185\u5bb9\uff0c\u77e5\u8bc6\u70b9\u76f8\u5f53\u5e95\u5c42\u4e14\u786c\u6838\u3002\u4e0e\u6b64\u540c\u65f6\uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5219\u662f\u4ece\u8f6f\u4ef6\u7684\u5c42\u9762\u57f9\u517b\u5b66\u751f\u5bf9\u4e0a\u5c42\u62bd\u8c61\u7684\u7406\u89e3\u4e0e\u8fd0\u7528\uff0c\u5177\u4f53\u4f1a\u8ba9\u4f60\u5206\u6790\u5e76\u884c\u7a0b\u5e8f\u7684\u74f6\u9888\u3001\u7f16\u5199\u591a\u7ebf\u7a0b\u540c\u6b65\u4ee3\u7801\u3001\u5b66\u4e60 CUDA \u7f16\u7a0b\u3001OpenMP \u7f16\u7a0b\u4ee5\u53ca\u524d\u6bb5\u65f6\u95f4\u5927\u70ed\u7684 Spark \u6846\u67b6\u7b49\u7b49\u3002\u771f\u6b63\u610f\u4e49\u4e0a\u5c06\u7406\u8bba\u4e0e\u5b9e\u8df5\u5b8c\u7f8e\u5730\u7ed3\u5408\u5728\u4e86\u4e00\u8d77\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a CMU15418 , CS149 \u8bfe\u7a0b\u89c6\u9891\uff1a http://15418.courses.cs.cmu.edu/spring2016/lectures \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://gfxcourses.stanford.edu/cs149/fall21 \uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS149-parallel-computing - GitHub \u4e2d\u3002","title":"CMU 15-418/Stanford CS149: Parallel Computing"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/#cmu-15-418stanford-cs149-parallel-computing","text":"","title":"CMU 15-418/Stanford CS149: Parallel Computing"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u548c Stanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u719f\u6089 C++ \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 Kayvon Fatahalian \u6559\u6388\u6b64\u524d\u5728 CMU \u5f00\u4e86 15-418 \u8fd9\u95e8\u8bfe\uff0c\u540e\u6765\u4ed6\u6210\u4e3a Stanford \u7684\u52a9\u7406\u6559\u6388\u540e\u53c8\u5f00\u4e86\u7c7b\u4f3c\u7684\u8bfe\u7a0b CS149\u3002\u4f46\u603b\u4f53\u6765\u8bf4\uff0c15-418 \u5305\u542b\u7684\u8bfe\u7a0b\u5185\u5bb9\u66f4\u4e30\u5bcc\uff0c\u5e76\u4e14\u6709\u8bfe\u7a0b\u56de\u653e\uff0c\u4f46 CS149 \u7684\u7f16\u7a0b\u4f5c\u4e1a\u66f4 fashion \u4e00\u4e9b\u3002\u6211\u4e2a\u4eba\u662f\u89c2\u770b\u7684 15-418 \u7684\u8bfe\u7a0b\u5f55\u5f71\u4f46\u5b8c\u6210\u7684 CS149 \u7684\u4f5c\u4e1a\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u5e26\u4f60\u6df1\u5165\u7406\u89e3\u73b0\u4ee3\u5e76\u884c\u8ba1\u7b97\u67b6\u6784\u7684\u8bbe\u8ba1\u539f\u5219\u4e0e\u5fc5\u8981\u6743\u8861\uff0c\u5e76\u5b66\u4f1a\u5982\u4f55\u5145\u5206\u5229\u7528\u786c\u4ef6\u8d44\u6e90\u4ee5\u53ca\u8f6f\u4ef6\u7f16\u7a0b\u6846\u67b6\uff08\u4f8b\u5982 CUDA\uff0cMPI\uff0cOpenMP \u7b49\uff09\u7f16\u5199\u9ad8\u6027\u80fd\u7684\u5e76\u884c\u7a0b\u5e8f\u3002\u7531\u4e8e\u5e76\u884c\u8ba1\u7b97\u67b6\u6784\u7684\u590d\u6742\u6027\uff0c\u8fd9\u95e8\u8bfe\u4f1a\u6d89\u53ca\u8bf8\u591a\u9ad8\u7ea7\u4f53\u7cfb\u7ed3\u6784\u4e0e\u7f51\u7edc\u901a\u4fe1\u7684\u5185\u5bb9\uff0c\u77e5\u8bc6\u70b9\u76f8\u5f53\u5e95\u5c42\u4e14\u786c\u6838\u3002\u4e0e\u6b64\u540c\u65f6\uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5219\u662f\u4ece\u8f6f\u4ef6\u7684\u5c42\u9762\u57f9\u517b\u5b66\u751f\u5bf9\u4e0a\u5c42\u62bd\u8c61\u7684\u7406\u89e3\u4e0e\u8fd0\u7528\uff0c\u5177\u4f53\u4f1a\u8ba9\u4f60\u5206\u6790\u5e76\u884c\u7a0b\u5e8f\u7684\u74f6\u9888\u3001\u7f16\u5199\u591a\u7ebf\u7a0b\u540c\u6b65\u4ee3\u7801\u3001\u5b66\u4e60 CUDA \u7f16\u7a0b\u3001OpenMP \u7f16\u7a0b\u4ee5\u53ca\u524d\u6bb5\u65f6\u95f4\u5927\u70ed\u7684 Spark \u6846\u67b6\u7b49\u7b49\u3002\u771f\u6b63\u610f\u4e49\u4e0a\u5c06\u7406\u8bba\u4e0e\u5b9e\u8df5\u5b8c\u7f8e\u5730\u7ed3\u5408\u5728\u4e86\u4e00\u8d77\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a CMU15418 , CS149 \u8bfe\u7a0b\u89c6\u9891\uff1a http://15418.courses.cs.cmu.edu/spring2016/lectures \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://gfxcourses.stanford.edu/cs149/fall21 \uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS149-parallel-computing - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/","text":"MIT6.824: Distributed System \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u5e76\u884c\u7f16\u7a0b \u7f16\u7a0b\u8bed\u8a00\uff1aGo \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a200 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u548c MIT 6.S081 \u4e00\u6837\uff0c\u51fa\u54c1\u81ea MIT \u5927\u540d\u9f0e\u9f0e\u7684 PDOS \u5b9e\u9a8c\u5ba4\uff0c\u6388\u8bfe\u8001\u5e08 Robert Morris \u6559\u6388\u66fe\u662f\u4e00\u4f4d\u9876\u5c16\u9ed1\u5ba2\uff0c\u4e16\u754c\u4e0a\u7b2c\u4e00\u4e2a\u8815\u866b\u75c5\u6bd2 Morris \u75c5\u6bd2\u5c31\u662f\u51fa\u81ea\u4ed6\u4e4b\u624b\u3002 \u8fd9\u95e8\u8bfe\u6bcf\u8282\u8bfe\u90fd\u4f1a\u7cbe\u8bfb\u4e00\u7bc7\u5206\u5e03\u5f0f\u7cfb\u7edf\u9886\u57df\u7684\u7ecf\u5178\u8bba\u6587\uff0c\u5e76\u7531\u6b64\u4f20\u6388\u5206\u5e03\u5f0f\u7cfb\u7edf\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u7684\u91cd\u8981\u539f\u5219\u548c\u5173\u952e\u6280\u672f\u3002\u540c\u65f6\u5176\u8bfe\u7a0b Project \u4e5f\u662f\u4ee5\u5176\u96be\u5ea6\u4e4b\u5927\u800c\u95fb\u540d\u9050\u8fe9\uff0c4 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5faa\u5e8f\u6e10\u8fdb\u5e26\u4f60\u5b9e\u73b0\u4e00\u4e2a\u57fa\u4e8e Raft \u5171\u8bc6\u7b97\u6cd5\u7684 KV-store \u6846\u67b6\uff0c\u8ba9\u4f60\u5728\u75db\u82e6\u7684 debug \u4e2d\u4f53\u4f1a\u5e76\u884c\u4e0e\u5206\u5e03\u5f0f\u5e26\u6765\u7684\u968f\u673a\u6027\u548c\u590d\u6742\u6027\u3002 \u540c\u6837\uff0c\u8fd9\u95e8\u8bfe\u7531\u4e8e\u592a\u8fc7\u51fa\u540d\uff0c\u7f51\u4e0a\u7b54\u6848\u65e0\u6570\uff0c\u5e0c\u671b\u5927\u5bb6\u4e0d\u8981\u53c2\u8003\uff0c\u800c\u662f\u529b\u56fe\u81ea\u4e3b\u5b9e\u73b0\u6574\u4e2a Project\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://pdos.csail.mit.edu/6.824/schedule.html \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0\uff0c\u4ee5\u9605\u8bfb\u8bba\u6587\u4e3a\u4e3b \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a\u975e\u5e38\u8650\u7684 Project\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.824 - GitHub \u4e2d\u3002 @ OneSizeFitsQuorum \u7684 Lab \u6587\u6863 \u8f83\u4e3a\u6e05\u6670\u5730\u4ecb\u7ecd\u4e86\u5b9e\u73b0 lab 1-4 \u548c challenge 1-2 \u65f6\u9700\u8981\u8003\u8651\u7684\u8bb8\u591a\u7ec6\u8282\uff0c\u5728\u9047\u5230\u74f6\u9888\u671f\u65f6\u53ef\u4ee5\u9605\u8bfb\u4e00\u4e0b~~","title":"MIT 6.824: Distributed System"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/#mit6824-distributed-system","text":"","title":"MIT6.824: Distributed System"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u5e76\u884c\u7f16\u7a0b \u7f16\u7a0b\u8bed\u8a00\uff1aGo \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a200 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u548c MIT 6.S081 \u4e00\u6837\uff0c\u51fa\u54c1\u81ea MIT \u5927\u540d\u9f0e\u9f0e\u7684 PDOS \u5b9e\u9a8c\u5ba4\uff0c\u6388\u8bfe\u8001\u5e08 Robert Morris \u6559\u6388\u66fe\u662f\u4e00\u4f4d\u9876\u5c16\u9ed1\u5ba2\uff0c\u4e16\u754c\u4e0a\u7b2c\u4e00\u4e2a\u8815\u866b\u75c5\u6bd2 Morris \u75c5\u6bd2\u5c31\u662f\u51fa\u81ea\u4ed6\u4e4b\u624b\u3002 \u8fd9\u95e8\u8bfe\u6bcf\u8282\u8bfe\u90fd\u4f1a\u7cbe\u8bfb\u4e00\u7bc7\u5206\u5e03\u5f0f\u7cfb\u7edf\u9886\u57df\u7684\u7ecf\u5178\u8bba\u6587\uff0c\u5e76\u7531\u6b64\u4f20\u6388\u5206\u5e03\u5f0f\u7cfb\u7edf\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u7684\u91cd\u8981\u539f\u5219\u548c\u5173\u952e\u6280\u672f\u3002\u540c\u65f6\u5176\u8bfe\u7a0b Project \u4e5f\u662f\u4ee5\u5176\u96be\u5ea6\u4e4b\u5927\u800c\u95fb\u540d\u9050\u8fe9\uff0c4 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5faa\u5e8f\u6e10\u8fdb\u5e26\u4f60\u5b9e\u73b0\u4e00\u4e2a\u57fa\u4e8e Raft \u5171\u8bc6\u7b97\u6cd5\u7684 KV-store \u6846\u67b6\uff0c\u8ba9\u4f60\u5728\u75db\u82e6\u7684 debug \u4e2d\u4f53\u4f1a\u5e76\u884c\u4e0e\u5206\u5e03\u5f0f\u5e26\u6765\u7684\u968f\u673a\u6027\u548c\u590d\u6742\u6027\u3002 \u540c\u6837\uff0c\u8fd9\u95e8\u8bfe\u7531\u4e8e\u592a\u8fc7\u51fa\u540d\uff0c\u7f51\u4e0a\u7b54\u6848\u65e0\u6570\uff0c\u5e0c\u671b\u5927\u5bb6\u4e0d\u8981\u53c2\u8003\uff0c\u800c\u662f\u529b\u56fe\u81ea\u4e3b\u5b9e\u73b0\u6574\u4e2a Project\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://pdos.csail.mit.edu/6.824/schedule.html \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0\uff0c\u4ee5\u9605\u8bfb\u8bba\u6587\u4e3a\u4e3b \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a\u975e\u5e38\u8650\u7684 Project\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.824 - GitHub \u4e2d\u3002 @ OneSizeFitsQuorum \u7684 Lab \u6587\u6863 \u8f83\u4e3a\u6e05\u6670\u5730\u4ecb\u7ecd\u4e86\u5b9e\u73b0 lab 1-4 \u548c challenge 1-2 \u65f6\u9700\u8981\u8003\u8651\u7684\u8bb8\u591a\u7ec6\u8282\uff0c\u5728\u9047\u5230\u74f6\u9888\u671f\u65f6\u53ef\u4ee5\u9605\u8bfb\u4e00\u4e0b~~","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/","text":"CMake \u4e3a\u4ec0\u4e48\u5b66\u4e60 CMake CMake \u662f\u7c7b\u4f3c\u4e8e GNU make \u7684\u8de8\u5e73\u53f0\u81ea\u52a8\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\uff0c\u4f7f\u7528 CMakeLists.txt \u5b9a\u4e49\u6784\u5efa\u89c4\u5219\uff0c\u76f8\u6bd4\u4e8e make \u5b83\u63d0\u4f9b\u4e86\u66f4\u591a\u7684\u529f\u80fd\uff0c\u5728\u5404\u79cd\u8f6f\u4ef6\u6784\u5efa\u4e0a\u5e7f\u6cdb\u4f7f\u7528\u3002 \u5f3a\u70c8\u5efa\u8bae\u5b66\u4e60\u4f7f\u7528 GNU Make \u548c\u719f\u6089 Makefile \u540e\u518d\u5b66\u4e60 CMake \u3002 \u5982\u4f55\u5b66\u4e60 CMake CMakeLists.txt \u6bd4 Makefile \u66f4\u4e3a\u62bd\u8c61\uff0c\u7406\u89e3\u548c\u4f7f\u7528\u96be\u5ea6\u4e5f\u66f4\u5927\u3002\u73b0\u9636\u6bb5\u5f88\u591a IDE (\u5982 Visual Studio, CLion) \u63d0\u4f9b\u4e86\u81ea\u52a8\u751f\u6210 CMakeLists.txt \u7684\u529f\u80fd\uff0c\u4f46\u638c\u63e1 CMakeLists.txt \u7684\u57fa\u672c\u7528\u6cd5\u4ecd\u7136\u5f88\u6709\u5fc5\u8981\u3002\u9664\u4e86 CMake \u5b98\u65b9 Tutorial \u5916\uff0c\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66 IPADS \u7ec4\u65b0\u4eba\u57f9\u8bad\u4e5f\u63d0\u4f9b\u4e86 \u5927\u7ea6\u4e00\u5c0f\u65f6\u7684\u89c6\u9891\u6559\u7a0b \u3002","title":"CMake"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/#cmake","text":"","title":"CMake"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/#cmake_1","text":"CMake \u662f\u7c7b\u4f3c\u4e8e GNU make \u7684\u8de8\u5e73\u53f0\u81ea\u52a8\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\uff0c\u4f7f\u7528 CMakeLists.txt \u5b9a\u4e49\u6784\u5efa\u89c4\u5219\uff0c\u76f8\u6bd4\u4e8e make \u5b83\u63d0\u4f9b\u4e86\u66f4\u591a\u7684\u529f\u80fd\uff0c\u5728\u5404\u79cd\u8f6f\u4ef6\u6784\u5efa\u4e0a\u5e7f\u6cdb\u4f7f\u7528\u3002 \u5f3a\u70c8\u5efa\u8bae\u5b66\u4e60\u4f7f\u7528 GNU Make \u548c\u719f\u6089 Makefile \u540e\u518d\u5b66\u4e60 CMake \u3002","title":"\u4e3a\u4ec0\u4e48\u5b66\u4e60 CMake"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/#cmake_2","text":"CMakeLists.txt \u6bd4 Makefile \u66f4\u4e3a\u62bd\u8c61\uff0c\u7406\u89e3\u548c\u4f7f\u7528\u96be\u5ea6\u4e5f\u66f4\u5927\u3002\u73b0\u9636\u6bb5\u5f88\u591a IDE (\u5982 Visual Studio, CLion) \u63d0\u4f9b\u4e86\u81ea\u52a8\u751f\u6210 CMakeLists.txt \u7684\u529f\u80fd\uff0c\u4f46\u638c\u63e1 CMakeLists.txt \u7684\u57fa\u672c\u7528\u6cd5\u4ecd\u7136\u5f88\u6709\u5fc5\u8981\u3002\u9664\u4e86 CMake \u5b98\u65b9 Tutorial \u5916\uff0c\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66 IPADS \u7ec4\u65b0\u4eba\u57f9\u8bad\u4e5f\u63d0\u4f9b\u4e86 \u5927\u7ea6\u4e00\u5c0f\u65f6\u7684\u89c6\u9891\u6559\u7a0b \u3002","title":"\u5982\u4f55\u5b66\u4e60 CMake"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/","text":"Docker \u4e3a\u4ec0\u4e48\u4f7f\u7528 Docker \u4f7f\u7528\u522b\u4eba\u5199\u597d\u7684\u8f6f\u4ef6/\u5de5\u5177\u6700\u5927\u7684\u969c\u788d\u662f\u4ec0\u4e48\u2014\u2014\u5fc5\u7136\u662f\u914d\u73af\u5883\u3002\u914d\u73af\u5883\u5e26\u6765\u7684\u6298\u78e8\u4f1a\u6781\u5927\u5730\u6d88\u89e3\u4f60\u5bf9\u8f6f\u4ef6\u3001\u7f16\u7a0b\u672c\u8eab\u7684\u5174\u8da3\u3002\u865a\u62df\u673a\u53ef\u4ee5\u89e3\u51b3\u914d\u73af\u5883\u7684\u4e00\u90e8\u5206\u95ee\u9898\uff0c\u4f46\u5b83\u5e9e\u5927\u7b28\u91cd\uff0c\u4e14\u4e3a\u4e86\u67d0\u4e2a\u5e94\u7528\u7684\u73af\u5883\u914d\u7f6e\u597d\u50cf\u4e5f\u4e0d\u503c\u5f97\u6a21\u62df\u4e00\u4e2a\u5168\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u3002 Docker \u7684\u51fa\u73b0\u8ba9\u73af\u5883\u914d\u7f6e\u53d8\u5f97\uff08\u6216\u8bb8\uff09\u4e0d\u518d\u6298\u78e8\u3002\u7b80\u5355\u6765\u8bf4 Docker \u4f7f\u7528\u8f7b\u91cf\u7ea7\u7684\u201c\u5bb9\u5668\u201d\uff08container\uff09\u800c\u4e0d\u662f\u6574\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u53bb\u652f\u6301\u4e00\u4e2a\u5e94\u7528\u7684\u914d\u7f6e\u3002\u5e94\u7528\u81ea\u8eab\u8fde\u540c\u5b83\u7684\u73af\u5883\u914d\u7f6e\u88ab\u6253\u5305\u4e3a\u4e00\u4e2a\u4e2a image \u53ef\u4ee5\u81ea\u7531\u8fd0\u884c\u5728\u4e0d\u540c\u5e73\u53f0\u7684\u4e00\u4e2a\u4e2a container \u4e2d\uff0c\u8fd9\u6781\u5927\u5730\u8282\u7701\u4e86\u6240\u6709\u4eba\u7684\u65f6\u95f4\u6210\u672c\u3002 \u5982\u4f55\u5b66\u4e60 Docker Docker \u5b98\u65b9\u6587\u6863 \u5f53\u7136\u662f\u6700\u597d\u7684\u521d\u5b66\u6559\u6750\uff0c\u4f46\u6700\u597d\u7684\u5bfc\u5e08\u4e00\u5b9a\u662f\u4f60\u81ea\u5df1\u2014\u2014\u5c1d\u8bd5\u53bb\u4f7f\u7528 Docker \u624d\u80fd\u4eab\u53d7\u5b83\u5e26\u6765\u7684\u4fbf\u5229\u3002Docker \u5728\u5de5\u4e1a\u754c\u53d1\u5c55\u8fc5\u731b\u5e76\u5df2\u7ecf\u975e\u5e38\u6210\u719f\uff0c\u4f60\u53ef\u4ee5\u4e0b\u8f7d\u5b83\u7684\u684c\u9762\u7aef\u5e76\u4f7f\u7528\u56fe\u5f62\u754c\u9762\u3002 \u5f53\u7136\uff0c\u5982\u679c\u4f60\u50cf\u6211\u4e00\u6837\uff0c\u662f\u4e00\u4e2a\u75af\u72c2\u7684\u9020\u8f6e\u5b50\u7231\u597d\u8005\uff0c\u90a3\u4e0d\u59a8\u81ea\u5df1\u4eb2\u624b\u5199\u4e00\u4e2a \u8ff7\u4f60 Docker \u6765\u52a0\u6df1\u7406\u89e3\u3002 KodeKloud Docker for the Absolute Beginner \u5168\u9762\u7684\u4ecb\u7ecd\u4e86 Docker \u7684\u57fa\u7840\u529f\u80fd\uff0c\u5e76\u4e14\u6709\u5927\u91cf\u7684\u914d\u5957\u7ec3\u4e60\uff0c\u540c\u65f6\u63d0\u4f9b\u514d\u8d39\u7684\u4e91\u73af\u5883\u6765\u5b8c\u6210\u7ec3\u4e60\u3002\u5176\u4f59\u7684\u4e91\u76f8\u5173\u7684\u8bfe\u7a0b\u5982 Kubernetes \u9700\u8981\u4ed8\u8d39\uff0c\u4f46\u4e2a\u4eba\u5f3a\u70c8\u63a8\u8350\uff1a\u8bb2\u89e3\u975e\u5e38\u4ed4\u7ec6\uff0c\u9002\u5408\u4ece 0 \u5f00\u59cb\u7684\u65b0\u624b\uff1b\u6709\u914d\u5957\u7684 Kubernetes \u7684\u5b9e\u9a8c\u73af\u5883\uff0c\u4e0d\u7528\u88ab\u642d\u5efa\u73af\u5883\u529d\u9000\u3002","title":"Docker"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/#docker","text":"","title":"Docker"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/#docker_1","text":"\u4f7f\u7528\u522b\u4eba\u5199\u597d\u7684\u8f6f\u4ef6/\u5de5\u5177\u6700\u5927\u7684\u969c\u788d\u662f\u4ec0\u4e48\u2014\u2014\u5fc5\u7136\u662f\u914d\u73af\u5883\u3002\u914d\u73af\u5883\u5e26\u6765\u7684\u6298\u78e8\u4f1a\u6781\u5927\u5730\u6d88\u89e3\u4f60\u5bf9\u8f6f\u4ef6\u3001\u7f16\u7a0b\u672c\u8eab\u7684\u5174\u8da3\u3002\u865a\u62df\u673a\u53ef\u4ee5\u89e3\u51b3\u914d\u73af\u5883\u7684\u4e00\u90e8\u5206\u95ee\u9898\uff0c\u4f46\u5b83\u5e9e\u5927\u7b28\u91cd\uff0c\u4e14\u4e3a\u4e86\u67d0\u4e2a\u5e94\u7528\u7684\u73af\u5883\u914d\u7f6e\u597d\u50cf\u4e5f\u4e0d\u503c\u5f97\u6a21\u62df\u4e00\u4e2a\u5168\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u3002 Docker \u7684\u51fa\u73b0\u8ba9\u73af\u5883\u914d\u7f6e\u53d8\u5f97\uff08\u6216\u8bb8\uff09\u4e0d\u518d\u6298\u78e8\u3002\u7b80\u5355\u6765\u8bf4 Docker \u4f7f\u7528\u8f7b\u91cf\u7ea7\u7684\u201c\u5bb9\u5668\u201d\uff08container\uff09\u800c\u4e0d\u662f\u6574\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u53bb\u652f\u6301\u4e00\u4e2a\u5e94\u7528\u7684\u914d\u7f6e\u3002\u5e94\u7528\u81ea\u8eab\u8fde\u540c\u5b83\u7684\u73af\u5883\u914d\u7f6e\u88ab\u6253\u5305\u4e3a\u4e00\u4e2a\u4e2a image \u53ef\u4ee5\u81ea\u7531\u8fd0\u884c\u5728\u4e0d\u540c\u5e73\u53f0\u7684\u4e00\u4e2a\u4e2a container \u4e2d\uff0c\u8fd9\u6781\u5927\u5730\u8282\u7701\u4e86\u6240\u6709\u4eba\u7684\u65f6\u95f4\u6210\u672c\u3002","title":"\u4e3a\u4ec0\u4e48\u4f7f\u7528 Docker"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/#docker_2","text":"Docker \u5b98\u65b9\u6587\u6863 \u5f53\u7136\u662f\u6700\u597d\u7684\u521d\u5b66\u6559\u6750\uff0c\u4f46\u6700\u597d\u7684\u5bfc\u5e08\u4e00\u5b9a\u662f\u4f60\u81ea\u5df1\u2014\u2014\u5c1d\u8bd5\u53bb\u4f7f\u7528 Docker \u624d\u80fd\u4eab\u53d7\u5b83\u5e26\u6765\u7684\u4fbf\u5229\u3002Docker \u5728\u5de5\u4e1a\u754c\u53d1\u5c55\u8fc5\u731b\u5e76\u5df2\u7ecf\u975e\u5e38\u6210\u719f\uff0c\u4f60\u53ef\u4ee5\u4e0b\u8f7d\u5b83\u7684\u684c\u9762\u7aef\u5e76\u4f7f\u7528\u56fe\u5f62\u754c\u9762\u3002 \u5f53\u7136\uff0c\u5982\u679c\u4f60\u50cf\u6211\u4e00\u6837\uff0c\u662f\u4e00\u4e2a\u75af\u72c2\u7684\u9020\u8f6e\u5b50\u7231\u597d\u8005\uff0c\u90a3\u4e0d\u59a8\u81ea\u5df1\u4eb2\u624b\u5199\u4e00\u4e2a \u8ff7\u4f60 Docker \u6765\u52a0\u6df1\u7406\u89e3\u3002 KodeKloud Docker for the Absolute Beginner \u5168\u9762\u7684\u4ecb\u7ecd\u4e86 Docker \u7684\u57fa\u7840\u529f\u80fd\uff0c\u5e76\u4e14\u6709\u5927\u91cf\u7684\u914d\u5957\u7ec3\u4e60\uff0c\u540c\u65f6\u63d0\u4f9b\u514d\u8d39\u7684\u4e91\u73af\u5883\u6765\u5b8c\u6210\u7ec3\u4e60\u3002\u5176\u4f59\u7684\u4e91\u76f8\u5173\u7684\u8bfe\u7a0b\u5982 Kubernetes \u9700\u8981\u4ed8\u8d39\uff0c\u4f46\u4e2a\u4eba\u5f3a\u70c8\u63a8\u8350\uff1a\u8bb2\u89e3\u975e\u5e38\u4ed4\u7ec6\uff0c\u9002\u5408\u4ece 0 \u5f00\u59cb\u7684\u65b0\u624b\uff1b\u6709\u914d\u5957\u7684 Kubernetes \u7684\u5b9e\u9a8c\u73af\u5883\uff0c\u4e0d\u7528\u88ab\u642d\u5efa\u73af\u5883\u529d\u9000\u3002","title":"\u5982\u4f55\u5b66\u4e60 Docker"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/","text":"GNU Make \u4e3a\u4ec0\u4e48\u5b66 GNU Make \u5927\u5bb6\u7b2c\u4e00\u6b21\u5199 hello world \u7a0b\u5e8f\u7684\u65f6\u5019\u4e00\u5b9a\u90fd\u8bb0\u5f97\uff0c\u5728\u7f16\u8f91\u5b8c helloworld.c \u4e4b\u540e\uff0c\u9700\u8981\u7528 gcc \u7f16\u8bd1\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u7136\u540e\u518d\u6267\u884c\uff08\u5982\u679c\u4f60\u4e0d\u7406\u89e3\u524d\u9762\u8fd9\u6bb5\u8bdd\uff0c\u8bf7\u5148\u81ea\u884c\u8c37\u6b4c gcc \u7f16\u8bd1 \u5e76\u7406\u89e3\u76f8\u5173\u5185\u5bb9\uff09\u3002\u4f46\u5982\u679c\u4f60\u7684\u9879\u76ee\u7531\u6210\u767e\u4e0a\u5343\u4e2a C \u6e90\u6587\u4ef6\u7ec4\u6210\uff0c\u5e76\u4e14\u661f\u7f57\u68cb\u5e03\u5728\u5404\u4e2a\u5b50\u76ee\u5f55\u4e0b\uff0c\u4f60\u8be5\u5982\u4f55\u5c06\u5b83\u4eec\u7f16\u8bd1\u94fe\u63a5\u5230\u4e00\u8d77\u5462\uff1f\u5047\u5982\u4f60\u7684\u9879\u76ee\u7f16\u8bd1\u4e00\u6b21\u9700\u8981\u534a\u4e2a\u5c0f\u65f6\uff08\u5927\u578b\u9879\u76ee\u76f8\u5f53\u5e38\u89c1\uff09\uff0c\u800c\u4f60\u53ea\u4fee\u6539\u4e86\u4e00\u4e2a\u5206\u53f7\uff0c\u662f\u4e0d\u662f\u8fd8\u9700\u8981\u518d\u7b49\u534a\u4e2a\u5c0f\u65f6\u5462\uff1f \u8fd9\u65f6\u5019 GNU Make \u5c31\u95ea\u4eae\u767b\u573a\u4e86\uff0c\u5b83\u80fd\u8ba9\u4f60\u5728\u4e00\u4e2a\u811a\u672c\u91cc\uff08\u5373\u6240\u8c13\u7684 Makefile \uff09\u5b9a\u4e49\u6574\u4e2a\u7f16\u8bd1\u6d41\u7a0b\u4ee5\u53ca\u5404\u4e2a\u76ee\u6807\u6587\u4ef6\u4e0e\u6e90\u6587\u4ef6\u4e4b\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u5e76\u4e14\u53ea\u91cd\u65b0\u7f16\u8bd1\u4f60\u7684\u4fee\u6539\u4f1a\u5f71\u54cd\u5230\u7684\u90e8\u5206\uff0c\u4ece\u800c\u964d\u4f4e\u7f16\u8bd1\u7684\u65f6\u95f4\u3002 \u5982\u4f55\u5b66\u4e60 GNU Make \u8fd9\u91cc\u6709\u4e00\u7bc7\u5199\u5f97\u6df1\u5165\u6d45\u51fa\u7684 \u6587\u6863 \u4f9b\u5927\u5bb6\u53c2\u8003\u3002 GNU Make \u638c\u63e1\u8d77\u6765\u76f8\u5bf9\u5bb9\u6613\uff0c\u4f46\u7528\u597d\u5b83\u9700\u8981\u4e0d\u65ad\u7684\u7ec3\u4e60\u3002\u5c06\u5b83\u878d\u5165\u5230\u81ea\u5df1\u7684\u65e5\u5e38\u5f00\u53d1\u4e2d\uff0c\u52e4\u4e8e\u5b66\u4e60\u548c\u6a21\u4eff\u5176\u4ed6\u4f18\u79c0\u5f00\u6e90\u9879\u76ee\u91cc\u7684 Makefile \u7684\u5199\u6cd5\uff0c\u603b\u7ed3\u51fa\u9002\u5408\u81ea\u5df1\u7684 template\uff0c\u4e45\u800c\u4e45\u4e4b\uff0c\u4f60\u5bf9 GNU Make \u7684\u4f7f\u7528\u4f1a\u6108\u52a0\u7eaf\u719f\u3002","title":"GNU Make"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/#gnu-make","text":"","title":"GNU Make"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/#gnu-make_1","text":"\u5927\u5bb6\u7b2c\u4e00\u6b21\u5199 hello world \u7a0b\u5e8f\u7684\u65f6\u5019\u4e00\u5b9a\u90fd\u8bb0\u5f97\uff0c\u5728\u7f16\u8f91\u5b8c helloworld.c \u4e4b\u540e\uff0c\u9700\u8981\u7528 gcc \u7f16\u8bd1\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u7136\u540e\u518d\u6267\u884c\uff08\u5982\u679c\u4f60\u4e0d\u7406\u89e3\u524d\u9762\u8fd9\u6bb5\u8bdd\uff0c\u8bf7\u5148\u81ea\u884c\u8c37\u6b4c gcc \u7f16\u8bd1 \u5e76\u7406\u89e3\u76f8\u5173\u5185\u5bb9\uff09\u3002\u4f46\u5982\u679c\u4f60\u7684\u9879\u76ee\u7531\u6210\u767e\u4e0a\u5343\u4e2a C \u6e90\u6587\u4ef6\u7ec4\u6210\uff0c\u5e76\u4e14\u661f\u7f57\u68cb\u5e03\u5728\u5404\u4e2a\u5b50\u76ee\u5f55\u4e0b\uff0c\u4f60\u8be5\u5982\u4f55\u5c06\u5b83\u4eec\u7f16\u8bd1\u94fe\u63a5\u5230\u4e00\u8d77\u5462\uff1f\u5047\u5982\u4f60\u7684\u9879\u76ee\u7f16\u8bd1\u4e00\u6b21\u9700\u8981\u534a\u4e2a\u5c0f\u65f6\uff08\u5927\u578b\u9879\u76ee\u76f8\u5f53\u5e38\u89c1\uff09\uff0c\u800c\u4f60\u53ea\u4fee\u6539\u4e86\u4e00\u4e2a\u5206\u53f7\uff0c\u662f\u4e0d\u662f\u8fd8\u9700\u8981\u518d\u7b49\u534a\u4e2a\u5c0f\u65f6\u5462\uff1f \u8fd9\u65f6\u5019 GNU Make \u5c31\u95ea\u4eae\u767b\u573a\u4e86\uff0c\u5b83\u80fd\u8ba9\u4f60\u5728\u4e00\u4e2a\u811a\u672c\u91cc\uff08\u5373\u6240\u8c13\u7684 Makefile \uff09\u5b9a\u4e49\u6574\u4e2a\u7f16\u8bd1\u6d41\u7a0b\u4ee5\u53ca\u5404\u4e2a\u76ee\u6807\u6587\u4ef6\u4e0e\u6e90\u6587\u4ef6\u4e4b\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u5e76\u4e14\u53ea\u91cd\u65b0\u7f16\u8bd1\u4f60\u7684\u4fee\u6539\u4f1a\u5f71\u54cd\u5230\u7684\u90e8\u5206\uff0c\u4ece\u800c\u964d\u4f4e\u7f16\u8bd1\u7684\u65f6\u95f4\u3002","title":"\u4e3a\u4ec0\u4e48\u5b66 GNU Make"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/#gnu-make_2","text":"\u8fd9\u91cc\u6709\u4e00\u7bc7\u5199\u5f97\u6df1\u5165\u6d45\u51fa\u7684 \u6587\u6863 \u4f9b\u5927\u5bb6\u53c2\u8003\u3002 GNU Make \u638c\u63e1\u8d77\u6765\u76f8\u5bf9\u5bb9\u6613\uff0c\u4f46\u7528\u597d\u5b83\u9700\u8981\u4e0d\u65ad\u7684\u7ec3\u4e60\u3002\u5c06\u5b83\u878d\u5165\u5230\u81ea\u5df1\u7684\u65e5\u5e38\u5f00\u53d1\u4e2d\uff0c\u52e4\u4e8e\u5b66\u4e60\u548c\u6a21\u4eff\u5176\u4ed6\u4f18\u79c0\u5f00\u6e90\u9879\u76ee\u91cc\u7684 Makefile \u7684\u5199\u6cd5\uff0c\u603b\u7ed3\u51fa\u9002\u5408\u81ea\u5df1\u7684 template\uff0c\u4e45\u800c\u4e45\u4e4b\uff0c\u4f60\u5bf9 GNU Make \u7684\u4f7f\u7528\u4f1a\u6108\u52a0\u7eaf\u719f\u3002","title":"\u5982\u4f55\u5b66\u4e60 GNU Make"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/","text":"Git \u4e3a\u4ec0\u4e48\u4f7f\u7528 Git Git \u662f\u4e00\u6b3e\u5206\u5e03\u5f0f\u7684\u4ee3\u7801\u7248\u672c\u63a7\u5236\u5de5\u5177\uff0cLinux \u4e4b\u7236 Linus \u5acc\u5f03\u5f53\u65f6\u4e3b\u6d41\u7684\u4e2d\u5fc3\u5f0f\u7684\u7248\u672c\u63a7\u5236\u5de5\u5177\u592a\u96be\u7528\u8fd8\u8981\u82b1\u94b1\uff0c\u5c31\u81ea\u5df1\u5f00\u53d1\u51fa\u4e86 Git \u7528\u6765\u7ef4\u62a4 Linux \u7684\u7248\u672c\uff08\u7ed9\u5927\u4f6c\u8dea\u4e86\uff09\u3002 Git \u7684\u8bbe\u8ba1\u975e\u5e38\u4f18\u96c5\uff0c\u4f46\u521d\u5b66\u8005\u901a\u5e38\u56e0\u4e3a\u5f88\u96be\u7406\u89e3\u5176\u5185\u90e8\u903b\u8f91\u56e0\u6b64\u4f1a\u89c9\u5f97\u975e\u5e38\u96be\u7528\u3002\u5bf9 Git \u4e0d\u719f\u6089\u7684\u521d\u5b66\u8005\u5f88\u5bb9\u6613\u51fa\u73b0\u56e0\u4e3a\u8bef\u7528\u547d\u4ee4\u5c06\u4ee3\u7801\u7ed9\u63a7\u5236\u7248\u672c\u63a7\u5236\u6ca1\u4e86\u7684\u72b6\u51b5\uff08\u597d\u5427\u662f\u6211\uff09\u3002 \u4f46\u76f8\u4fe1\u6211\uff0c\u548c Vim \u4e00\u6837\uff0cGit \u662f\u4e00\u6b3e\u4f60\u6700\u7ec8\u638c\u63e1\u4e4b\u540e\u4f1a\u611f\u53f9\u201c\u5b83\u503c\u5f97\uff01\u201d\u7684\u795e\u5668\u3002 \u5982\u4f55\u5b66\u4e60 Git \u548c Vim \u4e0d\u540c\uff0c\u6211\u4e0d\u5efa\u8bae\u521d\u5b66\u8005\u5728\u4e00\u77e5\u534a\u89e3\u7684\u60c5\u51b5\u4e0b\u8d38\u7136\u4f7f\u7528 Git\uff0c\u56e0\u4e3a\u5b83\u7684\u5185\u90e8\u903b\u8f91\u5e76\u4e0d\u80fd\u719f\u80fd\u751f\u5de7\uff0c\u800c\u662f\u9700\u8981\u82b1\u65f6\u95f4\u53bb\u7406\u89e3\u3002\u6211\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a \u9605\u8bfb\u8fd9\u7bc7 Git tutorial \uff0c\u89c6\u9891\u7684\u8bdd\u53ef\u4ee5\u770b\u8fd9\u4e2a \u5c1a\u7845\u8c37Git\u6559\u7a0b \u9605\u8bfb\u8fd9\u672c\u5f00\u6e90\u4e66\u7c4d Pro Git \u7684 Chapter1 - Chapter5\uff0c\u662f\u7684\u6ca1\u9519\uff0c\u5b66 Git \u9700\u8981\u8bfb\u4e00\u672c\u4e66\uff08\u6342\u8138\uff09\u3002 \u6b64\u65f6\u4f60\u5df2\u7ecf\u638c\u63e1\u4e86 Git \u7684\u539f\u7406\u548c\u7edd\u5927\u90e8\u5206\u7528\u6cd5\uff0c\u63a5\u4e0b\u6765\u5c31\u53ef\u4ee5\u5728\u5b9e\u8df5\u4e2d\u53cd\u590d\u5de9\u56fa Git \u7684\u547d\u4ee4\u4e86\u3002\u4f46\u7528\u597d\u5b83\u540c\u6837\u662f\u4e00\u95e8\u54f2\u5b66\uff0c\u6211\u4e2a\u4eba\u89c9\u5f97\u8fd9\u7bc7 \u5982\u4f55\u5199\u597d Commit Message \u7684\u535a\u5ba2\u975e\u5e38\u503c\u5f97\u4e00\u8bfb\u3002 \u597d\u7684\u6b64\u65f6\u4f60\u5df2\u7ecf\u7231\u4e0a\u4e86 Git\uff0c\u4f60\u5df2\u7ecf\u4e0d\u6ee1\u8db3\u4e8e\u5b66\u4f1a\u5b83\u4e86\uff0c\u4f60\u60f3\u81ea\u5df1\u5b9e\u73b0\u4e00\u4e2a Git\uff01\u5de7\u4e86\uff0c\u6211\u5f53\u5e74\u4e5f\u6709\u8fd9\u6837\u7684\u60f3\u6cd5\uff0c \u8fd9\u7bc7 tutorial \u53ef\u4ee5\u6ee1\u8db3\u4f60\uff01 \u4ec0\u4e48\uff1f\u5149\u5b9e\u73b0\u4e00\u4e2a Git \u65e0\u6cd5\u6ee1\u8db3\u4f60\uff1f\u5c0f\u4f19\u5b50/\u5c0f\u4ed9\u5973\u6709\u524d\u9014\uff0c\u5de7\u7684\u662f\u6211\u4e5f\u559c\u6b22\u9020\u8f6e\u5b50\uff0c\u8fd9\u4e24\u4e2a GitHub \u9879\u76ee build-your-own-x \u548c project-based-learning \u6536\u5f55\u4e86\u4f60\u80fd\u60f3\u5230\u7684\u5404\u79cd\u9020\u8f6e\u5b50\u6559\u7a0b\uff0c\u6bd4\u5982\uff1a\u81ea\u5df1\u9020\u4e2a\u7f16\u8f91\u5668\u3001\u81ea\u5df1\u5199\u4e2a\u865a\u62df\u673a\u3001\u81ea\u5df1\u5199\u4e2a docker\u3001\u81ea\u5df1\u5199\u4e2a TCP \u7b49\u7b49\u7b49\u7b49\u3002","title":"Git"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/#git","text":"","title":"Git"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/#git_1","text":"Git \u662f\u4e00\u6b3e\u5206\u5e03\u5f0f\u7684\u4ee3\u7801\u7248\u672c\u63a7\u5236\u5de5\u5177\uff0cLinux \u4e4b\u7236 Linus \u5acc\u5f03\u5f53\u65f6\u4e3b\u6d41\u7684\u4e2d\u5fc3\u5f0f\u7684\u7248\u672c\u63a7\u5236\u5de5\u5177\u592a\u96be\u7528\u8fd8\u8981\u82b1\u94b1\uff0c\u5c31\u81ea\u5df1\u5f00\u53d1\u51fa\u4e86 Git \u7528\u6765\u7ef4\u62a4 Linux \u7684\u7248\u672c\uff08\u7ed9\u5927\u4f6c\u8dea\u4e86\uff09\u3002 Git \u7684\u8bbe\u8ba1\u975e\u5e38\u4f18\u96c5\uff0c\u4f46\u521d\u5b66\u8005\u901a\u5e38\u56e0\u4e3a\u5f88\u96be\u7406\u89e3\u5176\u5185\u90e8\u903b\u8f91\u56e0\u6b64\u4f1a\u89c9\u5f97\u975e\u5e38\u96be\u7528\u3002\u5bf9 Git \u4e0d\u719f\u6089\u7684\u521d\u5b66\u8005\u5f88\u5bb9\u6613\u51fa\u73b0\u56e0\u4e3a\u8bef\u7528\u547d\u4ee4\u5c06\u4ee3\u7801\u7ed9\u63a7\u5236\u7248\u672c\u63a7\u5236\u6ca1\u4e86\u7684\u72b6\u51b5\uff08\u597d\u5427\u662f\u6211\uff09\u3002 \u4f46\u76f8\u4fe1\u6211\uff0c\u548c Vim \u4e00\u6837\uff0cGit \u662f\u4e00\u6b3e\u4f60\u6700\u7ec8\u638c\u63e1\u4e4b\u540e\u4f1a\u611f\u53f9\u201c\u5b83\u503c\u5f97\uff01\u201d\u7684\u795e\u5668\u3002","title":"\u4e3a\u4ec0\u4e48\u4f7f\u7528 Git"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/#git_2","text":"\u548c Vim \u4e0d\u540c\uff0c\u6211\u4e0d\u5efa\u8bae\u521d\u5b66\u8005\u5728\u4e00\u77e5\u534a\u89e3\u7684\u60c5\u51b5\u4e0b\u8d38\u7136\u4f7f\u7528 Git\uff0c\u56e0\u4e3a\u5b83\u7684\u5185\u90e8\u903b\u8f91\u5e76\u4e0d\u80fd\u719f\u80fd\u751f\u5de7\uff0c\u800c\u662f\u9700\u8981\u82b1\u65f6\u95f4\u53bb\u7406\u89e3\u3002\u6211\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a \u9605\u8bfb\u8fd9\u7bc7 Git tutorial \uff0c\u89c6\u9891\u7684\u8bdd\u53ef\u4ee5\u770b\u8fd9\u4e2a \u5c1a\u7845\u8c37Git\u6559\u7a0b \u9605\u8bfb\u8fd9\u672c\u5f00\u6e90\u4e66\u7c4d Pro Git \u7684 Chapter1 - Chapter5\uff0c\u662f\u7684\u6ca1\u9519\uff0c\u5b66 Git \u9700\u8981\u8bfb\u4e00\u672c\u4e66\uff08\u6342\u8138\uff09\u3002 \u6b64\u65f6\u4f60\u5df2\u7ecf\u638c\u63e1\u4e86 Git \u7684\u539f\u7406\u548c\u7edd\u5927\u90e8\u5206\u7528\u6cd5\uff0c\u63a5\u4e0b\u6765\u5c31\u53ef\u4ee5\u5728\u5b9e\u8df5\u4e2d\u53cd\u590d\u5de9\u56fa Git \u7684\u547d\u4ee4\u4e86\u3002\u4f46\u7528\u597d\u5b83\u540c\u6837\u662f\u4e00\u95e8\u54f2\u5b66\uff0c\u6211\u4e2a\u4eba\u89c9\u5f97\u8fd9\u7bc7 \u5982\u4f55\u5199\u597d Commit Message \u7684\u535a\u5ba2\u975e\u5e38\u503c\u5f97\u4e00\u8bfb\u3002 \u597d\u7684\u6b64\u65f6\u4f60\u5df2\u7ecf\u7231\u4e0a\u4e86 Git\uff0c\u4f60\u5df2\u7ecf\u4e0d\u6ee1\u8db3\u4e8e\u5b66\u4f1a\u5b83\u4e86\uff0c\u4f60\u60f3\u81ea\u5df1\u5b9e\u73b0\u4e00\u4e2a Git\uff01\u5de7\u4e86\uff0c\u6211\u5f53\u5e74\u4e5f\u6709\u8fd9\u6837\u7684\u60f3\u6cd5\uff0c \u8fd9\u7bc7 tutorial \u53ef\u4ee5\u6ee1\u8db3\u4f60\uff01 \u4ec0\u4e48\uff1f\u5149\u5b9e\u73b0\u4e00\u4e2a Git \u65e0\u6cd5\u6ee1\u8db3\u4f60\uff1f\u5c0f\u4f19\u5b50/\u5c0f\u4ed9\u5973\u6709\u524d\u9014\uff0c\u5de7\u7684\u662f\u6211\u4e5f\u559c\u6b22\u9020\u8f6e\u5b50\uff0c\u8fd9\u4e24\u4e2a GitHub \u9879\u76ee build-your-own-x \u548c project-based-learning \u6536\u5f55\u4e86\u4f60\u80fd\u60f3\u5230\u7684\u5404\u79cd\u9020\u8f6e\u5b50\u6559\u7a0b\uff0c\u6bd4\u5982\uff1a\u81ea\u5df1\u9020\u4e2a\u7f16\u8f91\u5668\u3001\u81ea\u5df1\u5199\u4e2a\u865a\u62df\u673a\u3001\u81ea\u5df1\u5199\u4e2a docker\u3001\u81ea\u5df1\u5199\u4e2a TCP \u7b49\u7b49\u7b49\u7b49\u3002","title":"\u5982\u4f55\u5b66\u4e60 Git"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/","text":"GitHub GitHub \u662f\u4ec0\u4e48 \u4ece\u529f\u80fd\u4e0a\u6765\u8bf4\uff0cGitHub \u662f\u4e00\u4e2a\u5728\u7ebf\u4ee3\u7801\u6258\u7ba1\u5e73\u53f0\u3002\u4f60\u53ef\u4ee5\u5c06\u4f60\u7684\u672c\u5730 Git \u4ed3\u5e93\u6258\u7ba1\u5230 GitHub \u4e0a\uff0c\u4f9b\u591a\u4eba\u540c\u65f6\u5f00\u53d1\u6d4f\u89c8\u3002\u4f46\u73b0\u5982\u4eca GitHub \u7684\u610f\u4e49\u5df2\u8fdc\u4e0d\u6b62\u5982\u6b64\uff0c\u5b83\u5df2\u7ecf\u6f14\u53d8\u4e3a\u4e00\u4e2a\u975e\u5e38\u6d3b\u8dc3\u4e14\u8d44\u6e90\u6781\u4e3a\u4e30\u5bcc\u7684\u5f00\u6e90\u4ea4\u6d41\u793e\u533a\u3002\u5168\u4e16\u754c\u7684\u8f6f\u4ef6\u5f00\u53d1\u8005\u5728 GitHub \u4e0a\u5206\u4eab\u5404\u5f0f\u5404\u6837\u79cd\u7c7b\u7e41\u591a\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002\u5927\u5230\u5de5\u4e1a\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6 PyTorch, TensorFlow\uff0c\u5c0f\u5230\u51e0\u5341\u884c\u7684\u5b9e\u7528\u811a\u672c\uff0c\u65e2\u6709\u786c\u6838\u7684\u77e5\u8bc6\u5206\u4eab\uff0c\u4e5f\u6709\u4fdd\u59c6\u7ea7\u7684\u6559\u7a0b\u6307\u5bfc\uff0c\u751a\u81f3\u5f88\u591a\u6280\u672f\u4e66\u7c4d\u4e5f\u5728 GitHub\u4e0a\u5f00\u6e90\uff08\u4f8b\u5982\u8bf8\u4f4d\u6b63\u5728\u770b\u7684\u8fd9\u672c\u2014\u2014\u5982\u679c\u6211\u539a\u7740\u8138\u76ae\u52c9\u5f3a\u79f0\u4e4b\u4e3a\u4e66\u7684\u8bdd\uff09\u3002\u95f2\u6765\u65e0\u4e8b\u901b\u901b GitHub \u5df2\u7ecf\u6210\u4e3a\u4e86\u6211\u65e5\u5e38\u751f\u6d3b\u7684\u4e00\u90e8\u5206\u3002 \u5728 GitHub \u91cc\uff0c\u661f\u661f\u662f\u5bf9\u4e00\u4e2a\u9879\u76ee\u81f3\u9ad8\u65e0\u4e0a\u7684\u80af\u5b9a\uff0c\u5982\u679c\u4f60\u89c9\u5f97\u8fd9\u672c\u4e66\u5bf9\u4f60\u6709\u7528\u7684\u8bdd\uff0c\u6b22\u8fce\u901a\u8fc7\u53f3\u4e0a\u89d2\u7684\u94fe\u63a5\u8fdb\u5165\u4ed3\u5e93\u4e3b\u9875\u732e\u51fa\u4f60\u5b9d\u8d35\u7684\u661f\u661f\u2728\u3002 \u5982\u4f55\u4f7f\u7528 GitHub \u5982\u679c\u4f60\u8fd8\u4ece\u672a\u5728 GitHub \u4e0a\u5efa\u7acb\u8fc7\u81ea\u5df1\u7684\u8fdc\u7a0b\u4ed3\u5e93\uff0c\u4e5f\u6ca1\u6709\u514b\u9686\u8fc7\u522b\u4eba\u7684\u4ee3\u7801\uff0c\u90a3\u4e48\u6211\u5efa\u8bae\u4f60\u4ece GitHub\u7684\u5b98\u65b9\u6559\u7a0b \u5f00\u59cb\u81ea\u5df1\u7684\u5f00\u6e90\u4e4b\u65c5\u3002 \u5982\u679c\u4f60\u60f3\u65f6\u523b\u5173\u6ce8 GitHub \u4e0a\u4e00\u4e9b\u6709\u8da3\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u90a3\u4e48\u6211\u5411\u4f60\u91cd\u78c5\u63a8\u8350 HelloGitHub \u8fd9\u4e2a\u7f51\u7ad9\u4ee5\u53ca\u5b83\u7684\u540c\u540d\u5fae\u4fe1\u516c\u4f17\u53f7\u3002\u5b83\u4f1a\u5b9a\u671f\u6536\u5f55 GitHub \u4e0a\u8fd1\u671f\u5f00\u59cb\u6d41\u884c\u7684\u6216\u8005\u975e\u5e38\u6709\u8da3\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u8ba9\u4f60\u6709\u673a\u4f1a\u7b2c\u4e00\u65f6\u95f4\u63a5\u89e6\u5404\u7c7b\u4f18\u8d28\u8d44\u6e90\u3002 GitHub \u4e4b\u6240\u4ee5\u6210\u529f\uff0c\u6211\u60f3\u662f\u5f97\u76ca\u4e8e\u201c\u6211\u4e3a\u4eba\u4eba\uff0c\u4eba\u4eba\u4e3a\u6211\u201d\u7684\u5f00\u6e90\u7cbe\u795e\uff0c\u5f97\u76ca\u4e8e\u77e5\u8bc6\u5206\u4eab\u7684\u5feb\u4e50\u3002\u5982\u679c\u4f60\u4e5f\u60f3\u6210\u4e3a\u4e0b\u4e00\u4e2a\u4e07\u4eba\u656c\u4ef0\u7684\u5f00\u6e90\u5927\u4f6c\uff0c\u6216\u8005\u4e0b\u4e00\u4e2a star \u7834\u4e07\u7684\u9879\u76ee\u4f5c\u8005\u3002\u90a3\u5c31\u628a\u4f60\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7075\u611f\u4e00\u73b0\u7684 idea \u5316\u4f5c\u4ee3\u7801\uff0c\u5c55\u793a\u5728 GitHub \u4e0a\u5427\uff5e \u4e0d\u8fc7\u9700\u8981\u63d0\u9192\u7684\u662f\uff0c\u5f00\u6e90\u793e\u533a\u4e0d\u662f\u6cd5\u5916\u4e4b\u5730\uff0c\u5f88\u591a\u5f00\u6e90\u8f6f\u4ef6\u5e76\u4e0d\u662f\u53ef\u4ee5\u968f\u610f\u590d\u5236\u5206\u53d1\u751a\u81f3\u8d29\u5356\u7684\uff0c\u4e86\u89e3\u5404\u7c7b \u5f00\u6e90\u534f\u8bae \u5e76\u9075\u5b88\uff0c\u4e0d\u4ec5\u662f\u6cd5\u5f8b\u7684\u8981\u6c42\uff0c\u66f4\u662f\u6bcf\u4e2a\u5f00\u6e90\u793e\u533a\u6210\u5458\u7684\u8d23\u4efb\u3002","title":"GitHub"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/#github","text":"","title":"GitHub"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/#github_1","text":"\u4ece\u529f\u80fd\u4e0a\u6765\u8bf4\uff0cGitHub \u662f\u4e00\u4e2a\u5728\u7ebf\u4ee3\u7801\u6258\u7ba1\u5e73\u53f0\u3002\u4f60\u53ef\u4ee5\u5c06\u4f60\u7684\u672c\u5730 Git \u4ed3\u5e93\u6258\u7ba1\u5230 GitHub \u4e0a\uff0c\u4f9b\u591a\u4eba\u540c\u65f6\u5f00\u53d1\u6d4f\u89c8\u3002\u4f46\u73b0\u5982\u4eca GitHub \u7684\u610f\u4e49\u5df2\u8fdc\u4e0d\u6b62\u5982\u6b64\uff0c\u5b83\u5df2\u7ecf\u6f14\u53d8\u4e3a\u4e00\u4e2a\u975e\u5e38\u6d3b\u8dc3\u4e14\u8d44\u6e90\u6781\u4e3a\u4e30\u5bcc\u7684\u5f00\u6e90\u4ea4\u6d41\u793e\u533a\u3002\u5168\u4e16\u754c\u7684\u8f6f\u4ef6\u5f00\u53d1\u8005\u5728 GitHub \u4e0a\u5206\u4eab\u5404\u5f0f\u5404\u6837\u79cd\u7c7b\u7e41\u591a\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002\u5927\u5230\u5de5\u4e1a\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6 PyTorch, TensorFlow\uff0c\u5c0f\u5230\u51e0\u5341\u884c\u7684\u5b9e\u7528\u811a\u672c\uff0c\u65e2\u6709\u786c\u6838\u7684\u77e5\u8bc6\u5206\u4eab\uff0c\u4e5f\u6709\u4fdd\u59c6\u7ea7\u7684\u6559\u7a0b\u6307\u5bfc\uff0c\u751a\u81f3\u5f88\u591a\u6280\u672f\u4e66\u7c4d\u4e5f\u5728 GitHub\u4e0a\u5f00\u6e90\uff08\u4f8b\u5982\u8bf8\u4f4d\u6b63\u5728\u770b\u7684\u8fd9\u672c\u2014\u2014\u5982\u679c\u6211\u539a\u7740\u8138\u76ae\u52c9\u5f3a\u79f0\u4e4b\u4e3a\u4e66\u7684\u8bdd\uff09\u3002\u95f2\u6765\u65e0\u4e8b\u901b\u901b GitHub \u5df2\u7ecf\u6210\u4e3a\u4e86\u6211\u65e5\u5e38\u751f\u6d3b\u7684\u4e00\u90e8\u5206\u3002 \u5728 GitHub \u91cc\uff0c\u661f\u661f\u662f\u5bf9\u4e00\u4e2a\u9879\u76ee\u81f3\u9ad8\u65e0\u4e0a\u7684\u80af\u5b9a\uff0c\u5982\u679c\u4f60\u89c9\u5f97\u8fd9\u672c\u4e66\u5bf9\u4f60\u6709\u7528\u7684\u8bdd\uff0c\u6b22\u8fce\u901a\u8fc7\u53f3\u4e0a\u89d2\u7684\u94fe\u63a5\u8fdb\u5165\u4ed3\u5e93\u4e3b\u9875\u732e\u51fa\u4f60\u5b9d\u8d35\u7684\u661f\u661f\u2728\u3002","title":"GitHub \u662f\u4ec0\u4e48"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/#github_2","text":"\u5982\u679c\u4f60\u8fd8\u4ece\u672a\u5728 GitHub \u4e0a\u5efa\u7acb\u8fc7\u81ea\u5df1\u7684\u8fdc\u7a0b\u4ed3\u5e93\uff0c\u4e5f\u6ca1\u6709\u514b\u9686\u8fc7\u522b\u4eba\u7684\u4ee3\u7801\uff0c\u90a3\u4e48\u6211\u5efa\u8bae\u4f60\u4ece GitHub\u7684\u5b98\u65b9\u6559\u7a0b \u5f00\u59cb\u81ea\u5df1\u7684\u5f00\u6e90\u4e4b\u65c5\u3002 \u5982\u679c\u4f60\u60f3\u65f6\u523b\u5173\u6ce8 GitHub \u4e0a\u4e00\u4e9b\u6709\u8da3\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u90a3\u4e48\u6211\u5411\u4f60\u91cd\u78c5\u63a8\u8350 HelloGitHub \u8fd9\u4e2a\u7f51\u7ad9\u4ee5\u53ca\u5b83\u7684\u540c\u540d\u5fae\u4fe1\u516c\u4f17\u53f7\u3002\u5b83\u4f1a\u5b9a\u671f\u6536\u5f55 GitHub \u4e0a\u8fd1\u671f\u5f00\u59cb\u6d41\u884c\u7684\u6216\u8005\u975e\u5e38\u6709\u8da3\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u8ba9\u4f60\u6709\u673a\u4f1a\u7b2c\u4e00\u65f6\u95f4\u63a5\u89e6\u5404\u7c7b\u4f18\u8d28\u8d44\u6e90\u3002 GitHub \u4e4b\u6240\u4ee5\u6210\u529f\uff0c\u6211\u60f3\u662f\u5f97\u76ca\u4e8e\u201c\u6211\u4e3a\u4eba\u4eba\uff0c\u4eba\u4eba\u4e3a\u6211\u201d\u7684\u5f00\u6e90\u7cbe\u795e\uff0c\u5f97\u76ca\u4e8e\u77e5\u8bc6\u5206\u4eab\u7684\u5feb\u4e50\u3002\u5982\u679c\u4f60\u4e5f\u60f3\u6210\u4e3a\u4e0b\u4e00\u4e2a\u4e07\u4eba\u656c\u4ef0\u7684\u5f00\u6e90\u5927\u4f6c\uff0c\u6216\u8005\u4e0b\u4e00\u4e2a star \u7834\u4e07\u7684\u9879\u76ee\u4f5c\u8005\u3002\u90a3\u5c31\u628a\u4f60\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7075\u611f\u4e00\u73b0\u7684 idea \u5316\u4f5c\u4ee3\u7801\uff0c\u5c55\u793a\u5728 GitHub \u4e0a\u5427\uff5e \u4e0d\u8fc7\u9700\u8981\u63d0\u9192\u7684\u662f\uff0c\u5f00\u6e90\u793e\u533a\u4e0d\u662f\u6cd5\u5916\u4e4b\u5730\uff0c\u5f88\u591a\u5f00\u6e90\u8f6f\u4ef6\u5e76\u4e0d\u662f\u53ef\u4ee5\u968f\u610f\u590d\u5236\u5206\u53d1\u751a\u81f3\u8d29\u5356\u7684\uff0c\u4e86\u89e3\u5404\u7c7b \u5f00\u6e90\u534f\u8bae \u5e76\u9075\u5b88\uff0c\u4e0d\u4ec5\u662f\u6cd5\u5f8b\u7684\u8981\u6c42\uff0c\u66f4\u662f\u6bcf\u4e2a\u5f00\u6e90\u793e\u533a\u6210\u5458\u7684\u8d23\u4efb\u3002","title":"\u5982\u4f55\u4f7f\u7528 GitHub"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/","text":"LaTeX \u4e3a\u4ec0\u4e48\u5b66 LaTeX \u5982\u679c\u4f60\u9700\u8981\u5199\u8bba\u6587\uff0c\u90a3\u4e48\u8bf7\u76f4\u63a5\u8df3\u5230\u4e0b\u4e00\u8282\uff0c\u56e0\u4e3a\u4f60\u4e0d\u5b66\u4e5f\u5f97\u5b66\u3002 LaTeX \u662f\u4e00\u79cd\u57fa\u4e8e TeX \u7684\u6392\u7248\u7cfb\u7edf\uff0c\u7531\u56fe\u7075\u5956\u5f97\u4e3b Lamport \u5f00\u53d1\uff0c\u800c Tex \u5219\u662f\u7531 Knuth \u6700\u521d\u5f00\u53d1\uff0c\u8fd9\u4e24\u4f4d\u90fd\u662f\u8ba1\u7b97\u673a\u754c\u7684\u5de8\u64d8\u3002\u5f53\u7136\u5f00\u53d1\u8005\u5f3a\u5e76\u4e0d\u662f\u6211\u4eec\u5b66\u4e60 LaTeX \u7684\u7406\u7531\uff0cLaTeX \u548c\u5e38\u89c1\u7684\u6240\u89c1\u5373\u6240\u5f97\u7684 Word \u6587\u6863\u6700\u5927\u7684\u533a\u522b\u5c31\u662f\u7528\u6237\u53ea\u9700\u8981\u5173\u6ce8\u5199\u4f5c\u7684\u5185\u5bb9\uff0c\u800c\u6392\u7248\u5219\u5b8c\u5168\u4ea4\u7ed9\u8f6f\u4ef6\u81ea\u52a8\u5b8c\u6210\u3002\u8fd9\u8ba9\u6ca1\u6709\u4efb\u4f55\u6392\u7248\u7ecf\u9a8c\u7684\u666e\u901a\u4eba\u5f97\u4ee5\u5199\u51fa\u6392\u7248\u975e\u5e38\u4e13\u4e1a\u7684\u8bba\u6587\u6216\u6587\u7ae0\u3002 Berkeley\u8ba1\u7b97\u673a\u7cfb\u6559\u6388 Christos Papadimitriou \u66fe\u8bf4\u8fc7\u4e00\u53e5\u534a\u5f00\u73a9\u7b11\u7684\u8bdd\uff1a Every time I read a LaTeX document, I think, wow, this must be correct! \u5982\u4f55\u5b66\u4e60 LaTeX \u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a LaTeX \u7684\u73af\u5883\u914d\u7f6e\u662f\u4e2a\u6bd4\u8f83\u5934\u75bc\u7684\u95ee\u9898\u3002\u5982\u679c\u4f60\u672c\u5730\u914d\u7f6e LaTeX \u73af\u5883\u51fa\u73b0\u4e86\u95ee\u9898\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528 Overleaf \u8fd9\u4e2a\u5728\u7ebf LaTeX \u7f16\u8f91\u7f51\u7ad9\u3002\u7ad9\u5185\u4e0d\u4ec5\u6709\u5404\u79cd\u5404\u6837\u7684 LaTeX \u6a21\u7248\u4f9b\u4f60\u9009\u62e9\uff0c\u8fd8\u514d\u53bb\u4e86\u73af\u5883\u914d\u7f6e\u7684\u96be\u9898\u3002 \u9605\u8bfb\u4e0b\u9762\u4e09\u7bc7 Tutorial: Part-1 , Part-2 , Part-3 \u3002 \u5b66\u4e60 LaTeX \u6700\u597d\u7684\u65b9\u5f0f\u5f53\u7136\u662f\u5199\u8bba\u6587\uff0c\u4e0d\u8fc7\u4ece\u4e00\u95e8\u6570\u5b66\u8bfe\u5165\u624b\u7528 LaTeX \u5199\u4f5c\u4e1a\u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u9009\u62e9\u3002","title":"LaTeX"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/#latex","text":"","title":"LaTeX"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/#latex_1","text":"\u5982\u679c\u4f60\u9700\u8981\u5199\u8bba\u6587\uff0c\u90a3\u4e48\u8bf7\u76f4\u63a5\u8df3\u5230\u4e0b\u4e00\u8282\uff0c\u56e0\u4e3a\u4f60\u4e0d\u5b66\u4e5f\u5f97\u5b66\u3002 LaTeX \u662f\u4e00\u79cd\u57fa\u4e8e TeX \u7684\u6392\u7248\u7cfb\u7edf\uff0c\u7531\u56fe\u7075\u5956\u5f97\u4e3b Lamport \u5f00\u53d1\uff0c\u800c Tex \u5219\u662f\u7531 Knuth \u6700\u521d\u5f00\u53d1\uff0c\u8fd9\u4e24\u4f4d\u90fd\u662f\u8ba1\u7b97\u673a\u754c\u7684\u5de8\u64d8\u3002\u5f53\u7136\u5f00\u53d1\u8005\u5f3a\u5e76\u4e0d\u662f\u6211\u4eec\u5b66\u4e60 LaTeX \u7684\u7406\u7531\uff0cLaTeX \u548c\u5e38\u89c1\u7684\u6240\u89c1\u5373\u6240\u5f97\u7684 Word \u6587\u6863\u6700\u5927\u7684\u533a\u522b\u5c31\u662f\u7528\u6237\u53ea\u9700\u8981\u5173\u6ce8\u5199\u4f5c\u7684\u5185\u5bb9\uff0c\u800c\u6392\u7248\u5219\u5b8c\u5168\u4ea4\u7ed9\u8f6f\u4ef6\u81ea\u52a8\u5b8c\u6210\u3002\u8fd9\u8ba9\u6ca1\u6709\u4efb\u4f55\u6392\u7248\u7ecf\u9a8c\u7684\u666e\u901a\u4eba\u5f97\u4ee5\u5199\u51fa\u6392\u7248\u975e\u5e38\u4e13\u4e1a\u7684\u8bba\u6587\u6216\u6587\u7ae0\u3002 Berkeley\u8ba1\u7b97\u673a\u7cfb\u6559\u6388 Christos Papadimitriou \u66fe\u8bf4\u8fc7\u4e00\u53e5\u534a\u5f00\u73a9\u7b11\u7684\u8bdd\uff1a Every time I read a LaTeX document, I think, wow, this must be correct!","title":"\u4e3a\u4ec0\u4e48\u5b66 LaTeX"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/#latex_2","text":"\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a LaTeX \u7684\u73af\u5883\u914d\u7f6e\u662f\u4e2a\u6bd4\u8f83\u5934\u75bc\u7684\u95ee\u9898\u3002\u5982\u679c\u4f60\u672c\u5730\u914d\u7f6e LaTeX \u73af\u5883\u51fa\u73b0\u4e86\u95ee\u9898\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528 Overleaf \u8fd9\u4e2a\u5728\u7ebf LaTeX \u7f16\u8f91\u7f51\u7ad9\u3002\u7ad9\u5185\u4e0d\u4ec5\u6709\u5404\u79cd\u5404\u6837\u7684 LaTeX \u6a21\u7248\u4f9b\u4f60\u9009\u62e9\uff0c\u8fd8\u514d\u53bb\u4e86\u73af\u5883\u914d\u7f6e\u7684\u96be\u9898\u3002 \u9605\u8bfb\u4e0b\u9762\u4e09\u7bc7 Tutorial: Part-1 , Part-2 , Part-3 \u3002 \u5b66\u4e60 LaTeX \u6700\u597d\u7684\u65b9\u5f0f\u5f53\u7136\u662f\u5199\u8bba\u6587\uff0c\u4e0d\u8fc7\u4ece\u4e00\u95e8\u6570\u5b66\u8bfe\u5165\u624b\u7528 LaTeX \u5199\u4f5c\u4e1a\u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u9009\u62e9\u3002","title":"\u5982\u4f55\u5b66\u4e60 LaTeX"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/","text":"Vim \u4e3a\u4ec0\u4e48\u5b66\u4e60 Vim \u5728\u6211\u770b\u6765 Vim \u7f16\u8f91\u5668\u6709\u5982\u4e0b\u7684\u597d\u5904\uff1a \u8ba9\u4f60\u7684\u6574\u4e2a\u5f00\u53d1\u8fc7\u7a0b\u624b\u6307\u4e0d\u9700\u8981\u79bb\u5f00\u952e\u76d8\uff0c\u800c\u4e14\u5149\u6807\u7684\u79fb\u52a8\u4e0d\u9700\u8981\u65b9\u5411\u952e\u4f7f\u5f97\u4f60\u7684\u624b\u6307\u4e00\u76f4\u5904\u5728\u6253\u5b57\u7684\u6700\u4f73\u4f4d\u7f6e\u3002 \u65b9\u4fbf\u7684\u6587\u4ef6\u5207\u6362\u4ee5\u53ca\u9762\u677f\u63a7\u5236\u53ef\u4ee5\u8ba9\u4f60\u540c\u65f6\u5f00\u53d1\u591a\u4efd\u6587\u4ef6\u751a\u81f3\u540c\u4e00\u4e2a\u6587\u4ef6\u7684\u4e0d\u540c\u4f4d\u7f6e\u3002 Vim \u7684\u5b8f\u64cd\u4f5c\u53ef\u4ee5\u6279\u91cf\u5316\u5904\u7406\u91cd\u590d\u64cd\u4f5c\uff08\u4f8b\u5982\u591a\u884c tab\uff0c\u6279\u91cf\u52a0\u53cc\u5f15\u53f7\u7b49\u7b49\uff09 Vim \u662f\u5f88\u591a\u670d\u52a1\u5668\u81ea\u5e26\u7684\u547d\u4ee4\u884c\u7f16\u8f91\u5668\uff0c\u5f53\u4f60\u901a\u8fc7 ssh \u8fde\u63a5\u8fdc\u7a0b\u670d\u52a1\u5668\u4e4b\u540e\uff0c\u7531\u4e8e\u6ca1\u6709\u56fe\u5f62\u754c\u9762\uff0c\u53ea\u80fd\u5728\u547d\u4ee4\u884c\u91cc\u8fdb\u884c\u5f00\u53d1\uff08\u5f53\u7136\u73b0\u5728\u5f88\u591a IDE \u5982 VS Code \u63d0\u4f9b\u4e86 ssh \u63d2\u4ef6\u53ef\u4ee5\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff09\u3002 \u5f02\u5e38\u4e30\u5bcc\u7684\u63d2\u4ef6\u751f\u6001\uff0c\u8ba9\u4f60\u62e5\u6709\u4e16\u754c\u4e0a\u6700\u82b1\u91cc\u80e1\u54e8\u7684\u547d\u4ee4\u884c\u7f16\u8f91\u5668\u3002 \u5982\u4f55\u5b66\u4e60 Vim \u4e0d\u5e78\u7684\u662f Vim \u7684\u5b66\u4e60\u66f2\u7ebf\u786e\u5b9e\u76f8\u5f53\u9661\u5ced\uff0c\u6211\u82b1\u4e86\u597d\u51e0\u4e2a\u661f\u671f\u624d\u6162\u6162\u9002\u5e94\u4e86\u7528 Vim \u8fdb\u884c\u5f00\u53d1\u7684\u8fc7\u7a0b\u3002\u6700\u5f00\u59cb\u4f60\u4f1a\u89c9\u5f97\u975e\u5e38\u4e0d\u9002\u5e94\uff0c\u4f46\u4e00\u65e6\u71ac\u8fc7\u4e86\u521d\u59cb\u9636\u6bb5\uff0c\u76f8\u4fe1\u6211\uff0c\u4f60\u4f1a\u7231\u4e0a Vim\u3002 Vim \u7684\u5b66\u4e60\u8d44\u6599\u6d69\u5982\u70df\u6d77\uff0c\u4f46\u638c\u63e1\u5b83\u6700\u597d\u7684\u65b9\u5f0f\u8fd8\u662f\u5c06\u5b83\u7528\u5728\u65e5\u5e38\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u800c\u4e0d\u662f\u4e00\u4e0a\u6765\u5c31\u53bb\u5b66\u5404\u79cd\u82b1\u91cc\u80e1\u54e8\u7684\u9ad8\u7ea7 Vim \u6280\u5de7\u3002\u4e2a\u4eba\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a \u5148\u9605\u8bfb \u8fd9\u7bc7 tutorial \uff0c\u638c\u63e1\u57fa\u672c\u7684 Vim \u6982\u5ff5\u548c\u4f7f\u7528\u65b9\u5f0f\u3002 \u7528 Vim \u81ea\u5e26\u7684 vimtutor \u8fdb\u884c\u7ec3\u4e60\uff0c\u5b89\u88c5\u5b8c Vim \u4e4b\u540e\u76f4\u63a5\u5728\u547d\u4ee4\u884c\u91cc\u8f93\u5165 vimtutor \u5373\u53ef\u8fdb\u5165\u7ec3\u4e60\u7a0b\u5e8f\u3002 \u6700\u540e\u5c31\u662f\u5f3a\u8feb\u81ea\u5df1\u4f7f\u7528 Vim \u8fdb\u884c\u5f00\u53d1\uff0cIDE \u91cc\u53ef\u4ee5\u5b89\u88c5 Vim \u63d2\u4ef6\u3002 \u7b49\u4f60\u5b8c\u5168\u9002\u5e94 Vim \u4e4b\u540e\u65b0\u7684\u4e16\u754c\u4fbf\u5411\u4f60\u655e\u5f00\u4e86\u5927\u95e8\uff0c\u4f60\u53ef\u4ee5\u6309\u9700\u914d\u7f6e\u81ea\u5df1\u7684 Vim\uff08\u4fee\u6539 .vimrc \u6587\u4ef6\uff09\uff0c\u7f51\u4e0a\u6709\u6570\u4e0d\u80dc\u6570\u7684\u8d44\u6e90\u53ef\u4ee5\u501f\u9274\u3002 \u63a8\u8350\u53c2\u8003\u8d44\u6599 Neil, Drew. Practical Vim: Edit Text at the Speed of Thought. N.p., Pragmatic Bookshelf, 2015. Neil, Drew. Modern Vim: Craft Your Development Environment with Vim 8 and Neovim. United States, Pragmatic Bookshelf.","title":"Vim"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/#vim","text":"","title":"Vim"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/#vim_1","text":"\u5728\u6211\u770b\u6765 Vim \u7f16\u8f91\u5668\u6709\u5982\u4e0b\u7684\u597d\u5904\uff1a \u8ba9\u4f60\u7684\u6574\u4e2a\u5f00\u53d1\u8fc7\u7a0b\u624b\u6307\u4e0d\u9700\u8981\u79bb\u5f00\u952e\u76d8\uff0c\u800c\u4e14\u5149\u6807\u7684\u79fb\u52a8\u4e0d\u9700\u8981\u65b9\u5411\u952e\u4f7f\u5f97\u4f60\u7684\u624b\u6307\u4e00\u76f4\u5904\u5728\u6253\u5b57\u7684\u6700\u4f73\u4f4d\u7f6e\u3002 \u65b9\u4fbf\u7684\u6587\u4ef6\u5207\u6362\u4ee5\u53ca\u9762\u677f\u63a7\u5236\u53ef\u4ee5\u8ba9\u4f60\u540c\u65f6\u5f00\u53d1\u591a\u4efd\u6587\u4ef6\u751a\u81f3\u540c\u4e00\u4e2a\u6587\u4ef6\u7684\u4e0d\u540c\u4f4d\u7f6e\u3002 Vim \u7684\u5b8f\u64cd\u4f5c\u53ef\u4ee5\u6279\u91cf\u5316\u5904\u7406\u91cd\u590d\u64cd\u4f5c\uff08\u4f8b\u5982\u591a\u884c tab\uff0c\u6279\u91cf\u52a0\u53cc\u5f15\u53f7\u7b49\u7b49\uff09 Vim \u662f\u5f88\u591a\u670d\u52a1\u5668\u81ea\u5e26\u7684\u547d\u4ee4\u884c\u7f16\u8f91\u5668\uff0c\u5f53\u4f60\u901a\u8fc7 ssh \u8fde\u63a5\u8fdc\u7a0b\u670d\u52a1\u5668\u4e4b\u540e\uff0c\u7531\u4e8e\u6ca1\u6709\u56fe\u5f62\u754c\u9762\uff0c\u53ea\u80fd\u5728\u547d\u4ee4\u884c\u91cc\u8fdb\u884c\u5f00\u53d1\uff08\u5f53\u7136\u73b0\u5728\u5f88\u591a IDE \u5982 VS Code \u63d0\u4f9b\u4e86 ssh \u63d2\u4ef6\u53ef\u4ee5\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff09\u3002 \u5f02\u5e38\u4e30\u5bcc\u7684\u63d2\u4ef6\u751f\u6001\uff0c\u8ba9\u4f60\u62e5\u6709\u4e16\u754c\u4e0a\u6700\u82b1\u91cc\u80e1\u54e8\u7684\u547d\u4ee4\u884c\u7f16\u8f91\u5668\u3002","title":"\u4e3a\u4ec0\u4e48\u5b66\u4e60 Vim"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/#vim_2","text":"\u4e0d\u5e78\u7684\u662f Vim \u7684\u5b66\u4e60\u66f2\u7ebf\u786e\u5b9e\u76f8\u5f53\u9661\u5ced\uff0c\u6211\u82b1\u4e86\u597d\u51e0\u4e2a\u661f\u671f\u624d\u6162\u6162\u9002\u5e94\u4e86\u7528 Vim \u8fdb\u884c\u5f00\u53d1\u7684\u8fc7\u7a0b\u3002\u6700\u5f00\u59cb\u4f60\u4f1a\u89c9\u5f97\u975e\u5e38\u4e0d\u9002\u5e94\uff0c\u4f46\u4e00\u65e6\u71ac\u8fc7\u4e86\u521d\u59cb\u9636\u6bb5\uff0c\u76f8\u4fe1\u6211\uff0c\u4f60\u4f1a\u7231\u4e0a Vim\u3002 Vim \u7684\u5b66\u4e60\u8d44\u6599\u6d69\u5982\u70df\u6d77\uff0c\u4f46\u638c\u63e1\u5b83\u6700\u597d\u7684\u65b9\u5f0f\u8fd8\u662f\u5c06\u5b83\u7528\u5728\u65e5\u5e38\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u800c\u4e0d\u662f\u4e00\u4e0a\u6765\u5c31\u53bb\u5b66\u5404\u79cd\u82b1\u91cc\u80e1\u54e8\u7684\u9ad8\u7ea7 Vim \u6280\u5de7\u3002\u4e2a\u4eba\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a \u5148\u9605\u8bfb \u8fd9\u7bc7 tutorial \uff0c\u638c\u63e1\u57fa\u672c\u7684 Vim \u6982\u5ff5\u548c\u4f7f\u7528\u65b9\u5f0f\u3002 \u7528 Vim \u81ea\u5e26\u7684 vimtutor \u8fdb\u884c\u7ec3\u4e60\uff0c\u5b89\u88c5\u5b8c Vim \u4e4b\u540e\u76f4\u63a5\u5728\u547d\u4ee4\u884c\u91cc\u8f93\u5165 vimtutor \u5373\u53ef\u8fdb\u5165\u7ec3\u4e60\u7a0b\u5e8f\u3002 \u6700\u540e\u5c31\u662f\u5f3a\u8feb\u81ea\u5df1\u4f7f\u7528 Vim \u8fdb\u884c\u5f00\u53d1\uff0cIDE \u91cc\u53ef\u4ee5\u5b89\u88c5 Vim \u63d2\u4ef6\u3002 \u7b49\u4f60\u5b8c\u5168\u9002\u5e94 Vim \u4e4b\u540e\u65b0\u7684\u4e16\u754c\u4fbf\u5411\u4f60\u655e\u5f00\u4e86\u5927\u95e8\uff0c\u4f60\u53ef\u4ee5\u6309\u9700\u914d\u7f6e\u81ea\u5df1\u7684 Vim\uff08\u4fee\u6539 .vimrc \u6587\u4ef6\uff09\uff0c\u7f51\u4e0a\u6709\u6570\u4e0d\u80dc\u6570\u7684\u8d44\u6e90\u53ef\u4ee5\u501f\u9274\u3002","title":"\u5982\u4f55\u5b66\u4e60 Vim"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/#_1","text":"Neil, Drew. Practical Vim: Edit Text at the Speed of Thought. N.p., Pragmatic Bookshelf, 2015. Neil, Drew. Modern Vim: Craft Your Development Environment with Vim 8 and Neovim. United States, Pragmatic Bookshelf.","title":"\u63a8\u8350\u53c2\u8003\u8d44\u6599"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/","text":"\u6bd5\u4e1a\u8bba\u6587 \u4e3a\u4ec0\u4e48\u5199\u8fd9\u4efd\u6559\u7a0b 2022\u5e74\uff0c\u6211\u672c\u79d1\u6bd5\u4e1a\u4e86\u3002\u5728\u5f00\u59cb\u52a8\u624b\u5199\u6bd5\u4e1a\u8bba\u6587\u7684\u65f6\u5019\uff0c\u6211\u5c34\u5c2c\u5730\u53d1\u73b0\uff0c\u6211\u5bf9 Word \u7684\u638c\u63e1\u7a0b\u5ea6\u4ec5\u9650\u4e8e\u8c03\u8282\u5b57\u4f53\u3001\u4fdd\u5b58\u5bfc\u51fa\u8fd9\u4e9b\u50bb\u74dc\u529f\u80fd\u3002\u66fe\u60f3\u8f6c\u6218 Latex\uff0c\u4f46\u8bba\u6587\u7684\u6bb5\u843d\u683c\u5f0f\u8981\u6c42\u8c03\u6574\u8d77\u6765\u8fd8\u662f\u7528 Word \u66f4\u4e3a\u65b9\u4fbf\uff0c\u7ecf\u8fc7\u4e00\u756a\u75db\u82e6\u7f20\u6597\u4e4b\u540e\uff0c\u603b\u7b97\u662f\u6709\u60ca\u65e0\u9669\u5730\u5b8c\u6210\u4e86\u8bba\u6587\u7684\u5199\u4f5c\u548c\u7b54\u8fa9\u3002\u4e3a\u4e86\u4e0d\u8ba9\u540e\u6765\u8005\u91cd\u8e48\u8986\u8f99\uff0c\u9042\u628a\u76f8\u5173\u8d44\u6e90\u6574\u7406\u6210\u4e00\u4efd\u5f00\u7bb1\u5373\u7528\u7684\u6587\u6863\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002 \u5982\u4f55\u7528 Word \u5199\u6bd5\u4e1a\u8bba\u6587 \u6b63\u5982\u5c06\u5927\u8c61\u88c5\u8fdb\u51b0\u7bb1\u9700\u8981\u4e09\u6b65\uff0c\u7528 Word \u5199\u6bd5\u4e1a\u8bba\u6587\u4e5f\u53ea\u9700\u8981\u7b80\u5355\u4e09\u6b65\uff1a \u786e\u5b9a\u8bba\u6587\u7684\u683c\u5f0f\u8981\u6c42\uff1a\u901a\u5e38\u5b66\u9662\u90fd\u4f1a\u4e0b\u53d1\u6bd5\u4e1a\u8bba\u6587\u7684\u683c\u5f0f\u8981\u6c42\uff08\u5404\u7ea7\u6807\u9898\u7684\u5b57\u4f53\u5b57\u53f7\u3001\u56fe\u4f8b\u548c\u5f15\u7528\u7684\u683c\u5f0f\u7b49\u7b49\uff09\uff0c\u5982\u679c\u66f4\u4e3a\u8d34\u5fc3\u7684\u8bdd\u751a\u81f3\u4f1a\u76f4\u63a5\u7ed9\u51fa\u8bba\u6587\u6a21\u7248\uff08\u5982\u662f\u6b64\u60c5\u51b5\u8bf7\u76f4\u63a5\u8df3\u8f6c\u5230\u4e0b\u4e00\u6b65\uff09\u3002\u5f88\u4e0d\u5e78\u7684\u662f\uff0c\u6211\u7684\u5b66\u9662\u5e76\u6ca1\u6709\u4e0b\u53d1\u6807\u51c6\u7684\u8bba\u6587\u683c\u5f0f\u8981\u6c42\uff0c\u8fd8\u63d0\u4f9b\u4e86\u4e00\u4efd\u683c\u5f0f\u6df7\u4e71\u51e0\u4e4e\u6beb\u65e0\u7528\u5904\u7684\u8bba\u6587\u6a21\u7248\u8188\u5e94\u6211\uff0c\u88ab\u903c\u65e0\u5948\u4e4b\u4e0b\u6211\u627e\u5230\u4e86\u5317\u4eac\u5927\u5b66\u7814\u7a76\u751f\u7684 \u8bba\u6587\u683c\u5f0f\u8981\u6c42 \uff0c\u5e76\u6309\u7167\u5176\u8981\u6c42\u5236\u4f5c\u4e86 \u4e00\u4efd\u6a21\u7248 \uff0c\u5927\u5bb6\u9700\u8981\u7684\u8bdd\u81ea\u53d6\uff0c\u672c\u4eba\u4e0d\u627f\u62c5\u65e0\u6cd5\u6bd5\u4e1a\u7b49\u4efb\u4f55\u8d23\u4efb\u3002 \u5b66\u4e60 Word \u6392\u7248\uff1a\u5230\u8fbe\u8fd9\u4e00\u6b65\u7684\u7ae5\u978b\u5206\u4e3a\u4e24\u7c7b\uff0c\u4e00\u662f\u5df2\u7ecf\u62e5\u6709\u4e86\u5b66\u9662\u63d0\u4f9b\u7684\u6807\u51c6\u6a21\u7248\uff0c\u4e8c\u662f\u53ea\u6709\u4e00\u4efd\u865a\u65e0\u7f25\u7f08\u7684\u683c\u5f0f\u8981\u6c42\u3002\u90a3\u73b0\u5728\u5f53\u52a1\u4e4b\u6025\u5c31\u662f\u5b66\u4e60\u57fa\u7840\u7684 Word \u6392\u7248\u6280\u672f\uff0c\u5bf9\u4e8e\u524d\u8005\u53ef\u4ee5\u5b66\u4f1a\u4f7f\u7528\u6a21\u7248\uff0c\u5bf9\u4e8e\u540e\u8005\u5219\u53ef\u4ee5\u5b66\u4f1a\u5236\u4f5c\u6a21\u7248\u3002\u6b64\u65f6\u5207\u8bb0\u4e0d\u8981\u96c4\u5fc3\u52c3\u52c3\u5730\u9009\u62e9\u4e00\u4e2a\u5341\u51e0\u4e2a\u5c0f\u65f6\u7684 Word \u6559\u5b66\u89c6\u9891\u5f00\u59cb\u5934\u60ac\u6881\u9525\u523a\u80a1\uff0c\u56e0\u4e3a\u751f\u4ea7\u4e00\u4efd\u5e94\u4ed8\u6bd5\u4e1a\u7684\u5b66\u672f\u5783\u573e\u53ea\u8981\u5b66\u534a\u5c0f\u65f6\u80fd\u4e0a\u624b\u5c31\u591f\u4e86\u3002\u6211\u5f53\u65f6\u770b\u7684 \u4e00\u4e2a B \u7ad9\u7684\u6559\u5b66\u89c6\u9891 \uff0c\u77ed\u5c0f\u7cbe\u608d\u975e\u5e38\u5b9e\u7528\uff0c\u5168\u957f\u534a\u5c0f\u65f6\u6781\u901f\u5165\u95e8\u3002 \u751f\u4ea7\u5b66\u672f\u5783\u573e\uff1a\u6700\u5bb9\u6613\u7684\u4e00\u6b65\uff0c\u5927\u5bb6\u516b\u4ed9\u8fc7\u6d77\uff0c\u5404\u663e\u795e\u901a\u5427\uff0c\u795d\u5927\u5bb6\u6bd5\u4e1a\u987a\u5229\uff5e\uff5e","title":"\u6bd5\u4e1a\u8bba\u6587"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/#_1","text":"","title":"\u6bd5\u4e1a\u8bba\u6587"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/#_2","text":"2022\u5e74\uff0c\u6211\u672c\u79d1\u6bd5\u4e1a\u4e86\u3002\u5728\u5f00\u59cb\u52a8\u624b\u5199\u6bd5\u4e1a\u8bba\u6587\u7684\u65f6\u5019\uff0c\u6211\u5c34\u5c2c\u5730\u53d1\u73b0\uff0c\u6211\u5bf9 Word \u7684\u638c\u63e1\u7a0b\u5ea6\u4ec5\u9650\u4e8e\u8c03\u8282\u5b57\u4f53\u3001\u4fdd\u5b58\u5bfc\u51fa\u8fd9\u4e9b\u50bb\u74dc\u529f\u80fd\u3002\u66fe\u60f3\u8f6c\u6218 Latex\uff0c\u4f46\u8bba\u6587\u7684\u6bb5\u843d\u683c\u5f0f\u8981\u6c42\u8c03\u6574\u8d77\u6765\u8fd8\u662f\u7528 Word \u66f4\u4e3a\u65b9\u4fbf\uff0c\u7ecf\u8fc7\u4e00\u756a\u75db\u82e6\u7f20\u6597\u4e4b\u540e\uff0c\u603b\u7b97\u662f\u6709\u60ca\u65e0\u9669\u5730\u5b8c\u6210\u4e86\u8bba\u6587\u7684\u5199\u4f5c\u548c\u7b54\u8fa9\u3002\u4e3a\u4e86\u4e0d\u8ba9\u540e\u6765\u8005\u91cd\u8e48\u8986\u8f99\uff0c\u9042\u628a\u76f8\u5173\u8d44\u6e90\u6574\u7406\u6210\u4e00\u4efd\u5f00\u7bb1\u5373\u7528\u7684\u6587\u6863\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002","title":"\u4e3a\u4ec0\u4e48\u5199\u8fd9\u4efd\u6559\u7a0b"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/#word","text":"\u6b63\u5982\u5c06\u5927\u8c61\u88c5\u8fdb\u51b0\u7bb1\u9700\u8981\u4e09\u6b65\uff0c\u7528 Word \u5199\u6bd5\u4e1a\u8bba\u6587\u4e5f\u53ea\u9700\u8981\u7b80\u5355\u4e09\u6b65\uff1a \u786e\u5b9a\u8bba\u6587\u7684\u683c\u5f0f\u8981\u6c42\uff1a\u901a\u5e38\u5b66\u9662\u90fd\u4f1a\u4e0b\u53d1\u6bd5\u4e1a\u8bba\u6587\u7684\u683c\u5f0f\u8981\u6c42\uff08\u5404\u7ea7\u6807\u9898\u7684\u5b57\u4f53\u5b57\u53f7\u3001\u56fe\u4f8b\u548c\u5f15\u7528\u7684\u683c\u5f0f\u7b49\u7b49\uff09\uff0c\u5982\u679c\u66f4\u4e3a\u8d34\u5fc3\u7684\u8bdd\u751a\u81f3\u4f1a\u76f4\u63a5\u7ed9\u51fa\u8bba\u6587\u6a21\u7248\uff08\u5982\u662f\u6b64\u60c5\u51b5\u8bf7\u76f4\u63a5\u8df3\u8f6c\u5230\u4e0b\u4e00\u6b65\uff09\u3002\u5f88\u4e0d\u5e78\u7684\u662f\uff0c\u6211\u7684\u5b66\u9662\u5e76\u6ca1\u6709\u4e0b\u53d1\u6807\u51c6\u7684\u8bba\u6587\u683c\u5f0f\u8981\u6c42\uff0c\u8fd8\u63d0\u4f9b\u4e86\u4e00\u4efd\u683c\u5f0f\u6df7\u4e71\u51e0\u4e4e\u6beb\u65e0\u7528\u5904\u7684\u8bba\u6587\u6a21\u7248\u8188\u5e94\u6211\uff0c\u88ab\u903c\u65e0\u5948\u4e4b\u4e0b\u6211\u627e\u5230\u4e86\u5317\u4eac\u5927\u5b66\u7814\u7a76\u751f\u7684 \u8bba\u6587\u683c\u5f0f\u8981\u6c42 \uff0c\u5e76\u6309\u7167\u5176\u8981\u6c42\u5236\u4f5c\u4e86 \u4e00\u4efd\u6a21\u7248 \uff0c\u5927\u5bb6\u9700\u8981\u7684\u8bdd\u81ea\u53d6\uff0c\u672c\u4eba\u4e0d\u627f\u62c5\u65e0\u6cd5\u6bd5\u4e1a\u7b49\u4efb\u4f55\u8d23\u4efb\u3002 \u5b66\u4e60 Word \u6392\u7248\uff1a\u5230\u8fbe\u8fd9\u4e00\u6b65\u7684\u7ae5\u978b\u5206\u4e3a\u4e24\u7c7b\uff0c\u4e00\u662f\u5df2\u7ecf\u62e5\u6709\u4e86\u5b66\u9662\u63d0\u4f9b\u7684\u6807\u51c6\u6a21\u7248\uff0c\u4e8c\u662f\u53ea\u6709\u4e00\u4efd\u865a\u65e0\u7f25\u7f08\u7684\u683c\u5f0f\u8981\u6c42\u3002\u90a3\u73b0\u5728\u5f53\u52a1\u4e4b\u6025\u5c31\u662f\u5b66\u4e60\u57fa\u7840\u7684 Word \u6392\u7248\u6280\u672f\uff0c\u5bf9\u4e8e\u524d\u8005\u53ef\u4ee5\u5b66\u4f1a\u4f7f\u7528\u6a21\u7248\uff0c\u5bf9\u4e8e\u540e\u8005\u5219\u53ef\u4ee5\u5b66\u4f1a\u5236\u4f5c\u6a21\u7248\u3002\u6b64\u65f6\u5207\u8bb0\u4e0d\u8981\u96c4\u5fc3\u52c3\u52c3\u5730\u9009\u62e9\u4e00\u4e2a\u5341\u51e0\u4e2a\u5c0f\u65f6\u7684 Word \u6559\u5b66\u89c6\u9891\u5f00\u59cb\u5934\u60ac\u6881\u9525\u523a\u80a1\uff0c\u56e0\u4e3a\u751f\u4ea7\u4e00\u4efd\u5e94\u4ed8\u6bd5\u4e1a\u7684\u5b66\u672f\u5783\u573e\u53ea\u8981\u5b66\u534a\u5c0f\u65f6\u80fd\u4e0a\u624b\u5c31\u591f\u4e86\u3002\u6211\u5f53\u65f6\u770b\u7684 \u4e00\u4e2a B \u7ad9\u7684\u6559\u5b66\u89c6\u9891 \uff0c\u77ed\u5c0f\u7cbe\u608d\u975e\u5e38\u5b9e\u7528\uff0c\u5168\u957f\u534a\u5c0f\u65f6\u6781\u901f\u5165\u95e8\u3002 \u751f\u4ea7\u5b66\u672f\u5783\u573e\uff1a\u6700\u5bb9\u6613\u7684\u4e00\u6b65\uff0c\u5927\u5bb6\u516b\u4ed9\u8fc7\u6d77\uff0c\u5404\u663e\u795e\u901a\u5427\uff0c\u795d\u5927\u5bb6\u6bd5\u4e1a\u987a\u5229\uff5e\uff5e","title":"\u5982\u4f55\u7528 Word \u5199\u6bd5\u4e1a\u8bba\u6587"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/","text":"\u5b9e\u7528\u5de5\u5177\u7bb1 \u4e0b\u8f7d\u5de5\u5177 Libgen : PDF\u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9\u3002 z-epub : ePub\u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9\u3002 bitdownloader : \u6cb9\u7ba1\u89c6\u9891\u4e0b\u8f7d\u5668\u3002 zlibrary : \u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9(\u53ef\u80fd\u9700\u8981\u7ffb\u5899)\u3002 \u8bbe\u8ba1\u5de5\u5177 excalidraw : \u4e00\u6b3e\u624b\u7ed8\u98ce\u683c\u7684\u7ed8\u56fe\u5de5\u5177\uff0c\u975e\u5e38\u9002\u5408\u7ed8\u5236\u8bfe\u7a0b\u62a5\u544a\u6216\u8005PPT\u5185\u7684\u793a\u610f\u56fe\u3002 origamiway : \u624b\u628a\u624b\u6559\u4f60\u600e\u4e48\u6298\u7eb8\u3002 thingiverse : \u56ca\u62ec\u5404\u7c7b 2D/3D \u8bbe\u8ba1\u8d44\u6e90\uff0c\u5176 STL \u6587\u4ef6\u4e0b\u8f7d\u53ef\u76f4\u63a5 3D \u6253\u5370\u3002 iconfont : \u56fd\u5185\u6700\u5927\u7684\u56fe\u6807\u548c\u63d2\u753b\u8d44\u6e90\u5e93\uff0c\u53ef\u7528\u4e8e\u5f00\u53d1\u6216\u7ed8\u5236\u7cfb\u7edf\u67b6\u6784\u56fe\u3002 turbosquid : \u53ef\u4ee5\u8d2d\u4e70\u5404\u5f0f\u5404\u6837\u7684\u6a21\u578b\u3002 \u7f16\u7a0b\u76f8\u5173 sqlfiddle : \u4e00\u4e2a\u7b80\u6613\u7684\u5728\u7ebf SQL Playground\u3002 godbolt : \u975e\u5e38\u65b9\u4fbf\u7684\u7f16\u8bd1\u5668\u63a2\u7d22\u5de5\u5177\u3002\u4f60\u53ef\u4ee5\u5199\u4e00\u6bb5 C/C++ \u4ee3\u7801\uff0c\u9009\u62e9\u4e00\u6b3e\u7f16\u8bd1\u5668\uff0c\u7136\u540e\u4fbf\u53ef\u4ee5\u89c2\u5bdf\u751f\u6210\u7684\u5177\u4f53\u6c47\u7f16\u4ee3\u7801\u3002 explainshell : \u4f60\u662f\u5426\u66fe\u4e3a\u4e00\u6bb5 shell \u4ee3\u7801\u7684\u5177\u4f53\u542b\u4e49\u611f\u5230\u56f0\u6270\uff1fmanpage \u770b\u534a\u5929\u8fd8\u662f\u4e0d\u660e\u6240\u4ee5\uff1f\u8bd5\u8bd5\u8fd9\u4e2a\u7f51\u7ad9\uff01 regex101 : \u6b63\u5219\u8868\u8fbe\u5f0f\u8c03\u8bd5\u7f51\u7ad9\uff0c\u652f\u6301\u5404\u79cd\u7f16\u7a0b\u8bed\u8a00\u7684\u5339\u914d\u6807\u51c6\u3002 typingtom : \u9488\u5bf9\u7a0b\u5e8f\u5458\u7684\u6253\u5b57\u7ec3\u4e60/\u6d4b\u901f\u7f51\u7ad9\u3002 \u5b66\u4e60\u7f51\u7ad9 HFS : \u5404\u7c7b\u8f6f\u4ef6\u6559\u7a0b\u3002 os-wiki : \u64cd\u4f5c\u7cfb\u7edf\u6280\u672f\u8d44\u6e90\u767e\u79d1\u5168\u4e66\u3002 Shadertoy : \u7f16\u5199\u5404\u5f0f\u5404\u6837\u7684 shader\u3002 \u6742\u9879 tophub : \u65b0\u95fb\u70ed\u699c\u5408\u96c6\uff08\u7efc\u5408\u4e86\u77e5\u4e4e\u3001\u5fae\u535a\u3001\u767e\u5ea6\u3001\u5fae\u4fe1\u7b49\uff09\u3002 speedtest : \u5728\u7ebf\u7f51\u7edc\u6d4b\u901f\u7f51\u7ad9\u3002 public-apis : \u516c\u5171 API \u5408\u96c6\u5217\u8868\u3002","title":"\u5b9e\u7528\u5de5\u5177\u7bb1"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_1","text":"","title":"\u5b9e\u7528\u5de5\u5177\u7bb1"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_2","text":"Libgen : PDF\u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9\u3002 z-epub : ePub\u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9\u3002 bitdownloader : \u6cb9\u7ba1\u89c6\u9891\u4e0b\u8f7d\u5668\u3002 zlibrary : \u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9(\u53ef\u80fd\u9700\u8981\u7ffb\u5899)\u3002","title":"\u4e0b\u8f7d\u5de5\u5177"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_3","text":"excalidraw : \u4e00\u6b3e\u624b\u7ed8\u98ce\u683c\u7684\u7ed8\u56fe\u5de5\u5177\uff0c\u975e\u5e38\u9002\u5408\u7ed8\u5236\u8bfe\u7a0b\u62a5\u544a\u6216\u8005PPT\u5185\u7684\u793a\u610f\u56fe\u3002 origamiway : \u624b\u628a\u624b\u6559\u4f60\u600e\u4e48\u6298\u7eb8\u3002 thingiverse : \u56ca\u62ec\u5404\u7c7b 2D/3D \u8bbe\u8ba1\u8d44\u6e90\uff0c\u5176 STL \u6587\u4ef6\u4e0b\u8f7d\u53ef\u76f4\u63a5 3D \u6253\u5370\u3002 iconfont : \u56fd\u5185\u6700\u5927\u7684\u56fe\u6807\u548c\u63d2\u753b\u8d44\u6e90\u5e93\uff0c\u53ef\u7528\u4e8e\u5f00\u53d1\u6216\u7ed8\u5236\u7cfb\u7edf\u67b6\u6784\u56fe\u3002 turbosquid : \u53ef\u4ee5\u8d2d\u4e70\u5404\u5f0f\u5404\u6837\u7684\u6a21\u578b\u3002","title":"\u8bbe\u8ba1\u5de5\u5177"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_4","text":"sqlfiddle : \u4e00\u4e2a\u7b80\u6613\u7684\u5728\u7ebf SQL Playground\u3002 godbolt : \u975e\u5e38\u65b9\u4fbf\u7684\u7f16\u8bd1\u5668\u63a2\u7d22\u5de5\u5177\u3002\u4f60\u53ef\u4ee5\u5199\u4e00\u6bb5 C/C++ \u4ee3\u7801\uff0c\u9009\u62e9\u4e00\u6b3e\u7f16\u8bd1\u5668\uff0c\u7136\u540e\u4fbf\u53ef\u4ee5\u89c2\u5bdf\u751f\u6210\u7684\u5177\u4f53\u6c47\u7f16\u4ee3\u7801\u3002 explainshell : \u4f60\u662f\u5426\u66fe\u4e3a\u4e00\u6bb5 shell \u4ee3\u7801\u7684\u5177\u4f53\u542b\u4e49\u611f\u5230\u56f0\u6270\uff1fmanpage \u770b\u534a\u5929\u8fd8\u662f\u4e0d\u660e\u6240\u4ee5\uff1f\u8bd5\u8bd5\u8fd9\u4e2a\u7f51\u7ad9\uff01 regex101 : \u6b63\u5219\u8868\u8fbe\u5f0f\u8c03\u8bd5\u7f51\u7ad9\uff0c\u652f\u6301\u5404\u79cd\u7f16\u7a0b\u8bed\u8a00\u7684\u5339\u914d\u6807\u51c6\u3002 typingtom : \u9488\u5bf9\u7a0b\u5e8f\u5458\u7684\u6253\u5b57\u7ec3\u4e60/\u6d4b\u901f\u7f51\u7ad9\u3002","title":"\u7f16\u7a0b\u76f8\u5173"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_5","text":"HFS : \u5404\u7c7b\u8f6f\u4ef6\u6559\u7a0b\u3002 os-wiki : \u64cd\u4f5c\u7cfb\u7edf\u6280\u672f\u8d44\u6e90\u767e\u79d1\u5168\u4e66\u3002 Shadertoy : \u7f16\u5199\u5404\u5f0f\u5404\u6837\u7684 shader\u3002","title":"\u5b66\u4e60\u7f51\u7ad9"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_6","text":"tophub : \u65b0\u95fb\u70ed\u699c\u5408\u96c6\uff08\u7efc\u5408\u4e86\u77e5\u4e4e\u3001\u5fae\u535a\u3001\u767e\u5ea6\u3001\u5fae\u4fe1\u7b49\uff09\u3002 speedtest : \u5728\u7ebf\u7f51\u7edc\u6d4b\u901f\u7f51\u7ad9\u3002 public-apis : \u516c\u5171 API \u5408\u96c6\u5217\u8868\u3002","title":"\u6742\u9879"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E7%BF%BB%E5%A2%99/","text":"\u7ffb\u5899 \u6b64\u94fe\u63a5 \u51fa\u73b0\u5728\u8fd9\u91cc\u7eaf\u5c5e\u4e8c\u8fdb\u5236 bit \u7684\u968f\u610f\u7ec4\u5408\uff0c\u4e0e\u672c\u4eba\u6beb\u65e0\u5173\u7cfb\u3002","title":"\u7ffb\u5899"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E7%BF%BB%E5%A2%99/#_1","text":"\u6b64\u94fe\u63a5 \u51fa\u73b0\u5728\u8fd9\u91cc\u7eaf\u5c5e\u4e8c\u8fdb\u5236 bit \u7684\u968f\u610f\u7ec4\u5408\uff0c\u4e0e\u672c\u4eba\u6beb\u65e0\u5173\u7cfb\u3002","title":"\u7ffb\u5899"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/","text":"CS162: Operating System \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aC, x86\u6c47\u7f16 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a200 \u5c0f\u65f6+\uff0c\u4e0a\u4e0d\u5c01\u9876 \u8fd9\u95e8\u8bfe\u8ba9\u6211\u8bb0\u5fc6\u72b9\u65b0\u7684\u6709\u4e24\u4e2a\u90e8\u5206\uff1a \u9996\u5148\u662f\u6559\u6750\uff0c\u8fd9\u672c\u4e66\u7528\u7684\u6559\u6750 Operating Systems: Principles and Practice (2nd Edition) \u4e00\u5171\u56db\u5377\uff0c\u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u5f88\u597d\u5730\u5f25\u8865\u4e86 MIT6.S081 \u5728\u7406\u8bba\u77e5\u8bc6\u4e0a\u7684\u4e9b\u8bb8\u7a7a\u767d\uff0c\u975e\u5e38\u5efa\u8bae\u5927\u5bb6\u9605\u8bfb\u3002\u76f8\u5173\u8d44\u6e90\u4f1a\u5206\u4eab\u5728\u672c\u4e66\u7684\u7ecf\u5178\u4e66\u7c4d\u63a8\u8350\u6a21\u5757\u3002 \u5176\u6b21\u662f\u8fd9\u95e8\u8bfe\u7684 Project \u2014\u2014 Pintos\u3002Pintos \u662f\u7531 Ben Pfaff \u7b49\u4eba\u5728 x86 \u5e73\u53f0\u4e0a\u7f16\u5199\u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf\uff0cBen Pfaff \u751a\u81f3\u4e13\u95e8\u53d1\u4e86\u7bc7 paper \u6765\u9610\u8ff0 Pintos \u7684\u8bbe\u8ba1\u601d\u60f3\u3002 \u548c MIT \u7684 xv6 \u5c0f\u800c\u7cbe\u7684 lab \u8bbe\u8ba1\u7406\u5ff5\u4e0d\u540c\uff0cPintos \u66f4\u6ce8\u91cd\u7cfb\u7edf\u7684 Design and Implementation\u3002Pintos \u672c\u8eab\u4ec5\u4e00\u4e07\u884c\u5de6\u53f3\uff0c\u53ea\u63d0\u4f9b\u4e86\u64cd\u4f5c\u7cfb\u7edf\u6700\u57fa\u672c\u7684\u529f\u80fd\u3002\u800c 4 \u4e2aProject\uff0c\u5c31\u662f\u8ba9\u4f60\u5728\u8fd9\u4e2a\u6781\u4e3a\u7cbe\u7b80\u7684\u64cd\u4f5c\u7cfb\u7edf\u4e4b\u4e0a\uff0c\u5206\u522b\u4e3a\u5176\u589e\u52a0\u7ebf\u7a0b\u8c03\u5ea6\u673a\u5236 (Project1)\uff0c\u7cfb\u7edf\u8c03\u7528 (Project2)\uff0c\u865a\u62df\u5185\u5b58 (Project3) \u4ee5\u53ca\u6587\u4ef6\u7cfb\u7edf (Project4)\u3002\u6240\u6709\u7684 Project \u90fd\u7ed9\u5b66\u751f\u7559\u6709\u5f88\u5927\u7684\u8bbe\u8ba1\u7a7a\u95f4\uff0c\u603b\u4ee3\u7801\u91cf\u5728 2000 \u884c\u5de6\u53f3\u3002\u6839\u636e Stanford \u5b66\u751f \u81ea\u5df1\u7684\u53cd\u9988 \uff0c\u5728 3-4 \u4eba\u7ec4\u961f\u7684\u60c5\u51b5\u4e0b\uff0c\u540e\u4e24\u4e2a Project \u7684\u4eba\u5747\u8017\u65f6\u4e5f\u5728 40 \u4e2a\u5c0f\u65f6\u4ee5\u4e0a\u3002 \u867d\u7136\u96be\u5ea6\u5f88\u5927\uff0c\u4f46 Stanford, Berkeley, JHU \u7b49\u591a\u6240\u7f8e\u56fd\u9876\u5c16\u540d\u6821\u7684\u64cd\u7edf\u8bfe\u7a0b\u5747\u91c7\u7528\u4e86 Pintos\u3002\u5982\u679c\u4f60\u771f\u7684\u5bf9\u64cd\u4f5c\u7cfb\u7edf\u5f88\u611f\u5174\u8da3\uff0cPintos \u4f1a\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u7f16\u5199\u548c debug \u5e95\u5c42\u7cfb\u7edf\u4ee3\u7801\u7684\u80fd\u529b\u3002\u5728\u672c\u79d1\u9636\u6bb5\uff0c\u80fd\u81ea\u5df1\u8bbe\u8ba1\u3001\u5b9e\u73b0\u5e76 debug \u4e00\u4e2a\u5927\u578b\u7cfb\u7edf\uff0c\u662f\u4e00\u6bb5\u975e\u5e38\u73cd\u8d35\u7684\u7ecf\u5386\u3002 \u5317\u5927 2022 \u5e74\u6625\u5b63\u5b66\u671f\u7684\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9a8c\u73ed\u4e5f\u5c06\u4f1a\u9996\u6b21\u5f15\u5165 Pintos \u4f5c\u4e3a\u8bfe\u7a0b Project\u3002\u6211\u548c\u8be5\u8bfe\u7a0b\u7684 \u53e6\u4e00\u4f4d\u52a9\u6559 \u6574\u7406\u5e76\u5b8c\u5584\u4e86 Pintos \u7684 \u5b9e\u9a8c\u6587\u6863 \uff0c\u5e76\u5229\u7528 Docker \u914d\u7f6e\u4e86\u8de8\u5e73\u53f0\u7684\u5b9e\u9a8c\u73af\u5883\uff0c\u60f3\u81ea\u5b66\u7684\u540c\u5b66\u53ef\u4ee5\u6309\u6587\u6863\u81ea\u884c\u5b66\u4e60\u3002\u5728\u6bd5\u4e1a\u524d\u7684\u6700\u540e\u4e00\u4e2a\u5b66\u671f\uff0c\u5e0c\u671b\u80fd\u7528\u8fd9\u6837\u7684\u5c1d\u8bd5\uff0c\u8ba9\u66f4\u591a\u4eba\u7231\u4e0a\u7cfb\u7edf\u9886\u57df\uff0c\u4e3a\u56fd\u5185\u7684\u7cfb\u7edf\u7814\u7a76\u6dfb\u7816\u52a0\u74e6\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs162.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=YfHY0pvpRkk \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a Operating Systems: Principles and Practice (2nd Edition) \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs162.org/ \uff0c6 \u4e2a Homework, 3 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b \u7531\u4e8e\u5317\u5927\u7684\u64cd\u7edf\u5b9e\u9a8c\u73ed\u91c7\u7528\u4e86\u8be5\u8bfe\u7a0b\u7684 Project\uff0c\u4e3a\u4e86\u9632\u6b62\u4ee3\u7801\u6284\u88ad\uff0c\u6211\u7684\u4ee3\u7801\u5b9e\u73b0\u6ca1\u6709\u5f00\u6e90\u3002","title":"UCB CS162: Operating System"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/#cs162-operating-system","text":"","title":"CS162: Operating System"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aC, x86\u6c47\u7f16 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a200 \u5c0f\u65f6+\uff0c\u4e0a\u4e0d\u5c01\u9876 \u8fd9\u95e8\u8bfe\u8ba9\u6211\u8bb0\u5fc6\u72b9\u65b0\u7684\u6709\u4e24\u4e2a\u90e8\u5206\uff1a \u9996\u5148\u662f\u6559\u6750\uff0c\u8fd9\u672c\u4e66\u7528\u7684\u6559\u6750 Operating Systems: Principles and Practice (2nd Edition) \u4e00\u5171\u56db\u5377\uff0c\u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u5f88\u597d\u5730\u5f25\u8865\u4e86 MIT6.S081 \u5728\u7406\u8bba\u77e5\u8bc6\u4e0a\u7684\u4e9b\u8bb8\u7a7a\u767d\uff0c\u975e\u5e38\u5efa\u8bae\u5927\u5bb6\u9605\u8bfb\u3002\u76f8\u5173\u8d44\u6e90\u4f1a\u5206\u4eab\u5728\u672c\u4e66\u7684\u7ecf\u5178\u4e66\u7c4d\u63a8\u8350\u6a21\u5757\u3002 \u5176\u6b21\u662f\u8fd9\u95e8\u8bfe\u7684 Project \u2014\u2014 Pintos\u3002Pintos \u662f\u7531 Ben Pfaff \u7b49\u4eba\u5728 x86 \u5e73\u53f0\u4e0a\u7f16\u5199\u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf\uff0cBen Pfaff \u751a\u81f3\u4e13\u95e8\u53d1\u4e86\u7bc7 paper \u6765\u9610\u8ff0 Pintos \u7684\u8bbe\u8ba1\u601d\u60f3\u3002 \u548c MIT \u7684 xv6 \u5c0f\u800c\u7cbe\u7684 lab \u8bbe\u8ba1\u7406\u5ff5\u4e0d\u540c\uff0cPintos \u66f4\u6ce8\u91cd\u7cfb\u7edf\u7684 Design and Implementation\u3002Pintos \u672c\u8eab\u4ec5\u4e00\u4e07\u884c\u5de6\u53f3\uff0c\u53ea\u63d0\u4f9b\u4e86\u64cd\u4f5c\u7cfb\u7edf\u6700\u57fa\u672c\u7684\u529f\u80fd\u3002\u800c 4 \u4e2aProject\uff0c\u5c31\u662f\u8ba9\u4f60\u5728\u8fd9\u4e2a\u6781\u4e3a\u7cbe\u7b80\u7684\u64cd\u4f5c\u7cfb\u7edf\u4e4b\u4e0a\uff0c\u5206\u522b\u4e3a\u5176\u589e\u52a0\u7ebf\u7a0b\u8c03\u5ea6\u673a\u5236 (Project1)\uff0c\u7cfb\u7edf\u8c03\u7528 (Project2)\uff0c\u865a\u62df\u5185\u5b58 (Project3) \u4ee5\u53ca\u6587\u4ef6\u7cfb\u7edf (Project4)\u3002\u6240\u6709\u7684 Project \u90fd\u7ed9\u5b66\u751f\u7559\u6709\u5f88\u5927\u7684\u8bbe\u8ba1\u7a7a\u95f4\uff0c\u603b\u4ee3\u7801\u91cf\u5728 2000 \u884c\u5de6\u53f3\u3002\u6839\u636e Stanford \u5b66\u751f \u81ea\u5df1\u7684\u53cd\u9988 \uff0c\u5728 3-4 \u4eba\u7ec4\u961f\u7684\u60c5\u51b5\u4e0b\uff0c\u540e\u4e24\u4e2a Project \u7684\u4eba\u5747\u8017\u65f6\u4e5f\u5728 40 \u4e2a\u5c0f\u65f6\u4ee5\u4e0a\u3002 \u867d\u7136\u96be\u5ea6\u5f88\u5927\uff0c\u4f46 Stanford, Berkeley, JHU \u7b49\u591a\u6240\u7f8e\u56fd\u9876\u5c16\u540d\u6821\u7684\u64cd\u7edf\u8bfe\u7a0b\u5747\u91c7\u7528\u4e86 Pintos\u3002\u5982\u679c\u4f60\u771f\u7684\u5bf9\u64cd\u4f5c\u7cfb\u7edf\u5f88\u611f\u5174\u8da3\uff0cPintos \u4f1a\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u7f16\u5199\u548c debug \u5e95\u5c42\u7cfb\u7edf\u4ee3\u7801\u7684\u80fd\u529b\u3002\u5728\u672c\u79d1\u9636\u6bb5\uff0c\u80fd\u81ea\u5df1\u8bbe\u8ba1\u3001\u5b9e\u73b0\u5e76 debug \u4e00\u4e2a\u5927\u578b\u7cfb\u7edf\uff0c\u662f\u4e00\u6bb5\u975e\u5e38\u73cd\u8d35\u7684\u7ecf\u5386\u3002 \u5317\u5927 2022 \u5e74\u6625\u5b63\u5b66\u671f\u7684\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9a8c\u73ed\u4e5f\u5c06\u4f1a\u9996\u6b21\u5f15\u5165 Pintos \u4f5c\u4e3a\u8bfe\u7a0b Project\u3002\u6211\u548c\u8be5\u8bfe\u7a0b\u7684 \u53e6\u4e00\u4f4d\u52a9\u6559 \u6574\u7406\u5e76\u5b8c\u5584\u4e86 Pintos \u7684 \u5b9e\u9a8c\u6587\u6863 \uff0c\u5e76\u5229\u7528 Docker \u914d\u7f6e\u4e86\u8de8\u5e73\u53f0\u7684\u5b9e\u9a8c\u73af\u5883\uff0c\u60f3\u81ea\u5b66\u7684\u540c\u5b66\u53ef\u4ee5\u6309\u6587\u6863\u81ea\u884c\u5b66\u4e60\u3002\u5728\u6bd5\u4e1a\u524d\u7684\u6700\u540e\u4e00\u4e2a\u5b66\u671f\uff0c\u5e0c\u671b\u80fd\u7528\u8fd9\u6837\u7684\u5c1d\u8bd5\uff0c\u8ba9\u66f4\u591a\u4eba\u7231\u4e0a\u7cfb\u7edf\u9886\u57df\uff0c\u4e3a\u56fd\u5185\u7684\u7cfb\u7edf\u7814\u7a76\u6dfb\u7816\u52a0\u74e6\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs162.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=YfHY0pvpRkk \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a Operating Systems: Principles and Practice (2nd Edition) \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs162.org/ \uff0c6 \u4e2a Homework, 3 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/#_3","text":"\u7531\u4e8e\u5317\u5927\u7684\u64cd\u7edf\u5b9e\u9a8c\u73ed\u91c7\u7528\u4e86\u8be5\u8bfe\u7a0b\u7684 Project\uff0c\u4e3a\u4e86\u9632\u6b62\u4ee3\u7801\u6284\u88ad\uff0c\u6211\u7684\u4ee3\u7801\u5b9e\u73b0\u6ca1\u6709\u5f00\u6e90\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/","text":"MIT 6.S081: Operating System Engineering \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u9ebb\u7701\u7406\u5de5\u5b66\u9662 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784 + \u624e\u5b9e\u7684 C \u8bed\u8a00\u529f\u5e95 + RISC-V \u6c47\u7f16\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aC, RISC-V \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u5927\u540d\u9f0e\u9f0e\u7684 PDOS \u5b9e\u9a8c\u5ba4\u5f00\u8bbe\u7684\u9762\u5411MIT\u672c\u79d1\u751f\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u3002\u5f00\u8bbe\u8fd9\u95e8\u8bfe\u7684\u6559\u6388\u4e4b\u4e00 \u2014\u2014 Robert Morris \u6559\u6388\u66fe\u662f\u4e00\u4f4d\u9876\u5c16\u9ed1\u5ba2\uff0c\u4e16\u754c\u4e0a\u7b2c\u4e00\u4e2a\u8815\u866b\u75c5\u6bd2 Morris \u5c31\u662f\u51fa\u81ea\u4ed6\u4e4b\u624b\u3002 \u8fd9\u95e8\u8bfe\u7684\u524d\u8eab\u662f MIT \u8457\u540d\u7684\u8bfe\u7a0b 6.828\uff0cMIT \u7684\u51e0\u4f4d\u6559\u6388\u4e3a\u4e86\u8fd9\u95e8\u8bfe\u66fe\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a\u57fa\u4e8e x86 \u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf JOS\uff0c\u88ab\u4f17\u591a\u540d\u6821\u4f5c\u4e3a\u81ea\u5df1\u7684\u64cd\u7edf\u8bfe\u7a0b\u5b9e\u9a8c\u3002\u4f46\u968f\u7740 RISC-V \u7684\u6a2a\u7a7a\u51fa\u4e16\uff0c\u8fd9\u51e0\u4f4d\u6559\u6388\u53c8\u57fa\u4e8e RISC-V \u5f00\u53d1\u4e86\u4e00\u4e2a\u65b0\u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf xv6\uff0c\u5e76\u5f00\u8bbe\u4e86 MIT6.S081 \u8fd9\u95e8\u8bfe\u3002\u7531\u4e8e RISC-V \u8f7b\u4fbf\u6613\u5b66\u7684\u7279\u70b9\uff0c\u5b66\u751f\u4e0d\u9700\u8981\u50cf\u6b64\u524d JOS \u4e00\u6837\u7ea0\u7ed3\u4e8e\u4f17\u591a x86 \u201c\u7279\u6709\u7684\u201d\u4e3a\u4e86\u517c\u5bb9\u800c\u9057\u7559\u4e0b\u6765\u7684\u590d\u6742\u673a\u5236\uff0c\u800c\u53ef\u4ee5\u4e13\u6ce8\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u5c42\u9762\u7684\u5f00\u53d1\u3002 \u8fd9\u51e0\u4f4d\u6559\u6388\u8fd8\u4e13\u95e8\u5199\u4e86\u4e00\u672c \u6559\u7a0b \uff0c\u8be6\u7ec6\u8bb2\u89e3\u4e86 xv6 \u7684\u8bbe\u8ba1\u601d\u60f3\u548c\u5b9e\u73b0\u7ec6\u8282\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bb2\u6388\u4e5f\u5f88\u6709\u610f\u601d\uff0c\u8001\u5e08\u4f1a\u5e26\u7740\u5b66\u751f\u4f9d\u7167 xv6 \u7684\u6e90\u4ee3\u7801\u53bb\u7406\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u4f17\u591a\u673a\u5236\u548c\u8bbe\u8ba1\u7ec6\u8282\uff0c\u800c\u4e0d\u662f\u505c\u7559\u4e8e\u7406\u8bba\u77e5\u8bc6\u3002\u6bcf\u5468\u90fd\u4f1a\u6709\u4e00\u4e2a lab\uff0c\u8ba9\u4f60\u5728 xv6 \u4e0a\u589e\u52a0\u4e00\u4e9b\u65b0\u7684\u673a\u5236\u548c\u7279\u6027\uff0c\u975e\u5e38\u6ce8\u91cd\u5b66\u751f\u52a8\u624b\u80fd\u529b\u7684\u57f9\u517b\u3002\u6574\u4e2a\u5b66\u671f\u4e00\u5171\u6709 11 \u4e2a lab\uff0c\u8ba9\u4f60\u5168\u65b9\u4f4d\u5730\u6df1\u523b\u7406\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u6bcf\u4e2a\u90e8\u5206\uff0c\u975e\u5e38\u6709\u6210\u5c31\u611f\u3002\u800c\u4e14\u6240\u6709\u7684lab\u90fd\u6709\u7740\u975e\u5e38\u5b8c\u5584\u7684\u6d4b\u8bd5\u6846\u67b6\uff0c\u6709\u7684\u6d4b\u8bd5\u4ee3\u7801\u751a\u81f3\u4e0a\u5343\u884c\uff0c\u8ba9\u4eba\u4e0d\u5f97\u4e0d\u4f69\u670d MIT \u7684\u51e0\u4f4d\u6559\u6388\u4e3a\u4e86\u6559\u597d\u8fd9\u95e8\u8bfe\u6240\u4ed8\u51fa\u7684\u5fc3\u8840\u3002 \u8fd9\u95e8\u8bfe\u7684\u540e\u534a\u7a0b\u4f1a\u8bb2\u6388\u64cd\u4f5c\u7cfb\u7edf\u9886\u57df\u7684\u591a\u7bc7\u7ecf\u5178\u8bba\u6587\uff0c\u6d89\u53ca\u6587\u4ef6\u7cfb\u7edf\u3001\u7cfb\u7edf\u5b89\u5168\u3001\u7f51\u7edc\u3001\u865a\u62df\u5316\u7b49\u7b49\u591a\u4e2a\u4e3b\u9898\uff0c\u8ba9\u4f60\u6709\u673a\u4f1a\u63a5\u89e6\u5230\u5b66\u754c\u6700\u524d\u6cbf\u7684\u7814\u7a76\u65b9\u5411\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://pdos.csail.mit.edu/6.828/2021/schedule.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=L6YqHxYHa7A \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u89c6\u9891\u7ffb\u8bd1\u6587\u6863\uff1a https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/ \u8bfe\u7a0b\u6559\u6750\uff1a https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://pdos.csail.mit.edu/6.828/2021/schedule.html \uff0c11\u4e2alab\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 xv6 \u8865\u5145\u8d44\u6e90 xv6 \u64cd\u4f5c\u7cfb\u7edf\u7684\u6df1\u5165\u8bb2\u89e3 xv6 \u4e2d\u6587\u6587\u6863 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.S081-2020fall - GitHub \u4e2d\u3002 @ KuangjuX \u7f16\u5199\u4e86 MIT 6.S081 \u7684 lab \u7684 \u9898\u89e3 \uff0c\u91cc\u9762\u6709\u8be6\u7ec6\u7684\u89e3\u6cd5\u548c\u8865\u5145\u77e5\u8bc6\u3002\u53e6\u5916\uff0c@ KuangjuX \u8fd8\u4f7f\u7528 Rust \u8bed\u8a00\u91cd\u65b0\u5b9e\u73b0\u4e86 xv6-riscv \u64cd\u4f5c\u7cfb\u7edf\uff1a xv6-rust \uff0c\u91cc\u9762\u5bf9\u4e8e xv6-riscv \u6709\u66f4\u4e3a\u8be6\u7ec6\u7684\u601d\u8003\u548c\u8ba8\u8bba\uff0c\u611f\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u4e00\u4e0b\u54e6\u3002 \u4e00\u4e9b\u53ef\u4ee5\u53c2\u8003\u7684\u535a\u5ba2 doraemonzzz Xiao Fan (\u6a0a\u6f47) Miigon's blog Zhou Fang Yichun's Blog \u89e3\u6790Ta PKUFlyingPig \u661f\u9065\u89c1","title":"MIT 6.S081: Operating System Engineering"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#mit-6s081-operating-system-engineering","text":"","title":"MIT 6.S081: Operating System Engineering"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u9ebb\u7701\u7406\u5de5\u5b66\u9662 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784 + \u624e\u5b9e\u7684 C \u8bed\u8a00\u529f\u5e95 + RISC-V \u6c47\u7f16\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aC, RISC-V \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u5927\u540d\u9f0e\u9f0e\u7684 PDOS \u5b9e\u9a8c\u5ba4\u5f00\u8bbe\u7684\u9762\u5411MIT\u672c\u79d1\u751f\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u3002\u5f00\u8bbe\u8fd9\u95e8\u8bfe\u7684\u6559\u6388\u4e4b\u4e00 \u2014\u2014 Robert Morris \u6559\u6388\u66fe\u662f\u4e00\u4f4d\u9876\u5c16\u9ed1\u5ba2\uff0c\u4e16\u754c\u4e0a\u7b2c\u4e00\u4e2a\u8815\u866b\u75c5\u6bd2 Morris \u5c31\u662f\u51fa\u81ea\u4ed6\u4e4b\u624b\u3002 \u8fd9\u95e8\u8bfe\u7684\u524d\u8eab\u662f MIT \u8457\u540d\u7684\u8bfe\u7a0b 6.828\uff0cMIT \u7684\u51e0\u4f4d\u6559\u6388\u4e3a\u4e86\u8fd9\u95e8\u8bfe\u66fe\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a\u57fa\u4e8e x86 \u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf JOS\uff0c\u88ab\u4f17\u591a\u540d\u6821\u4f5c\u4e3a\u81ea\u5df1\u7684\u64cd\u7edf\u8bfe\u7a0b\u5b9e\u9a8c\u3002\u4f46\u968f\u7740 RISC-V \u7684\u6a2a\u7a7a\u51fa\u4e16\uff0c\u8fd9\u51e0\u4f4d\u6559\u6388\u53c8\u57fa\u4e8e RISC-V \u5f00\u53d1\u4e86\u4e00\u4e2a\u65b0\u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf xv6\uff0c\u5e76\u5f00\u8bbe\u4e86 MIT6.S081 \u8fd9\u95e8\u8bfe\u3002\u7531\u4e8e RISC-V \u8f7b\u4fbf\u6613\u5b66\u7684\u7279\u70b9\uff0c\u5b66\u751f\u4e0d\u9700\u8981\u50cf\u6b64\u524d JOS \u4e00\u6837\u7ea0\u7ed3\u4e8e\u4f17\u591a x86 \u201c\u7279\u6709\u7684\u201d\u4e3a\u4e86\u517c\u5bb9\u800c\u9057\u7559\u4e0b\u6765\u7684\u590d\u6742\u673a\u5236\uff0c\u800c\u53ef\u4ee5\u4e13\u6ce8\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u5c42\u9762\u7684\u5f00\u53d1\u3002 \u8fd9\u51e0\u4f4d\u6559\u6388\u8fd8\u4e13\u95e8\u5199\u4e86\u4e00\u672c \u6559\u7a0b \uff0c\u8be6\u7ec6\u8bb2\u89e3\u4e86 xv6 \u7684\u8bbe\u8ba1\u601d\u60f3\u548c\u5b9e\u73b0\u7ec6\u8282\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bb2\u6388\u4e5f\u5f88\u6709\u610f\u601d\uff0c\u8001\u5e08\u4f1a\u5e26\u7740\u5b66\u751f\u4f9d\u7167 xv6 \u7684\u6e90\u4ee3\u7801\u53bb\u7406\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u4f17\u591a\u673a\u5236\u548c\u8bbe\u8ba1\u7ec6\u8282\uff0c\u800c\u4e0d\u662f\u505c\u7559\u4e8e\u7406\u8bba\u77e5\u8bc6\u3002\u6bcf\u5468\u90fd\u4f1a\u6709\u4e00\u4e2a lab\uff0c\u8ba9\u4f60\u5728 xv6 \u4e0a\u589e\u52a0\u4e00\u4e9b\u65b0\u7684\u673a\u5236\u548c\u7279\u6027\uff0c\u975e\u5e38\u6ce8\u91cd\u5b66\u751f\u52a8\u624b\u80fd\u529b\u7684\u57f9\u517b\u3002\u6574\u4e2a\u5b66\u671f\u4e00\u5171\u6709 11 \u4e2a lab\uff0c\u8ba9\u4f60\u5168\u65b9\u4f4d\u5730\u6df1\u523b\u7406\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u6bcf\u4e2a\u90e8\u5206\uff0c\u975e\u5e38\u6709\u6210\u5c31\u611f\u3002\u800c\u4e14\u6240\u6709\u7684lab\u90fd\u6709\u7740\u975e\u5e38\u5b8c\u5584\u7684\u6d4b\u8bd5\u6846\u67b6\uff0c\u6709\u7684\u6d4b\u8bd5\u4ee3\u7801\u751a\u81f3\u4e0a\u5343\u884c\uff0c\u8ba9\u4eba\u4e0d\u5f97\u4e0d\u4f69\u670d MIT \u7684\u51e0\u4f4d\u6559\u6388\u4e3a\u4e86\u6559\u597d\u8fd9\u95e8\u8bfe\u6240\u4ed8\u51fa\u7684\u5fc3\u8840\u3002 \u8fd9\u95e8\u8bfe\u7684\u540e\u534a\u7a0b\u4f1a\u8bb2\u6388\u64cd\u4f5c\u7cfb\u7edf\u9886\u57df\u7684\u591a\u7bc7\u7ecf\u5178\u8bba\u6587\uff0c\u6d89\u53ca\u6587\u4ef6\u7cfb\u7edf\u3001\u7cfb\u7edf\u5b89\u5168\u3001\u7f51\u7edc\u3001\u865a\u62df\u5316\u7b49\u7b49\u591a\u4e2a\u4e3b\u9898\uff0c\u8ba9\u4f60\u6709\u673a\u4f1a\u63a5\u89e6\u5230\u5b66\u754c\u6700\u524d\u6cbf\u7684\u7814\u7a76\u65b9\u5411\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://pdos.csail.mit.edu/6.828/2021/schedule.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=L6YqHxYHa7A \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u89c6\u9891\u7ffb\u8bd1\u6587\u6863\uff1a https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/ \u8bfe\u7a0b\u6559\u6750\uff1a https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://pdos.csail.mit.edu/6.828/2021/schedule.html \uff0c11\u4e2alab\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#xv6","text":"xv6 \u64cd\u4f5c\u7cfb\u7edf\u7684\u6df1\u5165\u8bb2\u89e3 xv6 \u4e2d\u6587\u6587\u6863","title":"xv6 \u8865\u5145\u8d44\u6e90"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.S081-2020fall - GitHub \u4e2d\u3002 @ KuangjuX \u7f16\u5199\u4e86 MIT 6.S081 \u7684 lab \u7684 \u9898\u89e3 \uff0c\u91cc\u9762\u6709\u8be6\u7ec6\u7684\u89e3\u6cd5\u548c\u8865\u5145\u77e5\u8bc6\u3002\u53e6\u5916\uff0c@ KuangjuX \u8fd8\u4f7f\u7528 Rust \u8bed\u8a00\u91cd\u65b0\u5b9e\u73b0\u4e86 xv6-riscv \u64cd\u4f5c\u7cfb\u7edf\uff1a xv6-rust \uff0c\u91cc\u9762\u5bf9\u4e8e xv6-riscv \u6709\u66f4\u4e3a\u8be6\u7ec6\u7684\u601d\u8003\u548c\u8ba8\u8bba\uff0c\u611f\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u4e00\u4e0b\u54e6\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#_4","text":"doraemonzzz Xiao Fan (\u6a0a\u6f47) Miigon's blog Zhou Fang Yichun's Blog \u89e3\u6790Ta PKUFlyingPig \u661f\u9065\u89c1","title":"\u4e00\u4e9b\u53ef\u4ee5\u53c2\u8003\u7684\u535a\u5ba2"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/","text":"NJU OS: Operating System Design and Implementation \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u5357\u4eac\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784 + \u624e\u5b9e\u7684 C \u8bed\u8a00\u529f\u5e95 \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bed\u8a00 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u4e4b\u524d\u4e00\u76f4\u542c\u8bf4\u5357\u5927\u7684\u848b\u708e\u5ca9\u8001\u5e08\u5f00\u8bbe\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u8bb2\u5f97\u5f88\u597d\uff0c\u4e45\u95fb\u4e0d\u5982\u4e00\u89c1\uff0c\u8fd9\u5b66\u671f\u6709\u5e78\u5728 B \u7ad9\u89c2\u770b\u4e86\u848b\u8001\u5e08\u7684\u8bfe\u7a0b\u89c6\u9891\uff0c\u786e\u5b9e\u6536\u83b7\u826f\u591a\u3002\u848b\u8001\u5e08\u4f5c\u4e3a\u975e\u5e38\u5e74\u8f7b\u7684\u8001\u5e08\uff0c\u6709\u7740\u4e30\u5bcc\u7684\u4e00\u7ebf\u4ee3\u7801\u7684\u7ecf\u9a8c\uff0c\u56e0\u6b64\u8bfe\u7a0b\u8bb2\u6388\u6709\u7740\u6ee1\u6ee1\u7684 Hacker \u98ce\u683c\uff0c\u8bfe\u4e0a\u7ecf\u5e38\u201c\u4e00\u8a00\u4e0d\u5408\u201d\u5c31\u5728\u547d\u4ee4\u884c\u91cc\u5f00\u59cb\u5199\u4ee3\u7801\uff0c\u5f88\u591a\u91cd\u8981\u77e5\u8bc6\u70b9\u4e5f\u90fd\u914d\u6709\u751f\u52a8\u76f4\u767d\u7684\u4ee3\u7801\u793a\u4f8b\u3002\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\u7684\u5c31\u662f\u8001\u5e08\u4e3a\u4e86\u8ba9\u5b66\u751f\u66f4\u597d\u5730\u7406\u89e3\u52a8\u6001\u94fe\u63a5\u5e93\u7684\u8bbe\u8ba1\u601d\u60f3\uff0c\u751a\u81f3\u4e13\u95e8\u5b9e\u73b0\u4e86\u4e00\u4e2a\u8ff7\u4f60\u7684\u53ef\u6267\u884c\u6587\u4ef6\u4e0e\u4e00\u7cfb\u5217\u7684\u4e8c\u8fdb\u5236\u5de5\u5177\uff0c\u8ba9\u5f88\u591a\u56f0\u6270\u6211\u591a\u5e74\u7684\u95ee\u9898\u90fd\u5f97\u5230\u4e86\u89e3\u7b54\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bb2\u6388\u601d\u8def\u4e5f\u975e\u5e38\u6709\u8da3\uff0c\u848b\u8001\u5e08\u5148\u4ece\u201c\u7a0b\u5e8f\u5c31\u662f\u72b6\u6001\u673a\u201d\u8fd9\u4e00\u89c6\u89d2\u5165\u624b\uff0c\u4e3a\u201c\u4e07\u6076\u4e4b\u6e90\u201d\u5e76\u53d1\u7a0b\u5e8f\u5efa\u7acb\u4e86\u72b6\u6001\u673a\u7684\u8f6c\u5316\u6a21\u578b\uff0c\u5e76\u5728\u6b64\u57fa\u7840\u4e0a\u8bb2\u6388\u4e86\u5e76\u53d1\u63a7\u5236\u7684\u5e38\u89c1\u624b\u6bb5\u4ee5\u53ca\u5e76\u53d1bug\u7684\u5e94\u5bf9\u65b9\u6cd5\u3002\u63a5\u7740\u848b\u8001\u5e08\u5c06\u64cd\u4f5c\u7cfb\u7edf\u770b\u4f5c\u4e00\u7cfb\u5217\u5bf9\u8c61\uff08\u8fdb\u7a0b/\u7ebf\u7a0b\u3001\u5730\u5740\u7a7a\u95f4\u3001\u6587\u4ef6\u3001\u8bbe\u5907\u7b49\u7b49\uff09\u4ee5\u53ca\u64cd\u4f5c\u5b83\u4eec\u7684 API \uff08\u7cfb\u7edf\u8c03\u7528\uff09\u5e76\u7ed3\u5408\u4e30\u5bcc\u7684\u5b9e\u9645\u4f8b\u5b50\u4ecb\u7ecd\u4e86\u64cd\u4f5c\u7cfb\u7edf\u662f\u5982\u4f55\u5229\u7528\u8fd9\u7cfb\u5217\u5bf9\u8c61\u865a\u62df\u5316\u786c\u4ef6\u8d44\u6e90\u5e76\u7ed9\u5e94\u7528\u8f6f\u4ef6\u63d0\u4f9b\u5404\u7c7b\u670d\u52a1\u7684\u3002\u6700\u540e\u7684\u53ef\u6301\u4e45\u5316\u90e8\u5206\uff0c\u848b\u8001\u5e08\u4ece 1-bit \u7684\u5b58\u50a8\u4ecb\u8d28\u8bb2\u8d77\uff0c\u4e00\u6b65\u6b65\u6784\u5efa\u8d77\u5404\u7c7b\u5b58\u50a8\u8bbe\u5907\uff0c\u5e76\u901a\u8fc7\u8bbe\u5907\u9a71\u52a8\u62bd\u8c61\u51fa\u4e00\u7ec4\u63a5\u53e3\u6765\u65b9\u4fbf\u5730\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u6587\u4ef6\u7cfb\u7edf\u3002\u6211\u4e4b\u524d\u867d\u7136\u4e0a\u8fc7\u8bb8\u591a\u95e8\u64cd\u4f5c\u7cfb\u7edf\u7684\u8bfe\u7a0b\uff0c\u4f46\u8fd9\u79cd\u8bb2\u6cd5\u786e\u5b9e\u72ec\u6b64\u4e00\u5bb6\uff0c\u8ba9\u6211\u6536\u83b7\u4e86\u5f88\u591a\u72ec\u5230\u7684\u89c6\u89d2\u6765\u770b\u5f85\u7cfb\u7edf\u8f6f\u4ef6\u3002 \u8fd9\u95e8\u8bfe\u9664\u4e86\u5728\u7406\u8bba\u77e5\u8bc6\u7684\u8bb2\u6388\u90e8\u5206\u5f88\u6709\u65b0\u610f\u5916\uff0c\u6ce8\u91cd\u5b9e\u8df5\u4e5f\u662f\u848b\u8001\u5e08\u7684\u4e00\u5927\u7279\u70b9\u3002\u5728\u8bfe\u5802\u548c\u7f16\u7a0b\u4f5c\u4e1a\u91cc\uff0c\u848b\u8001\u5e08\u4f1a\u6709\u610f\u65e0\u610f\u5730\u57f9\u517b\u5927\u5bb6\u9605\u8bfb\u6e90\u7801\u3001\u67e5\u9605\u624b\u518c\u7684\u80fd\u529b\uff0c\u8fd9\u4e5f\u662f\u8ba1\u7b97\u673a\u4ece\u4e1a\u8005\u5fc5\u5907\u7684\u6280\u80fd\u3002\u5728\u5b8c\u6210\u7b2c\u4e94\u4e2a MiniLab \u671f\u95f4\uff0c\u6211\u7b2c\u4e00\u6b21\u4ed4\u4ed4\u7ec6\u7ec6\u9605\u8bfb\u4e86\u5fae\u8f6f\u7684 FAT \u6587\u4ef6\u7cfb\u7edf\u624b\u518c\uff0c\u6536\u83b7\u4e86\u4e00\u6b21\u975e\u5e38\u6709\u4ef7\u503c\u7684\u7ecf\u5386\u3002 \u7f16\u7a0b\u4f5c\u4e1a\u5171\u7531 5\u4e2a MiniLab \u548c 4\u4e2a OSLab \u7ec4\u6210\u3002\u7f8e\u4e2d\u4e0d\u8db3\u7684\u662f\u4f5c\u4e1a\u7684\u8bc4\u6d4b\u673a\u662f\u4e0d\u5bf9\u6821\u5916\u5f00\u653e\u7684\uff0c\u4e0d\u8fc7\u5728\u90ae\u4ef6\u201c\u9a9a\u6270\u201d\u540e\u848b\u8001\u5e08\u8fd8\u662f\u975e\u5e38\u6177\u6168\u5730\u8ba9\u6211\u6210\u529f\u8e6d\u8bfe\u3002\u7531\u4e8e\u8bfe\u4f59\u65f6\u95f4\u6709\u9650\u6211\u53ea\u5b8c\u6210\u4e86 5\u4e2a MiniLab\uff0c\u603b\u4f53\u4f53\u9a8c\u975e\u5e38\u68d2\u3002\u5c24\u5176\u662f\u7b2c\u4e8c\u4e2a\u534f\u7a0b\u5b9e\u9a8c\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\uff0c\u5728\u4e0d\u5230\u767e\u884c\u7684\u5c0f\u5b9e\u9a8c\u91cc\u6df1\u523b\u4f53\u9a8c\u4e86\u4e0a\u4e0b\u6587\u5207\u6362\u7684\u7f8e\u5999\u4e0e\u201c\u53ef\u6015\u201d\u3002\u53e6\u5916\u5176\u5b9e\u51e0\u4e2a MiniLab \u90fd\u80fd\u975e\u5e38\u65b9\u4fbf\u5730\u8fdb\u884c\u672c\u5730\u6d4b\u8bd5\uff0c\u5c31\u7b97\u6ca1\u6709\u8bc4\u6d4b\u673a\u4e5f\u4e0d\u5f71\u54cd\u81ea\u5b66\uff0c\u56e0\u6b64\u5e0c\u671b\u5927\u5bb6\u4e0d\u8981\u805a\u4f17\u201c\u9a9a\u6270\u201d\u8001\u5e08\u4ee5\u56fe\u8e6d\u8bfe\u3002 \u6700\u540e\u518d\u6b21\u611f\u8c22\u848b\u8001\u5e08\u8bbe\u8ba1\u5e76\u5f00\u653e\u4e86\u8fd9\u6837\u4e00\u95e8\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\uff0c\u8fd9\u4e5f\u662f\u672c\u4e66\u6536\u5f55\u7684\u7b2c\u4e00\u95e8\u56fd\u5185\u9ad8\u6821\u81ea\u4e3b\u5f00\u8bbe\u7684\u8ba1\u7b97\u673a\u8bfe\u7a0b\u3002\u6b63\u662f\u6709\u848b\u8001\u5e08\u8fd9\u4e9b\u5e74\u8f7b\u7684\u65b0\u751f\u4ee3\u6559\u5e08\u5728\u7e41\u91cd\u7684 Tenure \u8003\u6838\u4e4b\u4f59\u7684\u7528\u7231\u53d1\u7535\uff0c\u624d\u8ba9\u65e0\u6570\u5b66\u5b50\u6536\u83b7\u4e86\u96be\u5fd8\u7684\u672c\u79d1\u751f\u6daf\u3002\u4e5f\u671f\u5f85\u56fd\u5185\u80fd\u6709\u66f4\u591a\u8fd9\u6837\u7684\u826f\u5fc3\u597d\u8bfe\uff0c\u6211\u4e5f\u4f1a\u7b2c\u4e00\u65f6\u95f4\u6536\u5f55\u8fdb\u672c\u4e66\u4e2d\u8ba9\u66f4\u591a\u4eba\u53d7\u76ca\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://jyywiki.cn/OS/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://space.bilibili.com/202224425/channel/collectiondetail?sid=192498 \u8bfe\u7a0b\u6559\u6750\uff1a http://pages.cs.wisc.edu/~remzi/OSTEP/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://jyywiki.cn/OS/2022/ \u8d44\u6e90\u6c47\u603b \u6309\u848b\u8001\u5e08\u7684\u8981\u6c42\uff0c\u6211\u7684\u4f5c\u4e1a\u5b9e\u73b0\u6ca1\u6709\u5f00\u6e90\u3002","title":"NJU OS: Operating System Design and Implementation"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/#nju-os-operating-system-design-and-implementation","text":"","title":"NJU OS: Operating System Design and Implementation"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u5357\u4eac\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784 + \u624e\u5b9e\u7684 C \u8bed\u8a00\u529f\u5e95 \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bed\u8a00 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u4e4b\u524d\u4e00\u76f4\u542c\u8bf4\u5357\u5927\u7684\u848b\u708e\u5ca9\u8001\u5e08\u5f00\u8bbe\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u8bb2\u5f97\u5f88\u597d\uff0c\u4e45\u95fb\u4e0d\u5982\u4e00\u89c1\uff0c\u8fd9\u5b66\u671f\u6709\u5e78\u5728 B \u7ad9\u89c2\u770b\u4e86\u848b\u8001\u5e08\u7684\u8bfe\u7a0b\u89c6\u9891\uff0c\u786e\u5b9e\u6536\u83b7\u826f\u591a\u3002\u848b\u8001\u5e08\u4f5c\u4e3a\u975e\u5e38\u5e74\u8f7b\u7684\u8001\u5e08\uff0c\u6709\u7740\u4e30\u5bcc\u7684\u4e00\u7ebf\u4ee3\u7801\u7684\u7ecf\u9a8c\uff0c\u56e0\u6b64\u8bfe\u7a0b\u8bb2\u6388\u6709\u7740\u6ee1\u6ee1\u7684 Hacker \u98ce\u683c\uff0c\u8bfe\u4e0a\u7ecf\u5e38\u201c\u4e00\u8a00\u4e0d\u5408\u201d\u5c31\u5728\u547d\u4ee4\u884c\u91cc\u5f00\u59cb\u5199\u4ee3\u7801\uff0c\u5f88\u591a\u91cd\u8981\u77e5\u8bc6\u70b9\u4e5f\u90fd\u914d\u6709\u751f\u52a8\u76f4\u767d\u7684\u4ee3\u7801\u793a\u4f8b\u3002\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\u7684\u5c31\u662f\u8001\u5e08\u4e3a\u4e86\u8ba9\u5b66\u751f\u66f4\u597d\u5730\u7406\u89e3\u52a8\u6001\u94fe\u63a5\u5e93\u7684\u8bbe\u8ba1\u601d\u60f3\uff0c\u751a\u81f3\u4e13\u95e8\u5b9e\u73b0\u4e86\u4e00\u4e2a\u8ff7\u4f60\u7684\u53ef\u6267\u884c\u6587\u4ef6\u4e0e\u4e00\u7cfb\u5217\u7684\u4e8c\u8fdb\u5236\u5de5\u5177\uff0c\u8ba9\u5f88\u591a\u56f0\u6270\u6211\u591a\u5e74\u7684\u95ee\u9898\u90fd\u5f97\u5230\u4e86\u89e3\u7b54\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bb2\u6388\u601d\u8def\u4e5f\u975e\u5e38\u6709\u8da3\uff0c\u848b\u8001\u5e08\u5148\u4ece\u201c\u7a0b\u5e8f\u5c31\u662f\u72b6\u6001\u673a\u201d\u8fd9\u4e00\u89c6\u89d2\u5165\u624b\uff0c\u4e3a\u201c\u4e07\u6076\u4e4b\u6e90\u201d\u5e76\u53d1\u7a0b\u5e8f\u5efa\u7acb\u4e86\u72b6\u6001\u673a\u7684\u8f6c\u5316\u6a21\u578b\uff0c\u5e76\u5728\u6b64\u57fa\u7840\u4e0a\u8bb2\u6388\u4e86\u5e76\u53d1\u63a7\u5236\u7684\u5e38\u89c1\u624b\u6bb5\u4ee5\u53ca\u5e76\u53d1bug\u7684\u5e94\u5bf9\u65b9\u6cd5\u3002\u63a5\u7740\u848b\u8001\u5e08\u5c06\u64cd\u4f5c\u7cfb\u7edf\u770b\u4f5c\u4e00\u7cfb\u5217\u5bf9\u8c61\uff08\u8fdb\u7a0b/\u7ebf\u7a0b\u3001\u5730\u5740\u7a7a\u95f4\u3001\u6587\u4ef6\u3001\u8bbe\u5907\u7b49\u7b49\uff09\u4ee5\u53ca\u64cd\u4f5c\u5b83\u4eec\u7684 API \uff08\u7cfb\u7edf\u8c03\u7528\uff09\u5e76\u7ed3\u5408\u4e30\u5bcc\u7684\u5b9e\u9645\u4f8b\u5b50\u4ecb\u7ecd\u4e86\u64cd\u4f5c\u7cfb\u7edf\u662f\u5982\u4f55\u5229\u7528\u8fd9\u7cfb\u5217\u5bf9\u8c61\u865a\u62df\u5316\u786c\u4ef6\u8d44\u6e90\u5e76\u7ed9\u5e94\u7528\u8f6f\u4ef6\u63d0\u4f9b\u5404\u7c7b\u670d\u52a1\u7684\u3002\u6700\u540e\u7684\u53ef\u6301\u4e45\u5316\u90e8\u5206\uff0c\u848b\u8001\u5e08\u4ece 1-bit \u7684\u5b58\u50a8\u4ecb\u8d28\u8bb2\u8d77\uff0c\u4e00\u6b65\u6b65\u6784\u5efa\u8d77\u5404\u7c7b\u5b58\u50a8\u8bbe\u5907\uff0c\u5e76\u901a\u8fc7\u8bbe\u5907\u9a71\u52a8\u62bd\u8c61\u51fa\u4e00\u7ec4\u63a5\u53e3\u6765\u65b9\u4fbf\u5730\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u6587\u4ef6\u7cfb\u7edf\u3002\u6211\u4e4b\u524d\u867d\u7136\u4e0a\u8fc7\u8bb8\u591a\u95e8\u64cd\u4f5c\u7cfb\u7edf\u7684\u8bfe\u7a0b\uff0c\u4f46\u8fd9\u79cd\u8bb2\u6cd5\u786e\u5b9e\u72ec\u6b64\u4e00\u5bb6\uff0c\u8ba9\u6211\u6536\u83b7\u4e86\u5f88\u591a\u72ec\u5230\u7684\u89c6\u89d2\u6765\u770b\u5f85\u7cfb\u7edf\u8f6f\u4ef6\u3002 \u8fd9\u95e8\u8bfe\u9664\u4e86\u5728\u7406\u8bba\u77e5\u8bc6\u7684\u8bb2\u6388\u90e8\u5206\u5f88\u6709\u65b0\u610f\u5916\uff0c\u6ce8\u91cd\u5b9e\u8df5\u4e5f\u662f\u848b\u8001\u5e08\u7684\u4e00\u5927\u7279\u70b9\u3002\u5728\u8bfe\u5802\u548c\u7f16\u7a0b\u4f5c\u4e1a\u91cc\uff0c\u848b\u8001\u5e08\u4f1a\u6709\u610f\u65e0\u610f\u5730\u57f9\u517b\u5927\u5bb6\u9605\u8bfb\u6e90\u7801\u3001\u67e5\u9605\u624b\u518c\u7684\u80fd\u529b\uff0c\u8fd9\u4e5f\u662f\u8ba1\u7b97\u673a\u4ece\u4e1a\u8005\u5fc5\u5907\u7684\u6280\u80fd\u3002\u5728\u5b8c\u6210\u7b2c\u4e94\u4e2a MiniLab \u671f\u95f4\uff0c\u6211\u7b2c\u4e00\u6b21\u4ed4\u4ed4\u7ec6\u7ec6\u9605\u8bfb\u4e86\u5fae\u8f6f\u7684 FAT \u6587\u4ef6\u7cfb\u7edf\u624b\u518c\uff0c\u6536\u83b7\u4e86\u4e00\u6b21\u975e\u5e38\u6709\u4ef7\u503c\u7684\u7ecf\u5386\u3002 \u7f16\u7a0b\u4f5c\u4e1a\u5171\u7531 5\u4e2a MiniLab \u548c 4\u4e2a OSLab \u7ec4\u6210\u3002\u7f8e\u4e2d\u4e0d\u8db3\u7684\u662f\u4f5c\u4e1a\u7684\u8bc4\u6d4b\u673a\u662f\u4e0d\u5bf9\u6821\u5916\u5f00\u653e\u7684\uff0c\u4e0d\u8fc7\u5728\u90ae\u4ef6\u201c\u9a9a\u6270\u201d\u540e\u848b\u8001\u5e08\u8fd8\u662f\u975e\u5e38\u6177\u6168\u5730\u8ba9\u6211\u6210\u529f\u8e6d\u8bfe\u3002\u7531\u4e8e\u8bfe\u4f59\u65f6\u95f4\u6709\u9650\u6211\u53ea\u5b8c\u6210\u4e86 5\u4e2a MiniLab\uff0c\u603b\u4f53\u4f53\u9a8c\u975e\u5e38\u68d2\u3002\u5c24\u5176\u662f\u7b2c\u4e8c\u4e2a\u534f\u7a0b\u5b9e\u9a8c\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\uff0c\u5728\u4e0d\u5230\u767e\u884c\u7684\u5c0f\u5b9e\u9a8c\u91cc\u6df1\u523b\u4f53\u9a8c\u4e86\u4e0a\u4e0b\u6587\u5207\u6362\u7684\u7f8e\u5999\u4e0e\u201c\u53ef\u6015\u201d\u3002\u53e6\u5916\u5176\u5b9e\u51e0\u4e2a MiniLab \u90fd\u80fd\u975e\u5e38\u65b9\u4fbf\u5730\u8fdb\u884c\u672c\u5730\u6d4b\u8bd5\uff0c\u5c31\u7b97\u6ca1\u6709\u8bc4\u6d4b\u673a\u4e5f\u4e0d\u5f71\u54cd\u81ea\u5b66\uff0c\u56e0\u6b64\u5e0c\u671b\u5927\u5bb6\u4e0d\u8981\u805a\u4f17\u201c\u9a9a\u6270\u201d\u8001\u5e08\u4ee5\u56fe\u8e6d\u8bfe\u3002 \u6700\u540e\u518d\u6b21\u611f\u8c22\u848b\u8001\u5e08\u8bbe\u8ba1\u5e76\u5f00\u653e\u4e86\u8fd9\u6837\u4e00\u95e8\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\uff0c\u8fd9\u4e5f\u662f\u672c\u4e66\u6536\u5f55\u7684\u7b2c\u4e00\u95e8\u56fd\u5185\u9ad8\u6821\u81ea\u4e3b\u5f00\u8bbe\u7684\u8ba1\u7b97\u673a\u8bfe\u7a0b\u3002\u6b63\u662f\u6709\u848b\u8001\u5e08\u8fd9\u4e9b\u5e74\u8f7b\u7684\u65b0\u751f\u4ee3\u6559\u5e08\u5728\u7e41\u91cd\u7684 Tenure \u8003\u6838\u4e4b\u4f59\u7684\u7528\u7231\u53d1\u7535\uff0c\u624d\u8ba9\u65e0\u6570\u5b66\u5b50\u6536\u83b7\u4e86\u96be\u5fd8\u7684\u672c\u79d1\u751f\u6daf\u3002\u4e5f\u671f\u5f85\u56fd\u5185\u80fd\u6709\u66f4\u591a\u8fd9\u6837\u7684\u826f\u5fc3\u597d\u8bfe\uff0c\u6211\u4e5f\u4f1a\u7b2c\u4e00\u65f6\u95f4\u6536\u5f55\u8fdb\u672c\u4e66\u4e2d\u8ba9\u66f4\u591a\u4eba\u53d7\u76ca\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://jyywiki.cn/OS/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://space.bilibili.com/202224425/channel/collectiondetail?sid=192498 \u8bfe\u7a0b\u6559\u6750\uff1a http://pages.cs.wisc.edu/~remzi/OSTEP/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://jyywiki.cn/OS/2022/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/#_3","text":"\u6309\u848b\u8001\u5e08\u7684\u8981\u6c42\uff0c\u6211\u7684\u4f5c\u4e1a\u5b9e\u73b0\u6ca1\u6709\u5f00\u6e90\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/","text":"MIT18.06: Linear Algebra \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u82f1\u6587 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 \u6570\u5b66\u5927\u725b Gilbert Strang \u8001\u5148\u751f\u5e74\u903e\u53e4\u7a00\u4ecd\u575a\u6301\u6388\u8bfe\uff0c\u5176\u7ecf\u5178\u6559\u6750 Introduction to Linear Algebra \u5df2\u88ab\u6e05\u534e\u91c7\u7528\u4e3a\u5b98\u65b9\u6559\u6750\u3002\u6211\u5f53\u65f6\u770b\u5b8c\u76d7\u7248 PDF \u4e4b\u540e\u6df1\u611f\u6127\u759a\uff0c\u542b\u6cea\u82b1\u4e86\u4e24\u767e\u591a\u4e70\u4e86\u4e00\u672c\u82f1\u6587\u6b63\u7248\u6536\u85cf\u3002\u4e0b\u9762\u9644\u4e0a\u6b64\u4e66\u5c01\u9762\uff0c\u5982\u679c\u4f60\u80fd\u5b8c\u5168\u7406\u89e3\u5c01\u9762\u56fe\u7684\u6570\u5b66\u542b\u4e49\uff0c\u90a3\u4f60\u5bf9\u7ebf\u6027\u4ee3\u6570\u7684\u7406\u89e3\u4e00\u5b9a\u4f1a\u8fbe\u5230\u65b0\u7684\u9ad8\u5ea6\u3002 \u914d\u5408\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \u7684 \u7ebf\u6027\u4ee3\u6570\u7684\u672c\u8d28 \u7cfb\u5217\u89c6\u9891\u98df\u7528\u66f4\u4f73\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/syllabus/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1aIntroduction to Linear Algebra. Gilbert Strang \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"MIT18.06: Linear Algebra"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/#mit1806-linear-algebra","text":"","title":"MIT18.06: Linear Algebra"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u82f1\u6587 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 \u6570\u5b66\u5927\u725b Gilbert Strang \u8001\u5148\u751f\u5e74\u903e\u53e4\u7a00\u4ecd\u575a\u6301\u6388\u8bfe\uff0c\u5176\u7ecf\u5178\u6559\u6750 Introduction to Linear Algebra \u5df2\u88ab\u6e05\u534e\u91c7\u7528\u4e3a\u5b98\u65b9\u6559\u6750\u3002\u6211\u5f53\u65f6\u770b\u5b8c\u76d7\u7248 PDF \u4e4b\u540e\u6df1\u611f\u6127\u759a\uff0c\u542b\u6cea\u82b1\u4e86\u4e24\u767e\u591a\u4e70\u4e86\u4e00\u672c\u82f1\u6587\u6b63\u7248\u6536\u85cf\u3002\u4e0b\u9762\u9644\u4e0a\u6b64\u4e66\u5c01\u9762\uff0c\u5982\u679c\u4f60\u80fd\u5b8c\u5168\u7406\u89e3\u5c01\u9762\u56fe\u7684\u6570\u5b66\u542b\u4e49\uff0c\u90a3\u4f60\u5bf9\u7ebf\u6027\u4ee3\u6570\u7684\u7406\u89e3\u4e00\u5b9a\u4f1a\u8fbe\u5230\u65b0\u7684\u9ad8\u5ea6\u3002 \u914d\u5408\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \u7684 \u7ebf\u6027\u4ee3\u6570\u7684\u672c\u8d28 \u7cfb\u5217\u89c6\u9891\u98df\u7528\u66f4\u4f73\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/syllabus/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1aIntroduction to Linear Algebra. Gilbert Strang \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/","text":"MIT Calculus Course \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u82f1\u8bed \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 MIT \u7684\u5fae\u79ef\u5206\u8bfe\u7531 MIT18.01: Single variable calculus \u548c MIT18.02: Multi variable calculus \u4e24\u95e8\u8bfe\u7ec4\u6210\u3002\u5bf9\u81ea\u5df1\u6570\u5b66\u57fa\u7840\u6bd4\u8f83\u81ea\u4fe1\u7684\u540c\u5b66\u53ef\u4ee5\u53ea\u770b\u8bfe\u7a0b notes\uff0c\u5199\u5f97\u975e\u5e38\u6d45\u663e\u751f\u52a8\u5e76\u4e14\u6293\u4f4f\u672c\u8d28\uff0c\u8ba9\u4f60\u4e0d\u518d\u75b2\u4e8e\u505a\u9898\u800c\u662f\u80fd\u591f\u771f\u6b63\u7aa5\u89c1\u5fae\u79ef\u5206\u7684\u672c\u8d28\u9b45\u529b\u3002 \u914d\u5408\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \u7684 \u5fae\u79ef\u5206\u7684\u672c\u8d28 \u7cfb\u5217\u89c6\u9891\u98df\u7528\u66f4\u4f73\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a 18.01 , 18.02 \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e66\u9762\u4f5c\u4e1a\u53ca\u7b54\u6848\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"MIT18.01/18.02: Calculus"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/#mit-calculus-course","text":"","title":"MIT Calculus Course"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u82f1\u8bed \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 MIT \u7684\u5fae\u79ef\u5206\u8bfe\u7531 MIT18.01: Single variable calculus \u548c MIT18.02: Multi variable calculus \u4e24\u95e8\u8bfe\u7ec4\u6210\u3002\u5bf9\u81ea\u5df1\u6570\u5b66\u57fa\u7840\u6bd4\u8f83\u81ea\u4fe1\u7684\u540c\u5b66\u53ef\u4ee5\u53ea\u770b\u8bfe\u7a0b notes\uff0c\u5199\u5f97\u975e\u5e38\u6d45\u663e\u751f\u52a8\u5e76\u4e14\u6293\u4f4f\u672c\u8d28\uff0c\u8ba9\u4f60\u4e0d\u518d\u75b2\u4e8e\u505a\u9898\u800c\u662f\u80fd\u591f\u771f\u6b63\u7aa5\u89c1\u5fae\u79ef\u5206\u7684\u672c\u8d28\u9b45\u529b\u3002 \u914d\u5408\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \u7684 \u5fae\u79ef\u5206\u7684\u672c\u8d28 \u7cfb\u5217\u89c6\u9891\u98df\u7528\u66f4\u4f73\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a 18.01 , 18.02 \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e66\u9762\u4f5c\u4e1a\u53ca\u7b54\u6848\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/","text":"MIT6.050J: Information theory and Entropy \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 MIT \u9762\u5411\u5927\u4e00\u65b0\u751f\u7684\u4fe1\u606f\u8bba\u5165\u95e8\u8bfe\u7a0b\uff0cPenfield \u6559\u6388\u4e13\u95e8\u4e3a\u8fd9\u95e8\u8bfe\u5199\u4e86\u4e00\u672c \u6559\u6750 \u4f5c\u4e3a\u8bfe\u7a0b notes\uff0c\u5185\u5bb9\u6df1\u5165\u6d45\u51fa\uff0c\u751f\u52a8\u6709\u8da3\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/index.htm \u8bfe\u7a0b\u6559\u6750\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/syllabus/MIT6_050JS08_textbook.pdf \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u5305\u542b\u4e66\u9762\u4f5c\u4e1a\u4e0e Matlab \u7f16\u7a0b\u4f5c\u4e1a\u3002","title":"MIT6.050J: Information theory and Entropy"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/#mit6050j-information-theory-and-entropy","text":"","title":"MIT6.050J: Information theory and Entropy"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 MIT \u9762\u5411\u5927\u4e00\u65b0\u751f\u7684\u4fe1\u606f\u8bba\u5165\u95e8\u8bfe\u7a0b\uff0cPenfield \u6559\u6388\u4e13\u95e8\u4e3a\u8fd9\u95e8\u8bfe\u5199\u4e86\u4e00\u672c \u6559\u6750 \u4f5c\u4e3a\u8bfe\u7a0b notes\uff0c\u5185\u5bb9\u6df1\u5165\u6d45\u51fa\uff0c\u751f\u52a8\u6709\u8da3\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/index.htm \u8bfe\u7a0b\u6559\u6750\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/syllabus/MIT6_050JS08_textbook.pdf \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u5305\u542b\u4e66\u9762\u4f5c\u4e1a\u4e0e Matlab \u7f16\u7a0b\u4f5c\u4e1a\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/","text":"MIT 6.042J: Mathematics for Computer Science \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra \u7f16\u7a0b\u8bed\u8a00\uff1aPython preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 MIT \u7684\u79bb\u6563\u6570\u5b66\u4ee5\u53ca\u6982\u7387\u7efc\u5408\u8bfe\u7a0b\uff0c\u5bfc\u5e08\u662f\u5927\u540d\u9f0e\u9f0e\u7684 Tom Leighton ( Akamai \u7684\u8054\u5408\u521b\u59cb\u4eba\u4e4b\u4e00)\u3002\u5b66\u5b8c\u4e4b\u540e\u5bf9\u4e8e\u540e\u7eed\u7684\u7b97\u6cd5\u5b66\u4e60\u5927\u6709\u88e8\u76ca\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1L741147VX \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/assignments/","title":"MIT 6.042J: Mathematics for Computer Science"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/#mit-6042j-mathematics-for-computer-science","text":"","title":"MIT 6.042J: Mathematics for Computer Science"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra \u7f16\u7a0b\u8bed\u8a00\uff1aPython preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 MIT \u7684\u79bb\u6563\u6570\u5b66\u4ee5\u53ca\u6982\u7387\u7efc\u5408\u8bfe\u7a0b\uff0c\u5bfc\u5e08\u662f\u5927\u540d\u9f0e\u9f0e\u7684 Tom Leighton ( Akamai \u7684\u8054\u5408\u521b\u59cb\u4eba\u4e4b\u4e00)\u3002\u5b66\u5b8c\u4e4b\u540e\u5bf9\u4e8e\u540e\u7eed\u7684\u7b97\u6cd5\u5b66\u4e60\u5927\u6709\u88e8\u76ca\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1L741147VX \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/assignments/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/","text":"UCB CS126 : Probability theory \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS70\u3001\u5fae\u79ef\u5206\u3001\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u6982\u7387\u8bba\u8fdb\u9636\u8bfe\u7a0b\uff0c\u6d89\u53ca\u5230\u7edf\u8ba1\u5b66\u3001\u968f\u673a\u8fc7\u7a0b\u7b49\u7406\u8bba\u76f8\u5bf9\u6df1\u5165\u7684\u5185\u5bb9\uff0c\u9700\u8981\u76f8\u5f53\u7684\u6570\u5b66\u57fa\u7840\uff0c\u6211\u5728\u4e0a\u8fd9\u95e8\u8bfe\u7684\u65f6\u5019\u4e5f\u611f\u5230\u6709\u4e9b\u5403\u529b\uff0c\u4e0d\u8fc7\u575a\u6301\u4e0b\u6765\u4e00\u5b9a\u4f1a\u8ba9\u4f60\u5bf9\u6982\u7387\u8bba\u7684\u638c\u63e1\u8fbe\u5230\u4e00\u4e2a\u65b0\u7684\u9ad8\u5ea6\u3002 \u540c\u65f6\u8fd9\u95e8\u8bfe\u975e\u5e38\u5f3a\u8c03\u7406\u8bba\u4e0e\u5b9e\u8df5\u7684\u7ed3\u5408\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u8005 Jean Walrand \u6559\u6388\u4e13\u95e8\u5199\u4e86\u4e00\u672c\u914d\u5957\u7684\u6559\u6750 Probability in Electrical Engineering and Computer Science \uff0c\u4e66\u4e2d\u6bcf\u4e2a\u7ae0\u8282\u90fd\u4f1a\u4ee5\u4e00\u4e2a\u5177\u4f53\u7684\u7b97\u6cd5\u5b9e\u8df5\u4f5c\u4e3a\u4f8b\u5b50\u6765\u5c55\u793a\u7406\u8bba\u5728\u5b9e\u9645\u5f53\u4e2d\u7684\u8fd0\u7528\uff0c\u4f8b\u5982 PageRank, Route Planing, Speech Recognition \u7b49\u7b49\uff0c\u5e76\u4e14\u5168\u4e66\u5f00\u6e90\uff0c\u53ef\u4ee5\u514d\u8d39\u4e0b\u8f7d PDF \u6216\u8005 Epub \u7248\u3002 \u8fd9\u8fd8\u4e0d\u7b97\u5b8c\uff0cJean Walrand \u8fd8\u4e3a\u6574\u672c\u4e66\u91cc\u7684\u4f8b\u5b50\u8bbe\u8ba1\u4e86\u914d\u5957\u7684 Python \u5b9e\u73b0\uff0c\u4ee5 Jupyter Notebook \u7684\u5f62\u5f0f\u5728\u7ebf\u53d1\u5e03\uff0c\u8bfb\u8005\u53ef\u4ee5\u5728\u7ebf\u4fee\u6539\u3001\u8c03\u8bd5\u548c\u8fd0\u884c\u3002 \u4e0e\u6b64\u540c\u65f6\uff0c\u8fd9\u95e8\u8bfe\u9664\u4e86\u7406\u8bba\u4f5c\u4e1a\u4e4b\u5916\uff0c\u8fd8\u6709 9 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u4f1a\u8ba9\u4f60\u7528\u6982\u7387\u8bba\u7684\u77e5\u8bc6\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~ee126/fa20/content.html \u8bfe\u7a0b\u6559\u6750\uff1a PDF , Epub , Jupyter Notebook \u8bfe\u7a0b\u4f5c\u4e1a\uff1a14 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 9 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/EECS126 - GitHub \u4e2d\u3002","title":"UCB CS126: probability theory"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/#ucb-cs126-probability-theory","text":"","title":"UCB CS126 : Probability theory"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS70\u3001\u5fae\u79ef\u5206\u3001\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u6982\u7387\u8bba\u8fdb\u9636\u8bfe\u7a0b\uff0c\u6d89\u53ca\u5230\u7edf\u8ba1\u5b66\u3001\u968f\u673a\u8fc7\u7a0b\u7b49\u7406\u8bba\u76f8\u5bf9\u6df1\u5165\u7684\u5185\u5bb9\uff0c\u9700\u8981\u76f8\u5f53\u7684\u6570\u5b66\u57fa\u7840\uff0c\u6211\u5728\u4e0a\u8fd9\u95e8\u8bfe\u7684\u65f6\u5019\u4e5f\u611f\u5230\u6709\u4e9b\u5403\u529b\uff0c\u4e0d\u8fc7\u575a\u6301\u4e0b\u6765\u4e00\u5b9a\u4f1a\u8ba9\u4f60\u5bf9\u6982\u7387\u8bba\u7684\u638c\u63e1\u8fbe\u5230\u4e00\u4e2a\u65b0\u7684\u9ad8\u5ea6\u3002 \u540c\u65f6\u8fd9\u95e8\u8bfe\u975e\u5e38\u5f3a\u8c03\u7406\u8bba\u4e0e\u5b9e\u8df5\u7684\u7ed3\u5408\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u8005 Jean Walrand \u6559\u6388\u4e13\u95e8\u5199\u4e86\u4e00\u672c\u914d\u5957\u7684\u6559\u6750 Probability in Electrical Engineering and Computer Science \uff0c\u4e66\u4e2d\u6bcf\u4e2a\u7ae0\u8282\u90fd\u4f1a\u4ee5\u4e00\u4e2a\u5177\u4f53\u7684\u7b97\u6cd5\u5b9e\u8df5\u4f5c\u4e3a\u4f8b\u5b50\u6765\u5c55\u793a\u7406\u8bba\u5728\u5b9e\u9645\u5f53\u4e2d\u7684\u8fd0\u7528\uff0c\u4f8b\u5982 PageRank, Route Planing, Speech Recognition \u7b49\u7b49\uff0c\u5e76\u4e14\u5168\u4e66\u5f00\u6e90\uff0c\u53ef\u4ee5\u514d\u8d39\u4e0b\u8f7d PDF \u6216\u8005 Epub \u7248\u3002 \u8fd9\u8fd8\u4e0d\u7b97\u5b8c\uff0cJean Walrand \u8fd8\u4e3a\u6574\u672c\u4e66\u91cc\u7684\u4f8b\u5b50\u8bbe\u8ba1\u4e86\u914d\u5957\u7684 Python \u5b9e\u73b0\uff0c\u4ee5 Jupyter Notebook \u7684\u5f62\u5f0f\u5728\u7ebf\u53d1\u5e03\uff0c\u8bfb\u8005\u53ef\u4ee5\u5728\u7ebf\u4fee\u6539\u3001\u8c03\u8bd5\u548c\u8fd0\u884c\u3002 \u4e0e\u6b64\u540c\u65f6\uff0c\u8fd9\u95e8\u8bfe\u9664\u4e86\u7406\u8bba\u4f5c\u4e1a\u4e4b\u5916\uff0c\u8fd8\u6709 9 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u4f1a\u8ba9\u4f60\u7528\u6982\u7387\u8bba\u7684\u77e5\u8bc6\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~ee126/fa20/content.html \u8bfe\u7a0b\u6559\u6750\uff1a PDF , Epub , Jupyter Notebook \u8bfe\u7a0b\u4f5c\u4e1a\uff1a14 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 9 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/EECS126 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/","text":"UCB CS70 : discrete Math and probability theory \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u79bb\u6563\u6570\u5b66\u5165\u95e8\u8bfe\u7a0b\uff0c\u4e2a\u4eba\u89c9\u5f97\u8fd9\u95e8\u8bfe\u6700\u5927\u7684\u4eae\u70b9\u5728\u4e8e\u5e76\u4e0d\u662f\u5355\u7eaf\u7684\u7406\u8bba\u77e5\u8bc6\u7684\u8bb2\u6388\uff0c\u800c\u662f\u5728\u6bcf\u4e2a\u6a21\u5757\u90fd\u4f1a\u4ecb\u7ecd\u7406\u8bba\u77e5\u8bc6\u5728\u5b9e\u9645\u7b97\u6cd5\u4e2d\u7684\u8fd0\u7528\uff0c\u8ba9\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\u5728\u592f\u5b9e\u7406\u8bba\u57fa\u7840\u7684\u540c\u65f6\uff0c\u8df3\u8131\u51fa\u51b0\u51b7\u5f62\u5f0f\u5316\u7684\u6570\u5b66\u7b26\u53f7\uff0c\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u611f\u53d7\u548c\u4f53\u4f1a\u7406\u8bba\u7684\u672c\u8d28\u3002 \u5177\u4f53\u7684\u7406\u8bba\u4e0e\u7b97\u6cd5\u7684\u5bf9\u5e94\u5173\u7cfb\u5217\u4e3e\u5982\u4e0b\uff1a \u903b\u8f91\u8bc1\u660e\uff1a\u7a33\u5b9a\u5339\u914d\u7b97\u6cd5 \u56fe\u8bba\uff1a\u7f51\u7edc\u62d3\u6251\u8bbe\u8ba1 \u57fa\u7840\u6570\u8bba\uff1aRSA \u7b97\u6cd5 \u591a\u9879\u5f0f\u73af\uff1a\u7ea0\u9519\u7801\u8bbe\u8ba1 \u6982\u7387\u8bba\uff1a\u54c8\u5e0c\u8868\u8bbe\u8ba1\u3001\u8d1f\u8f7d\u5747\u8861\u7b49\u7b49 \u8bfe\u7a0b notes \u4e5f\u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u516c\u5f0f\u63a8\u5bfc\u4e0e\u5b9e\u9645\u4f8b\u5b50\u661f\u7f57\u68cb\u5e03\uff0c\u9605\u8bfb\u4f53\u9a8c\u5f88\u597d\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.eecs70.org/ \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b Schedule \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS70 - GitHub \u4e2d\u3002","title":"UCB CS70: discrete Math and probability theory"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/#ucb-cs70-discrete-math-and-probability-theory","text":"","title":"UCB CS70 : discrete Math and probability theory"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u79bb\u6563\u6570\u5b66\u5165\u95e8\u8bfe\u7a0b\uff0c\u4e2a\u4eba\u89c9\u5f97\u8fd9\u95e8\u8bfe\u6700\u5927\u7684\u4eae\u70b9\u5728\u4e8e\u5e76\u4e0d\u662f\u5355\u7eaf\u7684\u7406\u8bba\u77e5\u8bc6\u7684\u8bb2\u6388\uff0c\u800c\u662f\u5728\u6bcf\u4e2a\u6a21\u5757\u90fd\u4f1a\u4ecb\u7ecd\u7406\u8bba\u77e5\u8bc6\u5728\u5b9e\u9645\u7b97\u6cd5\u4e2d\u7684\u8fd0\u7528\uff0c\u8ba9\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\u5728\u592f\u5b9e\u7406\u8bba\u57fa\u7840\u7684\u540c\u65f6\uff0c\u8df3\u8131\u51fa\u51b0\u51b7\u5f62\u5f0f\u5316\u7684\u6570\u5b66\u7b26\u53f7\uff0c\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u611f\u53d7\u548c\u4f53\u4f1a\u7406\u8bba\u7684\u672c\u8d28\u3002 \u5177\u4f53\u7684\u7406\u8bba\u4e0e\u7b97\u6cd5\u7684\u5bf9\u5e94\u5173\u7cfb\u5217\u4e3e\u5982\u4e0b\uff1a \u903b\u8f91\u8bc1\u660e\uff1a\u7a33\u5b9a\u5339\u914d\u7b97\u6cd5 \u56fe\u8bba\uff1a\u7f51\u7edc\u62d3\u6251\u8bbe\u8ba1 \u57fa\u7840\u6570\u8bba\uff1aRSA \u7b97\u6cd5 \u591a\u9879\u5f0f\u73af\uff1a\u7ea0\u9519\u7801\u8bbe\u8ba1 \u6982\u7387\u8bba\uff1a\u54c8\u5e0c\u8868\u8bbe\u8ba1\u3001\u8d1f\u8f7d\u5747\u8861\u7b49\u7b49 \u8bfe\u7a0b notes \u4e5f\u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u516c\u5f0f\u63a8\u5bfc\u4e0e\u5b9e\u9645\u4f8b\u5b50\u661f\u7f57\u68cb\u5e03\uff0c\u9605\u8bfb\u4f53\u9a8c\u5f88\u597d\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.eecs70.org/ \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b Schedule","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS70 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/","text":"The Information Theory, Patter Recognition, and Neural Networks \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCambridge \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra, Probabilities and Statistics \u7f16\u7a0b\u8bed\u8a00\uff1aAnything would be OK, Python preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30-50 \u5c0f\u65f6 \u5251\u6865\u5927\u5b66 Sir David MacKay \u6559\u6388\u7684\u4fe1\u606f\u8bba\u8bfe\u7a0b\u3002\u6559\u6388\u662f\u4e00\u4f4d\u5341\u5206\u7cbe\u901a\u4fe1\u606f\u8bba\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u5b66\u8005\uff0c\u8bfe\u7a0b\u5bf9\u5e94\u6559\u6750\u4e5f\u662f\u4fe1\u606f\u8bba\u9886\u57df\u7684\u4e00\u90e8\u7ecf\u5178\u8457\u4f5c\u3002\u53ef\u60dc\u5929\u5992\u82f1\u624d... \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.inference.org.uk/mackay/itila/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1rs411T71e \u8bfe\u7a0b\u6559\u6750\uff1aInformation Theory, Inference, and Learning Algorithms \u5728\u8bfe\u7a0b\u7f51\u7ad9\u53ef\u4ee5\u4e0b\u8f7d\u5230\u514d\u8d39\u7684\u7535\u5b50\u7248 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5728\u6bcf\u4e00\u8282\u8bfe\u89c6\u9891\u7684\u6700\u540e\u4f1a\u7559\u6559\u6750\u4e0a\u7684\u8bfe\u540e\u4e60\u9898 R.I.P Prof. David MacKay","title":"The Information Theory, Patter Recognition, and Neural Networks"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/#the-information-theory-patter-recognition-and-neural-networks","text":"","title":"The Information Theory, Patter Recognition, and Neural Networks"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCambridge \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra, Probabilities and Statistics \u7f16\u7a0b\u8bed\u8a00\uff1aAnything would be OK, Python preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30-50 \u5c0f\u65f6 \u5251\u6865\u5927\u5b66 Sir David MacKay \u6559\u6388\u7684\u4fe1\u606f\u8bba\u8bfe\u7a0b\u3002\u6559\u6388\u662f\u4e00\u4f4d\u5341\u5206\u7cbe\u901a\u4fe1\u606f\u8bba\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u5b66\u8005\uff0c\u8bfe\u7a0b\u5bf9\u5e94\u6559\u6750\u4e5f\u662f\u4fe1\u606f\u8bba\u9886\u57df\u7684\u4e00\u90e8\u7ecf\u5178\u8457\u4f5c\u3002\u53ef\u60dc\u5929\u5992\u82f1\u624d...","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.inference.org.uk/mackay/itila/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1rs411T71e \u8bfe\u7a0b\u6559\u6750\uff1aInformation Theory, Inference, and Learning Algorithms \u5728\u8bfe\u7a0b\u7f51\u7ad9\u53ef\u4ee5\u4e0b\u8f7d\u5230\u514d\u8d39\u7684\u7535\u5b50\u7248 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5728\u6bcf\u4e00\u8282\u8bfe\u89c6\u9891\u7684\u6700\u540e\u4f1a\u7559\u6559\u6750\u4e0a\u7684\u8bfe\u540e\u4e60\u9898","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/#rip-prof-david-mackay","text":"","title":"R.I.P Prof. David MacKay"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/","text":"Stanford EE364A: Convex Optimization \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aPython\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u6982\u7387\u8bba\uff0c\u6570\u503c\u5206\u6790 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 Stephen Boyd \u6559\u6388\u662f\u51f8\u4f18\u5316\u9886\u57df\u7684\u5927\u725b\uff0c\u5176\u7f16\u5199\u7684 Convex Optimization \u8fd9\u672c\u6559\u6750\u88ab\u4f17\u591a\u540d\u6821\u91c7\u7528\u3002\u53e6\u5916\u5176\u7814\u7a76\u56e2\u961f\u8fd8\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a\u7528\u4e8e\u6c42\u89e3\u5e38\u89c1\u51f8\u4f18\u5316\u95ee\u9898\u7684\u7f16\u7a0b\u6846\u67b6\uff0c\u652f\u6301 Python, Julia \u7b49\u4e3b\u6d41\u7f16\u7a0b\u8bed\u8a00\uff0c\u5176\u8bfe\u7a0b\u4f5c\u4e1a\u4e5f\u662f\u91c7\u7528\u8fd9\u4e2a\u7f16\u7a0b\u6846\u67b6\u53bb\u89e3\u51b3\u5b9e\u9645\u751f\u6d3b\u5f53\u4e2d\u7684\u51f8\u4f18\u5316\u95ee\u9898\u3002 \u5728\u5b9e\u9645\u8fd0\u7528\u5f53\u4e2d\uff0c\u4f60\u4f1a\u6df1\u523b\u4f53\u4f1a\u5230\u5bf9\u4e8e\u540c\u4e00\u4e2a\u95ee\u9898\uff0c\u5efa\u6a21\u8fc7\u7a0b\u4e2d\u4e00\u4e2a\u7ec6\u5c0f\u7684\u6539\u53d8\uff0c\u5176\u65b9\u7a0b\u7684\u6c42\u89e3\u96be\u5ea6\u4f1a\u6709\u5929\u58e4\u4e4b\u522b\uff0c\u5982\u4f55\u8ba9\u4f60\u5efa\u6a21\u7684\u65b9\u7a0b\u662f\u201c\u51f8\u201d\u7684\uff0c\u662f\u4e00\u95e8\u827a\u672f\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://stanford.edu/class/ee364a/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1aD4y1Q7aW \u8bfe\u7a0b\u6559\u6750\uff1a Convex Optimization \u8bfe\u7a0b\u4f5c\u4e1a\uff1a9 \u4e2a Python \u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Standford_CVX101 - GitHub \u4e2d\u3002","title":"Standford EE364A: Convex Optimization"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/#stanford-ee364a-convex-optimization","text":"","title":"Stanford EE364A: Convex Optimization"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aPython\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u6982\u7387\u8bba\uff0c\u6570\u503c\u5206\u6790 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 Stephen Boyd \u6559\u6388\u662f\u51f8\u4f18\u5316\u9886\u57df\u7684\u5927\u725b\uff0c\u5176\u7f16\u5199\u7684 Convex Optimization \u8fd9\u672c\u6559\u6750\u88ab\u4f17\u591a\u540d\u6821\u91c7\u7528\u3002\u53e6\u5916\u5176\u7814\u7a76\u56e2\u961f\u8fd8\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a\u7528\u4e8e\u6c42\u89e3\u5e38\u89c1\u51f8\u4f18\u5316\u95ee\u9898\u7684\u7f16\u7a0b\u6846\u67b6\uff0c\u652f\u6301 Python, Julia \u7b49\u4e3b\u6d41\u7f16\u7a0b\u8bed\u8a00\uff0c\u5176\u8bfe\u7a0b\u4f5c\u4e1a\u4e5f\u662f\u91c7\u7528\u8fd9\u4e2a\u7f16\u7a0b\u6846\u67b6\u53bb\u89e3\u51b3\u5b9e\u9645\u751f\u6d3b\u5f53\u4e2d\u7684\u51f8\u4f18\u5316\u95ee\u9898\u3002 \u5728\u5b9e\u9645\u8fd0\u7528\u5f53\u4e2d\uff0c\u4f60\u4f1a\u6df1\u523b\u4f53\u4f1a\u5230\u5bf9\u4e8e\u540c\u4e00\u4e2a\u95ee\u9898\uff0c\u5efa\u6a21\u8fc7\u7a0b\u4e2d\u4e00\u4e2a\u7ec6\u5c0f\u7684\u6539\u53d8\uff0c\u5176\u65b9\u7a0b\u7684\u6c42\u89e3\u96be\u5ea6\u4f1a\u6709\u5929\u58e4\u4e4b\u522b\uff0c\u5982\u4f55\u8ba9\u4f60\u5efa\u6a21\u7684\u65b9\u7a0b\u662f\u201c\u51f8\u201d\u7684\uff0c\u662f\u4e00\u95e8\u827a\u672f\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://stanford.edu/class/ee364a/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1aD4y1Q7aW \u8bfe\u7a0b\u6559\u6750\uff1a Convex Optimization \u8bfe\u7a0b\u4f5c\u4e1a\uff1a9 \u4e2a Python \u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Standford_CVX101 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/","text":"MIT18.330 : Introduction to numerical analysis \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u6982\u7387\u8bba \u7f16\u7a0b\u8bed\u8a00\uff1aJulia \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u8ba1\u7b97\u673a\u5f3a\u5927\u7684\u8ba1\u7b97\u80fd\u529b\u5e2e\u52a9\u4eba\u4eec\u5728\u79d1\u5b66\u9886\u57df\u4e0d\u65ad\u7a81\u7834\u8fb9\u754c\uff0c\u4e0d\u8fc7\u8ba1\u7b97\u673a\u7684\u79bb\u6563\u672c\u8d28\u548c\u8fd9\u4e2a\u8fde\u7eed\u7684\u4e16\u754c\u6709\u7740\u5929\u7136\u9e3f\u6c9f\uff0c\u800c\u5982\u4f55\u7528\u79bb\u6563\u7684\u8868\u793a\u53bb\u4f30\u8ba1\u548c\u903c\u8fd1\u90a3\u4e9b\u6570\u5b66\u4e0a\u8fde\u7eed\u7684\u6982\u5ff5\uff0c\u5219\u662f\u6570\u503c\u5206\u6790\u7684\u91cd\u8981\u4e3b\u9898\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u5728\u6d6e\u70b9\u8868\u793a\u3001\u65b9\u7a0b\u6c42\u89e3\u3001\u7ebf\u6027\u4ee3\u6570\u3001\u5fae\u79ef\u5206\u3001\u7ebf\u6027\u4ee3\u6570\u3001\u5fae\u5206\u65b9\u7a0b\u7b49\u9886\u57df\u63a2\u8ba8\u5404\u7c7b\u6570\u503c\u5206\u6790\u65b9\u6cd5\uff0c\u8ba9\u4f60\u5728 Julia \u7684\u7f16\u7a0b\u5b9e\u8df5\u4e2d\u53cd\u590d\u4f53\u609f\uff081\uff09\u5982\u4f55\u5efa\u7acb\u4f30\u8ba1\uff082\uff09\u5982\u4f55\u4f30\u8ba1\u8bef\u5dee\uff083\uff09\u5982\u4f55\u7528\u7b97\u6cd5\u5b9e\u73b0\u4f30\u8ba1 \u8fd9\u4e00\u7cfb\u5217\u6b65\u9aa4\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bbe\u8ba1\u8005\u8fd8\u7f16\u5199\u4e86\u914d\u5957\u7684\u5f00\u6e90\u6559\u6750\uff08\u53c2\u89c1\u4e0b\u65b9\u94fe\u63a5\uff09\uff0c\u91cc\u9762\u6709\u4e30\u5bcc\u7684 Julia \u5b9e\u4f8b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://github.com/mitmath/18330 \u8bfe\u7a0b\u6559\u6750\uff1a https://fncbook.github.io/fnc/frontmatter.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10 \u4e2a Julia \u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT18.330 - GitHub \u4e2d\u3002","title":"MIT18.330: Introduction to numerical analysis"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/#mit18330-introduction-to-numerical-analysis","text":"","title":"MIT18.330 : Introduction to numerical analysis"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u6982\u7387\u8bba \u7f16\u7a0b\u8bed\u8a00\uff1aJulia \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u8ba1\u7b97\u673a\u5f3a\u5927\u7684\u8ba1\u7b97\u80fd\u529b\u5e2e\u52a9\u4eba\u4eec\u5728\u79d1\u5b66\u9886\u57df\u4e0d\u65ad\u7a81\u7834\u8fb9\u754c\uff0c\u4e0d\u8fc7\u8ba1\u7b97\u673a\u7684\u79bb\u6563\u672c\u8d28\u548c\u8fd9\u4e2a\u8fde\u7eed\u7684\u4e16\u754c\u6709\u7740\u5929\u7136\u9e3f\u6c9f\uff0c\u800c\u5982\u4f55\u7528\u79bb\u6563\u7684\u8868\u793a\u53bb\u4f30\u8ba1\u548c\u903c\u8fd1\u90a3\u4e9b\u6570\u5b66\u4e0a\u8fde\u7eed\u7684\u6982\u5ff5\uff0c\u5219\u662f\u6570\u503c\u5206\u6790\u7684\u91cd\u8981\u4e3b\u9898\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u5728\u6d6e\u70b9\u8868\u793a\u3001\u65b9\u7a0b\u6c42\u89e3\u3001\u7ebf\u6027\u4ee3\u6570\u3001\u5fae\u79ef\u5206\u3001\u7ebf\u6027\u4ee3\u6570\u3001\u5fae\u5206\u65b9\u7a0b\u7b49\u9886\u57df\u63a2\u8ba8\u5404\u7c7b\u6570\u503c\u5206\u6790\u65b9\u6cd5\uff0c\u8ba9\u4f60\u5728 Julia \u7684\u7f16\u7a0b\u5b9e\u8df5\u4e2d\u53cd\u590d\u4f53\u609f\uff081\uff09\u5982\u4f55\u5efa\u7acb\u4f30\u8ba1\uff082\uff09\u5982\u4f55\u4f30\u8ba1\u8bef\u5dee\uff083\uff09\u5982\u4f55\u7528\u7b97\u6cd5\u5b9e\u73b0\u4f30\u8ba1 \u8fd9\u4e00\u7cfb\u5217\u6b65\u9aa4\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bbe\u8ba1\u8005\u8fd8\u7f16\u5199\u4e86\u914d\u5957\u7684\u5f00\u6e90\u6559\u6750\uff08\u53c2\u89c1\u4e0b\u65b9\u94fe\u63a5\uff09\uff0c\u91cc\u9762\u6709\u4e30\u5bcc\u7684 Julia \u5b9e\u4f8b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://github.com/mitmath/18330 \u8bfe\u7a0b\u6559\u6750\uff1a https://fncbook.github.io/fnc/frontmatter.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10 \u4e2a Julia \u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT18.330 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/","text":"CMU 15-445: Database Systems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aC++\uff0c\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f5c\u4e3a CMU \u6570\u636e\u5e93\u7684\u5165\u95e8\u8bfe\uff0c\u8fd9\u95e8\u8bfe\u7531\u6570\u636e\u5e93\u9886\u57df\u7684\u5927\u725b Andy Pavlo \u8bb2\u6388\uff08\u201c\u8fd9\u4e2a\u4e16\u754c\u4e0a\u6211\u53ea\u5728\u4e4e\u4e24\u4ef6\u4e8b\uff0c\u4e00\u662f\u6211\u7684\u8001\u5a46\uff0c\u4e8c\u5c31\u662f\u6570\u636e\u5e93\u201d\uff09\u300215-445 \u4f1a\u81ea\u5e95\u5411\u4e0a\u5730\u6559\u4f60\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u57fa\u672c\u7ec4\u6210\u90e8\u5206\uff1a\u5b58\u50a8\u3001\u7d22\u5f15\u3001\u67e5\u8be2\uff0c\u4ee5\u53ca\u5e76\u53d1\u4e8b\u52a1\u63a7\u5236\u3002 \u8fd9\u95e8\u8bfe\u7684\u4eae\u70b9\u5728\u4e8e CMU db \u4e13\u95e8\u4e3a\u6b64\u8bfe\u5f00\u53d1\u4e86\u4e00\u4e2a\u6559\u5b66\u7528\u7684\u5173\u7cfb\u578b\u6570\u636e\u5e93 bustub \uff0c\u5e76\u8981\u6c42\u4f60\u5bf9\u8fd9\u4e2a\u6570\u636e\u5e93\u7684\u7ec4\u6210\u90e8\u5206\u8fdb\u884c\u4fee\u6539\uff0c\u5b9e\u73b0\u4e0a\u8ff0\u90e8\u4ef6\u7684\u529f\u80fd\u3002\u6b64\u5916 bustub \u4f5c\u4e3a\u4e00\u4e2a C++ \u7f16\u5199\u7684\u4e2d\u5c0f\u578b\u9879\u76ee\u6db5\u76d6\u4e86\u7a0b\u5e8f\u6784\u5efa\u3001\u4ee3\u7801\u89c4\u8303\u3001\u5355\u5143\u6d4b\u8bd5\u7b49\u4f17\u591a\u8981\u6c42\uff0c\u53ef\u4ee5\u4f5c\u4e3a\u4e00\u4e2a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\u5b66\u4e60\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a Fall2019 , Fall2020 , Fall2021 \u8bfe\u7a0b\u89c6\u9891\uff1a\u8bfe\u7a0b\u7f51\u7ad9\u514d\u8d39\u89c2\u770b \u8bfe\u7a0b\u6559\u6750\uff1aDatabase System Concepts \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a Project \u5728 Fall2019 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a\u54c8\u5e0c\u7d22\u5f15\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u65e5\u5fd7\u4e0e\u6062\u590d\u3002 \u5728 Fall2020 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a B \u6811\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u5e76\u53d1\u63a7\u5236\u3002 \u5728 Fall2021 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a\u7f13\u5b58\u6c60\u7ba1\u7406\uff0c\u7b2c\u4e09\u4e2a Project \u662f\u505a\u54c8\u5e0c\u7d22\u5f15\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u5e76\u53d1\u63a7\u5236\u3002 \u5982\u679c\u5927\u5bb6\u6709\u7cbe\u529b\u7684\u8bdd\u53ef\u4ee5\u90fd\u53bb\u5c1d\u8bd5\u4e00\u4e0b\uff0c\u6216\u8005\u5728\u5bf9\u4e66\u4e2d\u5185\u5bb9\u7406\u89e3\u4e0d\u662f\u5f88\u900f\u5f7b\u7684\u65f6\u5019\uff0c\u5c1d\u8bd5\u7528\u4ee3\u7801\u5199\u4e00\u4e2a\u4f1a\u52a0\u6df1\u4f60\u7684\u7406\u89e3\u3002 \u8d44\u6e90\u6c47\u603b @ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: db - GitHub \u4e2d\u3002 \u7531\u4e8e Andy \u7684\u8981\u6c42\uff0c\u4ed3\u5e93\u4e2d\u6ca1\u6709 Project \u7684\u5b9e\u73b0\uff0c\u53ea\u6709 Homework \u7684 Solution\u3002\u7279\u522b\u7684\uff0c\u5bf9\u4e8e Homework1\uff0c@ysj1173886760 \u8fd8\u5199\u4e86\u4e00\u4e2a Shell \u811a\u672c\u6765\u5e2e\u5927\u5bb6\u6267\u884c\u81ea\u52a8\u5224\u5206\u3002 \u53e6\u5916\u5728\u8bfe\u7a0b\u7ed3\u675f\u540e\uff0c\u63a8\u8350\u9605\u8bfb\u4e00\u7bc7\u8bba\u6587 Architecture Of a Database System \uff0c\u5bf9\u5e94\u7684\u4e2d\u6587\u7248\u4e5f\u5728\u4e0a\u8ff0\u4ed3\u5e93\u4e2d\u3002\u8bba\u6587\u91cc\u7efc\u8ff0\u4e86\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u6574\u4f53\u67b6\u6784\uff0c\u8ba9\u5927\u5bb6\u53ef\u4ee5\u5bf9\u6570\u636e\u5e93\u6709\u4e00\u4e2a\u66f4\u52a0\u5168\u9762\u7684\u89c6\u91ce\u3002 \u540e\u7eed\u8bfe\u7a0b CMU15-721 \u4e3b\u8981\u8bb2\u4e3b\u5b58\u6570\u636e\u5e93\u6709\u5173\u7684\u5185\u5bb9\uff0c\u6bcf\u8282\u8bfe\u90fd\u6709\u5bf9\u5e94\u7684 paper \u8981\u8bfb\uff0c\u63a8\u8350\u7ed9\u5e0c\u671b\u8fdb\u9636\u6570\u636e\u5e93\u7684\u5c0f\u4f19\u4f34\u3002@ysj1173886760 \u76ee\u524d\u4e5f\u5728\u8ddf\u8fdb\u8fd9\u95e8\u8bfe\uff0c\u5b8c\u6210\u540e\u4f1a\u5728\u8fd9\u91cc\u63d0 PR \u4ee5\u63d0\u4f9b\u8fdb\u9636\u7684\u6307\u5bfc\u3002","title":"CMU 15-445: Database Systems"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#cmu-15-445-database-systems","text":"","title":"CMU 15-445: Database Systems"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aC++\uff0c\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f5c\u4e3a CMU \u6570\u636e\u5e93\u7684\u5165\u95e8\u8bfe\uff0c\u8fd9\u95e8\u8bfe\u7531\u6570\u636e\u5e93\u9886\u57df\u7684\u5927\u725b Andy Pavlo \u8bb2\u6388\uff08\u201c\u8fd9\u4e2a\u4e16\u754c\u4e0a\u6211\u53ea\u5728\u4e4e\u4e24\u4ef6\u4e8b\uff0c\u4e00\u662f\u6211\u7684\u8001\u5a46\uff0c\u4e8c\u5c31\u662f\u6570\u636e\u5e93\u201d\uff09\u300215-445 \u4f1a\u81ea\u5e95\u5411\u4e0a\u5730\u6559\u4f60\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u57fa\u672c\u7ec4\u6210\u90e8\u5206\uff1a\u5b58\u50a8\u3001\u7d22\u5f15\u3001\u67e5\u8be2\uff0c\u4ee5\u53ca\u5e76\u53d1\u4e8b\u52a1\u63a7\u5236\u3002 \u8fd9\u95e8\u8bfe\u7684\u4eae\u70b9\u5728\u4e8e CMU db \u4e13\u95e8\u4e3a\u6b64\u8bfe\u5f00\u53d1\u4e86\u4e00\u4e2a\u6559\u5b66\u7528\u7684\u5173\u7cfb\u578b\u6570\u636e\u5e93 bustub \uff0c\u5e76\u8981\u6c42\u4f60\u5bf9\u8fd9\u4e2a\u6570\u636e\u5e93\u7684\u7ec4\u6210\u90e8\u5206\u8fdb\u884c\u4fee\u6539\uff0c\u5b9e\u73b0\u4e0a\u8ff0\u90e8\u4ef6\u7684\u529f\u80fd\u3002\u6b64\u5916 bustub \u4f5c\u4e3a\u4e00\u4e2a C++ \u7f16\u5199\u7684\u4e2d\u5c0f\u578b\u9879\u76ee\u6db5\u76d6\u4e86\u7a0b\u5e8f\u6784\u5efa\u3001\u4ee3\u7801\u89c4\u8303\u3001\u5355\u5143\u6d4b\u8bd5\u7b49\u4f17\u591a\u8981\u6c42\uff0c\u53ef\u4ee5\u4f5c\u4e3a\u4e00\u4e2a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\u5b66\u4e60\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a Fall2019 , Fall2020 , Fall2021 \u8bfe\u7a0b\u89c6\u9891\uff1a\u8bfe\u7a0b\u7f51\u7ad9\u514d\u8d39\u89c2\u770b \u8bfe\u7a0b\u6559\u6750\uff1aDatabase System Concepts \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a Project \u5728 Fall2019 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a\u54c8\u5e0c\u7d22\u5f15\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u65e5\u5fd7\u4e0e\u6062\u590d\u3002 \u5728 Fall2020 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a B \u6811\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u5e76\u53d1\u63a7\u5236\u3002 \u5728 Fall2021 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a\u7f13\u5b58\u6c60\u7ba1\u7406\uff0c\u7b2c\u4e09\u4e2a Project \u662f\u505a\u54c8\u5e0c\u7d22\u5f15\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u5e76\u53d1\u63a7\u5236\u3002 \u5982\u679c\u5927\u5bb6\u6709\u7cbe\u529b\u7684\u8bdd\u53ef\u4ee5\u90fd\u53bb\u5c1d\u8bd5\u4e00\u4e0b\uff0c\u6216\u8005\u5728\u5bf9\u4e66\u4e2d\u5185\u5bb9\u7406\u89e3\u4e0d\u662f\u5f88\u900f\u5f7b\u7684\u65f6\u5019\uff0c\u5c1d\u8bd5\u7528\u4ee3\u7801\u5199\u4e00\u4e2a\u4f1a\u52a0\u6df1\u4f60\u7684\u7406\u89e3\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#_3","text":"@ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: db - GitHub \u4e2d\u3002 \u7531\u4e8e Andy \u7684\u8981\u6c42\uff0c\u4ed3\u5e93\u4e2d\u6ca1\u6709 Project \u7684\u5b9e\u73b0\uff0c\u53ea\u6709 Homework \u7684 Solution\u3002\u7279\u522b\u7684\uff0c\u5bf9\u4e8e Homework1\uff0c@ysj1173886760 \u8fd8\u5199\u4e86\u4e00\u4e2a Shell \u811a\u672c\u6765\u5e2e\u5927\u5bb6\u6267\u884c\u81ea\u52a8\u5224\u5206\u3002 \u53e6\u5916\u5728\u8bfe\u7a0b\u7ed3\u675f\u540e\uff0c\u63a8\u8350\u9605\u8bfb\u4e00\u7bc7\u8bba\u6587 Architecture Of a Database System \uff0c\u5bf9\u5e94\u7684\u4e2d\u6587\u7248\u4e5f\u5728\u4e0a\u8ff0\u4ed3\u5e93\u4e2d\u3002\u8bba\u6587\u91cc\u7efc\u8ff0\u4e86\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u6574\u4f53\u67b6\u6784\uff0c\u8ba9\u5927\u5bb6\u53ef\u4ee5\u5bf9\u6570\u636e\u5e93\u6709\u4e00\u4e2a\u66f4\u52a0\u5168\u9762\u7684\u89c6\u91ce\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#_4","text":"CMU15-721 \u4e3b\u8981\u8bb2\u4e3b\u5b58\u6570\u636e\u5e93\u6709\u5173\u7684\u5185\u5bb9\uff0c\u6bcf\u8282\u8bfe\u90fd\u6709\u5bf9\u5e94\u7684 paper \u8981\u8bfb\uff0c\u63a8\u8350\u7ed9\u5e0c\u671b\u8fdb\u9636\u6570\u636e\u5e93\u7684\u5c0f\u4f19\u4f34\u3002@ysj1173886760 \u76ee\u524d\u4e5f\u5728\u8ddf\u8fdb\u8fd9\u95e8\u8bfe\uff0c\u5b8c\u6210\u540e\u4f1a\u5728\u8fd9\u91cc\u63d0 PR \u4ee5\u63d0\u4f9b\u8fdb\u9636\u7684\u6307\u5bfc\u3002","title":"\u540e\u7eed\u8bfe\u7a0b"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/","text":"Caltech CS 122: Database System Implementation \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCaltech \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u52a0\u5dde\u7406\u5de5\u7684\u8fd9\u95e8\u8bfe\uff0c\u4e0d\u540c\u4e8e\u6ca1\u6709\u63d0\u4f9b SQL \u5c42\u529f\u80fd\u7684 CMU15-445 \u8bfe\u7a0b\u3002CS122 \u8bfe\u7a0b Lab \u7684\u4fa7\u91cd\u70b9\u5728\u4e8e SQL \u5c42\u7684\u76f8\u5173\u5b9e\u73b0\uff0c\u6d89\u53ca\u67e5\u8be2\u4f18\u5316\u5668\u7684\u5404\u4e2a\u6a21\u5757\uff0c\u6bd4\u5982SQL\u7684\u89e3\u6790\uff0cTranslate\uff0c\u5982\u4f55\u5b9e\u73b0 Join\uff0c\u7edf\u8ba1\u4fe1\u606f\u4ee5\u53ca\u4ee3\u4ef7\u4f30\u8ba1\uff0c\u5b50\u67e5\u8be2\u5b9e\u73b0\uff0cAgg\uff0cGroup By \u7684\u5b9e\u73b0\u7b49\u3002\u9664\u6b64\u4e4b\u5916\uff0c\u8fd8\u6709 B+\u6811\uff0cWAL \u76f8\u5173\u5b9e\u9a8c\u3002\u672c\u95e8\u8bfe\u7a0b\u9002\u5408\u5728\u5b66\u5b8c CMU15-445 \u8bfe\u7a0b\u4e4b\u540e\uff0c\u5bf9\u67e5\u8be2\u4f18\u5316\u76f8\u5173\u5185\u5bb9\u6709\u5174\u8da3\u7684\u540c\u5b66\u3002 \u4e0b\u9762\u4ecb\u7ecd\u4e00\u4e0b\u8fd9\u95e8\u8bfe\u7684\u524d 3 \u4e2a Assignment \u4e5f\u5c31\u662f\u5b9e\u9a8c Lab \u6240\u8981\u5b9e\u73b0\u7684\u529f\u80fd\uff1a Assignment1 \u4e3a NanoDB \u63d0\u4f9b delete\uff0cupdate \u8bed\u53e5\u7684\u652f\u6301\u3002 \u4e3a Buffer Pool Manager \u6dfb\u52a0\u5408\u9002\u7684 pin/unpin \u4ee3\u7801\u3002 \u63d0\u5347 insert \u8bed\u53e5\u7684\u6027\u80fd\uff0c \u540c\u65f6\u4e0d\u4f7f\u6570\u636e\u5e93\u6587\u4ef6\u5927\u5c0f\u8fc7\u5206\u81a8\u80c0\u3002 Assignment2 \u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u8ba1\u5212\u751f\u6210\u5668\uff0c\u5c06\u5404\u79cd\u5df2\u7ecf Parser \u8fc7\u7684 SQL \u8bed\u53e5\u8f6c\u5316\u4e3a\u53ef\u6267\u884c\u7684\u6267\u884c\u8ba1\u5212\u3002 \u4f7f\u7528 nested-loop join \u7b97\u6cd5\uff0c\u5b9e\u73b0\u652f\u6301 inner- and outer-join \u7684 Join \u8ba1\u5212\u8282\u70b9\u3002 \u6dfb\u52a0\u4e00\u4e9b\u5355\u5143\u6d4b\u8bd5\uff0c \u4fdd\u8bc1 inner- and outer-join \u529f\u80fd\u5b9e\u73b0\u6b63\u786e\u3002 Assignment3 \u5b8c\u6210\u6536\u96c6\u8868\u7684\u7edf\u8ba1\u4fe1\u606f\u3002 \u5b8c\u6210\u5404\u79cd\u8ba1\u5212\u8282\u70b9\u7684\u8ba1\u5212\u6210\u672c\u8ba1\u7b97\u3002 \u8ba1\u7b97\u53ef\u51fa\u73b0\u5728\u6267\u884c\u8ba1\u5212\u4e2d\u7684\u5404\u79cd\u8c13\u8bcd\u7684\u9009\u62e9\u6027\u3002 \u6839\u636e\u8c13\u8bcd\u66f4\u65b0\u8ba1\u5212\u8282\u70b9\u8f93\u51fa\u7684\u5143\u7ec4\u7edf\u8ba1\u4fe1\u606f\u3002 \u5269\u4f59 Assignment \u548c Challenges \u53ef\u4ee5\u67e5\u770b\u8bfe\u7a0b\u4ecb\u7ecd\uff0c\u63a8\u8350\u4f7f\u7528 IDEA \u6253\u5f00\u5de5\u7a0b\uff0cMaven \u6784\u5efa\uff0c\u6ce8\u610f\u65e5\u5fd7\u76f8\u5173\u914d\u7f6e\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://courses.cms.caltech.edu/cs122/ \u8bfe\u7a0b\u4ee3\u7801\uff1a https://gitlab.caltech.edu/cs122-19wi \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a7 Assignments + 2 Challenges","title":"Caltech CS122: Database System Implementation"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#caltech-cs-122-database-system-implementation","text":"","title":"Caltech CS 122: Database System Implementation"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCaltech \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u52a0\u5dde\u7406\u5de5\u7684\u8fd9\u95e8\u8bfe\uff0c\u4e0d\u540c\u4e8e\u6ca1\u6709\u63d0\u4f9b SQL \u5c42\u529f\u80fd\u7684 CMU15-445 \u8bfe\u7a0b\u3002CS122 \u8bfe\u7a0b Lab \u7684\u4fa7\u91cd\u70b9\u5728\u4e8e SQL \u5c42\u7684\u76f8\u5173\u5b9e\u73b0\uff0c\u6d89\u53ca\u67e5\u8be2\u4f18\u5316\u5668\u7684\u5404\u4e2a\u6a21\u5757\uff0c\u6bd4\u5982SQL\u7684\u89e3\u6790\uff0cTranslate\uff0c\u5982\u4f55\u5b9e\u73b0 Join\uff0c\u7edf\u8ba1\u4fe1\u606f\u4ee5\u53ca\u4ee3\u4ef7\u4f30\u8ba1\uff0c\u5b50\u67e5\u8be2\u5b9e\u73b0\uff0cAgg\uff0cGroup By \u7684\u5b9e\u73b0\u7b49\u3002\u9664\u6b64\u4e4b\u5916\uff0c\u8fd8\u6709 B+\u6811\uff0cWAL \u76f8\u5173\u5b9e\u9a8c\u3002\u672c\u95e8\u8bfe\u7a0b\u9002\u5408\u5728\u5b66\u5b8c CMU15-445 \u8bfe\u7a0b\u4e4b\u540e\uff0c\u5bf9\u67e5\u8be2\u4f18\u5316\u76f8\u5173\u5185\u5bb9\u6709\u5174\u8da3\u7684\u540c\u5b66\u3002 \u4e0b\u9762\u4ecb\u7ecd\u4e00\u4e0b\u8fd9\u95e8\u8bfe\u7684\u524d 3 \u4e2a Assignment \u4e5f\u5c31\u662f\u5b9e\u9a8c Lab \u6240\u8981\u5b9e\u73b0\u7684\u529f\u80fd\uff1a","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#assignment1","text":"\u4e3a NanoDB \u63d0\u4f9b delete\uff0cupdate \u8bed\u53e5\u7684\u652f\u6301\u3002 \u4e3a Buffer Pool Manager \u6dfb\u52a0\u5408\u9002\u7684 pin/unpin \u4ee3\u7801\u3002 \u63d0\u5347 insert \u8bed\u53e5\u7684\u6027\u80fd\uff0c \u540c\u65f6\u4e0d\u4f7f\u6570\u636e\u5e93\u6587\u4ef6\u5927\u5c0f\u8fc7\u5206\u81a8\u80c0\u3002","title":"Assignment1"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#assignment2","text":"\u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u8ba1\u5212\u751f\u6210\u5668\uff0c\u5c06\u5404\u79cd\u5df2\u7ecf Parser \u8fc7\u7684 SQL \u8bed\u53e5\u8f6c\u5316\u4e3a\u53ef\u6267\u884c\u7684\u6267\u884c\u8ba1\u5212\u3002 \u4f7f\u7528 nested-loop join \u7b97\u6cd5\uff0c\u5b9e\u73b0\u652f\u6301 inner- and outer-join \u7684 Join \u8ba1\u5212\u8282\u70b9\u3002 \u6dfb\u52a0\u4e00\u4e9b\u5355\u5143\u6d4b\u8bd5\uff0c \u4fdd\u8bc1 inner- and outer-join \u529f\u80fd\u5b9e\u73b0\u6b63\u786e\u3002","title":"Assignment2"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#assignment3","text":"\u5b8c\u6210\u6536\u96c6\u8868\u7684\u7edf\u8ba1\u4fe1\u606f\u3002 \u5b8c\u6210\u5404\u79cd\u8ba1\u5212\u8282\u70b9\u7684\u8ba1\u5212\u6210\u672c\u8ba1\u7b97\u3002 \u8ba1\u7b97\u53ef\u51fa\u73b0\u5728\u6267\u884c\u8ba1\u5212\u4e2d\u7684\u5404\u79cd\u8c13\u8bcd\u7684\u9009\u62e9\u6027\u3002 \u6839\u636e\u8c13\u8bcd\u66f4\u65b0\u8ba1\u5212\u8282\u70b9\u8f93\u51fa\u7684\u5143\u7ec4\u7edf\u8ba1\u4fe1\u606f\u3002 \u5269\u4f59 Assignment \u548c Challenges \u53ef\u4ee5\u67e5\u770b\u8bfe\u7a0b\u4ecb\u7ecd\uff0c\u63a8\u8350\u4f7f\u7528 IDEA \u6253\u5f00\u5de5\u7a0b\uff0cMaven \u6784\u5efa\uff0c\u6ce8\u610f\u65e5\u5fd7\u76f8\u5173\u914d\u7f6e\u3002","title":"Assignment3"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://courses.cms.caltech.edu/cs122/ \u8bfe\u7a0b\u4ee3\u7801\uff1a https://gitlab.caltech.edu/cs122-19wi \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a7 Assignments + 2 Challenges","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/","text":"UCB CS186: Introduction to Database System \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u5982\u4f55\u7f16\u5199 SQL \u67e5\u8be2\uff1fSQL \u547d\u4ee4\u662f\u5982\u4f55\u88ab\u4e00\u6b65\u6b65\u62c6\u89e3\u3001\u4f18\u5316\u3001\u8f6c\u53d8\u4e3a\u4e00\u4e2a\u4e2a\u78c1\u76d8\u67e5\u8be2\u6307\u4ee4\u7684\uff1f\u5982\u4f55\u5b9e\u73b0\u9ad8\u5e76\u53d1\u7684\u6570\u636e\u5e93\uff1f\u5982\u4f55\u5b9e\u73b0\u6570\u636e\u5e93\u7684\u6545\u969c\u6062\u590d\uff1f\u4ec0\u4e48\u53c8\u662f\u975e\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff1f\u8fd9\u95e8\u8bfe\u4f1a\u5e26\u4f60\u6df1\u5165\u7406\u89e3\u5173\u7cfb\u578b\u6570\u636e\u5e93\u7684\u5185\u90e8\u7ec6\u8282\uff0c\u5e76\u5728\u638c\u63e1\u7406\u8bba\u77e5\u8bc6\u4e4b\u540e\uff0c\u52a8\u624b\u7528 Java \u5b9e\u73b0\u4e00\u4e2a\u652f\u6301 SQL \u5e76\u53d1\u67e5\u8be2\u3001B+ \u6811 Index \u548c\u6545\u969c\u6062\u590d\u7684\u5173\u7cfb\u578b\u6570\u636e\u5e93\u3002 \u4ece\u5b9e\u7528\u89d2\u5ea6\u6765\u8bf4\uff0c\u8fd9\u95e8\u8bfe\u8fd8\u4f1a\u5728\u7f16\u7a0b\u4f5c\u4e1a\u4e2d\u953b\u70bc\u4f60\u7f16\u5199 SQL \u67e5\u8be2\u4ee5\u53ca NoSQL \u67e5\u8be2\u7684\u80fd\u529b\uff0c\u5bf9\u4e8e\u6784\u5efa\u4e00\u4e9b\u5168\u6808\u7684\u5de5\u7a0b\u9879\u76ee\u5f88\u6709\u5e2e\u52a9\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs186berkeley.net/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV13a411c7Qo \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a6 \u4e2a Project \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS186 - GitHub \u4e2d\u3002","title":"UCB CS186: Introduction to Database System"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/#ucb-cs186-introduction-to-database-system","text":"","title":"UCB CS186: Introduction to Database System"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u5982\u4f55\u7f16\u5199 SQL \u67e5\u8be2\uff1fSQL \u547d\u4ee4\u662f\u5982\u4f55\u88ab\u4e00\u6b65\u6b65\u62c6\u89e3\u3001\u4f18\u5316\u3001\u8f6c\u53d8\u4e3a\u4e00\u4e2a\u4e2a\u78c1\u76d8\u67e5\u8be2\u6307\u4ee4\u7684\uff1f\u5982\u4f55\u5b9e\u73b0\u9ad8\u5e76\u53d1\u7684\u6570\u636e\u5e93\uff1f\u5982\u4f55\u5b9e\u73b0\u6570\u636e\u5e93\u7684\u6545\u969c\u6062\u590d\uff1f\u4ec0\u4e48\u53c8\u662f\u975e\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff1f\u8fd9\u95e8\u8bfe\u4f1a\u5e26\u4f60\u6df1\u5165\u7406\u89e3\u5173\u7cfb\u578b\u6570\u636e\u5e93\u7684\u5185\u90e8\u7ec6\u8282\uff0c\u5e76\u5728\u638c\u63e1\u7406\u8bba\u77e5\u8bc6\u4e4b\u540e\uff0c\u52a8\u624b\u7528 Java \u5b9e\u73b0\u4e00\u4e2a\u652f\u6301 SQL \u5e76\u53d1\u67e5\u8be2\u3001B+ \u6811 Index \u548c\u6545\u969c\u6062\u590d\u7684\u5173\u7cfb\u578b\u6570\u636e\u5e93\u3002 \u4ece\u5b9e\u7528\u89d2\u5ea6\u6765\u8bf4\uff0c\u8fd9\u95e8\u8bfe\u8fd8\u4f1a\u5728\u7f16\u7a0b\u4f5c\u4e1a\u4e2d\u953b\u70bc\u4f60\u7f16\u5199 SQL \u67e5\u8be2\u4ee5\u53ca NoSQL \u67e5\u8be2\u7684\u80fd\u529b\uff0c\u5bf9\u4e8e\u6784\u5efa\u4e00\u4e9b\u5168\u6808\u7684\u5de5\u7a0b\u9879\u76ee\u5f88\u6709\u5e2e\u52a9\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs186berkeley.net/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV13a411c7Qo \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a6 \u4e2a Project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS186 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/","text":"UCB Data100: Principles and Techniques of Data Science \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A\uff0c\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u6570\u636e\u79d1\u5b66\u5165\u95e8\u8bfe\u7a0b\uff0c\u5185\u5bb9\u76f8\u5bf9\u57fa\u7840\uff0c\u8986\u76d6\u4e86\u6570\u636e\u6e05\u6d17\u3001\u7279\u5f81\u63d0\u53d6\u3001\u6570\u636e\u53ef\u89c6\u5316\u4ee5\u53ca\u673a\u5668\u5b66\u4e60\u548c\u63a8\u7406\u7684\u57fa\u7840\u5185\u5bb9\uff0c\u4e5f\u4f1a\u8bb2\u6388 Pandas, Numpy, Matplotlib \u7b49\u6570\u636e\u79d1\u5b66\u5e38\u7528\u5de5\u5177\u3002\u5176\u4e30\u5bcc\u6709\u8da3\u7684\u7f16\u7a0b\u4f5c\u4e1a\u4e5f\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u4eae\u70b9\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ds100.org/fa21/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://www.textbook.ds100.org/intro.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"UCB Data100: Principles and Techniques of Data Science"},{"location":"%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/#ucb-data100-principles-and-techniques-of-data-science","text":"","title":"UCB Data100: Principles and Techniques of Data Science"},{"location":"%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A\uff0c\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u6570\u636e\u79d1\u5b66\u5165\u95e8\u8bfe\u7a0b\uff0c\u5185\u5bb9\u76f8\u5bf9\u57fa\u7840\uff0c\u8986\u76d6\u4e86\u6570\u636e\u6e05\u6d17\u3001\u7279\u5f81\u63d0\u53d6\u3001\u6570\u636e\u53ef\u89c6\u5316\u4ee5\u53ca\u673a\u5668\u5b66\u4e60\u548c\u63a8\u7406\u7684\u57fa\u7840\u5185\u5bb9\uff0c\u4e5f\u4f1a\u8bb2\u6388 Pandas, Numpy, Matplotlib \u7b49\u6570\u636e\u79d1\u5b66\u5e38\u7528\u5de5\u5177\u3002\u5176\u4e30\u5bcc\u6709\u8da3\u7684\u7f16\u7a0b\u4f5c\u4e1a\u4e5f\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u4eae\u70b9\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ds100.org/fa21/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://www.textbook.ds100.org/intro.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/","text":"Coursera: Algorithms I & II \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aPrinceton \u5148\u4fee\u8981\u6c42\uff1aCS61A \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u8fd9\u662f Coursera \u4e0a\u8bc4\u5206\u6700\u9ad8\u7684\u7b97\u6cd5\u8bfe\u7a0b\u3002Robert Sedgewick \u6559\u6388\u6709\u4e00\u79cd\u9b54\u529b\uff0c\u53ef\u4ee5\u5c06\u65e0\u8bba\u591a\u4e48\u590d\u6742\u7684\u7b97\u6cd5\u8bb2\u5f97\u6781\u4e3a\u751f\u52a8\u6d45\u663e\u3002\u5b9e\u4e0d\u76f8\u7792\uff0c\u56f0\u6270\u6211\u591a\u5e74\u7684 KMP \u4ee5\u53ca\u7f51\u7edc\u6d41\u7b97\u6cd5\u90fd\u662f\u5728\u8fd9\u95e8\u8bfe\u4e0a\u8ba9\u6211\u8305\u585e\u987f\u5f00\u7684\uff0c\u65f6\u9694\u4e24\u5e74\u6211\u751a\u81f3\u8fd8\u80fd\u5199\u51fa\u8fd9\u4e24\u4e2a\u7b97\u6cd5\u7684\u63a8\u5bfc\u4e0e\u8bc1\u660e\u3002 \u4f60\u662f\u5426\u89c9\u5f97\u7b97\u6cd5\u5b66\u4e86\u5c31\u5fd8\u5462\uff1f\u6211\u89c9\u5f97\u8ba9\u4f60\u5b8c\u5168\u638c\u63e1\u4e00\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u5728\u4e8e\u7406\u89e3\u4e09\u70b9\uff1a \u4e3a\u4ec0\u4e48\u8fd9\u4e48\u505a\uff1f\uff08\u6b63\u786e\u6027\u63a8\u5bfc\uff0c\u6291\u6216\u662f\u6574\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u672c\u8d28\uff09 \u5982\u4f55\u5b9e\u73b0\u5b83\uff1f\uff08\u5149\u5b66\u4e0d\u7528\u5047\u628a\u5f0f\uff09 \u7528\u5b83\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff08\u5b66\u4ee5\u81f4\u7528\u624d\u662f\u771f\u672c\u4e8b\uff09 \u8fd9\u95e8\u8bfe\u7684\u6784\u6210\u5c31\u975e\u5e38\u597d\u5730\u5951\u5408\u4e86\u4e0a\u8ff0\u4e09\u4e2a\u6b65\u9aa4\u3002\u89c2\u770b\u8bfe\u7a0b\u89c6\u9891\u5e76\u4e14\u9605\u8bfb\u6559\u6388\u7684 \u5f00\u6e90\u8bfe\u672c \u6709\u52a9\u4e8e\u4f60\u7406\u89e3\u7b97\u6cd5\u7684\u672c\u8d28\uff0c\u8ba9\u4f60\u4e5f\u53ef\u4ee5\u7528\u975e\u5e38 \u751f\u52a8\u6d45\u663e\u7684\u8bdd\u8bed\u5411\u522b\u4eba\u8bb2\u8ff0\u4e3a\u4ec0\u4e48\u8fd9\u4e2a\u7b97\u6cd5\u5f97\u957f\u8fd9\u4e2a\u6837\u5b50\u3002 \u5728\u7406\u89e3\u7b97\u6cd5\u4e4b\u540e\uff0c\u4f60\u53ef\u4ee5\u9605\u8bfb\u6559\u6388\u5bf9\u4e8e\u8bfe\u7a0b\u4e2d\u8bb2\u6388\u7684\u6240\u6709\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u7684 \u4ee3\u7801\u5b9e\u73b0 \u3002 \u6ce8\u610f\uff0c\u8fd9\u4e9b\u5b9e\u73b0\u53ef\u4e0d\u662f demo \u6027\u8d28\u7684\uff0c\u800c\u662f\u5de5\u4e1a\u7ea7\u7684\u9ad8\u6548\u5b9e\u73b0\uff0c\u4ece\u6ce8\u91ca\u5230\u53d8\u91cf\u547d\u540d\u90fd\u975e\u5e38\u4e25\u8c28\uff0c\u6a21\u5757\u5316\u4e5f\u505a\u5f97\u76f8\u5f53\u597d\uff0c\u662f\u8d28\u91cf\u5f88\u9ad8\u7684\u4ee3\u7801\u3002\u6211\u4ece\u8fd9\u4e9b\u4ee3\u7801\u4e2d\u6536\u83b7\u826f\u591a\u3002 \u6700\u540e\uff0c\u5c31\u662f\u8fd9\u95e8\u8bfe\u6700\u6fc0\u52a8\u4eba\u5fc3\u7684\u90e8\u5206\u4e86\uff0c10 \u4e2a\u9ad8\u8d28\u91cf\u7684 Project\uff0c\u5e76\u4e14\u5168\u90fd\u6709\u5b9e\u9645\u95ee\u9898\u7684\u80cc\u666f\u63cf\u8ff0\uff0c\u4e30\u5bcc\u7684\u6d4b\u8bd5\u6837\u4f8b\uff0c\u81ea\u52a8\u7684\u8bc4\u5206\u7cfb\u7edf\uff08\u4ee3\u7801\u98ce\u683c\u4e5f\u662f\u8bc4\u5206\u7684\u4e00\u73af\uff09\u3002\u8ba9\u4f60\u5728\u5b9e\u9645\u751f\u6d3b\u4e2d \u9886\u7565\u7b97\u6cd5\u7684\u9b45\u529b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a Algorithm I , Algorithm II \u8bfe\u7a0b\u89c6\u9891\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://algs4.cs.princeton.edu/home/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10\u4e2aProject\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Princeton-Algorithm - GitHub \u4e2d\u3002","title":"Coursera: Algorithms I & II"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/#coursera-algorithms-i-ii","text":"","title":"Coursera: Algorithms I & II"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aPrinceton \u5148\u4fee\u8981\u6c42\uff1aCS61A \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u8fd9\u662f Coursera \u4e0a\u8bc4\u5206\u6700\u9ad8\u7684\u7b97\u6cd5\u8bfe\u7a0b\u3002Robert Sedgewick \u6559\u6388\u6709\u4e00\u79cd\u9b54\u529b\uff0c\u53ef\u4ee5\u5c06\u65e0\u8bba\u591a\u4e48\u590d\u6742\u7684\u7b97\u6cd5\u8bb2\u5f97\u6781\u4e3a\u751f\u52a8\u6d45\u663e\u3002\u5b9e\u4e0d\u76f8\u7792\uff0c\u56f0\u6270\u6211\u591a\u5e74\u7684 KMP \u4ee5\u53ca\u7f51\u7edc\u6d41\u7b97\u6cd5\u90fd\u662f\u5728\u8fd9\u95e8\u8bfe\u4e0a\u8ba9\u6211\u8305\u585e\u987f\u5f00\u7684\uff0c\u65f6\u9694\u4e24\u5e74\u6211\u751a\u81f3\u8fd8\u80fd\u5199\u51fa\u8fd9\u4e24\u4e2a\u7b97\u6cd5\u7684\u63a8\u5bfc\u4e0e\u8bc1\u660e\u3002 \u4f60\u662f\u5426\u89c9\u5f97\u7b97\u6cd5\u5b66\u4e86\u5c31\u5fd8\u5462\uff1f\u6211\u89c9\u5f97\u8ba9\u4f60\u5b8c\u5168\u638c\u63e1\u4e00\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u5728\u4e8e\u7406\u89e3\u4e09\u70b9\uff1a \u4e3a\u4ec0\u4e48\u8fd9\u4e48\u505a\uff1f\uff08\u6b63\u786e\u6027\u63a8\u5bfc\uff0c\u6291\u6216\u662f\u6574\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u672c\u8d28\uff09 \u5982\u4f55\u5b9e\u73b0\u5b83\uff1f\uff08\u5149\u5b66\u4e0d\u7528\u5047\u628a\u5f0f\uff09 \u7528\u5b83\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff08\u5b66\u4ee5\u81f4\u7528\u624d\u662f\u771f\u672c\u4e8b\uff09 \u8fd9\u95e8\u8bfe\u7684\u6784\u6210\u5c31\u975e\u5e38\u597d\u5730\u5951\u5408\u4e86\u4e0a\u8ff0\u4e09\u4e2a\u6b65\u9aa4\u3002\u89c2\u770b\u8bfe\u7a0b\u89c6\u9891\u5e76\u4e14\u9605\u8bfb\u6559\u6388\u7684 \u5f00\u6e90\u8bfe\u672c \u6709\u52a9\u4e8e\u4f60\u7406\u89e3\u7b97\u6cd5\u7684\u672c\u8d28\uff0c\u8ba9\u4f60\u4e5f\u53ef\u4ee5\u7528\u975e\u5e38 \u751f\u52a8\u6d45\u663e\u7684\u8bdd\u8bed\u5411\u522b\u4eba\u8bb2\u8ff0\u4e3a\u4ec0\u4e48\u8fd9\u4e2a\u7b97\u6cd5\u5f97\u957f\u8fd9\u4e2a\u6837\u5b50\u3002 \u5728\u7406\u89e3\u7b97\u6cd5\u4e4b\u540e\uff0c\u4f60\u53ef\u4ee5\u9605\u8bfb\u6559\u6388\u5bf9\u4e8e\u8bfe\u7a0b\u4e2d\u8bb2\u6388\u7684\u6240\u6709\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u7684 \u4ee3\u7801\u5b9e\u73b0 \u3002 \u6ce8\u610f\uff0c\u8fd9\u4e9b\u5b9e\u73b0\u53ef\u4e0d\u662f demo \u6027\u8d28\u7684\uff0c\u800c\u662f\u5de5\u4e1a\u7ea7\u7684\u9ad8\u6548\u5b9e\u73b0\uff0c\u4ece\u6ce8\u91ca\u5230\u53d8\u91cf\u547d\u540d\u90fd\u975e\u5e38\u4e25\u8c28\uff0c\u6a21\u5757\u5316\u4e5f\u505a\u5f97\u76f8\u5f53\u597d\uff0c\u662f\u8d28\u91cf\u5f88\u9ad8\u7684\u4ee3\u7801\u3002\u6211\u4ece\u8fd9\u4e9b\u4ee3\u7801\u4e2d\u6536\u83b7\u826f\u591a\u3002 \u6700\u540e\uff0c\u5c31\u662f\u8fd9\u95e8\u8bfe\u6700\u6fc0\u52a8\u4eba\u5fc3\u7684\u90e8\u5206\u4e86\uff0c10 \u4e2a\u9ad8\u8d28\u91cf\u7684 Project\uff0c\u5e76\u4e14\u5168\u90fd\u6709\u5b9e\u9645\u95ee\u9898\u7684\u80cc\u666f\u63cf\u8ff0\uff0c\u4e30\u5bcc\u7684\u6d4b\u8bd5\u6837\u4f8b\uff0c\u81ea\u52a8\u7684\u8bc4\u5206\u7cfb\u7edf\uff08\u4ee3\u7801\u98ce\u683c\u4e5f\u662f\u8bc4\u5206\u7684\u4e00\u73af\uff09\u3002\u8ba9\u4f60\u5728\u5b9e\u9645\u751f\u6d3b\u4e2d \u9886\u7565\u7b97\u6cd5\u7684\u9b45\u529b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a Algorithm I , Algorithm II \u8bfe\u7a0b\u89c6\u9891\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://algs4.cs.princeton.edu/home/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10\u4e2aProject\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Princeton-Algorithm - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/","text":"CS170: Efficient Algorithms and Intractable Problems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61B, CS70 \u7f16\u7a0b\u8bed\u8a00\uff1aLaTeX \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u7b97\u6cd5\u8bbe\u8ba1\u8bfe\uff0c\u66f4\u6ce8\u91cd\u7b97\u6cd5\u7684\u7406\u8bba\u57fa\u7840\u4e0e\u590d\u6742\u5ea6\u5206\u6790\u3002\u8bfe\u7a0b\u5185\u5bb9\u6db5\u76d6\u4e86\u5206\u6cbb\u3001\u56fe\u7b97\u6cd5\u3001\u6700\u77ed\u8def\u3001\u751f\u6210\u6811\u3001\u8d2a\u5fc3\u3001\u52a8\u89c4\u3001\u5e76\u67e5\u96c6\u3001\u7ebf\u6027\u89c4\u5212\u3001\u7f51\u7edc\u6d41\u3001NP \u95ee\u9898\u3001\u968f\u673a\u7b97\u6cd5\u3001\u54c8\u5e0c\u7b97\u6cd5\u7b49\u7b49\u3002 \u8fd9\u95e8\u8bfe\u7684\u6559\u6750\u5199\u7684\u5f88\u597d\uff0c\u8bc1\u660e\u6d45\u663e\u6613\u61c2\uff0c\u975e\u5e38\u9002\u5408\u4f5c\u4e3a\u5de5\u5177\u4e66\u67e5\u9605\u3002\u53e6\u5916\uff0c\u8fd9\u95e8\u8bfe\u53ea\u6709\u4e66\u9762\u4f5c\u4e1a\uff0c\u5e76\u4e14\u63a8\u8350\u7528 LaTeX \u7f16\u5199\uff0c\u5927\u5bb6\u53ef\u4ee5\u501f\u6b64\u673a\u4f1a\u953b\u70bc\u81ea\u5df1\u7684 LaTeX \u6280\u5de7\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs170.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1BU4y1b7RK \u8bfe\u7a0b\u6559\u6750\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a13 \u6b21\u4e66\u9762\u4f5c\u4e1a\uff0c\u7528 LaTeX \u7f16\u5199 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS170 - GitHub \u4e2d\u3002","title":"UCB CS170: Efficient Algorithms and Intractable Problems"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/#cs170-efficient-algorithms-and-intractable-problems","text":"","title":"CS170: Efficient Algorithms and Intractable Problems"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61B, CS70 \u7f16\u7a0b\u8bed\u8a00\uff1aLaTeX \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u7b97\u6cd5\u8bbe\u8ba1\u8bfe\uff0c\u66f4\u6ce8\u91cd\u7b97\u6cd5\u7684\u7406\u8bba\u57fa\u7840\u4e0e\u590d\u6742\u5ea6\u5206\u6790\u3002\u8bfe\u7a0b\u5185\u5bb9\u6db5\u76d6\u4e86\u5206\u6cbb\u3001\u56fe\u7b97\u6cd5\u3001\u6700\u77ed\u8def\u3001\u751f\u6210\u6811\u3001\u8d2a\u5fc3\u3001\u52a8\u89c4\u3001\u5e76\u67e5\u96c6\u3001\u7ebf\u6027\u89c4\u5212\u3001\u7f51\u7edc\u6d41\u3001NP \u95ee\u9898\u3001\u968f\u673a\u7b97\u6cd5\u3001\u54c8\u5e0c\u7b97\u6cd5\u7b49\u7b49\u3002 \u8fd9\u95e8\u8bfe\u7684\u6559\u6750\u5199\u7684\u5f88\u597d\uff0c\u8bc1\u660e\u6d45\u663e\u6613\u61c2\uff0c\u975e\u5e38\u9002\u5408\u4f5c\u4e3a\u5de5\u5177\u4e66\u67e5\u9605\u3002\u53e6\u5916\uff0c\u8fd9\u95e8\u8bfe\u53ea\u6709\u4e66\u9762\u4f5c\u4e1a\uff0c\u5e76\u4e14\u63a8\u8350\u7528 LaTeX \u7f16\u5199\uff0c\u5927\u5bb6\u53ef\u4ee5\u501f\u6b64\u673a\u4f1a\u953b\u70bc\u81ea\u5df1\u7684 LaTeX \u6280\u5de7\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs170.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1BU4y1b7RK \u8bfe\u7a0b\u6559\u6750\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a13 \u6b21\u4e66\u9762\u4f5c\u4e1a\uff0c\u7528 LaTeX \u7f16\u5199","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS170 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/","text":"CS61B: Data Structures and Algorithms \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u7b2c\u4e8c\u95e8\u8bfe\u7a0b\uff0c\u6ce8\u91cd\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u7684\u8bbe\u8ba1\uff0c\u540c\u65f6\u8ba9\u5b66\u751f\u6709\u673a\u4f1a\u63a5\u89e6\u4e0a\u5343\u884c\u7684\u5de5\u7a0b\u4ee3\u7801\uff0c\u901a\u8fc7 Java \u521d\u6b65\u9886\u4f1a\u8f6f\u4ef6\u5de5\u7a0b\u7684\u601d\u60f3\u3002 \u6211\u4e0a\u7684\u662f 2018 \u5e74\u6625\u5b63\u5b66\u671f\u7684\u7248\u672c\uff0c\u8be5\u8bfe\u7684\u5f00\u8bfe\u8001\u5e08 Josh Hug \u6559\u6388\u6177\u6168\u5730\u5c06 autograder \u5f00\u6e90\u4e86\uff0c\u5927\u5bb6\u53ef\u4ee5\u901a\u8fc7\u7f51\u7ad9\u516c\u5f00\u7684\u9080\u8bf7\u7801\u5728 gradescope \u514d\u8d39\u52a0\u5165\u8bfe\u7a0b\uff0c\u4ece\u800c\u65b9\u4fbf\u5730\u6d4b\u8bc4\u81ea\u5df1\u7684\u4ee3\u7801\u3002 \u8fd9\u95e8\u8bfe\u6240\u6709\u7684\u7f16\u7a0b\u4f5c\u4e1a\u90fd\u662f\u4f7f\u7528 Java \u5b8c\u6210\u7684\u3002\u6ca1\u6709 Java \u57fa\u7840\u7684\u540c\u5b66\u4e5f\u4e0d\u7528\u62c5\u5fc3\uff0c\u8bfe\u7a0b\u4f1a\u6709\u4fdd\u59c6\u7ea7\u7684\u6559\u7a0b\uff0c\u4ece IDEA\uff08\u4e00\u6b3e\u4e3b\u6d41\u7684 Java \u7f16\u7a0b\u73af\u5883\uff09\u7684\u914d\u7f6e\u8bb2\u8d77\uff0c\u628a Java \u7684\u6838\u5fc3\u8bed\u6cd5\u4e0e\u7279\u6027\u4e8b\u65e0\u5de8\u7ec6\u5730\u8bb2\u6388\uff0c\u5927\u5bb6\u5b8c\u5168\u4e0d\u7528\u62c5\u5fc3\u8ddf\u4e0d\u4e0a\u7684\u95ee\u9898\u3002 \u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u8d28\u91cf\u4e5f\u662f\u7edd\u7edd\u5b50\u300214 \u4e2a lab \u4f1a\u8ba9\u4f60\u81ea\u5df1\u5b9e\u73b0\u8bfe\u4e0a\u6240\u8bb2\u7684\u7edd\u5927\u90e8\u5206\u6570\u636e\u7ed3\u6784\uff0c10 \u4e2a Homework \u4f1a\u8ba9\u4f60\u8fd0\u7528\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff0c \u53e6\u5916\u8fd8\u6709 3 \u4e2a Project \u66f4\u662f\u8ba9\u4f60\u6709\u673a\u4f1a\u63a5\u89e6\u4e0a\u5343\u884c\u7684\u5de5\u7a0b\u4ee3\u7801\uff0c\u5728\u5b9e\u6218\u4e2d\u78e8\u7ec3\u81ea\u5df1\u7684 Java \u80fd\u529b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://sp18.datastructur.es/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://sp18.datastructur.es/ \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u6bcf\u5e74\u7565\u6709\u4e0d\u540c\uff0c18 \u5e74\u6625\u5b63\u5b66\u671f\u6709 14 \u4e2a Lab\uff0c10 \u4e2a Homework\u4ee5\u53ca 3 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS61B - GitHub \u4e2d\u3002","title":"UCB CS61B: Data Structures and Algorithms"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/#cs61b-data-structures-and-algorithms","text":"","title":"CS61B: Data Structures and Algorithms"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u7b2c\u4e8c\u95e8\u8bfe\u7a0b\uff0c\u6ce8\u91cd\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u7684\u8bbe\u8ba1\uff0c\u540c\u65f6\u8ba9\u5b66\u751f\u6709\u673a\u4f1a\u63a5\u89e6\u4e0a\u5343\u884c\u7684\u5de5\u7a0b\u4ee3\u7801\uff0c\u901a\u8fc7 Java \u521d\u6b65\u9886\u4f1a\u8f6f\u4ef6\u5de5\u7a0b\u7684\u601d\u60f3\u3002 \u6211\u4e0a\u7684\u662f 2018 \u5e74\u6625\u5b63\u5b66\u671f\u7684\u7248\u672c\uff0c\u8be5\u8bfe\u7684\u5f00\u8bfe\u8001\u5e08 Josh Hug \u6559\u6388\u6177\u6168\u5730\u5c06 autograder \u5f00\u6e90\u4e86\uff0c\u5927\u5bb6\u53ef\u4ee5\u901a\u8fc7\u7f51\u7ad9\u516c\u5f00\u7684\u9080\u8bf7\u7801\u5728 gradescope \u514d\u8d39\u52a0\u5165\u8bfe\u7a0b\uff0c\u4ece\u800c\u65b9\u4fbf\u5730\u6d4b\u8bc4\u81ea\u5df1\u7684\u4ee3\u7801\u3002 \u8fd9\u95e8\u8bfe\u6240\u6709\u7684\u7f16\u7a0b\u4f5c\u4e1a\u90fd\u662f\u4f7f\u7528 Java \u5b8c\u6210\u7684\u3002\u6ca1\u6709 Java \u57fa\u7840\u7684\u540c\u5b66\u4e5f\u4e0d\u7528\u62c5\u5fc3\uff0c\u8bfe\u7a0b\u4f1a\u6709\u4fdd\u59c6\u7ea7\u7684\u6559\u7a0b\uff0c\u4ece IDEA\uff08\u4e00\u6b3e\u4e3b\u6d41\u7684 Java \u7f16\u7a0b\u73af\u5883\uff09\u7684\u914d\u7f6e\u8bb2\u8d77\uff0c\u628a Java \u7684\u6838\u5fc3\u8bed\u6cd5\u4e0e\u7279\u6027\u4e8b\u65e0\u5de8\u7ec6\u5730\u8bb2\u6388\uff0c\u5927\u5bb6\u5b8c\u5168\u4e0d\u7528\u62c5\u5fc3\u8ddf\u4e0d\u4e0a\u7684\u95ee\u9898\u3002 \u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u8d28\u91cf\u4e5f\u662f\u7edd\u7edd\u5b50\u300214 \u4e2a lab \u4f1a\u8ba9\u4f60\u81ea\u5df1\u5b9e\u73b0\u8bfe\u4e0a\u6240\u8bb2\u7684\u7edd\u5927\u90e8\u5206\u6570\u636e\u7ed3\u6784\uff0c10 \u4e2a Homework \u4f1a\u8ba9\u4f60\u8fd0\u7528\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff0c \u53e6\u5916\u8fd8\u6709 3 \u4e2a Project \u66f4\u662f\u8ba9\u4f60\u6709\u673a\u4f1a\u63a5\u89e6\u4e0a\u5343\u884c\u7684\u5de5\u7a0b\u4ee3\u7801\uff0c\u5728\u5b9e\u6218\u4e2d\u78e8\u7ec3\u81ea\u5df1\u7684 Java \u80fd\u529b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://sp18.datastructur.es/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://sp18.datastructur.es/ \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u6bcf\u5e74\u7565\u6709\u4e0d\u540c\uff0c18 \u5e74\u6625\u5b63\u5b66\u671f\u6709 14 \u4e2a Lab\uff0c10 \u4e2a Homework\u4ee5\u53ca 3 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS61B - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/","text":"CS189: Introduction to Machine Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS188, CS70 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u6211\u6ca1\u6709\u7cfb\u7edf\u4e0a\u8fc7\uff0c\u53ea\u662f\u628a\u5b83\u7684\u8bfe\u7a0b notes \u4f5c\u4e3a\u5de5\u5177\u4e66\u67e5\u9605\u3002\u4e0d\u8fc7\u4ece\u8bfe\u7a0b\u7f51\u7ad9\u4e0a\u6765\u770b\uff0c\u5b83\u6bd4 CS229 \u597d\u7684\u662f\u5f00\u6e90\u4e86\u6240\u6709 homework \u7684\u4ee3\u7801\u4ee5\u53ca gradescope \u7684 autograder\u3002\u540c\u6837\uff0c\u8fd9\u95e8\u8bfe\u8bb2\u5f97\u76f8\u5f53\u7406\u8bba\u4e14\u6df1\u5165\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.eecs189.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PLOOm2AoWIPEyZazQVnIcaK2KnezpGZV-X \u8bfe\u7a0b\u6559\u6750\uff1a https://www.eecs189.org/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://www.eecs189.org/","title":"UCB CS189: Introduction to Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/#cs189-introduction-to-machine-learning","text":"","title":"CS189: Introduction to Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS188, CS70 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u6211\u6ca1\u6709\u7cfb\u7edf\u4e0a\u8fc7\uff0c\u53ea\u662f\u628a\u5b83\u7684\u8bfe\u7a0b notes \u4f5c\u4e3a\u5de5\u5177\u4e66\u67e5\u9605\u3002\u4e0d\u8fc7\u4ece\u8bfe\u7a0b\u7f51\u7ad9\u4e0a\u6765\u770b\uff0c\u5b83\u6bd4 CS229 \u597d\u7684\u662f\u5f00\u6e90\u4e86\u6240\u6709 homework \u7684\u4ee3\u7801\u4ee5\u53ca gradescope \u7684 autograder\u3002\u540c\u6837\uff0c\u8fd9\u95e8\u8bfe\u8bb2\u5f97\u76f8\u5f53\u7406\u8bba\u4e14\u6df1\u5165\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.eecs189.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PLOOm2AoWIPEyZazQVnIcaK2KnezpGZV-X \u8bfe\u7a0b\u6559\u6750\uff1a https://www.eecs189.org/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://www.eecs189.org/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/","text":"CS229: Machine Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u9ad8\u6570\uff0c\u6982\u7387\u8bba\uff0cPython\uff0c\u9700\u8981\u8f83\u6df1\u539a\u7684\u6570\u5b66\u529f\u5e95 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u540c\u6837\u662f\u5434\u6069\u8fbe\u8bb2\u6388\uff0c\u4f46\u662f\u8fd9\u662f\u4e00\u95e8\u7814\u7a76\u751f\u8bfe\u7a0b\uff0c\u6240\u4ee5\u66f4\u504f\u91cd\u6570\u5b66\u7406\u8bba\uff0c\u4e0d\u6ee1\u8db3\u4e8e\u8c03\u5305\u800c\u60f3\u6df1\u5165\u7406\u89e3\u7b97\u6cd5\u672c\u8d28\uff0c\u6216\u8005\u6709\u5fd7\u4e8e\u4ece\u4e8b\u673a\u5668\u5b66\u4e60\u7406\u8bba\u7814\u7a76\u7684\u540c\u5b66\u53ef\u4ee5\u5b66\u4e60\u8fd9\u95e8\u8bfe\u7a0b\u3002\u8bfe\u7a0b\u7f51\u7ad9\u4e0a\u63d0\u4f9b\u4e86\u6240\u6709\u7684\u8bfe\u7a0b notes\uff0c\u5199\u5f97\u975e\u5e38\u4e13\u4e1a\u4e14\u7406\u8bba\uff0c\u9700\u8981\u4e00\u5b9a\u7684\u6570\u5b66\u529f\u5e95\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://cs229.stanford.edu/syllabus.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1JE411w7Ub \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0\uff0c\u8bfe\u7a0b notes \u5199\u5f97\u975e\u5e38\u597d \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e0d\u5bf9\u516c\u4f17\u5f00\u653e \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS229 - GitHub \u4e2d\u3002","title":"Stanford CS229: Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/#cs229-machine-learning","text":"","title":"CS229: Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u9ad8\u6570\uff0c\u6982\u7387\u8bba\uff0cPython\uff0c\u9700\u8981\u8f83\u6df1\u539a\u7684\u6570\u5b66\u529f\u5e95 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u540c\u6837\u662f\u5434\u6069\u8fbe\u8bb2\u6388\uff0c\u4f46\u662f\u8fd9\u662f\u4e00\u95e8\u7814\u7a76\u751f\u8bfe\u7a0b\uff0c\u6240\u4ee5\u66f4\u504f\u91cd\u6570\u5b66\u7406\u8bba\uff0c\u4e0d\u6ee1\u8db3\u4e8e\u8c03\u5305\u800c\u60f3\u6df1\u5165\u7406\u89e3\u7b97\u6cd5\u672c\u8d28\uff0c\u6216\u8005\u6709\u5fd7\u4e8e\u4ece\u4e8b\u673a\u5668\u5b66\u4e60\u7406\u8bba\u7814\u7a76\u7684\u540c\u5b66\u53ef\u4ee5\u5b66\u4e60\u8fd9\u95e8\u8bfe\u7a0b\u3002\u8bfe\u7a0b\u7f51\u7ad9\u4e0a\u63d0\u4f9b\u4e86\u6240\u6709\u7684\u8bfe\u7a0b notes\uff0c\u5199\u5f97\u975e\u5e38\u4e13\u4e1a\u4e14\u7406\u8bba\uff0c\u9700\u8981\u4e00\u5b9a\u7684\u6570\u5b66\u529f\u5e95\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://cs229.stanford.edu/syllabus.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1JE411w7Ub \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0\uff0c\u8bfe\u7a0b notes \u5199\u5f97\u975e\u5e38\u597d \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e0d\u5bf9\u516c\u4f17\u5f00\u653e","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS229 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/","text":"Coursera: Machine Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aAI \u5165\u95e8 + \u719f\u7ec3\u4f7f\u7528 Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8bf4\u8d77\u5434\u6069\u8fbe\uff0c\u5728 AI \u5c4a\u5e94\u8be5\u65e0\u4eba\u4e0d\u6653\u3002\u4ed6\u662f\u8457\u540d\u5728\u7ebf\u6559\u80b2\u5e73\u53f0 Coursera \u7684\u521b\u59cb\u4eba\u4e4b\u4e00\uff0c\u540c\u65f6\u4e5f\u662f Stanford \u7684\u7f51\u7ea2\u6559\u6388\u3002\u8fd9\u95e8\u673a\u5668\u5b66\u4e60\u5165\u95e8\u8bfe\u5e94\u8be5\u7b97\u5f97\u4e0a\u662f\u4ed6\u7684\u6210\u540d\u4f5c\u4e4b\u4e00\uff08\u53e6\u4e00\u4e2a\u662f\u6df1\u5ea6\u5b66\u4e60\u8bfe\u7a0b\uff09\uff0c\u5728 Coursera \u4e0a\u62e5\u6709\u6570\u5341\u4e07\u7684\u5b66\u4e60\u8005\uff08\u6ce8\u610f\u8fd9\u662f\u82b1\u94b1\u4e70\u4e86\u8bc1\u4e66\u7684\u4eba\uff0c\u4e00\u4e2a\u8bc1\u4e66\u51e0\u767e\u5200\uff09\uff0c\u767d\u5ad6\u5b66\u4e60\u8005\u6570\u91cf\u5e94\u8be5\u662f\u53e6\u4e00\u4e2a\u6570\u91cf\u7ea7\u4e86\u3002 \u8fd9\u95e8\u8bfe\u5bf9\u65b0\u624b\u6781\u5176\u53cb\u597d\uff0c\u5434\u6069\u8fbe\u62e5\u6709\u628a\u673a\u5668\u5b66\u4e60\u8bb2\u6210 1+1=2 \u4e00\u6837\u76f4\u767d\u7684\u80fd\u529b\u3002\u4f60\u5c06\u4f1a\u5b66\u4e60\u5230\u7ebf\u6027\u56de\u5f52\u3001\u903b\u8f91\u56de\u5f52\u3001\u652f\u6301\u5411\u91cf\u673a\u3001\u65e0\u76d1\u7763\u5b66\u4e60\u3001\u964d\u7ef4\u3001\u5f02\u5e38\u68c0\u6d4b\u548c\u63a8\u8350\u7cfb\u7edf\u7b49\u7b49\u77e5\u8bc6\uff0c\u5e76\u4e14\u5728\u7f16\u7a0b\u5b9e\u8df5\u4e2d\u592f\u5b9e\u81ea\u5df1\u7684\u7406\u89e3\u3002\u4f5c\u4e1a\u8d28\u91cf\u81ea\u7136\u4e0d\u5fc5\u591a\u8a00\uff0c\u4fdd\u59c6\u7ea7\u4ee3\u7801\u6846\u67b6\uff0c\u4f5c\u4e1a\u80cc\u666f\u4e5f\u591a\u53d6\u81ea\u751f\u6d3b\uff0c\u8ba9\u4eba\u5b66\u4ee5\u81f4\u7528\u3002 \u5f53\u7136\uff0c\u8fd9\u95e8\u8bfe\u4f5c\u4e3a\u4e00\u4e2a\u516c\u5f00\u6155\u8bfe\uff0c\u96be\u5ea6\u4e0a\u523b\u610f\u653e\u4f4e\u4e86\u4e9b\uff0c\u5f88\u591a\u6570\u5b66\u63a8\u5bfc\u5927\u591a\u4e00\u5e26\u800c\u8fc7\uff0c\u5982\u679c\u4f60\u6709\u5fd7\u4e8e\u4ece\u4e8b\u673a\u5668\u5b66\u4e60\u7406\u8bba\u7814\u7a76\uff0c\u60f3\u8981\u6df1\u7a76\u8fd9\u4e9b\u7b97\u6cd5\u80cc\u540e\u7684\u6570\u5b66\u7406\u8bba\uff0c\u53ef\u4ee5\u53c2\u8003 CS229 \u548c CS189 \u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/learn/machine-learning \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b \u5f53\u65f6\u91cd\u88c5\u7cfb\u7edf\u8bef\u5220\u4e86\u6587\u4ef6\uff0c\u6211\u7684\u4ee3\u7801\u5b9e\u73b0\u6d88\u5931\u5728\u4e86\u78c1\u76d8\u7684 01 \u4e32\u4e2d\u3002\u4e0d\u8fc7\u8fd9\u95e8\u8bfe\u7531\u4e8e\u592a\u8fc7\u51fa\u540d\uff0c\u7f51\u4e0a\u60f3\u641c\u4e0d\u5230\u7b54\u6848\u90fd\u96be\uff0c\u76f8\u5173\u8bfe\u7a0b\u8d44\u6599 Coursera \u4e0a\u4e5f\u4e00\u5e94\u4ff1\u5168\u3002","title":"Coursera: Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/#coursera-machine-learning","text":"","title":"Coursera: Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aAI \u5165\u95e8 + \u719f\u7ec3\u4f7f\u7528 Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8bf4\u8d77\u5434\u6069\u8fbe\uff0c\u5728 AI \u5c4a\u5e94\u8be5\u65e0\u4eba\u4e0d\u6653\u3002\u4ed6\u662f\u8457\u540d\u5728\u7ebf\u6559\u80b2\u5e73\u53f0 Coursera \u7684\u521b\u59cb\u4eba\u4e4b\u4e00\uff0c\u540c\u65f6\u4e5f\u662f Stanford \u7684\u7f51\u7ea2\u6559\u6388\u3002\u8fd9\u95e8\u673a\u5668\u5b66\u4e60\u5165\u95e8\u8bfe\u5e94\u8be5\u7b97\u5f97\u4e0a\u662f\u4ed6\u7684\u6210\u540d\u4f5c\u4e4b\u4e00\uff08\u53e6\u4e00\u4e2a\u662f\u6df1\u5ea6\u5b66\u4e60\u8bfe\u7a0b\uff09\uff0c\u5728 Coursera \u4e0a\u62e5\u6709\u6570\u5341\u4e07\u7684\u5b66\u4e60\u8005\uff08\u6ce8\u610f\u8fd9\u662f\u82b1\u94b1\u4e70\u4e86\u8bc1\u4e66\u7684\u4eba\uff0c\u4e00\u4e2a\u8bc1\u4e66\u51e0\u767e\u5200\uff09\uff0c\u767d\u5ad6\u5b66\u4e60\u8005\u6570\u91cf\u5e94\u8be5\u662f\u53e6\u4e00\u4e2a\u6570\u91cf\u7ea7\u4e86\u3002 \u8fd9\u95e8\u8bfe\u5bf9\u65b0\u624b\u6781\u5176\u53cb\u597d\uff0c\u5434\u6069\u8fbe\u62e5\u6709\u628a\u673a\u5668\u5b66\u4e60\u8bb2\u6210 1+1=2 \u4e00\u6837\u76f4\u767d\u7684\u80fd\u529b\u3002\u4f60\u5c06\u4f1a\u5b66\u4e60\u5230\u7ebf\u6027\u56de\u5f52\u3001\u903b\u8f91\u56de\u5f52\u3001\u652f\u6301\u5411\u91cf\u673a\u3001\u65e0\u76d1\u7763\u5b66\u4e60\u3001\u964d\u7ef4\u3001\u5f02\u5e38\u68c0\u6d4b\u548c\u63a8\u8350\u7cfb\u7edf\u7b49\u7b49\u77e5\u8bc6\uff0c\u5e76\u4e14\u5728\u7f16\u7a0b\u5b9e\u8df5\u4e2d\u592f\u5b9e\u81ea\u5df1\u7684\u7406\u89e3\u3002\u4f5c\u4e1a\u8d28\u91cf\u81ea\u7136\u4e0d\u5fc5\u591a\u8a00\uff0c\u4fdd\u59c6\u7ea7\u4ee3\u7801\u6846\u67b6\uff0c\u4f5c\u4e1a\u80cc\u666f\u4e5f\u591a\u53d6\u81ea\u751f\u6d3b\uff0c\u8ba9\u4eba\u5b66\u4ee5\u81f4\u7528\u3002 \u5f53\u7136\uff0c\u8fd9\u95e8\u8bfe\u4f5c\u4e3a\u4e00\u4e2a\u516c\u5f00\u6155\u8bfe\uff0c\u96be\u5ea6\u4e0a\u523b\u610f\u653e\u4f4e\u4e86\u4e9b\uff0c\u5f88\u591a\u6570\u5b66\u63a8\u5bfc\u5927\u591a\u4e00\u5e26\u800c\u8fc7\uff0c\u5982\u679c\u4f60\u6709\u5fd7\u4e8e\u4ece\u4e8b\u673a\u5668\u5b66\u4e60\u7406\u8bba\u7814\u7a76\uff0c\u60f3\u8981\u6df1\u7a76\u8fd9\u4e9b\u7b97\u6cd5\u80cc\u540e\u7684\u6570\u5b66\u7406\u8bba\uff0c\u53ef\u4ee5\u53c2\u8003 CS229 \u548c CS189 \u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/learn/machine-learning \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/#_3","text":"\u5f53\u65f6\u91cd\u88c5\u7cfb\u7edf\u8bef\u5220\u4e86\u6587\u4ef6\uff0c\u6211\u7684\u4ee3\u7801\u5b9e\u73b0\u6d88\u5931\u5728\u4e86\u78c1\u76d8\u7684 01 \u4e32\u4e2d\u3002\u4e0d\u8fc7\u8fd9\u95e8\u8bfe\u7531\u4e8e\u592a\u8fc7\u51fa\u540d\uff0c\u7f51\u4e0a\u60f3\u641c\u4e0d\u5230\u7b54\u6848\u90fd\u96be\uff0c\u76f8\u5173\u8bfe\u7a0b\u8d44\u6599 Coursera \u4e0a\u4e5f\u4e00\u5e94\u4ff1\u5168\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/","text":"CMU 10-414/714: Deep Learning Systems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1a\u7cfb\u7edf\u5165\u95e8(eg.15-213)\u3001\u6df1\u5ea6\u5b66\u4e60\u5165\u95e8\u3001\u57fa\u672c\u7684\u6570\u5b66\u77e5\u8bc6 \u7f16\u7a0b\u8bed\u8a00\uff1aN/A\uff08\u636e\u8bfe\u7a0b\u4e3b\u9875\uff0c\u8981\u6c42\u719f\u6089Python\u3001C/C++\uff09 \u8bfe\u7a0b\u96be\u5ea6\uff1aN/A \u9884\u8ba1\u5b66\u65f6\uff1aN/A \u8fd9\u662f CMU 2022\u5e74\u79cb\u5b63\u5b66\u671f\u5f00\u8bbe\u7684\u4e00\u95e8\u65b0\u8bfe\uff0c\u805a\u7126\u4e8e\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u8bfe\u7a0b Project \u4f1a\u5b9e\u73b0\u4e00\u4e2a\u8ff7\u4f60\u7684\u7c7b\u4f3c\u4e8e Pytorch \u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\u8bfe\u7a0b\u514d\u8d39\u63d0\u4f9b\u4e86\u9762\u5411\u975e CMU \u5b66\u751f\u7684\u5728\u7ebf\u7248\u672c\uff0c9\u670813\u65e5\u6b63\u5f0f\u6388\u8bfe\uff0c\u4f5c\u8005\u6301\u7eed\u8ddf\u8fdb\u4e2d\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://dlsyscourse.org \u8bfe\u7a0b\u89c6\u9891\uff1aN/A \u8bfe\u7a0b\u6559\u6750\uff1aN/A \u8bfe\u7a0b\u4f5c\u4e1a\uff1aTBA \u8d44\u6e90\u6c47\u603b TBA","title":"CMU 10-414/714: Deep Learning Systems"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/#cmu-10-414714-deep-learning-systems","text":"","title":"CMU 10-414/714: Deep Learning Systems"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1a\u7cfb\u7edf\u5165\u95e8(eg.15-213)\u3001\u6df1\u5ea6\u5b66\u4e60\u5165\u95e8\u3001\u57fa\u672c\u7684\u6570\u5b66\u77e5\u8bc6 \u7f16\u7a0b\u8bed\u8a00\uff1aN/A\uff08\u636e\u8bfe\u7a0b\u4e3b\u9875\uff0c\u8981\u6c42\u719f\u6089Python\u3001C/C++\uff09 \u8bfe\u7a0b\u96be\u5ea6\uff1aN/A \u9884\u8ba1\u5b66\u65f6\uff1aN/A \u8fd9\u662f CMU 2022\u5e74\u79cb\u5b63\u5b66\u671f\u5f00\u8bbe\u7684\u4e00\u95e8\u65b0\u8bfe\uff0c\u805a\u7126\u4e8e\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u8bfe\u7a0b Project \u4f1a\u5b9e\u73b0\u4e00\u4e2a\u8ff7\u4f60\u7684\u7c7b\u4f3c\u4e8e Pytorch \u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\u8bfe\u7a0b\u514d\u8d39\u63d0\u4f9b\u4e86\u9762\u5411\u975e CMU \u5b66\u751f\u7684\u5728\u7ebf\u7248\u672c\uff0c9\u670813\u65e5\u6b63\u5f0f\u6388\u8bfe\uff0c\u4f5c\u8005\u6301\u7eed\u8ddf\u8fdb\u4e2d\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://dlsyscourse.org \u8bfe\u7a0b\u89c6\u9891\uff1aN/A \u8bfe\u7a0b\u6559\u6750\uff1aN/A \u8bfe\u7a0b\u4f5c\u4e1a\uff1aTBA","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/#_3","text":"TBA","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/","text":"Machine Learning Compilation \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aBilibili \u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60/\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30\u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u662f\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u9886\u57df\u7684\u9876\u5c16\u5b66\u8005\u9648\u5929\u5947\u57282022\u5e74\u6691\u671f\u5f00\u8bbe\u7684\u4e00\u95e8\u5728\u7ebf\u8bfe\u7a0b\u3002\u5176\u5b9e\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u65e0\u8bba\u5728\u5de5\u4e1a\u754c\u8fd8\u662f\u5b66\u672f\u754c\u4ecd\u7136\u662f\u4e00\u4e2a\u975e\u5e38\u524d\u6cbf\u4e14\u5feb\u901f\u66f4\u8fed\u7684\u9886\u57df\uff0c\u56fd\u5185\u5916\u6b64\u524d\u8fd8\u6ca1\u6709\u4e3a\u8fd9\u4e2a\u65b9\u5411\u4e13\u95e8\u5f00\u8bbe\u7684\u76f8\u5173\u8bfe\u7a0b\u3002\u56e0\u6b64\u5982\u679c\u5bf9\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u611f\u5174\u8da3\u60f3\u6709\u4e2a\u5168\u8c8c\u6027\u7684\u611f\u77e5\u7684\u8bdd\uff0c\u53ef\u4ee5\u5b66\u4e60\u4e00\u4e0b\u8fd9\u95e8\u8bfe\u3002 \u672c\u8bfe\u7a0b\u4e3b\u8981\u4ee5 Apache TVM \u8fd9\u4e00\u4e3b\u6d41\u7684\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u6846\u67b6\u4e3a\u4f8b\uff08\u9648\u5929\u5947\u662f\u8fd9\u4e2a\u6846\u67b6\u7684\u521b\u59cb\u4eba\u4e4b\u4e00\uff09\uff0c\u805a\u7126\u4e8e\u5982\u4f55\u5c06\u5f00\u53d1\u6a21\u5f0f\u4e0b\uff08\u5982 Tensorflow, Pytorch, Jax\uff09\u7684\u5404\u7c7b\u673a\u5668\u5b66\u4e60\u6a21\u578b\uff0c\u901a\u8fc7\u4e00\u5957\u666e\u9002\u7684\u62bd\u8c61\u548c\u4f18\u5316\u7b97\u6cd5\uff0c\u53d8\u6362\u4e3a\u62e5\u6709\u66f4\u9ad8\u6027\u80fd\u5e76\u4e14\u9002\u914d\u5404\u7c7b\u5e95\u5c42\u786c\u4ef6\u7684\u90e8\u7f72\u6a21\u5f0f\u3002\u8bfe\u7a0b\u8bb2\u6388\u7684\u77e5\u8bc6\u70b9\u90fd\u662f\u76f8\u5bf9 High-Level \u7684\u5b8f\u89c2\u6982\u5ff5\uff0c\u540c\u65f6\u6bcf\u8282\u8bfe\u90fd\u4f1a\u6709\u4e00\u4e2a\u914d\u5957\u7684 Jupyter Notebook \u6765\u901a\u8fc7\u5177\u4f53\u7684\u4ee3\u7801\u8bb2\u89e3\u77e5\u8bc6\u70b9\uff0c\u56e0\u6b64\u5982\u679c\u4ece\u4e8b TVM \u76f8\u5173\u7684\u7f16\u7a0b\u5f00\u53d1\u7684\u8bdd\uff0c\u8fd9\u95e8\u8bfe\u6709\u4e30\u5bcc\u4e14\u89c4\u8303\u7684\u4ee3\u7801\u793a\u4f8b\u4ee5\u4f9b\u53c2\u8003\u3002 \u6240\u6709\u7684\u8bfe\u7a0b\u8d44\u6e90\u5168\u90e8\u5f00\u6e90\u5e76\u4e14\u6709\u4e2d\u6587\u548c\u82f1\u6587\u4e24\u4e2a\u7248\u672c\uff0cB\u7ad9\u548c\u6cb9\u7ba1\u5206\u522b\u6709\u4e2d\u6587\u548c\u82f1\u6587\u7684\u8bfe\u7a0b\u5f55\u5f71\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://mlc.ai/summer22-zh/ \u8bfe\u7a0b\u89c6\u9891\uff1a Bilibili \u8bfe\u7a0b\u7b14\u8bb0\uff1a https://mlc.ai/zh/index.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://github.com/mlc-ai/notebooks/blob/main/assignment","title":"Machine Learning Compilation"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/#machine-learning-compilation","text":"","title":"Machine Learning Compilation"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aBilibili \u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60/\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30\u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u662f\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u9886\u57df\u7684\u9876\u5c16\u5b66\u8005\u9648\u5929\u5947\u57282022\u5e74\u6691\u671f\u5f00\u8bbe\u7684\u4e00\u95e8\u5728\u7ebf\u8bfe\u7a0b\u3002\u5176\u5b9e\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u65e0\u8bba\u5728\u5de5\u4e1a\u754c\u8fd8\u662f\u5b66\u672f\u754c\u4ecd\u7136\u662f\u4e00\u4e2a\u975e\u5e38\u524d\u6cbf\u4e14\u5feb\u901f\u66f4\u8fed\u7684\u9886\u57df\uff0c\u56fd\u5185\u5916\u6b64\u524d\u8fd8\u6ca1\u6709\u4e3a\u8fd9\u4e2a\u65b9\u5411\u4e13\u95e8\u5f00\u8bbe\u7684\u76f8\u5173\u8bfe\u7a0b\u3002\u56e0\u6b64\u5982\u679c\u5bf9\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u611f\u5174\u8da3\u60f3\u6709\u4e2a\u5168\u8c8c\u6027\u7684\u611f\u77e5\u7684\u8bdd\uff0c\u53ef\u4ee5\u5b66\u4e60\u4e00\u4e0b\u8fd9\u95e8\u8bfe\u3002 \u672c\u8bfe\u7a0b\u4e3b\u8981\u4ee5 Apache TVM \u8fd9\u4e00\u4e3b\u6d41\u7684\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u6846\u67b6\u4e3a\u4f8b\uff08\u9648\u5929\u5947\u662f\u8fd9\u4e2a\u6846\u67b6\u7684\u521b\u59cb\u4eba\u4e4b\u4e00\uff09\uff0c\u805a\u7126\u4e8e\u5982\u4f55\u5c06\u5f00\u53d1\u6a21\u5f0f\u4e0b\uff08\u5982 Tensorflow, Pytorch, Jax\uff09\u7684\u5404\u7c7b\u673a\u5668\u5b66\u4e60\u6a21\u578b\uff0c\u901a\u8fc7\u4e00\u5957\u666e\u9002\u7684\u62bd\u8c61\u548c\u4f18\u5316\u7b97\u6cd5\uff0c\u53d8\u6362\u4e3a\u62e5\u6709\u66f4\u9ad8\u6027\u80fd\u5e76\u4e14\u9002\u914d\u5404\u7c7b\u5e95\u5c42\u786c\u4ef6\u7684\u90e8\u7f72\u6a21\u5f0f\u3002\u8bfe\u7a0b\u8bb2\u6388\u7684\u77e5\u8bc6\u70b9\u90fd\u662f\u76f8\u5bf9 High-Level \u7684\u5b8f\u89c2\u6982\u5ff5\uff0c\u540c\u65f6\u6bcf\u8282\u8bfe\u90fd\u4f1a\u6709\u4e00\u4e2a\u914d\u5957\u7684 Jupyter Notebook \u6765\u901a\u8fc7\u5177\u4f53\u7684\u4ee3\u7801\u8bb2\u89e3\u77e5\u8bc6\u70b9\uff0c\u56e0\u6b64\u5982\u679c\u4ece\u4e8b TVM \u76f8\u5173\u7684\u7f16\u7a0b\u5f00\u53d1\u7684\u8bdd\uff0c\u8fd9\u95e8\u8bfe\u6709\u4e30\u5bcc\u4e14\u89c4\u8303\u7684\u4ee3\u7801\u793a\u4f8b\u4ee5\u4f9b\u53c2\u8003\u3002 \u6240\u6709\u7684\u8bfe\u7a0b\u8d44\u6e90\u5168\u90e8\u5f00\u6e90\u5e76\u4e14\u6709\u4e2d\u6587\u548c\u82f1\u6587\u4e24\u4e2a\u7248\u672c\uff0cB\u7ad9\u548c\u6cb9\u7ba1\u5206\u522b\u6709\u4e2d\u6587\u548c\u82f1\u6587\u7684\u8bfe\u7a0b\u5f55\u5f71\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://mlc.ai/summer22-zh/ \u8bfe\u7a0b\u89c6\u9891\uff1a Bilibili \u8bfe\u7a0b\u7b14\u8bb0\uff1a https://mlc.ai/zh/index.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://github.com/mlc-ai/notebooks/blob/main/assignment","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CMU10-708/","text":"CMU 10-708: Probabilistic Graphical Models \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Reinforcement Learning \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://sailinglab.github.io/pgm-spring-2019/ \u8fd9\u4e2a\u7f51\u7ad9\u5305\u542b\u4e86\u6240\u6709\u7684\u8d44\u6e90\uff1aslides, nots, video, homework, project \u8fd9\u95e8\u8bfe\u7a0b\u662f CMU \u7684\u56fe\u6a21\u578b\u57fa\u7840 + \u8fdb\u9636\u8bfe\uff0c\u6388\u8bfe\u8001\u5e08\u4e3a Eric P. Xing\uff0c\u6db5\u76d6\u4e86\u56fe\u6a21\u578b\u57fa\u7840\uff0c\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u7ed3\u5408\uff0c\u5728\u5f3a\u5316\u5b66\u4e60\u4e2d\u7684\u5e94\u7528\uff0c\u4ee5\u53ca\u975e\u53c2\u6570\u65b9\u6cd5\u3002\u76f8\u5f53\u786c\u6838","title":"CMU 10-708: Probabilistic Graphical Models"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CMU10-708/#cmu-10-708-probabilistic-graphical-models","text":"","title":"CMU 10-708: Probabilistic Graphical Models"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CMU10-708/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Reinforcement Learning \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://sailinglab.github.io/pgm-spring-2019/ \u8fd9\u4e2a\u7f51\u7ad9\u5305\u542b\u4e86\u6240\u6709\u7684\u8d44\u6e90\uff1aslides, nots, video, homework, project \u8fd9\u95e8\u8bfe\u7a0b\u662f CMU \u7684\u56fe\u6a21\u578b\u57fa\u7840 + \u8fdb\u9636\u8bfe\uff0c\u6388\u8bfe\u8001\u5e08\u4e3a Eric P. Xing\uff0c\u6db5\u76d6\u4e86\u56fe\u6a21\u578b\u57fa\u7840\uff0c\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u7ed3\u5408\uff0c\u5728\u5f3a\u5316\u5b66\u4e60\u4e2d\u7684\u5e94\u7528\uff0c\u4ee5\u53ca\u975e\u53c2\u6570\u65b9\u6cd5\u3002\u76f8\u5f53\u786c\u6838","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CS229M/","text":"STATS214 / CS229M: Machine Learning Theory \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Statistics \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/stats214/ \u7ecf\u5178\u5b66\u4e60\u7406\u8bba + \u6700\u65b0\u6df1\u5ea6\u5b66\u4e60\u7406\u8bba\uff0c\u975e\u5e38\u786c\u6838\u3002\u6388\u8bfe\u8001\u5e08\u4e4b\u524d\u662f Percy Liang\uff0c\u73b0\u5728\u662f Tengyu Ma","title":"Stanford STATS214 / CS229M: Machine Learning Theory"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CS229M/#stats214-cs229m-machine-learning-theory","text":"","title":"STATS214 / CS229M: Machine Learning Theory"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CS229M/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Statistics \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/stats214/ \u7ecf\u5178\u5b66\u4e60\u7406\u8bba + \u6700\u65b0\u6df1\u5ea6\u5b66\u4e60\u7406\u8bba\uff0c\u975e\u5e38\u786c\u6838\u3002\u6388\u8bfe\u8001\u5e08\u4e4b\u524d\u662f Percy Liang\uff0c\u73b0\u5728\u662f Tengyu Ma","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STA4273/","text":"STA 4273 Winter 2021: Minimizing Expectations \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aU Toronto \u5148\u4fee\u8981\u6c42\uff1aBayesian Inference, Reinforcement Learning \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.cs.toronto.edu/~cmaddis/courses/sta4273_w21/ \u8fd9\u662f\u4e00\u95e8\u8f83\u4e3a\u8fdb\u9636\u7684 Ph.D. \u7814\u7a76\u8bfe\u7a0b\uff0c\u6838\u5fc3\u5185\u5bb9\u662f inference \u548c control \u4e4b\u95f4\u7684\u5173\u7cfb\u3002\u6388\u8bfe\u8001\u5e08\u4e3a Chris Maddison (AlphaGo founding member, NeurIPS 14 best paper)","title":"U Toronto STA 4273 Winter 2021: Minimizing Expectations"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STA4273/#sta-4273-winter-2021-minimizing-expectations","text":"","title":"STA 4273 Winter 2021: Minimizing Expectations"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STA4273/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aU Toronto \u5148\u4fee\u8981\u6c42\uff1aBayesian Inference, Reinforcement Learning \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.cs.toronto.edu/~cmaddis/courses/sta4273_w21/ \u8fd9\u662f\u4e00\u95e8\u8f83\u4e3a\u8fdb\u9636\u7684 Ph.D. \u7814\u7a76\u8bfe\u7a0b\uff0c\u6838\u5fc3\u5185\u5bb9\u662f inference \u548c control \u4e4b\u95f4\u7684\u5173\u7cfb\u3002\u6388\u8bfe\u8001\u5e08\u4e3a Chris Maddison (AlphaGo founding member, NeurIPS 14 best paper)","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STAT8201/","text":"Columbia STAT 8201: Deep Generative Models \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aColumbia University \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Graphical Models \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://stat.columbia.edu/~cunningham/teaching/GR8201/ \u8fd9\u95e8\u8bfe\u662f\u4e00\u95e8 PhD \u8ba8\u8bba\u73ed\uff0c\u6bcf\u5468\u7684\u5185\u5bb9\u662f\u5c55\u793a + \u8ba8\u8bba\u8bba\u6587\uff0c\u6388\u8bfe\u8001\u5e08\u662f John Cunningham\u3002Deep Generative Models \uff08\u6df1\u5ea6\u751f\u6210\u6a21\u578b\uff09 \u662f\u56fe\u6a21\u578b\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u7ed3\u5408\uff0c\u4e5f\u662f\u73b0\u4ee3\u673a\u5668\u5b66\u4e60\u6700\u91cd\u8981\u7684\u65b9\u5411\u4e4b\u4e00","title":"Columbia STAT 8201: Deep Generative Models"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STAT8201/#columbia-stat-8201-deep-generative-models","text":"","title":"Columbia STAT 8201: Deep Generative Models"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STAT8201/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aColumbia University \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Graphical Models \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://stat.columbia.edu/~cunningham/teaching/GR8201/ \u8fd9\u95e8\u8bfe\u662f\u4e00\u95e8 PhD \u8ba8\u8bba\u73ed\uff0c\u6bcf\u5468\u7684\u5185\u5bb9\u662f\u5c55\u793a + \u8ba8\u8bba\u8bba\u6587\uff0c\u6388\u8bfe\u8001\u5e08\u662f John Cunningham\u3002Deep Generative Models \uff08\u6df1\u5ea6\u751f\u6210\u6a21\u578b\uff09 \u662f\u56fe\u6a21\u578b\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u7ed3\u5408\uff0c\u4e5f\u662f\u73b0\u4ee3\u673a\u5668\u5b66\u4e60\u6700\u91cd\u8981\u7684\u65b9\u5411\u4e4b\u4e00","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/","text":"\u673a\u5668\u5b66\u4e60\u8fdb\u9636 \u6b64\u8def\u7ebf\u56fe\u9002\u7528\u4e8e\u5df2\u7ecf\u5b66\u8fc7\u4e86\u57fa\u7840\u673a\u5668\u5b66\u4e60 (ML, NLP, CV, RL) \u7684\u540c\u5b66 (\u9ad8\u5e74\u7ea7\u672c\u79d1\u751f\u6216\u4f4e\u5e74\u7ea7\u7814\u7a76\u751f)\uff0c\u5df2\u7ecf\u53d1\u8868\u8fc7\u81f3\u5c11\u4e00\u7bc7\u9876\u4f1a\u8bba\u6587 (NeurIPS, ICML, ICLR, ACL, EMNLP, NAACL, CVPR, ICCV) \u60f3\u8981\u8d70\u673a\u5668\u5b66\u4e60\u79d1\u7814\u8def\u7ebf\u7684\u9009\u624b\u3002 \u6b64\u8def\u7ebf\u7684\u76ee\u6807\u662f\u4e3a\u8bfb\u61c2\u4e0e\u53d1\u8868\u673a\u5668\u5b66\u4e60\u9876\u4f1a\u8bba\u6587\u6253\u4e0b\u7406\u8bba\u57fa\u7840\uff0c\u7279\u522b\u662f Probabilistic Methods \u8fd9\u4e2a track \u4e0b\u7684\u6587\u7ae0 \u673a\u5668\u5b66\u4e60\u8fdb\u9636\u53ef\u80fd\u5b58\u5728\u591a\u79cd\u4e0d\u540c\u7684\u5b66\u4e60\u8def\u7ebf\uff0c\u6b64\u8def\u7ebf\u53ea\u80fd\u4ee3\u8868\u4f5c\u8005 Yao Fu \u6240\u7406\u89e3\u7684\u6700\u4f73\u8def\u5f84\uff0c\u4fa7\u91cd\u4e8e\u8d1d\u53f6\u65af\u5b66\u6d3e\u4e0b\u7684\u6982\u7387\u5efa\u6a21\u65b9\u6cd5\uff0c\u4e5f\u4f1a\u6d89\u53ca\u5230\u5404\u9879\u76f8\u5173\u5b66\u79d1\u7684\u4ea4\u53c9\u77e5\u8bc6\u3002 \u5fc5\u8bfb\u6559\u6750 PRML: Pattern Recognition and Machine Learning. Christopher Bishop \u7ecf\u5178\u8d1d\u53f6\u65af\u5b66\u6d3e\u6559\u6750 AoS: All of Statistics. Larry Wasserman \u7ecf\u5178\u9891\u7387\u5b66\u6d3e\u6559\u6750 \u6240\u4ee5\u8fd9\u4e24\u672c\u4e66\u521a\u597d\u76f8\u8f85\u76f8\u6210 \u5b57\u5178 MLAPP: Machine Learning: A Probabilistic Perspective. Kevin Murphy Convex Optimization. Stephen Boyd and Lieven Vandenberghe \u8fdb\u9636\u4e66\u7c4d W&J: Graphical Models, Exponential Families, and Variational Inference. Martin Wainwright and Michael Jordan Theory of Point Estimation. E. L. Lehmann and George Casella \u5982\u4f55\u9605\u8bfb Guidelines \u5fc5\u8bfb\u6559\u6750\u5c31\u662f\u4e00\u5b9a\u8981\u8bfb\u7684\u6559\u6750 \u5b57\u5178\u7684\u610f\u601d\u662f\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u4e0d\u7ba1\u5b83\uff0c\u4f46\u5f53\u9047\u5230\u4e86\u4e0d\u61c2\u7684\u6982\u5ff5\u7684\u65f6\u5019\uff0c\u5c31\u53bb\u5b57\u5178\u91cc\u9762\u67e5\uff08\u800c\u4e0d\u662f\u7ef4\u57fa\u767e\u79d1\uff09 \u8fdb\u9636\u4e66\u7c4d\u5148\u4e0d\u8bfb\uff0c\u5148\u8bfb\u5b8c\u5fc5\u8bfb\u4e66\u7c4d\u3002\u5fc5\u8bfb\u4e66\u7c4d\u4e00\u822c\u90fd\u662f\u8981\u524d\u524d\u540e\u540e\u53cd\u590d\u770b\u8fc7 N \u904d\u624d\u7b97\u8bfb\u5b8c \u8bfb\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6700\u91cd\u8981\u7684\u8bfb\u6cd5\u5c31\u662f\u5bf9\u6bd4\u9605\u8bfb (contrastive-comparative reading)\uff1a\u540c\u65f6\u6253\u5f00\u4e24\u672c\u4e66\u8bb2\u540c\u4e00\u4e3b\u9898\u7684\u7ae0\u8282\uff0c\u7136\u540e\u5bf9\u6bd4\u76f8\u540c\u70b9\u548c\u4e0d\u540c\u70b9\u548c\u8054\u7cfb \u8bfb\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5c3d\u91cf\u53bb\u56de\u60f3\u4e4b\u524d\u8bfb\u8fc7\u7684\u8bba\u6587\uff0c\u6bd4\u8f83\u8bba\u6587\u548c\u6559\u6750\u7684\u76f8\u540c\u70b9\u4e0e\u4e0d\u540c\u70b9 \u57fa\u7840\u8def\u5f84 \u5148\u8bfb AoS \u7b2c\u516d\u7ae0: Models, Statistical Inference and Learning\uff0c\u8fd9\u4e00\u90e8\u5206\u662f\u6700\u57fa\u7840\u7684\u79d1\u666e \u7136\u540e\u8bfb PRML \u7b2c 10, 11 \u7ae0 \u7b2c 10 \u7ae0\u7684\u5185\u5bb9\u662f Variational Inference, \u7b2c 11 \u7ae0\u7684\u5185\u5bb9\u662f MCMC, \u8fd9\u4e24\u79cd\u65b9\u6cd5\u662f\u8d1d\u53f6\u65af\u63a8\u65ad\u7684\u4e24\u6761\u6700\u4e3b\u8981\u8def\u7ebf \u5982\u679c\u5728\u8bfb PRML \u7684\u8fc7\u7a0b\u4e2d\u53d1\u73b0\u6709\u4efb\u4f55\u4e0d\u61c2\u7684\u540d\u8bcd\uff0c\u5c31\u53bb\u7ffb\u524d\u9762\u7684\u7ae0\u8282\u3002\u5f88\u5927\u6982\u7387\u80fd\u591f\u5728\u7b2c 3\uff0c4 \u7ae0\u627e\u5230\u76f8\u5bf9\u5e94\u7684\u5b9a\u4e49\uff1b\u5982\u679c\u627e\u4e0d\u5230\u6216\u8005\u4e0d\u591f\u8be6\u7ec6\uff0c\u5c31\u53bb\u67e5 MLAPP AoS \u7b2c 8 \u7ae0 (Parametric Inference) \u548c\u7b2c 11 \u7ae0 (Bayesian Inference) \u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u53c2\u8003\u3002\u6700\u597d\u7684\u65b9\u6cd5\u662f\u591a\u672c\u4e66\u5bf9\u6bd4\u9605\u8bfb\uff0c\u6d41\u7a0b\u5982\u4e0b \u5047\u8bbe\u6211\u5728\u8bfb PRML \u7b2c 10 \u7ae0\u7684\u65f6\u5019\u53d1\u73b0\u4e86\u4e00\u4e2a\u4e0d\u61c2\u7684\u8bcd\uff1aposterior inference \u4e8e\u662f\u6211\u5f80\u524d\u7ffb\uff0c\u7ffb\u5230\u4e86\u7b2c 3 \u7ae0 (Linear Model for Regression)\uff0c\u770b\u5230\u4e86\u6700\u7b80\u5355\u7684 posterior \u7136\u540e\u6211\u63a5\u7740\u7ffb AoS\uff0c\u7ffb\u5230\u4e86\u7b2c 11 \u7ae0\uff0c\u4e5f\u6709\u5bf9 posterior \u7684\u63cf\u8ff0 \u7136\u540e\u6211\u5bf9\u6bd4 PRML \u7b2c 10 \u7ae0\uff0c\u7b2c 3 \u7ae0\uff0cAoS \u7b2c 11 \u7ae0\uff0c\u4e09\u5904\u4e0d\u540c\u5730\u65b9\u5bf9 posterior \u7684\u89e3\u8bfb\uff0c\u6bd4\u8f83\u5176\u76f8\u540c\u70b9\u548c\u4e0d\u540c\u70b9\u548c\u8054\u7cfb \u8bfb\u5b8c PRML \u7b2c 10 \u548c 11 \u7ae0\u4e4b\u540e\uff0c\u63a5\u7740\u8bfb AoS \u7b2c 24 \u7ae0 (Simulation Methods)\uff0c\u7136\u540e\u628a\u5b83\u548c PRML \u7b2c 11 \u7ae0\u5bf9\u6bd4\u9605\u8bfb -- \u8fd9\u4fe9\u90fd\u662f\u8bb2 MCMC \u5982\u679c\u5230\u6b64\u5904\u53d1\u73b0\u8fd8\u6709\u57fa\u7840\u6982\u5ff5\u8bfb\u4e0d\u61c2\uff0c\u5c31\u56de\u5230 PRML \u7b2c 3 \u7ae0\uff0c\u628a\u5b83\u548c AoS \u7b2c 11 \u7ae0\u5bf9\u6bd4\u9605\u8bfb Again\uff0c\u5bf9\u6bd4\u9605\u8bfb\u975e\u5e38\u91cd\u8981\uff0c\u4e00\u5b9a\u8981\u628a\u4e0d\u540c\u672c\u4e66\u7684\u7c7b\u4f3c\u5185\u5bb9\u540c\u65f6\u6446\u5728\u9762\u524d\u76f8\u4e92\u5bf9\u6bd4\uff0c\u8fd9\u6837\u53ef\u4ee5\u663e\u8457\u589e\u5f3a\u8bb0\u5fc6 \u7136\u540e\u8bfb PRML \u7b2c 13 \u7ae0\uff08\u8df3\u8fc7\u7b2c 12 \u7ae0\uff09\uff0c\u8fd9\u4e00\u7ae0\u53ef\u4ee5\u548c MLAPP \u7684\u7b2c 17, 18 \u7ae0\u5bf9\u6bd4\u9605\u8bfb MLAPP \u7b2c 17 \u7ae0\u662f PRML \u7b2c 13.2 \u7ae0\u7684\u8be6\u7ec6\u7248\uff0c\u4e3b\u8981\u8bb2 HMM MLAPP \u7b2c 18 \u7ae0\u662f PRML \u7b2c 13.3 \u7ae0\u7684\u8be6\u7ec6\u7248\uff0c\u4e3b\u8981\u8bb2 LDS \u8bfb\u5b8c PRML \u7b2c 13 \u7ae0\u4e4b\u540e\uff0c\u518d\u53bb\u8bfb PRML \u7b2c 8 \u7ae0 (Graphical Models) -- \u6b64\u65f6\u8fd9\u90e8\u5206\u5e94\u8be5\u4f1a\u8bfb\u5f97\u5f88\u8f7b\u677e \u4ee5\u4e0a\u7684\u5185\u5bb9\u53ef\u4ee5\u8fdb\u4e00\u6b65\u5bf9\u7167 CMU 10-708 PGM \u8bfe\u7a0b\u6750\u6599 \u5230\u76ee\u524d\u4e3a\u6b62\uff0c\u5e94\u8be5\u80fd\u591f\u638c\u63e1 \u6982\u7387\u6a21\u578b\u7684\u57fa\u7840\u5b9a\u4e49 \u7cbe\u51c6\u63a8\u65ad - Sum-Product \u8fd1\u4f3c\u63a8\u65ad - MCMC \u8fd1\u4f3c\u63a8\u65ad - VI \u7136\u540e\u5c31\u53ef\u4ee5\u53bb\u505a\u66f4\u8fdb\u9636\u7684\u5185\u5bb9","title":"\u8fdb\u9636\u8def\u7ebf\u56fe"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_1","text":"\u6b64\u8def\u7ebf\u56fe\u9002\u7528\u4e8e\u5df2\u7ecf\u5b66\u8fc7\u4e86\u57fa\u7840\u673a\u5668\u5b66\u4e60 (ML, NLP, CV, RL) \u7684\u540c\u5b66 (\u9ad8\u5e74\u7ea7\u672c\u79d1\u751f\u6216\u4f4e\u5e74\u7ea7\u7814\u7a76\u751f)\uff0c\u5df2\u7ecf\u53d1\u8868\u8fc7\u81f3\u5c11\u4e00\u7bc7\u9876\u4f1a\u8bba\u6587 (NeurIPS, ICML, ICLR, ACL, EMNLP, NAACL, CVPR, ICCV) \u60f3\u8981\u8d70\u673a\u5668\u5b66\u4e60\u79d1\u7814\u8def\u7ebf\u7684\u9009\u624b\u3002 \u6b64\u8def\u7ebf\u7684\u76ee\u6807\u662f\u4e3a\u8bfb\u61c2\u4e0e\u53d1\u8868\u673a\u5668\u5b66\u4e60\u9876\u4f1a\u8bba\u6587\u6253\u4e0b\u7406\u8bba\u57fa\u7840\uff0c\u7279\u522b\u662f Probabilistic Methods \u8fd9\u4e2a track \u4e0b\u7684\u6587\u7ae0 \u673a\u5668\u5b66\u4e60\u8fdb\u9636\u53ef\u80fd\u5b58\u5728\u591a\u79cd\u4e0d\u540c\u7684\u5b66\u4e60\u8def\u7ebf\uff0c\u6b64\u8def\u7ebf\u53ea\u80fd\u4ee3\u8868\u4f5c\u8005 Yao Fu \u6240\u7406\u89e3\u7684\u6700\u4f73\u8def\u5f84\uff0c\u4fa7\u91cd\u4e8e\u8d1d\u53f6\u65af\u5b66\u6d3e\u4e0b\u7684\u6982\u7387\u5efa\u6a21\u65b9\u6cd5\uff0c\u4e5f\u4f1a\u6d89\u53ca\u5230\u5404\u9879\u76f8\u5173\u5b66\u79d1\u7684\u4ea4\u53c9\u77e5\u8bc6\u3002","title":"\u673a\u5668\u5b66\u4e60\u8fdb\u9636"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_2","text":"PRML: Pattern Recognition and Machine Learning. Christopher Bishop \u7ecf\u5178\u8d1d\u53f6\u65af\u5b66\u6d3e\u6559\u6750 AoS: All of Statistics. Larry Wasserman \u7ecf\u5178\u9891\u7387\u5b66\u6d3e\u6559\u6750 \u6240\u4ee5\u8fd9\u4e24\u672c\u4e66\u521a\u597d\u76f8\u8f85\u76f8\u6210","title":"\u5fc5\u8bfb\u6559\u6750"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_3","text":"MLAPP: Machine Learning: A Probabilistic Perspective. Kevin Murphy Convex Optimization. Stephen Boyd and Lieven Vandenberghe","title":"\u5b57\u5178"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_4","text":"W&J: Graphical Models, Exponential Families, and Variational Inference. Martin Wainwright and Michael Jordan Theory of Point Estimation. E. L. Lehmann and George Casella","title":"\u8fdb\u9636\u4e66\u7c4d"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_5","text":"","title":"\u5982\u4f55\u9605\u8bfb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#guidelines","text":"\u5fc5\u8bfb\u6559\u6750\u5c31\u662f\u4e00\u5b9a\u8981\u8bfb\u7684\u6559\u6750 \u5b57\u5178\u7684\u610f\u601d\u662f\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u4e0d\u7ba1\u5b83\uff0c\u4f46\u5f53\u9047\u5230\u4e86\u4e0d\u61c2\u7684\u6982\u5ff5\u7684\u65f6\u5019\uff0c\u5c31\u53bb\u5b57\u5178\u91cc\u9762\u67e5\uff08\u800c\u4e0d\u662f\u7ef4\u57fa\u767e\u79d1\uff09 \u8fdb\u9636\u4e66\u7c4d\u5148\u4e0d\u8bfb\uff0c\u5148\u8bfb\u5b8c\u5fc5\u8bfb\u4e66\u7c4d\u3002\u5fc5\u8bfb\u4e66\u7c4d\u4e00\u822c\u90fd\u662f\u8981\u524d\u524d\u540e\u540e\u53cd\u590d\u770b\u8fc7 N \u904d\u624d\u7b97\u8bfb\u5b8c \u8bfb\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6700\u91cd\u8981\u7684\u8bfb\u6cd5\u5c31\u662f\u5bf9\u6bd4\u9605\u8bfb (contrastive-comparative reading)\uff1a\u540c\u65f6\u6253\u5f00\u4e24\u672c\u4e66\u8bb2\u540c\u4e00\u4e3b\u9898\u7684\u7ae0\u8282\uff0c\u7136\u540e\u5bf9\u6bd4\u76f8\u540c\u70b9\u548c\u4e0d\u540c\u70b9\u548c\u8054\u7cfb \u8bfb\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5c3d\u91cf\u53bb\u56de\u60f3\u4e4b\u524d\u8bfb\u8fc7\u7684\u8bba\u6587\uff0c\u6bd4\u8f83\u8bba\u6587\u548c\u6559\u6750\u7684\u76f8\u540c\u70b9\u4e0e\u4e0d\u540c\u70b9","title":"Guidelines"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_6","text":"\u5148\u8bfb AoS \u7b2c\u516d\u7ae0: Models, Statistical Inference and Learning\uff0c\u8fd9\u4e00\u90e8\u5206\u662f\u6700\u57fa\u7840\u7684\u79d1\u666e \u7136\u540e\u8bfb PRML \u7b2c 10, 11 \u7ae0 \u7b2c 10 \u7ae0\u7684\u5185\u5bb9\u662f Variational Inference, \u7b2c 11 \u7ae0\u7684\u5185\u5bb9\u662f MCMC, \u8fd9\u4e24\u79cd\u65b9\u6cd5\u662f\u8d1d\u53f6\u65af\u63a8\u65ad\u7684\u4e24\u6761\u6700\u4e3b\u8981\u8def\u7ebf \u5982\u679c\u5728\u8bfb PRML \u7684\u8fc7\u7a0b\u4e2d\u53d1\u73b0\u6709\u4efb\u4f55\u4e0d\u61c2\u7684\u540d\u8bcd\uff0c\u5c31\u53bb\u7ffb\u524d\u9762\u7684\u7ae0\u8282\u3002\u5f88\u5927\u6982\u7387\u80fd\u591f\u5728\u7b2c 3\uff0c4 \u7ae0\u627e\u5230\u76f8\u5bf9\u5e94\u7684\u5b9a\u4e49\uff1b\u5982\u679c\u627e\u4e0d\u5230\u6216\u8005\u4e0d\u591f\u8be6\u7ec6\uff0c\u5c31\u53bb\u67e5 MLAPP AoS \u7b2c 8 \u7ae0 (Parametric Inference) \u548c\u7b2c 11 \u7ae0 (Bayesian Inference) \u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u53c2\u8003\u3002\u6700\u597d\u7684\u65b9\u6cd5\u662f\u591a\u672c\u4e66\u5bf9\u6bd4\u9605\u8bfb\uff0c\u6d41\u7a0b\u5982\u4e0b \u5047\u8bbe\u6211\u5728\u8bfb PRML \u7b2c 10 \u7ae0\u7684\u65f6\u5019\u53d1\u73b0\u4e86\u4e00\u4e2a\u4e0d\u61c2\u7684\u8bcd\uff1aposterior inference \u4e8e\u662f\u6211\u5f80\u524d\u7ffb\uff0c\u7ffb\u5230\u4e86\u7b2c 3 \u7ae0 (Linear Model for Regression)\uff0c\u770b\u5230\u4e86\u6700\u7b80\u5355\u7684 posterior \u7136\u540e\u6211\u63a5\u7740\u7ffb AoS\uff0c\u7ffb\u5230\u4e86\u7b2c 11 \u7ae0\uff0c\u4e5f\u6709\u5bf9 posterior \u7684\u63cf\u8ff0 \u7136\u540e\u6211\u5bf9\u6bd4 PRML \u7b2c 10 \u7ae0\uff0c\u7b2c 3 \u7ae0\uff0cAoS \u7b2c 11 \u7ae0\uff0c\u4e09\u5904\u4e0d\u540c\u5730\u65b9\u5bf9 posterior \u7684\u89e3\u8bfb\uff0c\u6bd4\u8f83\u5176\u76f8\u540c\u70b9\u548c\u4e0d\u540c\u70b9\u548c\u8054\u7cfb \u8bfb\u5b8c PRML \u7b2c 10 \u548c 11 \u7ae0\u4e4b\u540e\uff0c\u63a5\u7740\u8bfb AoS \u7b2c 24 \u7ae0 (Simulation Methods)\uff0c\u7136\u540e\u628a\u5b83\u548c PRML \u7b2c 11 \u7ae0\u5bf9\u6bd4\u9605\u8bfb -- \u8fd9\u4fe9\u90fd\u662f\u8bb2 MCMC \u5982\u679c\u5230\u6b64\u5904\u53d1\u73b0\u8fd8\u6709\u57fa\u7840\u6982\u5ff5\u8bfb\u4e0d\u61c2\uff0c\u5c31\u56de\u5230 PRML \u7b2c 3 \u7ae0\uff0c\u628a\u5b83\u548c AoS \u7b2c 11 \u7ae0\u5bf9\u6bd4\u9605\u8bfb Again\uff0c\u5bf9\u6bd4\u9605\u8bfb\u975e\u5e38\u91cd\u8981\uff0c\u4e00\u5b9a\u8981\u628a\u4e0d\u540c\u672c\u4e66\u7684\u7c7b\u4f3c\u5185\u5bb9\u540c\u65f6\u6446\u5728\u9762\u524d\u76f8\u4e92\u5bf9\u6bd4\uff0c\u8fd9\u6837\u53ef\u4ee5\u663e\u8457\u589e\u5f3a\u8bb0\u5fc6 \u7136\u540e\u8bfb PRML \u7b2c 13 \u7ae0\uff08\u8df3\u8fc7\u7b2c 12 \u7ae0\uff09\uff0c\u8fd9\u4e00\u7ae0\u53ef\u4ee5\u548c MLAPP \u7684\u7b2c 17, 18 \u7ae0\u5bf9\u6bd4\u9605\u8bfb MLAPP \u7b2c 17 \u7ae0\u662f PRML \u7b2c 13.2 \u7ae0\u7684\u8be6\u7ec6\u7248\uff0c\u4e3b\u8981\u8bb2 HMM MLAPP \u7b2c 18 \u7ae0\u662f PRML \u7b2c 13.3 \u7ae0\u7684\u8be6\u7ec6\u7248\uff0c\u4e3b\u8981\u8bb2 LDS \u8bfb\u5b8c PRML \u7b2c 13 \u7ae0\u4e4b\u540e\uff0c\u518d\u53bb\u8bfb PRML \u7b2c 8 \u7ae0 (Graphical Models) -- \u6b64\u65f6\u8fd9\u90e8\u5206\u5e94\u8be5\u4f1a\u8bfb\u5f97\u5f88\u8f7b\u677e \u4ee5\u4e0a\u7684\u5185\u5bb9\u53ef\u4ee5\u8fdb\u4e00\u6b65\u5bf9\u7167 CMU 10-708 PGM \u8bfe\u7a0b\u6750\u6599 \u5230\u76ee\u524d\u4e3a\u6b62\uff0c\u5e94\u8be5\u80fd\u591f\u638c\u63e1 \u6982\u7387\u6a21\u578b\u7684\u57fa\u7840\u5b9a\u4e49 \u7cbe\u51c6\u63a8\u65ad - Sum-Product \u8fd1\u4f3c\u63a8\u65ad - MCMC \u8fd1\u4f3c\u63a8\u65ad - VI \u7136\u540e\u5c31\u53ef\u4ee5\u53bb\u505a\u66f4\u8fdb\u9636\u7684\u5185\u5bb9","title":"\u57fa\u7840\u8def\u5f84"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/","text":"CS224n: Natural Language Processing \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684 NLP \u5165\u95e8\u8bfe\u7a0b\uff0c\u7531\u81ea\u7136\u8bed\u8a00\u5904\u7406\u9886\u57df\u7684\u5de8\u4f6c Chris Manning \u9886\u8854\u6559\u6388\uff08word2vec \u7b97\u6cd5\u7684\u5f00\u521b\u8005\uff09\u3002\u5185\u5bb9\u8986\u76d6\u4e86\u8bcd\u5411\u91cf\u3001RNN\u3001LSTM\u3001Seq2Seq \u6a21\u578b\u3001\u673a\u5668\u7ffb\u8bd1\u3001\u6ce8\u610f\u529b\u673a\u5236\u3001Transformer \u7b49\u7b49 NLP \u9886\u57df\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\u3002 5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u96be\u5ea6\u5faa\u5e8f\u6e10\u8fdb\uff0c\u5206\u522b\u662f\u8bcd\u5411\u91cf\u3001word2vec \u7b97\u6cd5\u3001Dependency parsing\u3001\u673a\u5668\u7ffb\u8bd1\u4ee5\u53ca Transformer \u7684 fine-tune\u3002 \u6700\u7ec8\u7684\u5927\u4f5c\u4e1a\u662f\u5728 Stanford \u8457\u540d\u7684 SQuAD \u6570\u636e\u96c6\u4e0a\u8bad\u7ec3 QA \u6a21\u578b\uff0c\u6709\u5b66\u751f\u7684\u5927\u4f5c\u4e1a\u751a\u81f3\u76f4\u63a5\u53d1\u8868\u4e86\u9876\u4f1a\u8bba\u6587\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs224n/index.html \u8bfe\u7a0b\u89c6\u9891\uff1aB \u7ad9\u641c\u7d22 CS224n \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://web.stanford.edu/class/cs224n/index.html \uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a + 1 \u4e2a Final Project \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS224n - GitHub \u4e2d\u3002","title":"Stanford CS224n: Natural Language Processing"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/#cs224n-natural-language-processing","text":"","title":"CS224n: Natural Language Processing"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684 NLP \u5165\u95e8\u8bfe\u7a0b\uff0c\u7531\u81ea\u7136\u8bed\u8a00\u5904\u7406\u9886\u57df\u7684\u5de8\u4f6c Chris Manning \u9886\u8854\u6559\u6388\uff08word2vec \u7b97\u6cd5\u7684\u5f00\u521b\u8005\uff09\u3002\u5185\u5bb9\u8986\u76d6\u4e86\u8bcd\u5411\u91cf\u3001RNN\u3001LSTM\u3001Seq2Seq \u6a21\u578b\u3001\u673a\u5668\u7ffb\u8bd1\u3001\u6ce8\u610f\u529b\u673a\u5236\u3001Transformer \u7b49\u7b49 NLP \u9886\u57df\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\u3002 5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u96be\u5ea6\u5faa\u5e8f\u6e10\u8fdb\uff0c\u5206\u522b\u662f\u8bcd\u5411\u91cf\u3001word2vec \u7b97\u6cd5\u3001Dependency parsing\u3001\u673a\u5668\u7ffb\u8bd1\u4ee5\u53ca Transformer \u7684 fine-tune\u3002 \u6700\u7ec8\u7684\u5927\u4f5c\u4e1a\u662f\u5728 Stanford \u8457\u540d\u7684 SQuAD \u6570\u636e\u96c6\u4e0a\u8bad\u7ec3 QA \u6a21\u578b\uff0c\u6709\u5b66\u751f\u7684\u5927\u4f5c\u4e1a\u751a\u81f3\u76f4\u63a5\u53d1\u8868\u4e86\u9876\u4f1a\u8bba\u6587\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs224n/index.html \u8bfe\u7a0b\u89c6\u9891\uff1aB \u7ad9\u641c\u7d22 CS224n \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://web.stanford.edu/class/cs224n/index.html \uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a + 1 \u4e2a Final Project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS224n - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/","text":"CS224w: Machine Learning with Graphs \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython, LaTeX \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684\u56fe\u795e\u7ecf\u7f51\u7edc\u5165\u95e8\u8bfe\uff0c\u8fd9\u95e8\u8bfe\u6211\u6ca1\u6709\u4e0a\u8fc7\uff0c\u4f46\u4f17\u591a\u505a GNN \u7684\u670b\u53cb\u90fd\u5411\u6211\u529b\u8350\u8fc7\u8fd9\u95e8\u8bfe\uff0c\u60f3\u5fc5 Stanford \u7684\u8bfe\u8d28\u91cf\u8fd8\u662f\u4e00\u5982\u65e2\u5f80\u5730\u6709\u4fdd\u8bc1\u7684\u3002\u53e6\u5916\u5c31\u662f\u8fd9\u95e8\u8bfe\u7684\u6388\u8bfe\u8001\u5e08\u975e\u5e38\u5e74\u8f7b\u5e05\u6c14:) \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs224w/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=JAB_plj2rbA \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://web.stanford.edu/class/cs224w/ \uff0c6 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c3 \u4e2a LaTeX \u4e66\u9762\u4f5c\u4e1a","title":"Stanford CS224w: Machine Learning with Graphs"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/#cs224w-machine-learning-with-graphs","text":"","title":"CS224w: Machine Learning with Graphs"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython, LaTeX \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684\u56fe\u795e\u7ecf\u7f51\u7edc\u5165\u95e8\u8bfe\uff0c\u8fd9\u95e8\u8bfe\u6211\u6ca1\u6709\u4e0a\u8fc7\uff0c\u4f46\u4f17\u591a\u505a GNN \u7684\u670b\u53cb\u90fd\u5411\u6211\u529b\u8350\u8fc7\u8fd9\u95e8\u8bfe\uff0c\u60f3\u5fc5 Stanford \u7684\u8bfe\u8d28\u91cf\u8fd8\u662f\u4e00\u5982\u65e2\u5f80\u5730\u6709\u4fdd\u8bc1\u7684\u3002\u53e6\u5916\u5c31\u662f\u8fd9\u95e8\u8bfe\u7684\u6388\u8bfe\u8001\u5e08\u975e\u5e38\u5e74\u8f7b\u5e05\u6c14:)","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs224w/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=JAB_plj2rbA \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://web.stanford.edu/class/cs224w/ \uff0c6 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c3 \u4e2a LaTeX \u4e66\u9762\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/","text":"Coursera: Deep Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u5434\u6069\u8fbe\u5728 Coursera \u5f00\u8bbe\u7684\u53e6\u4e00\u95e8\u7f51\u7ea2\u8bfe\u7a0b\uff0c\u5b66\u4e60\u8005\u65e0\u6570\uff0c\u582a\u79f0\u5723\u7ecf\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u5165\u95e8\u8bfe\u3002\u6df1\u5165\u6d45\u51fa\u7684\u8bb2\u89e3\uff0c\u773c\u82b1\u7f2d\u4e71\u7684 Project\u3002\u4ece\u6700\u57fa\u7840\u7684\u795e\u7ecf\u7f51\u7edc\uff0c\u5230 CNN, RNN\uff0c\u518d\u5230\u6700\u8fd1\u5927\u70ed\u7684 Transformer\u3002\u5b66\u5b8c\u8fd9\u95e8\u8bfe\uff0c\u4f60\u5c06\u521d\u6b65\u638c\u63e1\u6df1\u5ea6\u5b66\u4e60\u9886\u57df\u5fc5\u5907\u7684\u77e5\u8bc6\u548c\u6280\u80fd\uff0c\u5e76\u4e14\u53ef\u4ee5\u5728 Kaggle \u4e2d\u53c2\u52a0\u81ea\u5df1\u611f\u5174\u8da3\u7684\u6bd4\u8d5b\uff0c\u5728\u5b9e\u8df5\u4e2d\u953b\u70bc\u81ea\u5df1\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/specializations/deep-learning \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.coursera.org/specializations/deep-learning \uff0cB\u7ad9\u6709\u642c\u8fd0 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://www.coursera.org/specializations/deep-learning","title":"Coursera: Deep Learning"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/#coursera-deep-learning","text":"","title":"Coursera: Deep Learning"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u5434\u6069\u8fbe\u5728 Coursera \u5f00\u8bbe\u7684\u53e6\u4e00\u95e8\u7f51\u7ea2\u8bfe\u7a0b\uff0c\u5b66\u4e60\u8005\u65e0\u6570\uff0c\u582a\u79f0\u5723\u7ecf\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u5165\u95e8\u8bfe\u3002\u6df1\u5165\u6d45\u51fa\u7684\u8bb2\u89e3\uff0c\u773c\u82b1\u7f2d\u4e71\u7684 Project\u3002\u4ece\u6700\u57fa\u7840\u7684\u795e\u7ecf\u7f51\u7edc\uff0c\u5230 CNN, RNN\uff0c\u518d\u5230\u6700\u8fd1\u5927\u70ed\u7684 Transformer\u3002\u5b66\u5b8c\u8fd9\u95e8\u8bfe\uff0c\u4f60\u5c06\u521d\u6b65\u638c\u63e1\u6df1\u5ea6\u5b66\u4e60\u9886\u57df\u5fc5\u5907\u7684\u77e5\u8bc6\u548c\u6280\u80fd\uff0c\u5e76\u4e14\u53ef\u4ee5\u5728 Kaggle \u4e2d\u53c2\u52a0\u81ea\u5df1\u611f\u5174\u8da3\u7684\u6bd4\u8d5b\uff0c\u5728\u5b9e\u8df5\u4e2d\u953b\u70bc\u81ea\u5df1\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/specializations/deep-learning \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.coursera.org/specializations/deep-learning \uff0cB\u7ad9\u6709\u642c\u8fd0 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://www.coursera.org/specializations/deep-learning","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/","text":"CS231n: CNN for Visual Recognition \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684 CV \u5165\u95e8\u8bfe\uff0c\u7531\u8ba1\u7b97\u673a\u9886\u57df\u7684\u5de8\u4f6c\u674e\u98de\u98de\u9662\u58eb\u9886\u8854\u6559\u6388\uff08CV \u9886\u57df\u5212\u65f6\u4ee3\u7684\u8457\u540d\u6570\u636e\u96c6 ImageNet \u7684\u7814\u7a76\u56e2\u961f\uff09\uff0c\u4f46\u5176\u5185\u5bb9\u76f8\u5bf9\u57fa\u7840\u4e14\u53cb\u597d\uff0c\u5982\u679c\u4e0a\u8fc7 CS230 \u7684\u8bdd\u53ef\u4ee5\u76f4\u63a5\u4e0a\u624b Project \u4f5c\u4e3a\u7ec3\u4e60\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://cs231n.stanford.edu/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1nJ411z7fe \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://cs231n.stanford.edu/schedule.html \uff0c3\u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"Stanford CS231n: CNN for Visual Recognition"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/#cs231n-cnn-for-visual-recognition","text":"","title":"CS231n: CNN for Visual Recognition"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684 CV \u5165\u95e8\u8bfe\uff0c\u7531\u8ba1\u7b97\u673a\u9886\u57df\u7684\u5de8\u4f6c\u674e\u98de\u98de\u9662\u58eb\u9886\u8854\u6559\u6388\uff08CV \u9886\u57df\u5212\u65f6\u4ee3\u7684\u8457\u540d\u6570\u636e\u96c6 ImageNet \u7684\u7814\u7a76\u56e2\u961f\uff09\uff0c\u4f46\u5176\u5185\u5bb9\u76f8\u5bf9\u57fa\u7840\u4e14\u53cb\u597d\uff0c\u5982\u679c\u4e0a\u8fc7 CS230 \u7684\u8bdd\u53ef\u4ee5\u76f4\u63a5\u4e0a\u624b Project \u4f5c\u4e3a\u7ec3\u4e60\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://cs231n.stanford.edu/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1nJ411z7fe \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://cs231n.stanford.edu/schedule.html \uff0c3\u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/","text":"CS285: Deep Reinforcement Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS188, CS189 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u5f3a\u5316\u5b66\u4e60\u7814\u7a76\u751f\u8bfe\u7a0b\uff0c\u6240\u6709\u8bfe\u7a0b\u5f55\u5f71\u3001slides\u3001\u4f5c\u4e1a\u4ee3\u7801\u5747\u5728\u7f51\u7ad9\u5f00\u6e90\u3002\u5728\u6211\u7684\u6536\u85cf\u5939\u91cc\u5403\u7070\u5f88\u4e45\u4e86\uff0c\u4e00\u76f4\u60f3\u627e\u673a\u4f1a\u5b66\u4e60\u4e00\u4e0b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://rail.eecs.berkeley.edu/deeprlcourse/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://youtube.com/playlist?list=PL_iWQOsE6TfXxKgI1GgyV1B_Xa0DxE5eH \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://rail.eecs.berkeley.edu/deeprlcourse/ \uff0c5\u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"UCB CS285: Deep Reinforcement Learning"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/#cs285-deep-reinforcement-learning","text":"","title":"CS285: Deep Reinforcement Learning"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS188, CS189 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u5f3a\u5316\u5b66\u4e60\u7814\u7a76\u751f\u8bfe\u7a0b\uff0c\u6240\u6709\u8bfe\u7a0b\u5f55\u5f71\u3001slides\u3001\u4f5c\u4e1a\u4ee3\u7801\u5747\u5728\u7f51\u7ad9\u5f00\u6e90\u3002\u5728\u6211\u7684\u6536\u85cf\u5939\u91cc\u5403\u7070\u5f88\u4e45\u4e86\uff0c\u4e00\u76f4\u60f3\u627e\u673a\u4f1a\u5b66\u4e60\u4e00\u4e0b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://rail.eecs.berkeley.edu/deeprlcourse/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://youtube.com/playlist?list=PL_iWQOsE6TfXxKgI1GgyV1B_Xa0DxE5eH \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://rail.eecs.berkeley.edu/deeprlcourse/ \uff0c5\u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/","text":"\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u570b\u7acb\u53f0\u7063\u5927\u5b78 \u5148\u4fee\u8981\u6c42\uff1a\u719f\u7ec3\u638c\u63e1 Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u674e\u5b8f\u6bc5\u8001\u5e08\u662f\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\u7684\u6559\u6388\uff0c\u5176\u98ce\u8da3\u5e7d\u9ed8\u7684\u6388\u8bfe\u98ce\u683c\u6df1\u53d7\u5927\u5bb6\u559c\u7231\uff0c\u5e76\u4e14\u5c24\u5176\u559c\u6b22\u5728 PPT \u4e2d\u63d2\u5165\u5b9d\u53ef\u68a6\u7b49\u52a8\u6f2b\u5143\u7d20\uff0c\u662f\u4e2a\u975e\u5e38\u53ef\u7231\u7684\u8001\u5e08\u3002 \u8fd9\u95e8\u8bfe\u6302\u7740\u673a\u5668\u5b66\u4e60\u7684\u724c\u5b50\uff0c\u4f46\u5176\u8bfe\u7a0b\u5185\u5bb9\u4e4b\u5e7f\u5b9e\u5728\u4ee4\u4eba\u548b\u820c\uff0c\u5176\u4f5c\u4e1a\u4e00\u5171\u5305\u542b 15 \u4e2a lab\uff0c\u5206\u522b\u662f Regression\u3001Classification\u3001CNN\u3001Self-Attention\u3001Transformer\u3001GAN\u3001BERT\u3001Anomaly Detection\u3001Explainable AI\u3001Attack\u3001Adaptation\u3001 RL\u3001Compression\u3001Life-Long Learning \u4ee5\u53ca Meta Learning\u3002\u53ef\u8c13\u662f\u5305\u7f57\u4e07\u8c61\uff0c\u80fd\u8ba9\u5b66\u751f\u5bf9\u4e8e\u6df1\u5ea6\u5b66\u4e60\u7684\u7edd\u5927\u591a\u6570\u9886\u57df\u90fd\u6709\u4e00\u5b9a\u4e86\u89e3\uff0c\u4ece\u800c\u53ef\u4ee5\u8fdb\u4e00\u6b65\u9009\u62e9\u60f3\u8981\u6df1\u5165\u7684\u65b9\u5411\u8fdb\u884c\u5b66\u4e60\u3002 \u5927\u5bb6\u4e5f\u5927\u53ef\u4e0d\u5fc5\u62c5\u5fc3\u4f5c\u4e1a\u7684\u96be\u5ea6\uff0c\u56e0\u4e3a\u6240\u6709\u4f5c\u4e1a\u90fd\u4f1a\u63d0\u4f9b\u52a9\u6559\u7684\u793a\u4f8b\u4ee3\u7801\uff0c\u5e2e\u4f60\u5b8c\u6210\u6570\u636e\u5904\u7406\u3001\u6a21\u578b\u642d\u5efa\u7b49\uff0c\u4f60\u53ea\u9700\u8981\u5728\u5176\u57fa\u7840\u4e0a\u8fdb\u884c\u9002\u91cf\u7684\u4fee\u6539\u5373\u53ef\u3002\u8fd9\u4e5f\u662f\u4e00\u4e2a\u5b66\u4e60\u522b\u4eba\u4f18\u8d28\u4ee3\u7801\u7684\u6781\u597d\u673a\u4f1a\uff0c\u5927\u5bb6\u9700\u8981\u6c34\u8bfe\u7a0b\u5927\u4f5c\u4e1a\u7684\u8bdd\uff0c\u8fd9\u91cc\u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u8d44\u6599\u6765\u6e90\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \uff0c15 \u4e2a lab\uff0c\u51e0\u4e4e\u8986\u76d6\u4e86\u4e3b\u6d41\u6df1\u5ea6\u5b66\u4e60\u7684\u6240\u6709\u9886\u57df","title":"\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/#_1","text":"","title":"\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/#_2","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u570b\u7acb\u53f0\u7063\u5927\u5b78 \u5148\u4fee\u8981\u6c42\uff1a\u719f\u7ec3\u638c\u63e1 Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u674e\u5b8f\u6bc5\u8001\u5e08\u662f\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\u7684\u6559\u6388\uff0c\u5176\u98ce\u8da3\u5e7d\u9ed8\u7684\u6388\u8bfe\u98ce\u683c\u6df1\u53d7\u5927\u5bb6\u559c\u7231\uff0c\u5e76\u4e14\u5c24\u5176\u559c\u6b22\u5728 PPT \u4e2d\u63d2\u5165\u5b9d\u53ef\u68a6\u7b49\u52a8\u6f2b\u5143\u7d20\uff0c\u662f\u4e2a\u975e\u5e38\u53ef\u7231\u7684\u8001\u5e08\u3002 \u8fd9\u95e8\u8bfe\u6302\u7740\u673a\u5668\u5b66\u4e60\u7684\u724c\u5b50\uff0c\u4f46\u5176\u8bfe\u7a0b\u5185\u5bb9\u4e4b\u5e7f\u5b9e\u5728\u4ee4\u4eba\u548b\u820c\uff0c\u5176\u4f5c\u4e1a\u4e00\u5171\u5305\u542b 15 \u4e2a lab\uff0c\u5206\u522b\u662f Regression\u3001Classification\u3001CNN\u3001Self-Attention\u3001Transformer\u3001GAN\u3001BERT\u3001Anomaly Detection\u3001Explainable AI\u3001Attack\u3001Adaptation\u3001 RL\u3001Compression\u3001Life-Long Learning \u4ee5\u53ca Meta Learning\u3002\u53ef\u8c13\u662f\u5305\u7f57\u4e07\u8c61\uff0c\u80fd\u8ba9\u5b66\u751f\u5bf9\u4e8e\u6df1\u5ea6\u5b66\u4e60\u7684\u7edd\u5927\u591a\u6570\u9886\u57df\u90fd\u6709\u4e00\u5b9a\u4e86\u89e3\uff0c\u4ece\u800c\u53ef\u4ee5\u8fdb\u4e00\u6b65\u9009\u62e9\u60f3\u8981\u6df1\u5165\u7684\u65b9\u5411\u8fdb\u884c\u5b66\u4e60\u3002 \u5927\u5bb6\u4e5f\u5927\u53ef\u4e0d\u5fc5\u62c5\u5fc3\u4f5c\u4e1a\u7684\u96be\u5ea6\uff0c\u56e0\u4e3a\u6240\u6709\u4f5c\u4e1a\u90fd\u4f1a\u63d0\u4f9b\u52a9\u6559\u7684\u793a\u4f8b\u4ee3\u7801\uff0c\u5e2e\u4f60\u5b8c\u6210\u6570\u636e\u5904\u7406\u3001\u6a21\u578b\u642d\u5efa\u7b49\uff0c\u4f60\u53ea\u9700\u8981\u5728\u5176\u57fa\u7840\u4e0a\u8fdb\u884c\u9002\u91cf\u7684\u4fee\u6539\u5373\u53ef\u3002\u8fd9\u4e5f\u662f\u4e00\u4e2a\u5b66\u4e60\u522b\u4eba\u4f18\u8d28\u4ee3\u7801\u7684\u6781\u597d\u673a\u4f1a\uff0c\u5927\u5bb6\u9700\u8981\u6c34\u8bfe\u7a0b\u5927\u4f5c\u4e1a\u7684\u8bdd\uff0c\u8fd9\u91cc\u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u8d44\u6599\u6765\u6e90\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/#_3","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \uff0c15 \u4e2a lab\uff0c\u51e0\u4e4e\u8986\u76d6\u4e86\u4e3b\u6d41\u6df1\u5ea6\u5b66\u4e60\u7684\u6240\u6709\u9886\u57df","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/","text":"UCB EE16A&B: Designing Information Devices and Systems I&II \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 UC Berkeley \u7535\u5b50\u7cfb\u5b66\u751f\u7684\u5927\u4e00\u5165\u95e8\u8bfe\uff0c\u901a\u8fc7\u7535\u8def\u57fa\u7840\u77e5\u8bc6\u7684\u8bb2\u6388\uff0c\u914d\u5408\u5404\u7c7b\u52a8\u624b\u5b9e\u64cd\u7684 lab\uff0c\u8ba9\u5b66\u751f\u4f53\u9a8c\u901a\u8fc7\u7535\u8def\u4ece\u73af\u5883\u4e2d\u6536\u96c6\u4fe1\u606f\u5e76\u8fdb\u884c\u5206\u6790\uff0c\u4f5c\u51fa\u9884\u6d4b\u548c\u53cd\u9988\u3002\u7531\u4e8e\u75ab\u60c5\u7684\u7f18\u6545\uff0c\u6240\u6709 lab \u90fd\u6709\u8fdc\u7a0b\u5728\u7ebf\u7248\uff0c\u975e\u5e38\u9002\u5408\u5927\u5bb6\u5728\u5bb6\u81ea\u5b66\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a EE16A , EE16B \u8bfe\u7a0b\u89c6\u9891\uff1aB \u7ad9\u641c\u7d22 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u4e3b\u9875 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/EE16A - GitHub \u4e2d\u3002","title":"EE16A&B: Designing Information Devices and Systems I&II"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/#ucb-ee16ab-designing-information-devices-and-systems-iii","text":"","title":"UCB EE16A&B: Designing Information Devices and Systems I&II"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 UC Berkeley \u7535\u5b50\u7cfb\u5b66\u751f\u7684\u5927\u4e00\u5165\u95e8\u8bfe\uff0c\u901a\u8fc7\u7535\u8def\u57fa\u7840\u77e5\u8bc6\u7684\u8bb2\u6388\uff0c\u914d\u5408\u5404\u7c7b\u52a8\u624b\u5b9e\u64cd\u7684 lab\uff0c\u8ba9\u5b66\u751f\u4f53\u9a8c\u901a\u8fc7\u7535\u8def\u4ece\u73af\u5883\u4e2d\u6536\u96c6\u4fe1\u606f\u5e76\u8fdb\u884c\u5206\u6790\uff0c\u4f5c\u51fa\u9884\u6d4b\u548c\u53cd\u9988\u3002\u7531\u4e8e\u75ab\u60c5\u7684\u7f18\u6545\uff0c\u6240\u6709 lab \u90fd\u6709\u8fdc\u7a0b\u5728\u7ebf\u7248\uff0c\u975e\u5e38\u9002\u5408\u5927\u5bb6\u5728\u5bb6\u81ea\u5b66\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a EE16A , EE16B \u8bfe\u7a0b\u89c6\u9891\uff1aB \u7ad9\u641c\u7d22 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u4e3b\u9875","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/EE16A - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/","text":"MIT 6.007 Signals and Systems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra \u7f16\u7a0b\u8bed\u8a00\uff1aMatlab Preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 \u770b\u5230\u8bfe\u7a0b\u8001\u5e08\u7684\u540d\u5b57\uff1aProf. Alan V. Oppenheim \u597d\u7684\uff0c\u4e0a\u8fd9\u95e8\u8bfe\u7684\u7406\u7531\u5df2\u7ecf\u8db3\u591f\u4e86\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/index.htm \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1CZ4y1j7hs \u8bfe\u7a0b\u6559\u6750\uff1aSignals and Systems, 2nd Edition \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/assignments","title":"MIT 6.007 Signals and Systems"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/#mit-6007-signals-and-systems","text":"","title":"MIT 6.007 Signals and Systems"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra \u7f16\u7a0b\u8bed\u8a00\uff1aMatlab Preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 \u770b\u5230\u8bfe\u7a0b\u8001\u5e08\u7684\u540d\u5b57\uff1aProf. Alan V. Oppenheim \u597d\u7684\uff0c\u4e0a\u8fd9\u95e8\u8bfe\u7684\u7406\u7531\u5df2\u7ecf\u8db3\u591f\u4e86\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/index.htm \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1CZ4y1j7hs \u8bfe\u7a0b\u6559\u6750\uff1aSignals and Systems, 2nd Edition \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/assignments","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/","text":"UCB EE120: Signal and Systems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS70\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u6700\u7cbe\u534e\u7684\u90e8\u5206\u5c31\u662f 6 \u4e2a\u8d85\u6709\u8da3\u7684\u7f16\u7a0b\u4f5c\u4e1a\u4e86\uff0c\u4f1a\u8ba9\u4f60\u7528 Python \u901a\u8fc7\u5b66\u4e60\u5230\u7684\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u7684\u7406\u8bba\u77e5\u8bc6\uff0c\u89e3\u51b3\u5404\u7c7b\u5b9e\u9645\u95ee\u9898\u3002\u4f8b\u5982 lab3 \u4f1a\u8ba9\u4f60\u5b9e\u73b0 FFT \u7b97\u6cd5\uff0c\u5e76\u548c Numpy \u7684\u5b98\u65b9\u5b9e\u73b0\u8fdb\u884c\u6027\u80fd\u5bf9\u6bd4\uff1blab4 \u4f1a\u901a\u8fc7\u5206\u6790\u624b\u6307\u5934\u7684\u5f71\u50cf\u6570\u636e\u63a8\u65ad\u5fc3\u7387\uff1blab5 \u5c31\u66f4\u725b\u4e86\uff0c\u4f1a\u8ba9\u4f60\u7ed9\u54c8\u52c3\u671b\u8fdc\u955c\u62cd\u5230\u7684\u7167\u7247\u8fdb\u884c\u964d\u566a\u5904\u7406\uff0c\u6062\u590d\u7eda\u70c2\u6e05\u6670\u7684\u661f\u7a7a\uff1blab6 \u4f1a\u8ba9\u4f60\u6784\u9020\u4e00\u4e2a\u53cd\u9988\u7cfb\u7edf\uff0c\u5e73\u8861\u5c0f\u8f66\u4e0a\u7684\u7ec6\u6746\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~ee120/fa19/ \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a5 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 6 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-EE120 - GitHub \u4e2d\u3002","title":"UCB EE120 : Signal and Systems"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/#ucb-ee120-signal-and-systems","text":"","title":"UCB EE120: Signal and Systems"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS70\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u6700\u7cbe\u534e\u7684\u90e8\u5206\u5c31\u662f 6 \u4e2a\u8d85\u6709\u8da3\u7684\u7f16\u7a0b\u4f5c\u4e1a\u4e86\uff0c\u4f1a\u8ba9\u4f60\u7528 Python \u901a\u8fc7\u5b66\u4e60\u5230\u7684\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u7684\u7406\u8bba\u77e5\u8bc6\uff0c\u89e3\u51b3\u5404\u7c7b\u5b9e\u9645\u95ee\u9898\u3002\u4f8b\u5982 lab3 \u4f1a\u8ba9\u4f60\u5b9e\u73b0 FFT \u7b97\u6cd5\uff0c\u5e76\u548c Numpy \u7684\u5b98\u65b9\u5b9e\u73b0\u8fdb\u884c\u6027\u80fd\u5bf9\u6bd4\uff1blab4 \u4f1a\u901a\u8fc7\u5206\u6790\u624b\u6307\u5934\u7684\u5f71\u50cf\u6570\u636e\u63a8\u65ad\u5fc3\u7387\uff1blab5 \u5c31\u66f4\u725b\u4e86\uff0c\u4f1a\u8ba9\u4f60\u7ed9\u54c8\u52c3\u671b\u8fdc\u955c\u62cd\u5230\u7684\u7167\u7247\u8fdb\u884c\u964d\u566a\u5904\u7406\uff0c\u6062\u590d\u7eda\u70c2\u6e05\u6670\u7684\u661f\u7a7a\uff1blab6 \u4f1a\u8ba9\u4f60\u6784\u9020\u4e00\u4e2a\u53cd\u9988\u7cfb\u7edf\uff0c\u5e73\u8861\u5c0f\u8f66\u4e0a\u7684\u7ec6\u6746\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~ee120/fa19/ \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a5 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 6 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-EE120 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%A8%8B%E5%BA%8F%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1/CS242/","text":"","title":"CS242"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/","text":"UCB CS161: Computer Security \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aC, Go \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u8bfe\u7a0b\u5185\u5bb9\u5206\u4e3a5\u4e2a\u90e8\u5206\uff1a Security principles: how to design a secure system Memory safety: buffer overflow attack Cryptography: symmetric encryption, asymmetric encryption, MAC, digital signature ......... Web: SQL-injection, XSS, XSRF ....... Networking: attacks for each layer \u8fd9\u95e8\u8bfe\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\u7684\u90e8\u5206\u662f Project2\uff0c\u8ba9\u4f60\u7528 Go \u8bed\u8a00\u8bbe\u8ba1\u548c\u5b9e\u73b0\u4e00\u4e2a\u5b89\u5168\u7684\u6587\u4ef6\u5206\u4eab\u7cfb\u7edf\u3002\u6211\u82b1\u4e86\u6574\u6574\u4e09\u5929\u624d\u5b8c\u6210\u4e86\u8fd9\u4e2a\u975e\u5e38\u8650\u7684 Project\uff0c\u603b\u4ee3\u7801\u91cf\u8d85\u8fc7 3k \u884c\u3002\u5728\u8fd9\u6837\u5bc6\u96c6\u578b\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u80fd\u6781\u5927\u5730\u953b\u70bc\u4f60\u8bbe\u8ba1\u548c\u5b9e\u73b0\u4e00\u4e2a\u5b89\u5168\u7cfb\u7edf\u7684\u80fd\u529b\u3002 2020 \u5e74\u590f\u5b63\u5b66\u671f\u7684\u7248\u672c\u5f00\u6e90\u4e86\u8bfe\u7a0b\u5f55\u5f71\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728\u4e0b\u9762\u7684\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5\u91cc\u627e\u5230\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://su20.cs161.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://textbook.cs161.org/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a7 \u4e2a\u5728\u7ebf HW + 3 \u4e2a Lab + 3 \u4e2a Project \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS161 - GitHub \u4e2d\u3002","title":"UCB CS161: Computer Security"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/#ucb-cs161-computer-security","text":"","title":"UCB CS161: Computer Security"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aC, Go \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u8bfe\u7a0b\u5185\u5bb9\u5206\u4e3a5\u4e2a\u90e8\u5206\uff1a Security principles: how to design a secure system Memory safety: buffer overflow attack Cryptography: symmetric encryption, asymmetric encryption, MAC, digital signature ......... Web: SQL-injection, XSS, XSRF ....... Networking: attacks for each layer \u8fd9\u95e8\u8bfe\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\u7684\u90e8\u5206\u662f Project2\uff0c\u8ba9\u4f60\u7528 Go \u8bed\u8a00\u8bbe\u8ba1\u548c\u5b9e\u73b0\u4e00\u4e2a\u5b89\u5168\u7684\u6587\u4ef6\u5206\u4eab\u7cfb\u7edf\u3002\u6211\u82b1\u4e86\u6574\u6574\u4e09\u5929\u624d\u5b8c\u6210\u4e86\u8fd9\u4e2a\u975e\u5e38\u8650\u7684 Project\uff0c\u603b\u4ee3\u7801\u91cf\u8d85\u8fc7 3k \u884c\u3002\u5728\u8fd9\u6837\u5bc6\u96c6\u578b\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u80fd\u6781\u5927\u5730\u953b\u70bc\u4f60\u8bbe\u8ba1\u548c\u5b9e\u73b0\u4e00\u4e2a\u5b89\u5168\u7cfb\u7edf\u7684\u80fd\u529b\u3002 2020 \u5e74\u590f\u5b63\u5b66\u671f\u7684\u7248\u672c\u5f00\u6e90\u4e86\u8bfe\u7a0b\u5f55\u5f71\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728\u4e0b\u9762\u7684\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5\u91cc\u627e\u5230\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://su20.cs161.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://textbook.cs161.org/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a7 \u4e2a\u5728\u7ebf HW + 3 \u4e2a Lab + 3 \u4e2a Project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS161 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/","text":"MIT 6.858: Computer System Security \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u521d\u6b65\u4e86\u89e3 \u7f16\u7a0b\u8bed\u8a00\uff1aC, Python \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 MIT \u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u5b9e\u9a8c\u73af\u5883\u662f\u4e00\u4e2a Web Application Zoobar\u3002\u5b66\u751f\u5b66\u4e60\u653b\u9632\u6280\u672f\u5e76\u5e94\u7528\u4e8e\u8be5 Web Application\u3002 Lab 1: you will explore the zoobar web application, and use buffer overflow attacks to break its security properties. Lab 2: you will improve the zoobar web application by using privilege separation, so that if one component is compromised, the adversary doesn't get control over the whole web application. Lab 3: you will build a program analysis tool based on symbolic execution to find bugs in Python code such as the zoobar web application. Lab 4: you will improve the zoobar application against browser attacks. \u8fd9\u4e2a\u8bfe\u6211\u4e3b\u8981\u662f\u505a\u4e86 Lab 3\u3002Lab 3 \u662f\u901a\u8fc7\u6df7\u5408\u7b26\u53f7\u6267\u884c\u6765\u904d\u5386\u7a0b\u5e8f\u7684\u6240\u6709\u5206\u652f\uff0c\u7406\u89e3\u4e86\u7b26\u53f7\u6267\u884c\u7684\u601d\u60f3\u540e Lab \u5e76\u4e0d\u96be\u505a\u3002\u8fd9\u4e2a Lab \u76f4\u89c2\u5c55\u793a\u7b26\u53f7\u6267\u884c\u8fd9\u79cd\u6280\u672f\u7684\u4f7f\u7528\u65b9\u6cd5\u3002 \u8fd9\u4e2a\u8bfe\u7684 Final Project \u662f\u5b9e\u73b0 SecFS \uff0c\u4e00\u4e2a\u8fdc\u7aef\u6587\u4ef6\u7cfb\u7edf\uff0c\u9762\u5bf9\u5b8c\u5168\u4e0d\u53ef\u4fe1\u7684\u670d\u52a1\u5668\uff0c\u63d0\u4f9b\u673a\u5bc6\u6027\u548c\u5b8c\u6574\u6027\u3002\u53c2\u8003\u8bba\u6587\u4e3a SUNDR \u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://css.csail.mit.edu/6.858/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a Lab + Final Project / Lab5","title":"MIT 6.858: Computer System Security"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/#mit-6858-computer-system-security","text":"","title":"MIT 6.858: Computer System Security"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u521d\u6b65\u4e86\u89e3 \u7f16\u7a0b\u8bed\u8a00\uff1aC, Python \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 MIT \u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u5b9e\u9a8c\u73af\u5883\u662f\u4e00\u4e2a Web Application Zoobar\u3002\u5b66\u751f\u5b66\u4e60\u653b\u9632\u6280\u672f\u5e76\u5e94\u7528\u4e8e\u8be5 Web Application\u3002 Lab 1: you will explore the zoobar web application, and use buffer overflow attacks to break its security properties. Lab 2: you will improve the zoobar web application by using privilege separation, so that if one component is compromised, the adversary doesn't get control over the whole web application. Lab 3: you will build a program analysis tool based on symbolic execution to find bugs in Python code such as the zoobar web application. Lab 4: you will improve the zoobar application against browser attacks. \u8fd9\u4e2a\u8bfe\u6211\u4e3b\u8981\u662f\u505a\u4e86 Lab 3\u3002Lab 3 \u662f\u901a\u8fc7\u6df7\u5408\u7b26\u53f7\u6267\u884c\u6765\u904d\u5386\u7a0b\u5e8f\u7684\u6240\u6709\u5206\u652f\uff0c\u7406\u89e3\u4e86\u7b26\u53f7\u6267\u884c\u7684\u601d\u60f3\u540e Lab \u5e76\u4e0d\u96be\u505a\u3002\u8fd9\u4e2a Lab \u76f4\u89c2\u5c55\u793a\u7b26\u53f7\u6267\u884c\u8fd9\u79cd\u6280\u672f\u7684\u4f7f\u7528\u65b9\u6cd5\u3002 \u8fd9\u4e2a\u8bfe\u7684 Final Project \u662f\u5b9e\u73b0 SecFS \uff0c\u4e00\u4e2a\u8fdc\u7aef\u6587\u4ef6\u7cfb\u7edf\uff0c\u9762\u5bf9\u5b8c\u5168\u4e0d\u53ef\u4fe1\u7684\u670d\u52a1\u5668\uff0c\u63d0\u4f9b\u673a\u5bc6\u6027\u548c\u5b8c\u6574\u6027\u3002\u53c2\u8003\u8bba\u6587\u4e3a SUNDR \u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://css.csail.mit.edu/6.858/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a Lab + Final Project / Lab5","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/","text":"Stanford CS106B/X: Programming Abstractions in C++ \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u57fa\u7840 (CS50/CS106A/CS61A or equivalent) \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 Stanford \u7684\u8fdb\u9636\u7f16\u7a0b\u8bfe\uff0cCS106X \u5728\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u4f1a\u6bd4 CS106B \u6709\u6240\u63d0\u9ad8\uff0c\u4f46\u4e3b\u4f53\u5185\u5bb9\u7c7b\u4f3c\u3002\u4e3b\u8981\u901a\u8fc7 C++ \u8bed\u8a00\u8ba9\u5b66\u751f\u5728\u5b9e\u9645\u7684\u7f16\u7a0b\u4f5c\u4e1a\u91cc\u57f9\u517b\u901a\u8fc7\u7f16\u7a0b\u62bd\u8c61\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u7684\u80fd\u529b\uff0c\u540c\u65f6\u4e5f\u4f1a\u6d89\u53ca\u4e00\u4e9b\u7b80\u5355\u7684\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u7684\u77e5\u8bc6\uff0c\u4f46\u603b\u4f53\u6765\u8bf4\u6ca1\u6709\u4e00\u95e8\u4e13\u95e8\u7684\u6570\u636e\u7ed3\u6784\u8bfe\u90a3\u4e48\u7cfb\u7edf\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a CS106B , CS106X \u8bfe\u7a0b\u6559\u6750\uff1a https://web.stanford.edu/class/cs106x/res/reader/CS106BX-Reader.pdf \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1G7411k7jG","title":"Stanford CS106B/X"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/#stanford-cs106bx-programming-abstractions-in-c","text":"","title":"Stanford CS106B/X: Programming Abstractions in C++"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u57fa\u7840 (CS50/CS106A/CS61A or equivalent) \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 Stanford \u7684\u8fdb\u9636\u7f16\u7a0b\u8bfe\uff0cCS106X \u5728\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u4f1a\u6bd4 CS106B \u6709\u6240\u63d0\u9ad8\uff0c\u4f46\u4e3b\u4f53\u5185\u5bb9\u7c7b\u4f3c\u3002\u4e3b\u8981\u901a\u8fc7 C++ \u8bed\u8a00\u8ba9\u5b66\u751f\u5728\u5b9e\u9645\u7684\u7f16\u7a0b\u4f5c\u4e1a\u91cc\u57f9\u517b\u901a\u8fc7\u7f16\u7a0b\u62bd\u8c61\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u7684\u80fd\u529b\uff0c\u540c\u65f6\u4e5f\u4f1a\u6d89\u53ca\u4e00\u4e9b\u7b80\u5355\u7684\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u7684\u77e5\u8bc6\uff0c\u4f46\u603b\u4f53\u6765\u8bf4\u6ca1\u6709\u4e00\u95e8\u4e13\u95e8\u7684\u6570\u636e\u7ed3\u6784\u8bfe\u90a3\u4e48\u7cfb\u7edf\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a CS106B , CS106X \u8bfe\u7a0b\u6559\u6750\uff1a https://web.stanford.edu/class/cs106x/res/reader/CS106BX-Reader.pdf \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1G7411k7jG","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/","text":"CS106L: Standard C++ Programming \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6700\u597d\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a20 \u5c0f\u65f6 \u6211\u4ece\u5927\u4e00\u5f00\u59cb\u4e00\u76f4\u90fd\u662f\u5199\u7684 C++ \u4ee3\u7801\uff0c\u76f4\u5230\u5b66\u5b8c\u8fd9\u95e8\u8bfe\u6211\u624d\u610f\u8bc6\u5230\uff0c\u6211\u5199\u7684 C++ \u4ee3\u7801\u5927\u6982\u53ea\u662f C \u8bed\u8a00 + cin / cout \u800c\u5df2\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u6df1\u5165\u5230\u5f88\u591a\u6807\u51c6 C++ \u7684\u7279\u6027\u548c\u8bed\u6cd5\uff0c\u8ba9\u4f60\u7f16\u5199\u51fa\u9ad8\u8d28\u91cf\u7684 C++ \u4ee3\u7801\u3002\u4f8b\u5982 auto binding, uniform initialization, lambda function, move semantics\uff0cRAII \u7b49\u6280\u5de7\u90fd\u5728\u6211\u6b64\u540e\u7684\u4ee3\u7801\u751f\u6daf\u4e2d\u88ab\u53cd\u590d\u7528\u5230\uff0c\u975e\u5e38\u5b9e\u7528\u3002 \u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u91cc\u4f60\u4f1a\u5b9e\u73b0\u4e00\u4e2a HashMap\uff08\u7c7b\u4f3c\u4e8e STL \u4e2d\u7684 unordered_map ), \u8fd9\u4e2a\u4f5c\u4e1a\u51e0\u4e4e\u628a\u6574\u4e2a\u8bfe\u7a0b\u4e32\u8054\u4e86\u8d77\u6765\uff0c\u975e\u5e38\u8003\u9a8c\u4ee3\u7801\u80fd\u529b\u3002\u7279\u522b\u662f iterator \u7684\u5b9e\u73b0\uff0c\u505a\u5b8c\u8fd9\u4e2a\u4f5c\u4e1a\u6211\u5f00\u59cb\u7406\u89e3\u4e3a\u4ec0\u4e48 Linus \u5bf9 C/C++ \u55e4\u4e4b\u4ee5\u9f3b\u4e86\uff0c\u56e0\u4e3a\u771f\u7684\u5f88\u96be\u5199\u5bf9\u3002 \u603b\u7684\u6765\u8bb2\u8fd9\u95e8\u8bfe\u5e76\u4e0d\u96be\uff0c\u4f46\u662f\u4fe1\u606f\u91cf\u5f88\u5927\uff0c\u9700\u8981\u4f60\u5728\u4e4b\u540e\u7684\u5f00\u53d1\u5b9e\u8df5\u4e2d\u53cd\u590d\u5de9\u56fa\u3002Stanford \u4e4b\u6240\u4ee5\u5355\u5f00\u4e00\u95e8 C++ \u7684\u7f16\u7a0b\u8bfe\uff0c\u662f\u56e0\u4e3a\u5b83\u540e\u7eed\u7684\u5f88\u591a CS \u8bfe\u7a0b Project \u90fd\u662f\u57fa\u4e8e C++\u7684\u3002\u4f8b\u5982 CS144 \u8ba1\u7b97\u673a\u7f51\u7edc\u548c CS143 \u7f16\u8bd1\u5668\u3002\u8fd9\u4e24\u95e8\u8bfe\u5728\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs106l/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/channel/UCSqr6y-eaQT_qZJVUm_4QxQ/playlists \u8bfe\u7a0b\u6559\u6750\uff1a http://web.stanford.edu/class/cs106l/full_course_reader.pdf Assignment1\u4e0b\u8f7d\u7f51\u5740\uff1a https://github.com/snme/cs106L-assignment1 Assignment2\u4e0b\u8f7d\u7f51\u5740\uff1a https://github.com/snme/cs106L-assignment2 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5177\u4f53\u5185\u5bb9\u89c1\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u6211\u505a\u7684\u65f6\u5019\u4e00\u5171\u662f\u4e24\u4e2a\uff1a \u5b9e\u73b0\u4e00\u4e2a WikiRacer \u7684\u5c0f\u6e38\u620f \u5b9e\u73b0\u4e00\u4e2a\u7c7b\u4f3c STL \u5e93\u7684 HashMap \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS106L - GitHub \u4e2d\u3002","title":"Stanford CS106L: Standard C++ Programming"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/#cs106l-standard-c-programming","text":"","title":"CS106L: Standard C++ Programming"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6700\u597d\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a20 \u5c0f\u65f6 \u6211\u4ece\u5927\u4e00\u5f00\u59cb\u4e00\u76f4\u90fd\u662f\u5199\u7684 C++ \u4ee3\u7801\uff0c\u76f4\u5230\u5b66\u5b8c\u8fd9\u95e8\u8bfe\u6211\u624d\u610f\u8bc6\u5230\uff0c\u6211\u5199\u7684 C++ \u4ee3\u7801\u5927\u6982\u53ea\u662f C \u8bed\u8a00 + cin / cout \u800c\u5df2\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u6df1\u5165\u5230\u5f88\u591a\u6807\u51c6 C++ \u7684\u7279\u6027\u548c\u8bed\u6cd5\uff0c\u8ba9\u4f60\u7f16\u5199\u51fa\u9ad8\u8d28\u91cf\u7684 C++ \u4ee3\u7801\u3002\u4f8b\u5982 auto binding, uniform initialization, lambda function, move semantics\uff0cRAII \u7b49\u6280\u5de7\u90fd\u5728\u6211\u6b64\u540e\u7684\u4ee3\u7801\u751f\u6daf\u4e2d\u88ab\u53cd\u590d\u7528\u5230\uff0c\u975e\u5e38\u5b9e\u7528\u3002 \u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u91cc\u4f60\u4f1a\u5b9e\u73b0\u4e00\u4e2a HashMap\uff08\u7c7b\u4f3c\u4e8e STL \u4e2d\u7684 unordered_map ), \u8fd9\u4e2a\u4f5c\u4e1a\u51e0\u4e4e\u628a\u6574\u4e2a\u8bfe\u7a0b\u4e32\u8054\u4e86\u8d77\u6765\uff0c\u975e\u5e38\u8003\u9a8c\u4ee3\u7801\u80fd\u529b\u3002\u7279\u522b\u662f iterator \u7684\u5b9e\u73b0\uff0c\u505a\u5b8c\u8fd9\u4e2a\u4f5c\u4e1a\u6211\u5f00\u59cb\u7406\u89e3\u4e3a\u4ec0\u4e48 Linus \u5bf9 C/C++ \u55e4\u4e4b\u4ee5\u9f3b\u4e86\uff0c\u56e0\u4e3a\u771f\u7684\u5f88\u96be\u5199\u5bf9\u3002 \u603b\u7684\u6765\u8bb2\u8fd9\u95e8\u8bfe\u5e76\u4e0d\u96be\uff0c\u4f46\u662f\u4fe1\u606f\u91cf\u5f88\u5927\uff0c\u9700\u8981\u4f60\u5728\u4e4b\u540e\u7684\u5f00\u53d1\u5b9e\u8df5\u4e2d\u53cd\u590d\u5de9\u56fa\u3002Stanford \u4e4b\u6240\u4ee5\u5355\u5f00\u4e00\u95e8 C++ \u7684\u7f16\u7a0b\u8bfe\uff0c\u662f\u56e0\u4e3a\u5b83\u540e\u7eed\u7684\u5f88\u591a CS \u8bfe\u7a0b Project \u90fd\u662f\u57fa\u4e8e C++\u7684\u3002\u4f8b\u5982 CS144 \u8ba1\u7b97\u673a\u7f51\u7edc\u548c CS143 \u7f16\u8bd1\u5668\u3002\u8fd9\u4e24\u95e8\u8bfe\u5728\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs106l/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/channel/UCSqr6y-eaQT_qZJVUm_4QxQ/playlists \u8bfe\u7a0b\u6559\u6750\uff1a http://web.stanford.edu/class/cs106l/full_course_reader.pdf Assignment1\u4e0b\u8f7d\u7f51\u5740\uff1a https://github.com/snme/cs106L-assignment1 Assignment2\u4e0b\u8f7d\u7f51\u5740\uff1a https://github.com/snme/cs106L-assignment2 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5177\u4f53\u5185\u5bb9\u89c1\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u6211\u505a\u7684\u65f6\u5019\u4e00\u5171\u662f\u4e24\u4e2a\uff1a \u5b9e\u73b0\u4e00\u4e2a WikiRacer \u7684\u5c0f\u6e38\u620f \u5b9e\u73b0\u4e00\u4e2a\u7c7b\u4f3c STL \u5e93\u7684 HashMap","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS106L - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/","text":"CS110L: Safety in Systems Programming \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6700\u597d\u6709\u4e00\u5b9a\u7684\u7f16\u7a0b\u80cc\u666f\u5e76\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u521d\u6b65\u7684\u8ba4\u8bc6\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aRust \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30 \u5c0f\u65f6 \u5728\u8fd9\u95e8\u8bfe\u4e2d\u4f60\u5c06\u4f1a\u5b66\u4e60 Rust \u8fd9\u95e8\u795e\u5947\u7684\u8bed\u8a00\u3002 \u5982\u679c\u4f60\u5b66\u8fc7 C \u5e76\u63a5\u89e6\u8fc7\u4e00\u4e9b\u7cfb\u7edf\u7f16\u7a0b\u7684\u8bdd\uff0c\u5e94\u8be5\u5bf9 C \u7684\u5185\u5b58\u6cc4\u6f0f\u4ee5\u53ca\u6307\u9488\u7684\u5371\u9669\u6709\u6240\u8033\u95fb\uff0c\u4f46 C \u7684\u5e95\u5c42\u7279\u6027\u4ee5\u53ca\u9ad8\u6548\u4ecd\u7136\u8ba9\u5b83\u5728\u7cfb\u7edf\u7ea7\u7f16\u7a0b\u4e2d\u65e0\u6cd5\u88ab\u4f8b\u5982 Java \u7b49\u81ea\u5e26\u5783\u573e\u6536\u96c6\u673a\u5236\u7684\u9ad8\u7ea7\u8bed\u8a00\u6240\u66ff\u4ee3\u3002\u800c Rust \u7684\u76ee\u6807\u5219\u662f\u5e0c\u671b\u5728 C \u7684\u9ad8\u6548\u57fa\u7840\u4e0a\uff0c\u5f25\u8865\u5176\u5b89\u5168\u4e0d\u8db3\u7684\u7f3a\u70b9\u3002\u56e0\u6b64 Rust \u5728\u8bbe\u8ba1\u4e4b\u521d\uff0c\u5c31\u6709\u5e26\u6709\u5f88\u591a\u7cfb\u7edf\u7f16\u7a0b\u7684\u89c2\u70b9\u3002\u5b66\u4e60 Rust\uff0c\u4e5f\u80fd\u8ba9\u4f60\u4e4b\u540e\u80fd\u7528 C \u8bed\u8a00\u7f16\u5199\u51fa\u66f4\u5b89\u5168\u66f4\u4f18\u96c5\u7684\u7cfb\u7edf\u7ea7\u4ee3\u7801\uff08\u4f8b\u5982\u64cd\u4f5c\u7cfb\u7edf\u7b49\uff09\u3002 \u8fd9\u95e8\u8bfe\u7684\u540e\u534a\u90e8\u5206\u5173\u6ce8\u5728\u5e76\u53d1\uff08concurrency\uff09\u8fd9\u4e00\u4e3b\u9898\u4e0a\uff0c\u4f60\u5c06\u4f1a\u7cfb\u7edf\u5730\u638c\u63e1\u591a\u8fdb\u7a0b\u3001\u591a\u7ebf\u7a0b\u3001\u57fa\u4e8e\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u7b49\u82e5\u5e72\u5e76\u53d1\u6280\u672f\uff0c\u5e76\u5728\u7b2c\u4e8c\u4e2a Project \u4e2d\u6bd4\u8f83\u5b83\u4eec\u5404\u81ea\u7684\u4f18\u52a3\u3002Rust \u4e2d \u201cfutures\u201d \u7684\u6982\u5ff5\u975e\u5e38\u6709\u8da3\u548c\u4f18\u96c5\uff0c\u8fd9\u4e9b\u57fa\u7840\u77e5\u8bc6\u5bf9\u4f60\u540e\u7eed\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u76f8\u5173\u8bfe\u7a0b\u7684\u5b66\u4e60\u5f88\u6709\u5e2e\u52a9\u3002\u53e6\u5916\uff0c\u6e05\u534e\u5927\u5b66\u7684\u64cd\u7edf\u5b9e\u9a8c rCore \u5c31\u662f\u57fa\u4e8e Rust \u7f16\u5199\u7684\uff0c\u5177\u4f53\u53c2\u89c1 \u6587\u6863 \u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://reberhardt.com/cs110l/spring-2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://youtu.be/j7AQrtLevUE \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5171 6 \u4e2a Lab \u548c 2 \u4e2a Project\uff0c\u4f5c\u4e1a\u6587\u6863\u548c\u4ee3\u7801\u6846\u67b6\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002\u5176\u4e2d\u4e24\u4e2a Project \u975e\u5e38\u6709\u8da3\uff0c\u5206\u522b\u662f\uff1a \u7528 Rust \u5b9e\u73b0\u4e00\u4e2a\u7c7b\u4f3c\u4e8e GDB \u7684 debugger \u7528 Rust \u5b9e\u73b0\u4e00\u4e2a\u8d1f\u8f7d\u5747\u8861\u5668 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS110L - GitHub \u4e2d\u3002","title":"Stanford CS110L: Safety in Systems Programming"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/#cs110l-safety-in-systems-programming","text":"","title":"CS110L: Safety in Systems Programming"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6700\u597d\u6709\u4e00\u5b9a\u7684\u7f16\u7a0b\u80cc\u666f\u5e76\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u521d\u6b65\u7684\u8ba4\u8bc6\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aRust \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30 \u5c0f\u65f6 \u5728\u8fd9\u95e8\u8bfe\u4e2d\u4f60\u5c06\u4f1a\u5b66\u4e60 Rust \u8fd9\u95e8\u795e\u5947\u7684\u8bed\u8a00\u3002 \u5982\u679c\u4f60\u5b66\u8fc7 C \u5e76\u63a5\u89e6\u8fc7\u4e00\u4e9b\u7cfb\u7edf\u7f16\u7a0b\u7684\u8bdd\uff0c\u5e94\u8be5\u5bf9 C \u7684\u5185\u5b58\u6cc4\u6f0f\u4ee5\u53ca\u6307\u9488\u7684\u5371\u9669\u6709\u6240\u8033\u95fb\uff0c\u4f46 C \u7684\u5e95\u5c42\u7279\u6027\u4ee5\u53ca\u9ad8\u6548\u4ecd\u7136\u8ba9\u5b83\u5728\u7cfb\u7edf\u7ea7\u7f16\u7a0b\u4e2d\u65e0\u6cd5\u88ab\u4f8b\u5982 Java \u7b49\u81ea\u5e26\u5783\u573e\u6536\u96c6\u673a\u5236\u7684\u9ad8\u7ea7\u8bed\u8a00\u6240\u66ff\u4ee3\u3002\u800c Rust \u7684\u76ee\u6807\u5219\u662f\u5e0c\u671b\u5728 C \u7684\u9ad8\u6548\u57fa\u7840\u4e0a\uff0c\u5f25\u8865\u5176\u5b89\u5168\u4e0d\u8db3\u7684\u7f3a\u70b9\u3002\u56e0\u6b64 Rust \u5728\u8bbe\u8ba1\u4e4b\u521d\uff0c\u5c31\u6709\u5e26\u6709\u5f88\u591a\u7cfb\u7edf\u7f16\u7a0b\u7684\u89c2\u70b9\u3002\u5b66\u4e60 Rust\uff0c\u4e5f\u80fd\u8ba9\u4f60\u4e4b\u540e\u80fd\u7528 C \u8bed\u8a00\u7f16\u5199\u51fa\u66f4\u5b89\u5168\u66f4\u4f18\u96c5\u7684\u7cfb\u7edf\u7ea7\u4ee3\u7801\uff08\u4f8b\u5982\u64cd\u4f5c\u7cfb\u7edf\u7b49\uff09\u3002 \u8fd9\u95e8\u8bfe\u7684\u540e\u534a\u90e8\u5206\u5173\u6ce8\u5728\u5e76\u53d1\uff08concurrency\uff09\u8fd9\u4e00\u4e3b\u9898\u4e0a\uff0c\u4f60\u5c06\u4f1a\u7cfb\u7edf\u5730\u638c\u63e1\u591a\u8fdb\u7a0b\u3001\u591a\u7ebf\u7a0b\u3001\u57fa\u4e8e\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u7b49\u82e5\u5e72\u5e76\u53d1\u6280\u672f\uff0c\u5e76\u5728\u7b2c\u4e8c\u4e2a Project \u4e2d\u6bd4\u8f83\u5b83\u4eec\u5404\u81ea\u7684\u4f18\u52a3\u3002Rust \u4e2d \u201cfutures\u201d \u7684\u6982\u5ff5\u975e\u5e38\u6709\u8da3\u548c\u4f18\u96c5\uff0c\u8fd9\u4e9b\u57fa\u7840\u77e5\u8bc6\u5bf9\u4f60\u540e\u7eed\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u76f8\u5173\u8bfe\u7a0b\u7684\u5b66\u4e60\u5f88\u6709\u5e2e\u52a9\u3002\u53e6\u5916\uff0c\u6e05\u534e\u5927\u5b66\u7684\u64cd\u7edf\u5b9e\u9a8c rCore \u5c31\u662f\u57fa\u4e8e Rust \u7f16\u5199\u7684\uff0c\u5177\u4f53\u53c2\u89c1 \u6587\u6863 \u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://reberhardt.com/cs110l/spring-2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://youtu.be/j7AQrtLevUE \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5171 6 \u4e2a Lab \u548c 2 \u4e2a Project\uff0c\u4f5c\u4e1a\u6587\u6863\u548c\u4ee3\u7801\u6846\u67b6\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002\u5176\u4e2d\u4e24\u4e2a Project \u975e\u5e38\u6709\u8da3\uff0c\u5206\u522b\u662f\uff1a \u7528 Rust \u5b9e\u73b0\u4e00\u4e2a\u7c7b\u4f3c\u4e8e GDB \u7684 debugger \u7528 Rust \u5b9e\u73b0\u4e00\u4e2a\u8d1f\u8f7d\u5747\u8861\u5668","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS110L - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/","text":"CS50: This is CS50x \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aHarvard \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aC, Python, SQL, HTML, CSS, JavaScript \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a20 \u5c0f\u65f6 \u8fde\u7eed\u591a\u5e74\u88ab\u54c8\u4f5b\u5927\u5b66\u5b66\u751f\u8bc4\u4e3a\u6700\u53d7\u6b22\u8fce\u7684\u516c\u9009\u8bfe\u7a0b\u3002Malan \u6559\u6388\u4e0a\u8bfe\u975e\u5e38\u6709\u6fc0\u60c5\uff0c\u6495\u9ec4\u9875\u8bb2\u4e8c\u5206\u6cd5\u7684\u573a\u9762\u8ba9\u4eba\u8bb0\u5fc6\u72b9\u65b0\uff08\u7b11\uff09\u3002\u4f46\u56e0\u4e3a\u5b83\u7684\u5165\u95e8\u4ee5\u53ca\u5168\u6821\u516c\u9009\u7684\u5c5e\u6027\uff0c\u8bfe\u7a0b\u5185\u5bb9\u96be\u5ea6\u6bd4\u8f83\u6e29\u548c\uff0c\u4f46\u662f\u8bfe\u7a0b\u4f5c\u4e1a\u8d28\u91cf\u975e\u5e38\u9ad8\u800c\u4e14\u5168\u90e8\u514d\u8d39\u5f00\u6e90\uff0c\u975e\u5e38\u9002\u5408\u5c0f\u767d\u5165\u95e8\uff0c\u6216\u8005\u5927\u4f6c\u4f11\u95f2\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs50.harvard.edu/x/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://cs50.harvard.edu/x/2022/ \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs50.harvard.edu/x/2022/","title":"Harvard CS50: This is CS50x"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/#cs50-this-is-cs50x","text":"","title":"CS50: This is CS50x"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aHarvard \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aC, Python, SQL, HTML, CSS, JavaScript \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a20 \u5c0f\u65f6 \u8fde\u7eed\u591a\u5e74\u88ab\u54c8\u4f5b\u5927\u5b66\u5b66\u751f\u8bc4\u4e3a\u6700\u53d7\u6b22\u8fce\u7684\u516c\u9009\u8bfe\u7a0b\u3002Malan \u6559\u6388\u4e0a\u8bfe\u975e\u5e38\u6709\u6fc0\u60c5\uff0c\u6495\u9ec4\u9875\u8bb2\u4e8c\u5206\u6cd5\u7684\u573a\u9762\u8ba9\u4eba\u8bb0\u5fc6\u72b9\u65b0\uff08\u7b11\uff09\u3002\u4f46\u56e0\u4e3a\u5b83\u7684\u5165\u95e8\u4ee5\u53ca\u5168\u6821\u516c\u9009\u7684\u5c5e\u6027\uff0c\u8bfe\u7a0b\u5185\u5bb9\u96be\u5ea6\u6bd4\u8f83\u6e29\u548c\uff0c\u4f46\u662f\u8bfe\u7a0b\u4f5c\u4e1a\u8d28\u91cf\u975e\u5e38\u9ad8\u800c\u4e14\u5168\u90e8\u514d\u8d39\u5f00\u6e90\uff0c\u975e\u5e38\u9002\u5408\u5c0f\u767d\u5165\u95e8\uff0c\u6216\u8005\u5927\u4f6c\u4f11\u95f2\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs50.harvard.edu/x/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://cs50.harvard.edu/x/2022/ \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs50.harvard.edu/x/2022/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/","text":"CS61A: Structure and Interpretation of Computer Programs \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aPython, Scheme, SQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u7b2c\u4e00\u95e8\u8bfe\u7a0b\uff0c\u4e5f\u662f\u6211\u7684 Python \u5165\u95e8\u8bfe\u3002 CS61 \u7cfb\u5217\u662f\u4f2f\u514b\u5229 CS \u4e13\u4e1a\u7684\u5165\u95e8\u8bfe\uff0c\u5176\u4e2d\uff1a CS61A: \u5f3a\u8c03\u62bd\u8c61\uff0c\u8ba9\u5b66\u751f\u638c\u63e1\u7528\u7a0b\u5e8f\u6765\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff0c\u800c\u4e0d\u5173\u6ce8\u5e95\u5c42\u7684\u786c\u4ef6\u7ec6\u8282\u3002 CS61B: \u6ce8\u91cd\u7b97\u6cd5\u4e0e\u6570\u636e\u7ed3\u6784\u4ee5\u53ca\u5927\u89c4\u6a21\u7a0b\u5e8f\u7684\u6784\u5efa\uff0c\u5b66\u751f\u4f1a\u7528 Java \u8bed\u8a00\u7ed3\u5408\u7b97\u6cd5\u4e0e\u6570\u636e\u7ed3\u6784\u7684\u77e5\u8bc6\u6765\u6784\u5efa\u5343\u884c\u4ee3\u7801\u7ea7\u522b\u7684\u5927\u578b\u9879\u76ee\uff08\u4e00\u4e2a\u7b80\u6613\u7684\u8c37\u6b4c\u5730\u56fe\uff0c\u4e00\u4e2a\u4e8c\u7ef4\u7248\u7684 Minecraft\uff09\u3002 CS61C: \u5173\u6ce8\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u8ba9\u5b66\u751f\u7406\u89e3\u9ad8\u7ea7\u8bed\u8a00\uff08\u4f8b\u5982 C\uff09\u662f\u5982\u4f55\u4e00\u6b65\u6b65\u8f6c\u6362\u4e3a\u673a\u5668\u53ef\u4ee5\u7406\u89e3\u7684 01 \u4e32\u5e76\u5728 CPU \u6267\u884c\u7684\uff0c\u5b66\u751f\u5c06\u4f1a\u5b66\u4e60 RISC-V \u67b6\u6784\u5e76\u81ea\u5df1\u7528 Logism \u5b9e\u73b0\u4e00\u4e2a CPU\u3002 CS61B \u548c CS61C \u5728\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 \u56de\u5230 CS61A\uff0c\u6ce8\u610f\u8fd9\u4e0d\u4ec5\u4ec5\u662f\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00\u8bfe\uff0c\u800c\u662f\u4f1a\u6df1\u5165\u5230\u7a0b\u5e8f\u6784\u9020\u4e0e\u8fd0\u884c\u7684\u539f\u7406\u3002\u6700\u540e\u4f60\u5c06\u5728\u7b2c 4 \u4e2a Project \u4e2d\u7528 Python \u5b9e\u73b0\u4e00\u4e2a Scheme \u7684\u89e3\u91ca\u5668\u3002\u6b64\u5916\uff0c\u62bd\u8c61\u5c06\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u4e3b\u9898\uff0c\u4f60\u5c06\u5b66\u4e60\u5230\u51fd\u6570\u5f0f\u7f16\u7a0b\u3001\u6570\u636e\u62bd\u8c61\u3001\u9762\u5411\u5bf9\u8c61\u7b49\u7b49\u77e5\u8bc6\u6765\u8ba9\u4f60\u7684\u4ee3\u7801\u66f4\u6613\u8bfb\uff0c\u66f4\u6a21\u5757\u5316\u3002\u5f53\u7136\uff0c\u5b66\u4e60\u7f16\u7a0b\u8bed\u8a00\u4e5f\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u5185\u5bb9\uff0c\u4f60\u5c06\u4f1a\u638c\u63e1 Python\u3001Scheme \u548c SQL \u8fd9\u4e09\u79cd\u7f16\u7a0b\u8bed\u8a00\uff0c\u5728\u5b83\u4eec\u7684\u5b66\u4e60\u548c\u6bd4\u8f83\u4e2d\uff0c\u76f8\u4fe1\u4f60\u4f1a\u62e5\u6709\u5feb\u901f\u638c\u63e1\u4e00\u95e8\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\u7684\u80fd\u529b\u3002 \u6ce8\u610f\uff1a\u5982\u679c\u6b64\u524d\u5b8c\u5168\u6ca1\u6709\u7f16\u7a0b\u57fa\u7840\uff0c\u76f4\u63a5\u4e0a\u624b CS61A \u9700\u8981\u4e00\u5b9a\u7684\u5b66\u4e60\u80fd\u529b\u548c\u81ea\u5f8b\u8981\u6c42\u3002\u4e3a\u907f\u514d\u8bfe\u7a0b\u96be\u5ea6\u8fc7\u9ad8\u800c\u5bfc\u81f4\u7684\u4fe1\u5fc3\u632b\u6298\uff0c\u53ef\u4ee5\u9009\u62e9\u4e00\u4e2a\u66f4\u4e3a\u53cb\u597d\u7684\u5165\u95e8\u7f16\u7a0b\u8bfe\u7a0b\u3002\u4f8b\u5982\u4f2f\u514b\u5229\u7684 CS10 \u6216\u8005\u54c8\u4f5b\u5927\u5b66\u7684 CS50 \u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~cs61a/su20/ \u8bfe\u7a0b\u89c6\u9891: \u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u6559\u6750\uff1a http://composingprograms.com/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u8bfe\u7a0b\u7f51\u7ad9\u4f1a\u6709\u6bcf\u4e2a\u4f5c\u4e1a\u5bf9\u5e94\u7684\u6587\u6863\u94fe\u63a5\u4ee5\u53ca\u4ee3\u7801\u6846\u67b6\u7684\u4e0b\u8f7d\u94fe\u63a5\u3002 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPic/CS61A - GitHub \u4e2d\u3002","title":"UCB CS61A: Structure and Interpretation of Computer Programs"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/#cs61a-structure-and-interpretation-of-computer-programs","text":"","title":"CS61A: Structure and Interpretation of Computer Programs"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aPython, Scheme, SQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u7b2c\u4e00\u95e8\u8bfe\u7a0b\uff0c\u4e5f\u662f\u6211\u7684 Python \u5165\u95e8\u8bfe\u3002 CS61 \u7cfb\u5217\u662f\u4f2f\u514b\u5229 CS \u4e13\u4e1a\u7684\u5165\u95e8\u8bfe\uff0c\u5176\u4e2d\uff1a CS61A: \u5f3a\u8c03\u62bd\u8c61\uff0c\u8ba9\u5b66\u751f\u638c\u63e1\u7528\u7a0b\u5e8f\u6765\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff0c\u800c\u4e0d\u5173\u6ce8\u5e95\u5c42\u7684\u786c\u4ef6\u7ec6\u8282\u3002 CS61B: \u6ce8\u91cd\u7b97\u6cd5\u4e0e\u6570\u636e\u7ed3\u6784\u4ee5\u53ca\u5927\u89c4\u6a21\u7a0b\u5e8f\u7684\u6784\u5efa\uff0c\u5b66\u751f\u4f1a\u7528 Java \u8bed\u8a00\u7ed3\u5408\u7b97\u6cd5\u4e0e\u6570\u636e\u7ed3\u6784\u7684\u77e5\u8bc6\u6765\u6784\u5efa\u5343\u884c\u4ee3\u7801\u7ea7\u522b\u7684\u5927\u578b\u9879\u76ee\uff08\u4e00\u4e2a\u7b80\u6613\u7684\u8c37\u6b4c\u5730\u56fe\uff0c\u4e00\u4e2a\u4e8c\u7ef4\u7248\u7684 Minecraft\uff09\u3002 CS61C: \u5173\u6ce8\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u8ba9\u5b66\u751f\u7406\u89e3\u9ad8\u7ea7\u8bed\u8a00\uff08\u4f8b\u5982 C\uff09\u662f\u5982\u4f55\u4e00\u6b65\u6b65\u8f6c\u6362\u4e3a\u673a\u5668\u53ef\u4ee5\u7406\u89e3\u7684 01 \u4e32\u5e76\u5728 CPU \u6267\u884c\u7684\uff0c\u5b66\u751f\u5c06\u4f1a\u5b66\u4e60 RISC-V \u67b6\u6784\u5e76\u81ea\u5df1\u7528 Logism \u5b9e\u73b0\u4e00\u4e2a CPU\u3002 CS61B \u548c CS61C \u5728\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 \u56de\u5230 CS61A\uff0c\u6ce8\u610f\u8fd9\u4e0d\u4ec5\u4ec5\u662f\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00\u8bfe\uff0c\u800c\u662f\u4f1a\u6df1\u5165\u5230\u7a0b\u5e8f\u6784\u9020\u4e0e\u8fd0\u884c\u7684\u539f\u7406\u3002\u6700\u540e\u4f60\u5c06\u5728\u7b2c 4 \u4e2a Project \u4e2d\u7528 Python \u5b9e\u73b0\u4e00\u4e2a Scheme \u7684\u89e3\u91ca\u5668\u3002\u6b64\u5916\uff0c\u62bd\u8c61\u5c06\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u4e3b\u9898\uff0c\u4f60\u5c06\u5b66\u4e60\u5230\u51fd\u6570\u5f0f\u7f16\u7a0b\u3001\u6570\u636e\u62bd\u8c61\u3001\u9762\u5411\u5bf9\u8c61\u7b49\u7b49\u77e5\u8bc6\u6765\u8ba9\u4f60\u7684\u4ee3\u7801\u66f4\u6613\u8bfb\uff0c\u66f4\u6a21\u5757\u5316\u3002\u5f53\u7136\uff0c\u5b66\u4e60\u7f16\u7a0b\u8bed\u8a00\u4e5f\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u5185\u5bb9\uff0c\u4f60\u5c06\u4f1a\u638c\u63e1 Python\u3001Scheme \u548c SQL \u8fd9\u4e09\u79cd\u7f16\u7a0b\u8bed\u8a00\uff0c\u5728\u5b83\u4eec\u7684\u5b66\u4e60\u548c\u6bd4\u8f83\u4e2d\uff0c\u76f8\u4fe1\u4f60\u4f1a\u62e5\u6709\u5feb\u901f\u638c\u63e1\u4e00\u95e8\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\u7684\u80fd\u529b\u3002 \u6ce8\u610f\uff1a\u5982\u679c\u6b64\u524d\u5b8c\u5168\u6ca1\u6709\u7f16\u7a0b\u57fa\u7840\uff0c\u76f4\u63a5\u4e0a\u624b CS61A \u9700\u8981\u4e00\u5b9a\u7684\u5b66\u4e60\u80fd\u529b\u548c\u81ea\u5f8b\u8981\u6c42\u3002\u4e3a\u907f\u514d\u8bfe\u7a0b\u96be\u5ea6\u8fc7\u9ad8\u800c\u5bfc\u81f4\u7684\u4fe1\u5fc3\u632b\u6298\uff0c\u53ef\u4ee5\u9009\u62e9\u4e00\u4e2a\u66f4\u4e3a\u53cb\u597d\u7684\u5165\u95e8\u7f16\u7a0b\u8bfe\u7a0b\u3002\u4f8b\u5982\u4f2f\u514b\u5229\u7684 CS10 \u6216\u8005\u54c8\u4f5b\u5927\u5b66\u7684 CS50 \u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~cs61a/su20/ \u8bfe\u7a0b\u89c6\u9891: \u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u6559\u6750\uff1a http://composingprograms.com/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u8bfe\u7a0b\u7f51\u7ad9\u4f1a\u6709\u6bcf\u4e2a\u4f5c\u4e1a\u5bf9\u5e94\u7684\u6587\u6863\u94fe\u63a5\u4ee5\u53ca\u4ee3\u7801\u6846\u67b6\u7684\u4e0b\u8f7d\u94fe\u63a5\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPic/CS61A - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/","text":"Introductory C Programming Specialization \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aDuke \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a110 \u5c0f\u65f6 \u975e\u5e38\u597d\u7684\u8bfe\u7a0b\uff0c\u81ea\u6211\u611f\u89c9\u6536\u76ca\u975e\u5e38\u5927\uff1a \u4fa7\u91cd\u57fa\u7840\u548c\u57fa\u672c\u6982\u5ff5\uff1a\u5982 frame\u3001stack memory\u3001heap memory \u7b49\u8bb2\u5f97\u5f88\u900f\u3002 \u9488\u5bf9C\u6700\u96be\u638c\u63e1\u7684\u6307\u9488\uff0c\u6709\u597d\u7684\u7ec3\u4e60\u548c\u7f16\u7a0b\u6765\u52a0\u6df1\u548c\u5f3a\u5316\u7406\u89e3\u3002 \u975e\u5e38\u597d\u7684 GDB\uff0cValgrind \u4e0a\u624b\u8bad\u7ec3\uff0c\u4f5c\u4e1a\u4e5f\u4f1a\u6d89\u53ca\u4e00\u4e9b\u57fa\u672c\u7684 Git \u7ec3\u4e60\u3002 \u8001\u5e08\u5efa\u8bae\u4f5c\u4e1a\u7528 Emacs\uff0c\u6240\u4ee5\u5bf9 Emacs \u5c0f\u767d\u6765\u8bf4\uff0c\u662f\u4e2a\u4e0d\u9519\u7684\u5165\u95e8\u3002\u5982\u679c\u4f60\u4f1a\u7528 Vim \uff0c\u6211\u5efa\u8bae\u4f60\u7528 Evil \u63d2\u4ef6\u3002\u8fd9\u6837\u4f60\u4e0d\u4f1a\u4e22\u6389 Vim \u7684\u7f16\u8f91\u529f\u80fd\uff0c\u540c\u65f6\u53ef\u4ee5\u4f53\u4f1a Emacs \u7684\u5f3a\u5927\u3002\u5de5\u5177\u7bb1\u91cc\u540c\u65f6\u6709 Emacs \u548c Vim \u65f6\uff0c\u6548\u7387\u4f1a\u6709\u4e0d\u5c11\u63d0\u9ad8\u3002Emacs \u7684 org-mode\uff0c\u548c GDB \u7684\u987a\u6ed1\u6574\u5408\uff0c\u7b49\u7b49\u7b49\u7b49\uff0c\u90fd\u4f1a\u8ba9\u4f60\u5982\u864e\u6dfb\u7ffc\u3002 \u867d\u7136\u53ef\u80fd\u9700\u8981\u4ed8\u8d39\uff0c\u4f46\u6211\u89c9\u5f97\u503c\u3002 Coursera \u628a\u8fd9\u4e00\u5927\u8bfe\u5206\u6210\u4e86\u56db\u4e2a\u5c0f\u8bfe\uff0c\u4f46\u5c0f\u8bfe\u4e4b\u95f4\u7684\u4f5c\u4e1a\u6587\u4ef6\u7684\u8f6c\u79fb\u5e76\u4e0d\u987a\u5229\u3002\u8fd9\u662f\u4e2a\u6709\u70b9\u8ba8\u538c\u7684\u5730\u65b9\u3002\u5e78\u8fd0\u7684\u662f\uff0c\u540e\u9762\u7684\u5c0f\u8bfe\u53ef\u4ee5\u7ed9\u4ee5\u524d\u5c0f\u8bfe\u7684\u4f5c\u4e1a\u6253\u5206\uff0c\u6240\u4ee5\u6211\u662f\u63a5\u7740\u628a\u524d\u9762\u7684\u4f5c\u4e1a\u53c8\u505a\u4e86\u4e00\u904d\u3002\u6743\u5f53\u5de9\u56fa\uff0c\u6548\u679c\u4e0d\u9519\u3002 \u867d\u8bf4\u8bfe\u540d\u662f\u5165\u95e8\uff0c\u4f46\u517c\u5177\u5e7f\u5ea6\u548c\u6df1\u5ea6\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/specializations/c-programming \u8bfe\u7a0b\u89c6\u9891\uff1a\u540c\u4e0a \u8bfe\u7a0b\u6559\u6750\uff1a\u540c\u4e0a \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u540c\u4e0a \u8d44\u6e90\u6c47\u603b @haidongji \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7684\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 Duke Coursera Intro C \u4e2d\u3002\u56e0\u4e3a\u65f6\u95f4\u5173\u7cfb\uff0c\u6211\u6700\u540e\u4e00\u8bfe\u6700\u540e\u4e00\u5468\u7684\u51e0\u4e2a\u4f5c\u4e1a\u5230\u76ee\u524d\u8fd8\u6ca1\u6709\u5b8c\u6210\u3002","title":"Duke University: Introductory C Programming Specialization"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/#introductory-c-programming-specialization","text":"","title":"Introductory C Programming Specialization"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aDuke \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a110 \u5c0f\u65f6 \u975e\u5e38\u597d\u7684\u8bfe\u7a0b\uff0c\u81ea\u6211\u611f\u89c9\u6536\u76ca\u975e\u5e38\u5927\uff1a \u4fa7\u91cd\u57fa\u7840\u548c\u57fa\u672c\u6982\u5ff5\uff1a\u5982 frame\u3001stack memory\u3001heap memory \u7b49\u8bb2\u5f97\u5f88\u900f\u3002 \u9488\u5bf9C\u6700\u96be\u638c\u63e1\u7684\u6307\u9488\uff0c\u6709\u597d\u7684\u7ec3\u4e60\u548c\u7f16\u7a0b\u6765\u52a0\u6df1\u548c\u5f3a\u5316\u7406\u89e3\u3002 \u975e\u5e38\u597d\u7684 GDB\uff0cValgrind \u4e0a\u624b\u8bad\u7ec3\uff0c\u4f5c\u4e1a\u4e5f\u4f1a\u6d89\u53ca\u4e00\u4e9b\u57fa\u672c\u7684 Git \u7ec3\u4e60\u3002 \u8001\u5e08\u5efa\u8bae\u4f5c\u4e1a\u7528 Emacs\uff0c\u6240\u4ee5\u5bf9 Emacs \u5c0f\u767d\u6765\u8bf4\uff0c\u662f\u4e2a\u4e0d\u9519\u7684\u5165\u95e8\u3002\u5982\u679c\u4f60\u4f1a\u7528 Vim \uff0c\u6211\u5efa\u8bae\u4f60\u7528 Evil \u63d2\u4ef6\u3002\u8fd9\u6837\u4f60\u4e0d\u4f1a\u4e22\u6389 Vim \u7684\u7f16\u8f91\u529f\u80fd\uff0c\u540c\u65f6\u53ef\u4ee5\u4f53\u4f1a Emacs \u7684\u5f3a\u5927\u3002\u5de5\u5177\u7bb1\u91cc\u540c\u65f6\u6709 Emacs \u548c Vim \u65f6\uff0c\u6548\u7387\u4f1a\u6709\u4e0d\u5c11\u63d0\u9ad8\u3002Emacs \u7684 org-mode\uff0c\u548c GDB \u7684\u987a\u6ed1\u6574\u5408\uff0c\u7b49\u7b49\u7b49\u7b49\uff0c\u90fd\u4f1a\u8ba9\u4f60\u5982\u864e\u6dfb\u7ffc\u3002 \u867d\u7136\u53ef\u80fd\u9700\u8981\u4ed8\u8d39\uff0c\u4f46\u6211\u89c9\u5f97\u503c\u3002 Coursera \u628a\u8fd9\u4e00\u5927\u8bfe\u5206\u6210\u4e86\u56db\u4e2a\u5c0f\u8bfe\uff0c\u4f46\u5c0f\u8bfe\u4e4b\u95f4\u7684\u4f5c\u4e1a\u6587\u4ef6\u7684\u8f6c\u79fb\u5e76\u4e0d\u987a\u5229\u3002\u8fd9\u662f\u4e2a\u6709\u70b9\u8ba8\u538c\u7684\u5730\u65b9\u3002\u5e78\u8fd0\u7684\u662f\uff0c\u540e\u9762\u7684\u5c0f\u8bfe\u53ef\u4ee5\u7ed9\u4ee5\u524d\u5c0f\u8bfe\u7684\u4f5c\u4e1a\u6253\u5206\uff0c\u6240\u4ee5\u6211\u662f\u63a5\u7740\u628a\u524d\u9762\u7684\u4f5c\u4e1a\u53c8\u505a\u4e86\u4e00\u904d\u3002\u6743\u5f53\u5de9\u56fa\uff0c\u6548\u679c\u4e0d\u9519\u3002 \u867d\u8bf4\u8bfe\u540d\u662f\u5165\u95e8\uff0c\u4f46\u517c\u5177\u5e7f\u5ea6\u548c\u6df1\u5ea6\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/specializations/c-programming \u8bfe\u7a0b\u89c6\u9891\uff1a\u540c\u4e0a \u8bfe\u7a0b\u6559\u6750\uff1a\u540c\u4e0a \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u540c\u4e0a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/#_3","text":"@haidongji \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7684\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 Duke Coursera Intro C \u4e2d\u3002\u56e0\u4e3a\u65f6\u95f4\u5173\u7cfb\uff0c\u6211\u6700\u540e\u4e00\u8bfe\u6700\u540e\u4e00\u5468\u7684\u51e0\u4e2a\u4f5c\u4e1a\u5230\u76ee\u524d\u8fd8\u6ca1\u6709\u5b8c\u6210\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/","text":"MIT-Missing-Semester \u8bfe\u7a0b\u7b80\u4ecb \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1ashell \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a10 \u5c0f\u65f6 \u6b63\u5982\u8bfe\u7a0b\u540d\u5b57\u6240\u8a00\uff1a\u201c\u8ba1\u7b97\u673a\u6559\u5b66\u4e2d\u6d88\u5931\u7684\u4e00\u4e2a\u5b66\u671f\u201d\uff0c\u8fd9\u95e8\u8bfe\u5c06\u4f1a\u6559\u4f1a\u4f60\u8bb8\u591a\u5927\u5b66\u7684\u8bfe\u5802\u4e0a\u4e0d\u4f1a\u6d89\u53ca\u4f46\u5374\u5bf9\u6bcf\u4e2a CSer \u65e0\u6bd4\u91cd\u8981\u7684\u5de5\u5177\u6216\u8005\u77e5\u8bc6\u70b9\u3002\u4f8b\u5982 Shell \u7f16\u7a0b\u3001\u547d\u4ee4\u884c\u914d\u7f6e\u3001Git\u3001Vim\u3001 tmux \u3001 ssh \u7b49\u7b49\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u8ba1\u7b97\u673a\u5c0f\u767d\uff0c\u90a3\u4e48\u6211\u975e\u5e38\u5efa\u8bae\u4f60\u5b66\u4e60\u4e00\u4e0b\u8fd9\u95e8\u8bfe\uff0c\u56e0\u4e3a\u5b83\u57fa\u672c\u6d89\u53ca\u4e86\u672c\u4e66\u5fc5\u5b66\u5de5\u5177\u4e2d\u7684\u7edd\u5927\u90e8\u5206\u5185\u5bb9\u3002 \u9664\u4e86 MIT \u5b98\u65b9\u7684\u5b66\u4e60\u8d44\u6599\u5916\uff0c\u5317\u4eac\u5927\u5b66\u56fe\u7075\u73ed\u5f00\u8bbe\u7684\u524d\u6cbf\u8ba1\u7b97\u5b9e\u8df5\u4e2d\u4e5f\u5f00\u8bbe\u4e86\u76f8\u5173\u8bfe\u7a0b\uff0c\u8d44\u6599\u4f4d\u4e8e \u8fd9\u4e2a\u7f51\u7ad9 \u4e0b\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://missing.csail.mit.edu/2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e00\u4e9b\u968f\u5802\u5c0f\u7ec3\u4e60\uff0c\u5177\u4f53\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002","title":"MIT-Missing-Semester"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/#mit-missing-semester","text":"","title":"MIT-Missing-Semester"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/#_1","text":"\u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1ashell \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a10 \u5c0f\u65f6 \u6b63\u5982\u8bfe\u7a0b\u540d\u5b57\u6240\u8a00\uff1a\u201c\u8ba1\u7b97\u673a\u6559\u5b66\u4e2d\u6d88\u5931\u7684\u4e00\u4e2a\u5b66\u671f\u201d\uff0c\u8fd9\u95e8\u8bfe\u5c06\u4f1a\u6559\u4f1a\u4f60\u8bb8\u591a\u5927\u5b66\u7684\u8bfe\u5802\u4e0a\u4e0d\u4f1a\u6d89\u53ca\u4f46\u5374\u5bf9\u6bcf\u4e2a CSer \u65e0\u6bd4\u91cd\u8981\u7684\u5de5\u5177\u6216\u8005\u77e5\u8bc6\u70b9\u3002\u4f8b\u5982 Shell \u7f16\u7a0b\u3001\u547d\u4ee4\u884c\u914d\u7f6e\u3001Git\u3001Vim\u3001 tmux \u3001 ssh \u7b49\u7b49\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u8ba1\u7b97\u673a\u5c0f\u767d\uff0c\u90a3\u4e48\u6211\u975e\u5e38\u5efa\u8bae\u4f60\u5b66\u4e60\u4e00\u4e0b\u8fd9\u95e8\u8bfe\uff0c\u56e0\u4e3a\u5b83\u57fa\u672c\u6d89\u53ca\u4e86\u672c\u4e66\u5fc5\u5b66\u5de5\u5177\u4e2d\u7684\u7edd\u5927\u90e8\u5206\u5185\u5bb9\u3002 \u9664\u4e86 MIT \u5b98\u65b9\u7684\u5b66\u4e60\u8d44\u6599\u5916\uff0c\u5317\u4eac\u5927\u5b66\u56fe\u7075\u73ed\u5f00\u8bbe\u7684\u524d\u6cbf\u8ba1\u7b97\u5b9e\u8df5\u4e2d\u4e5f\u5f00\u8bbe\u4e86\u76f8\u5173\u8bfe\u7a0b\uff0c\u8d44\u6599\u4f4d\u4e8e \u8fd9\u4e2a\u7f51\u7ad9 \u4e0b\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://missing.csail.mit.edu/2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e00\u4e9b\u968f\u5802\u5c0f\u7ec3\u4e60\uff0c\u5177\u4f53\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/6035/","text":"","title":"6035"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/","text":"Stanford CS143: Compilers \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u6216 C++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u65af\u5766\u798f\u7684\u7f16\u8bd1\u539f\u7406\u8bfe\u7a0b\uff0c\u8bbe\u8ba1\u8005\u5f00\u53d1\u4e86\u4e00\u4e2a Class-Object-Oriented-Language\uff0c\u7b80\u79f0 COOL \u8bed\u8a00\u3002\u8fd9\u95e8\u8bfe\u7684\u6838\u5fc3\u5c31\u662f\u901a\u8fc7\u7406\u8bba\u77e5\u8bc6\u7684\u5b66\u4e60\uff0c\u4e3a COOL \u8bed\u8a00\u5b9e\u73b0\u4e00\u4e2a\u7f16\u8bd1\u5668\uff0c\u5c06 COOL \u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u4e3a MIPS \u6c47\u7f16\u5e76\u5728 Spim \u8fd9\u4e2a MIPS \u6a21\u62df\u5668\u4e0a\u6210\u529f\u6267\u884c\u3002 \u7406\u8bba\u90e8\u5206\u57fa\u672c\u6309\u7167\u9f99\u4e66\u7684\u987a\u5e8f\u8986\u76d6\u4e86\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u3001\u8fd0\u884c\u65f6\u73af\u5883\u3001\u5bc4\u5b58\u5668\u5206\u914d\u3001\u4ee3\u7801\u4f18\u5316\u4e0e\u751f\u6210\u7b49\u5185\u5bb9\uff0c\u5b9e\u8df5\u90e8\u5206\u5219\u76f8\u5e94\u5730\u5206\u4e3a\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u3001\u4ee3\u7801\u751f\u6210\u56db\u4e2a\u9636\u6bb5\uff0c\u96be\u5ea6\u5faa\u5e8f\u6e10\u8fdb\uff0c\u5e76\u5728\u4f18\u5316\u90e8\u5206\u7ed9\u5b66\u751f\u7559\u4e0b\u4e86\u5f88\u5927\u7684\u8bbe\u8ba1\u7a7a\u95f4\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs143/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV17K4y147Bz \u8bfe\u7a0b\u6559\u6750\uff1a\u9f99\u4e66 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a5 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5e26\u4f60\u5b9e\u73b0\u4e00\u4e2a\u7f16\u8bd1\u5668 \u8d44\u6e90\u6c47\u603b @skyzluo \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 skyzluo/CS143-Compilers-Stanford - GitHub \u4e2d\u3002","title":"Stanford CS143: Compilers"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/#stanford-cs143-compilers","text":"","title":"Stanford CS143: Compilers"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u6216 C++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u65af\u5766\u798f\u7684\u7f16\u8bd1\u539f\u7406\u8bfe\u7a0b\uff0c\u8bbe\u8ba1\u8005\u5f00\u53d1\u4e86\u4e00\u4e2a Class-Object-Oriented-Language\uff0c\u7b80\u79f0 COOL \u8bed\u8a00\u3002\u8fd9\u95e8\u8bfe\u7684\u6838\u5fc3\u5c31\u662f\u901a\u8fc7\u7406\u8bba\u77e5\u8bc6\u7684\u5b66\u4e60\uff0c\u4e3a COOL \u8bed\u8a00\u5b9e\u73b0\u4e00\u4e2a\u7f16\u8bd1\u5668\uff0c\u5c06 COOL \u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u4e3a MIPS \u6c47\u7f16\u5e76\u5728 Spim \u8fd9\u4e2a MIPS \u6a21\u62df\u5668\u4e0a\u6210\u529f\u6267\u884c\u3002 \u7406\u8bba\u90e8\u5206\u57fa\u672c\u6309\u7167\u9f99\u4e66\u7684\u987a\u5e8f\u8986\u76d6\u4e86\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u3001\u8fd0\u884c\u65f6\u73af\u5883\u3001\u5bc4\u5b58\u5668\u5206\u914d\u3001\u4ee3\u7801\u4f18\u5316\u4e0e\u751f\u6210\u7b49\u5185\u5bb9\uff0c\u5b9e\u8df5\u90e8\u5206\u5219\u76f8\u5e94\u5730\u5206\u4e3a\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u3001\u4ee3\u7801\u751f\u6210\u56db\u4e2a\u9636\u6bb5\uff0c\u96be\u5ea6\u5faa\u5e8f\u6e10\u8fdb\uff0c\u5e76\u5728\u4f18\u5316\u90e8\u5206\u7ed9\u5b66\u751f\u7559\u4e0b\u4e86\u5f88\u5927\u7684\u8bbe\u8ba1\u7a7a\u95f4\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs143/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV17K4y147Bz \u8bfe\u7a0b\u6559\u6750\uff1a\u9f99\u4e66 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a5 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5e26\u4f60\u5b9e\u73b0\u4e00\u4e2a\u7f16\u8bd1\u5668","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/#_3","text":"@skyzluo \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 skyzluo/CS143-Compilers-Stanford - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/","text":"Stanford CS148 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cPython \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u8fd9\u662f\u4e00\u95e8\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u5165\u95e8\u8bfe\u7a0b\uff0c\u8fd9\u95e8\u8bfe\u7684\u4e00\u5f00\u59cb\u4f7f\u7528 Blender \u53bb\u751f\u6210\u56fe\u50cf\uff0c\u5e76\u4e14\u7406\u89e3\u5e95\u5c42\u7684\u6570\u5b66\u77e5\u8bc6\uff0c\u5305\u62ec\u4e09\u89d2\u5f62\u3001\u6cd5\u5411\u91cf\u3001\u63d2\u503c\u3001\u7eb9\u7406\u6620\u5c04\u3001\u51f9\u51f8\u8d34\u56fe\u7b49\u7b49\u3002\u4e4b\u540e\u4f1a\u4ecb\u7ecd\u5149\u7ebf\u548c\u989c\u8272\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u5f71\u54cd\u8ba1\u7b97\u673a\u7684\u663e\u793a\u548c\u6253\u5370\u3002\u540c\u65f6\u4e5f\u4f1a\u4ecb\u7ecd BRDF \u4ee5\u53ca\u4e00\u4e9b\u57fa\u672c\u7684\u5149\u7167\u548c\u7740\u8272\u6a21\u578b\u3002\u8bfe\u7a0b\u7684\u6700\u540e\uff0c\u4f1a\u6d89\u53ca\u5230\u5149\u7ebf\u8ffd\u8e2a\u3001\u53cd\u8d70\u6837\u3001\u52a0\u901f\u7ed3\u6784\u7b49\u5185\u5bb9\u3002 \u5177\u4f53\u8bfe\u7a0b\u4fe1\u606f\u53ef\u4ee5\u67e5\u770b \u8bfe\u7a0b\u7f51\u7ad9 \u3002 \u8fd9\u95e8\u8bfe\u7a0b\u6bd4\u8d77 GAMES101 \u6d45\u4e00\u4e9b\uff0c\u7f16\u7a0b\u8bed\u8a00\u4f7f\u7528\u7684\u662f Python\uff0c\u5bf9\u4e8e\u4e0d\u719f\u6089 C++ \u7684\u540c\u5b66\u6bd4\u8f83\u53cb\u597d\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a CS148 \u8bfe\u7a0b\u89c6\u9891\uff1a\u65e0\uff0c\u76f4\u63a5\u770b lecture \u5c31\u53ef\u4ee5\u4e86\uff0c\u4e5f\u53ef\u4ee5\u53c2\u8003 GAMES101 \u89c6\u9891 \u8bfe\u7a0b\u6559\u6750\uff1aFundamentals of Computer Graphics \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 8 \u4e2a hw, 1 \u4e2a final project","title":"Stanford CS148"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/#stanford-cs148","text":"","title":"Stanford CS148"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cPython \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u8fd9\u662f\u4e00\u95e8\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u5165\u95e8\u8bfe\u7a0b\uff0c\u8fd9\u95e8\u8bfe\u7684\u4e00\u5f00\u59cb\u4f7f\u7528 Blender \u53bb\u751f\u6210\u56fe\u50cf\uff0c\u5e76\u4e14\u7406\u89e3\u5e95\u5c42\u7684\u6570\u5b66\u77e5\u8bc6\uff0c\u5305\u62ec\u4e09\u89d2\u5f62\u3001\u6cd5\u5411\u91cf\u3001\u63d2\u503c\u3001\u7eb9\u7406\u6620\u5c04\u3001\u51f9\u51f8\u8d34\u56fe\u7b49\u7b49\u3002\u4e4b\u540e\u4f1a\u4ecb\u7ecd\u5149\u7ebf\u548c\u989c\u8272\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u5f71\u54cd\u8ba1\u7b97\u673a\u7684\u663e\u793a\u548c\u6253\u5370\u3002\u540c\u65f6\u4e5f\u4f1a\u4ecb\u7ecd BRDF \u4ee5\u53ca\u4e00\u4e9b\u57fa\u672c\u7684\u5149\u7167\u548c\u7740\u8272\u6a21\u578b\u3002\u8bfe\u7a0b\u7684\u6700\u540e\uff0c\u4f1a\u6d89\u53ca\u5230\u5149\u7ebf\u8ffd\u8e2a\u3001\u53cd\u8d70\u6837\u3001\u52a0\u901f\u7ed3\u6784\u7b49\u5185\u5bb9\u3002 \u5177\u4f53\u8bfe\u7a0b\u4fe1\u606f\u53ef\u4ee5\u67e5\u770b \u8bfe\u7a0b\u7f51\u7ad9 \u3002 \u8fd9\u95e8\u8bfe\u7a0b\u6bd4\u8d77 GAMES101 \u6d45\u4e00\u4e9b\uff0c\u7f16\u7a0b\u8bed\u8a00\u4f7f\u7528\u7684\u662f Python\uff0c\u5bf9\u4e8e\u4e0d\u719f\u6089 C++ \u7684\u540c\u5b66\u6bd4\u8f83\u53cb\u597d\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a CS148 \u8bfe\u7a0b\u89c6\u9891\uff1a\u65e0\uff0c\u76f4\u63a5\u770b lecture \u5c31\u53ef\u4ee5\u4e86\uff0c\u4e5f\u53ef\u4ee5\u53c2\u8003 GAMES101 \u89c6\u9891 \u8bfe\u7a0b\u6559\u6750\uff1aFundamentals of Computer Graphics \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 8 \u4e2a hw, 1 \u4e2a final project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS184/","text":"","title":"CS184"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/","text":"GAMES101 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUCSB \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cC++ \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u672c\u8bfe\u7a0b\u5c06\u5168\u9762\u800c\u7cfb\u7edf\u5730\u4ecb\u7ecd\u73b0\u4ee3\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u56db\u5927\u7ec4\u6210\u90e8\u5206\uff1a\uff081\uff09\u5149\u6805\u5316\u6210\u50cf\uff0c\uff082\uff09\u51e0\u4f55\u8868\u793a\uff0c\uff083\uff09\u5149\u7684\u4f20\u64ad\u7406\u8bba\uff0c\u4ee5\u53ca\uff084\uff09\u52a8\u753b\u4e0e\u6a21\u62df\u3002\u6bcf\u4e2a\u65b9\u9762\u90fd\u4f1a\u4ece\u57fa\u7840\u539f\u7406\u51fa\u53d1\u8bb2\u89e3\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5e76\u4ecb\u7ecd\u524d\u6cbf\u7684\u7406\u8bba\u7814\u7a76\u3002\u901a\u8fc7\u672c\u8bfe\u7a0b\uff0c\u4f60\u53ef\u4ee5\u5b66\u4e60\u5230\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u80cc\u540e\u7684\u6570\u5b66\u548c\u7269\u7406\u77e5\u8bc6\uff0c\u5e76\u953b\u70bc\u5b9e\u9645\u7684\u7f16\u7a0b\u80fd\u529b\u3002 \u4f5c\u4e3a\u5165\u95e8\uff0c\u672c\u8bfe\u7a0b\u4f1a\u5c3d\u53ef\u80fd\u7684\u8986\u76d6\u56fe\u5f62\u5b66\u7684\u65b9\u65b9\u9762\u9762\uff0c\u628a\u6bcf\u4e00\u90e8\u5206\u7684\u57fa\u672c\u6982\u5ff5\u90fd\u5c3d\u53ef\u80fd\u8bf4\u6e05\u695a\uff0c\u8ba9\u5927\u5bb6\u5bf9\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u6709\u4e00\u4e2a\u5b8c\u6574\u7684\u3001\u81ea\u4e0a\u800c\u4e0b\u7684\u5168\u5c40\u628a\u63e1\u3002\u5168\u5c40\u7684\u7406\u89e3\u5f88\u91cd\u8981\uff0c\u5b66\u5b8c\u672c\u8bfe\u7a0b\u540e\uff0c\u4f60\u4f1a\u4e86\u89e3\u5230\u56fe\u5f62\u5b66\u4e0d\u7b49\u4e8e OpenGL\uff0c\u4e0d\u7b49\u4e8e\u5149\u7ebf\u8ffd\u8e2a\uff0c\u800c\u662f\u4e00\u5957\u751f\u6210\u6574\u4e2a\u865a\u62df\u4e16\u754c\u7684\u65b9\u6cd5\u3002\u4ece\u672c\u8bfe\u7a0b\u7684\u6807\u9898\uff0c\u5927\u5bb6\u8fd8\u53ef\u4ee5\u770b\u5230\u201c\u73b0\u4ee3\u201d\u4e8c\u5b57\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u8fd9\u95e8\u8bfe\u6240\u8981\u7ed9\u5927\u5bb6\u4ecb\u7ecd\u7684\u90fd\u662f\u73b0\u4ee3\u5316\u7684\u77e5\u8bc6\uff0c\u4e5f\u90fd\u662f\u73b0\u4ee3\u56fe\u5f62\u5b66\u5de5\u4e1a\u754c\u9700\u8981\u7684\u56fe\u5f62\u5b66\u57fa\u7840\u3002 GAMES101 \u662f\u56fd\u5185\u76f8\u5f53\u6709\u540d\u7684\u56fe\u5f62\u5b66\u516c\u5f00\u8bfe\u3002\u548c\u5927\u5bb6\u5370\u8c61\u4e2d\u6ee1\u662f\u6570\u5b66\u548c\u7b97\u6cd5\u7684\u56fe\u5f62\u5b66\u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe\u4ee5\u5341\u5206\u751f\u52a8\u7684\u65b9\u5f0f\u5e26\u6211\u4eec\u8fdb\u5165\u4e86\u56fe\u5f62\u5b66\u8fd9\u4e2a\u9886\u57df\u7684\u5927\u95e8\u3002 \u6bcf\u4e2aproject\u4ee3\u7801\u91cf\u90fd\u4e0d\u4f1a\u5f88\u591a\uff0c\u4f46\u662f\u5374\u90fd\u5341\u5206\u6709\u8da3\u3002\u5728\u505a\u8fd9\u4e9bproject\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u4f1a\u5b9e\u73b0\u7b80\u5355\u7684\u5149\u6805\u5316\uff0c\u5e76\u6e32\u67d3\u4e00\u4e2a\u7b80\u6613\u7684\u6a21\u578b\uff0c\u6211\u4eec\u8fd8\u4f1a\u5b9e\u73b0\u5149\u7ebf\u8ffd\u8e2a\uff0c\u4ee5\u8ffd\u6c42\u6e32\u67d3\u66f4\u597d\u7684\u8d28\u91cf\u3002\u6bcf\u4e2aproject\u4e2d\u8fd8\u6709\u9009\u505a\u7684\u62d3\u5c55\u4f5c\u4e1a\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u6e32\u67d3\u7684\u6a21\u578b\u5177\u6709\u66f4\u597d\u7684\u8d28\u91cf\uff0c\u66f4\u5feb\u7684\u6e32\u67d3\u901f\u5ea6\u3002 \u559c\u6b22\u73a9\u6e38\u620f\u7684\u540c\u5b66\u5e94\u8be5\u5bf9\u5b9e\u65f6\u5149\u7ebf\u8ffd\u8e2a\u6709\u4e00\u5b9a\u7684\u4e86\u89e3\uff0c\u8fd9\u95e8\u8bfe\u7684\u8001\u5e08\u95eb\u4ee4\u742a\u5c31\u5bf9\u8fd9\u4e00\u6280\u672f\u6709\u76f4\u63a5\u7684\u63a8\u52a8\u4f5c\u7528\u3002 \u8ddf\u7740\u8bfe\u7a0b\u7684\u89c6\u9891\uff0c\u505a\u5b8c\u6bcf\u4e00\u4e2aproject\uff0c\u76f8\u4fe1\u4f60\u4f1a\u548c\u6211\u4e00\u6837\u5bf9\u56fe\u5f62\u5b66\uff0c\u4ee5\u53ca\u73b0\u4ee3\u7684\u6e32\u67d3\u6280\u672f\u4ea7\u751f\u6d53\u539a\u7684\u5174\u8da3\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES101 , GAMES101 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili , \u5b98\u7f51 \u8bfe\u7a0b\u6559\u6750\uff1aFundamentals of Computer Graphics \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 8 \u4e2a project \u8d44\u6e90\u6c47\u603b @ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: graphics/GAMES101 - GitHub \u4e2d\u3002","title":"GAMES101"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/#games101","text":"","title":"GAMES101"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUCSB \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cC++ \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u672c\u8bfe\u7a0b\u5c06\u5168\u9762\u800c\u7cfb\u7edf\u5730\u4ecb\u7ecd\u73b0\u4ee3\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u56db\u5927\u7ec4\u6210\u90e8\u5206\uff1a\uff081\uff09\u5149\u6805\u5316\u6210\u50cf\uff0c\uff082\uff09\u51e0\u4f55\u8868\u793a\uff0c\uff083\uff09\u5149\u7684\u4f20\u64ad\u7406\u8bba\uff0c\u4ee5\u53ca\uff084\uff09\u52a8\u753b\u4e0e\u6a21\u62df\u3002\u6bcf\u4e2a\u65b9\u9762\u90fd\u4f1a\u4ece\u57fa\u7840\u539f\u7406\u51fa\u53d1\u8bb2\u89e3\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5e76\u4ecb\u7ecd\u524d\u6cbf\u7684\u7406\u8bba\u7814\u7a76\u3002\u901a\u8fc7\u672c\u8bfe\u7a0b\uff0c\u4f60\u53ef\u4ee5\u5b66\u4e60\u5230\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u80cc\u540e\u7684\u6570\u5b66\u548c\u7269\u7406\u77e5\u8bc6\uff0c\u5e76\u953b\u70bc\u5b9e\u9645\u7684\u7f16\u7a0b\u80fd\u529b\u3002 \u4f5c\u4e3a\u5165\u95e8\uff0c\u672c\u8bfe\u7a0b\u4f1a\u5c3d\u53ef\u80fd\u7684\u8986\u76d6\u56fe\u5f62\u5b66\u7684\u65b9\u65b9\u9762\u9762\uff0c\u628a\u6bcf\u4e00\u90e8\u5206\u7684\u57fa\u672c\u6982\u5ff5\u90fd\u5c3d\u53ef\u80fd\u8bf4\u6e05\u695a\uff0c\u8ba9\u5927\u5bb6\u5bf9\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u6709\u4e00\u4e2a\u5b8c\u6574\u7684\u3001\u81ea\u4e0a\u800c\u4e0b\u7684\u5168\u5c40\u628a\u63e1\u3002\u5168\u5c40\u7684\u7406\u89e3\u5f88\u91cd\u8981\uff0c\u5b66\u5b8c\u672c\u8bfe\u7a0b\u540e\uff0c\u4f60\u4f1a\u4e86\u89e3\u5230\u56fe\u5f62\u5b66\u4e0d\u7b49\u4e8e OpenGL\uff0c\u4e0d\u7b49\u4e8e\u5149\u7ebf\u8ffd\u8e2a\uff0c\u800c\u662f\u4e00\u5957\u751f\u6210\u6574\u4e2a\u865a\u62df\u4e16\u754c\u7684\u65b9\u6cd5\u3002\u4ece\u672c\u8bfe\u7a0b\u7684\u6807\u9898\uff0c\u5927\u5bb6\u8fd8\u53ef\u4ee5\u770b\u5230\u201c\u73b0\u4ee3\u201d\u4e8c\u5b57\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u8fd9\u95e8\u8bfe\u6240\u8981\u7ed9\u5927\u5bb6\u4ecb\u7ecd\u7684\u90fd\u662f\u73b0\u4ee3\u5316\u7684\u77e5\u8bc6\uff0c\u4e5f\u90fd\u662f\u73b0\u4ee3\u56fe\u5f62\u5b66\u5de5\u4e1a\u754c\u9700\u8981\u7684\u56fe\u5f62\u5b66\u57fa\u7840\u3002 GAMES101 \u662f\u56fd\u5185\u76f8\u5f53\u6709\u540d\u7684\u56fe\u5f62\u5b66\u516c\u5f00\u8bfe\u3002\u548c\u5927\u5bb6\u5370\u8c61\u4e2d\u6ee1\u662f\u6570\u5b66\u548c\u7b97\u6cd5\u7684\u56fe\u5f62\u5b66\u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe\u4ee5\u5341\u5206\u751f\u52a8\u7684\u65b9\u5f0f\u5e26\u6211\u4eec\u8fdb\u5165\u4e86\u56fe\u5f62\u5b66\u8fd9\u4e2a\u9886\u57df\u7684\u5927\u95e8\u3002 \u6bcf\u4e2aproject\u4ee3\u7801\u91cf\u90fd\u4e0d\u4f1a\u5f88\u591a\uff0c\u4f46\u662f\u5374\u90fd\u5341\u5206\u6709\u8da3\u3002\u5728\u505a\u8fd9\u4e9bproject\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u4f1a\u5b9e\u73b0\u7b80\u5355\u7684\u5149\u6805\u5316\uff0c\u5e76\u6e32\u67d3\u4e00\u4e2a\u7b80\u6613\u7684\u6a21\u578b\uff0c\u6211\u4eec\u8fd8\u4f1a\u5b9e\u73b0\u5149\u7ebf\u8ffd\u8e2a\uff0c\u4ee5\u8ffd\u6c42\u6e32\u67d3\u66f4\u597d\u7684\u8d28\u91cf\u3002\u6bcf\u4e2aproject\u4e2d\u8fd8\u6709\u9009\u505a\u7684\u62d3\u5c55\u4f5c\u4e1a\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u6e32\u67d3\u7684\u6a21\u578b\u5177\u6709\u66f4\u597d\u7684\u8d28\u91cf\uff0c\u66f4\u5feb\u7684\u6e32\u67d3\u901f\u5ea6\u3002 \u559c\u6b22\u73a9\u6e38\u620f\u7684\u540c\u5b66\u5e94\u8be5\u5bf9\u5b9e\u65f6\u5149\u7ebf\u8ffd\u8e2a\u6709\u4e00\u5b9a\u7684\u4e86\u89e3\uff0c\u8fd9\u95e8\u8bfe\u7684\u8001\u5e08\u95eb\u4ee4\u742a\u5c31\u5bf9\u8fd9\u4e00\u6280\u672f\u6709\u76f4\u63a5\u7684\u63a8\u52a8\u4f5c\u7528\u3002 \u8ddf\u7740\u8bfe\u7a0b\u7684\u89c6\u9891\uff0c\u505a\u5b8c\u6bcf\u4e00\u4e2aproject\uff0c\u76f8\u4fe1\u4f60\u4f1a\u548c\u6211\u4e00\u6837\u5bf9\u56fe\u5f62\u5b66\uff0c\u4ee5\u53ca\u73b0\u4ee3\u7684\u6e32\u67d3\u6280\u672f\u4ea7\u751f\u6d53\u539a\u7684\u5174\u8da3\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES101 , GAMES101 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili , \u5b98\u7f51 \u8bfe\u7a0b\u6559\u6750\uff1aFundamentals of Computer Graphics \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 8 \u4e2a project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/#_3","text":"@ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: graphics/GAMES101 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/","text":"GAMES103 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStyle3D/OSU \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0c\u5927\u5b66\u7269\u7406\uff0c\u7f16\u7a0b\u80fd\u529b\uff0c\u57fa\u672c\u56fe\u5f62\u77e5\u8bc6 \u7f16\u7a0b\u8bed\u8a00\uff1aC# \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd\uff1a \u672c\u8bfe\u7a0b\u5c06\u4f5c\u4e3a\u57fa\u4e8e\u7269\u7406\u7684\u8ba1\u7b97\u673a\u52a8\u753b\u6280\u672f\u5165\u95e8\uff0c\u7740\u91cd\u4ecb\u7ecd\u5404\u79cd\u57fa\u7840\u7684\u7269\u7406\u52a8\u753b\u6a21\u62df\u6280\u672f\u3002 \u8be5\u8bfe\u7a0b\u4e3b\u8981\u6db5\u76d6\u56db\u4e2a\u65b9\u5411\uff0c\u5206\u522b\u4e3a\uff1a1\uff09\u521a\u4f53\u6a21\u62df\uff1b2\uff09\u8d28\u70b9\u5f39\u7c27\u3001\u7ea6\u675f\u4e0e\u5e03\u6599\u6a21\u62df\uff1b3\uff09\u57fa\u4e8e\u6709\u9650\u5143\u7684\u5f39\u6027\u4f53\u6a21\u62df\uff1b4\uff09\u6d41\u4f53\u6a21\u62df\u3002 \u672c\u8bfe\u7a0b\u5185\u5bb9\u5c06\u4e0d\u4f1a\u6d89\u53ca\u5177\u4f53\u7684\u7269\u7406\u6a21\u62df\u5f15\u64ce\uff0c\u4f46\u4f1a\u8ba8\u8bba\u5404\u79cd\u5f15\u64ce\u80cc\u540e\u7684\u6280\u672f\uff0c\u4ee5\u53ca\u5b83\u4eec\u7684\u4f18\u7f3a\u70b9\u7b49\u7b49\u3002\u7531\u4e8e\u5f00\u53d1\u5b66\u4e60\u7269\u7406\u6a21\u62df\u9700\u8981\u4e00\u5b9a\u7684\u6570\u5b66\u57fa\u7840\uff0c\u8bfe\u7a0b\u521d\u59cb\u9636\u6bb5\u4e5f\u4f1a\u82b1\u4e00\u5b9a\u7684\u65f6\u95f4\u590d\u4e60\u5fc5\u5907\u7684\u6570\u5b66\u77e5\u8bc6\u3002\u987a\u5229\u5b8c\u6210\u8bfe\u7a0b\u4e4b\u540e\uff0c\u540c\u5b66\u4eec\u5e94\u8be5\u4f1a\u5bf9\u57fa\u7840\u7684\u7269\u7406\u6a21\u62df\u6280\u672f\u6709\u6df1\u5165\u7406\u89e3\uff0c\u5bf9\u9ad8\u7ea7\u7684\u6a21\u62df\u6280\u672f\u4e5f\u4f1a\u6709\u90e8\u5206\u63a5\u89e6\u3002 \u56fe\u5f62\u5b66\u53ef\u7c97\u7565\u5206\u4e3a\u6e32\u67d3\u3001\u6a21\u62df\u3001\u51e0\u4f55\u4e09\u4e2a\u9886\u57df\u3002GAMES101 \u548c GAMES202 \u4e3b\u8981\u4ee5\u6e32\u67d3\u4e3a\u4e3b\uff0c\u800c\u5bf9\u4e8e\u7269\u7406\u6a21\u62df\uff0cGAMES103 \u5219\u662f\u5f88\u68d2\u7684\u5b66\u4e60\u8d44\u6e90\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES103 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u53c2\u8003\u8d44\u6599\uff1a \u8bfe\u7a0bPPT \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5171\u56db\u6b21\u4f5c\u4e1a\uff0c\u53ef\u89c1\u5b98\u65b9BBS\u5c0f\u7a0b\u5e8f\u6216\u975e\u5b98\u65b9\u7684Repo\uff1a GAMES103 HW \u8d44\u6e90\u6c47\u603b @indevn \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u8981\u6c42\u90fd\u6c47\u603b\u5728 GAMES103 Unoffical \u4e2d\u3002\u5bf9\u4e8e\u4f5c\u4e1a\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u5728\u77e5\u4e4e\u4e0a\u6709\u5f88\u591a\u76f8\u5173\u6587\u7ae0\u8fdb\u884c\u4e86\u7ec6\u81f4\u8bb2\u89e3\u53ef\u4ee5\u53c2\u8003\u3002","title":"GAMES103"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/#games103","text":"","title":"GAMES103"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStyle3D/OSU \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0c\u5927\u5b66\u7269\u7406\uff0c\u7f16\u7a0b\u80fd\u529b\uff0c\u57fa\u672c\u56fe\u5f62\u77e5\u8bc6 \u7f16\u7a0b\u8bed\u8a00\uff1aC# \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd\uff1a \u672c\u8bfe\u7a0b\u5c06\u4f5c\u4e3a\u57fa\u4e8e\u7269\u7406\u7684\u8ba1\u7b97\u673a\u52a8\u753b\u6280\u672f\u5165\u95e8\uff0c\u7740\u91cd\u4ecb\u7ecd\u5404\u79cd\u57fa\u7840\u7684\u7269\u7406\u52a8\u753b\u6a21\u62df\u6280\u672f\u3002 \u8be5\u8bfe\u7a0b\u4e3b\u8981\u6db5\u76d6\u56db\u4e2a\u65b9\u5411\uff0c\u5206\u522b\u4e3a\uff1a1\uff09\u521a\u4f53\u6a21\u62df\uff1b2\uff09\u8d28\u70b9\u5f39\u7c27\u3001\u7ea6\u675f\u4e0e\u5e03\u6599\u6a21\u62df\uff1b3\uff09\u57fa\u4e8e\u6709\u9650\u5143\u7684\u5f39\u6027\u4f53\u6a21\u62df\uff1b4\uff09\u6d41\u4f53\u6a21\u62df\u3002 \u672c\u8bfe\u7a0b\u5185\u5bb9\u5c06\u4e0d\u4f1a\u6d89\u53ca\u5177\u4f53\u7684\u7269\u7406\u6a21\u62df\u5f15\u64ce\uff0c\u4f46\u4f1a\u8ba8\u8bba\u5404\u79cd\u5f15\u64ce\u80cc\u540e\u7684\u6280\u672f\uff0c\u4ee5\u53ca\u5b83\u4eec\u7684\u4f18\u7f3a\u70b9\u7b49\u7b49\u3002\u7531\u4e8e\u5f00\u53d1\u5b66\u4e60\u7269\u7406\u6a21\u62df\u9700\u8981\u4e00\u5b9a\u7684\u6570\u5b66\u57fa\u7840\uff0c\u8bfe\u7a0b\u521d\u59cb\u9636\u6bb5\u4e5f\u4f1a\u82b1\u4e00\u5b9a\u7684\u65f6\u95f4\u590d\u4e60\u5fc5\u5907\u7684\u6570\u5b66\u77e5\u8bc6\u3002\u987a\u5229\u5b8c\u6210\u8bfe\u7a0b\u4e4b\u540e\uff0c\u540c\u5b66\u4eec\u5e94\u8be5\u4f1a\u5bf9\u57fa\u7840\u7684\u7269\u7406\u6a21\u62df\u6280\u672f\u6709\u6df1\u5165\u7406\u89e3\uff0c\u5bf9\u9ad8\u7ea7\u7684\u6a21\u62df\u6280\u672f\u4e5f\u4f1a\u6709\u90e8\u5206\u63a5\u89e6\u3002 \u56fe\u5f62\u5b66\u53ef\u7c97\u7565\u5206\u4e3a\u6e32\u67d3\u3001\u6a21\u62df\u3001\u51e0\u4f55\u4e09\u4e2a\u9886\u57df\u3002GAMES101 \u548c GAMES202 \u4e3b\u8981\u4ee5\u6e32\u67d3\u4e3a\u4e3b\uff0c\u800c\u5bf9\u4e8e\u7269\u7406\u6a21\u62df\uff0cGAMES103 \u5219\u662f\u5f88\u68d2\u7684\u5b66\u4e60\u8d44\u6e90\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES103 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u53c2\u8003\u8d44\u6599\uff1a \u8bfe\u7a0bPPT \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5171\u56db\u6b21\u4f5c\u4e1a\uff0c\u53ef\u89c1\u5b98\u65b9BBS\u5c0f\u7a0b\u5e8f\u6216\u975e\u5b98\u65b9\u7684Repo\uff1a GAMES103 HW","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/#_3","text":"@indevn \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u8981\u6c42\u90fd\u6c47\u603b\u5728 GAMES103 Unoffical \u4e2d\u3002\u5bf9\u4e8e\u4f5c\u4e1a\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u5728\u77e5\u4e4e\u4e0a\u6709\u5f88\u591a\u76f8\u5173\u6587\u7ae0\u8fdb\u884c\u4e86\u7ec6\u81f4\u8bb2\u89e3\u53ef\u4ee5\u53c2\u8003\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/","text":"GAMES202 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUCSB \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cC++\uff0cGAMES101 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u672c\u8bfe\u7a0b\u5c06\u5168\u9762\u5730\u4ecb\u7ecd\u73b0\u4ee3\u5b9e\u65f6\u6e32\u67d3\u4e2d\u7684\u5173\u952e\u95ee\u9898\u4e0e\u89e3\u51b3\u65b9\u6cd5\u3002\u7531\u4e8e\u5b9e\u65f6\u6e32\u67d3 (>30 FPS) \u5bf9\u901f\u5ea6\u8981\u6c42\u6781\u9ad8\uff0c\u56e0\u6b64\u672c\u8bfe\u7a0b\u7684\u5173\u6ce8\u70b9\u5c06\u662f\u5728\u82db\u523b\u7684\u65f6\u95f4\u9650\u5236\u4e0b\uff0c\u4eba\u4eec\u5982\u4f55\u6253\u7834\u901f\u5ea6\u4e0e\u8d28\u91cf\u4e4b\u95f4\u7684\u6743\u8861\uff0c\u540c\u65f6\u4fdd\u8bc1\u5b9e\u65f6\u7684\u9ad8\u901f\u5ea6\u4e0e\u7167\u7247\u7ea7\u7684\u771f\u5b9e\u611f\u3002 \u672c\u8bfe\u7a0b\u5c06\u4ee5\u4e13\u9898\u7684\u5f62\u5f0f\u5448\u73b0\uff0c\u8bfe\u7a0b\u5185\u5bb9\u4f1a\u8986\u76d6\u5b66\u672f\u754c\u4e0e\u5de5\u4e1a\u754c\u7684\u524d\u6cbf\u5185\u5bb9\uff0c\u5305\u62ec\uff1a\uff081\uff09\u5b9e\u65f6\u8f6f\u9634\u5f71\u7684\u6e32\u67d3\uff1b\uff082\uff09\u73af\u5883\u5149\u7167\uff1b\uff083\uff09\u57fa\u4e8e\u9884\u8ba1\u7b97\u6216\u65e0\u9884\u8ba1\u7b97\u7684\u5168\u5c40\u5149\u7167\uff1b\uff084\uff09\u57fa\u4e8e\u7269\u7406\u7684\u7740\u8272\u6a21\u578b\u4e0e\u65b9\u6cd5\uff1b\uff085\uff09\u5b9e\u65f6\u5149\u7ebf\u8ffd\u8e2a\uff1b\uff086\uff09\u6297\u952f\u9f7f\u4e0e\u8d85\u91c7\u6837\uff1b\u4ee5\u53ca\u4e00\u4e9b\u5e38\u89c1\u7684\u52a0\u901f\u65b9\u5f0f\u7b49\u7b49\u3002 \u9664\u4e86\u6700\u65b0\u6700\u5168\u7684\u5185\u5bb9\u4e4b\u5916\uff0c\u672c\u8bfe\u7a0b\u4e0e\u5176\u5b83\u4efb\u4f55\u5b9e\u65f6\u6e32\u67d3\u7684\u6559\u7a0b\u8fd8\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u533a\u522b\uff0c\u90a3\u5c31\u662f\u672c\u8bfe\u7a0b\u4e0d\u4f1a\u8bb2\u6388\u4efb\u4f55\u4e0e\u6e38\u620f\u5f15\u64ce\u7684\u4f7f\u7528\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u5e76\u4e14\u4e0d\u4f1a\u7279\u522b\u5f3a\u8c03\u5177\u4f53\u7684\u7740\u8272\u5668\u5b9e\u73b0\u6280\u672f\uff0c\u800c\u4e3b\u8981\u8bb2\u6388\u5b9e\u65f6\u6e32\u67d3\u80cc\u540e\u7684\u79d1\u5b66\u4e0e\u77e5\u8bc6\u3002\u672c\u8bfe\u7a0b\u7684\u76ee\u6807\u662f\u5728\u4f60\u5b66\u4e60\u5b8c\u8fd9\u95e8\u8bfe\u7684\u65f6\u5019\uff0c\u4f60\u5c06\u6709\u6df1\u539a\u7684\u529f\u5e95\u53bb\u5f00\u53d1\u4e00\u4e2a\u5c5e\u4e8e\u4f60\u81ea\u5df1\u7684\u5b9e\u65f6\u6e32\u67d3\u5f15\u64ce\u3002 \u4f5c\u4e3a GAMES101 \u7684\u8fdb\u9636\u8bfe\u7a0b\uff0c\u96be\u5ea6\u6709\u4e00\u5b9a\u7684\u63d0\u5347\uff0c\u4f46\u4e0d\u4f1a\u5f88\u5927\uff0c\u76f8\u4fe1\u5b8c\u6210\u4e86 GAMES101 \u7684\u540c\u5b66\u90fd\u6709\u80fd\u529b\u5b8c\u6210\u8fd9\u95e8\u8bfe\u7a0b\u3002\u6bcf\u4e2a project \u4ee3\u7801\u91cf\u90fd\u4e0d\u4f1a\u5f88\u591a\uff0c\u4f46\u662f\u90fd\u9700\u8981\u4e00\u5b9a\u7684\u601d\u8003\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES202 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u8bfe\u7a0b\u6559\u6750\uff1aReal-Time Rendering, 4th edition. \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 5\u4e2aproject","title":"GAMES202"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/#games202","text":"","title":"GAMES202"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUCSB \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cC++\uff0cGAMES101 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u672c\u8bfe\u7a0b\u5c06\u5168\u9762\u5730\u4ecb\u7ecd\u73b0\u4ee3\u5b9e\u65f6\u6e32\u67d3\u4e2d\u7684\u5173\u952e\u95ee\u9898\u4e0e\u89e3\u51b3\u65b9\u6cd5\u3002\u7531\u4e8e\u5b9e\u65f6\u6e32\u67d3 (>30 FPS) \u5bf9\u901f\u5ea6\u8981\u6c42\u6781\u9ad8\uff0c\u56e0\u6b64\u672c\u8bfe\u7a0b\u7684\u5173\u6ce8\u70b9\u5c06\u662f\u5728\u82db\u523b\u7684\u65f6\u95f4\u9650\u5236\u4e0b\uff0c\u4eba\u4eec\u5982\u4f55\u6253\u7834\u901f\u5ea6\u4e0e\u8d28\u91cf\u4e4b\u95f4\u7684\u6743\u8861\uff0c\u540c\u65f6\u4fdd\u8bc1\u5b9e\u65f6\u7684\u9ad8\u901f\u5ea6\u4e0e\u7167\u7247\u7ea7\u7684\u771f\u5b9e\u611f\u3002 \u672c\u8bfe\u7a0b\u5c06\u4ee5\u4e13\u9898\u7684\u5f62\u5f0f\u5448\u73b0\uff0c\u8bfe\u7a0b\u5185\u5bb9\u4f1a\u8986\u76d6\u5b66\u672f\u754c\u4e0e\u5de5\u4e1a\u754c\u7684\u524d\u6cbf\u5185\u5bb9\uff0c\u5305\u62ec\uff1a\uff081\uff09\u5b9e\u65f6\u8f6f\u9634\u5f71\u7684\u6e32\u67d3\uff1b\uff082\uff09\u73af\u5883\u5149\u7167\uff1b\uff083\uff09\u57fa\u4e8e\u9884\u8ba1\u7b97\u6216\u65e0\u9884\u8ba1\u7b97\u7684\u5168\u5c40\u5149\u7167\uff1b\uff084\uff09\u57fa\u4e8e\u7269\u7406\u7684\u7740\u8272\u6a21\u578b\u4e0e\u65b9\u6cd5\uff1b\uff085\uff09\u5b9e\u65f6\u5149\u7ebf\u8ffd\u8e2a\uff1b\uff086\uff09\u6297\u952f\u9f7f\u4e0e\u8d85\u91c7\u6837\uff1b\u4ee5\u53ca\u4e00\u4e9b\u5e38\u89c1\u7684\u52a0\u901f\u65b9\u5f0f\u7b49\u7b49\u3002 \u9664\u4e86\u6700\u65b0\u6700\u5168\u7684\u5185\u5bb9\u4e4b\u5916\uff0c\u672c\u8bfe\u7a0b\u4e0e\u5176\u5b83\u4efb\u4f55\u5b9e\u65f6\u6e32\u67d3\u7684\u6559\u7a0b\u8fd8\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u533a\u522b\uff0c\u90a3\u5c31\u662f\u672c\u8bfe\u7a0b\u4e0d\u4f1a\u8bb2\u6388\u4efb\u4f55\u4e0e\u6e38\u620f\u5f15\u64ce\u7684\u4f7f\u7528\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u5e76\u4e14\u4e0d\u4f1a\u7279\u522b\u5f3a\u8c03\u5177\u4f53\u7684\u7740\u8272\u5668\u5b9e\u73b0\u6280\u672f\uff0c\u800c\u4e3b\u8981\u8bb2\u6388\u5b9e\u65f6\u6e32\u67d3\u80cc\u540e\u7684\u79d1\u5b66\u4e0e\u77e5\u8bc6\u3002\u672c\u8bfe\u7a0b\u7684\u76ee\u6807\u662f\u5728\u4f60\u5b66\u4e60\u5b8c\u8fd9\u95e8\u8bfe\u7684\u65f6\u5019\uff0c\u4f60\u5c06\u6709\u6df1\u539a\u7684\u529f\u5e95\u53bb\u5f00\u53d1\u4e00\u4e2a\u5c5e\u4e8e\u4f60\u81ea\u5df1\u7684\u5b9e\u65f6\u6e32\u67d3\u5f15\u64ce\u3002 \u4f5c\u4e3a GAMES101 \u7684\u8fdb\u9636\u8bfe\u7a0b\uff0c\u96be\u5ea6\u6709\u4e00\u5b9a\u7684\u63d0\u5347\uff0c\u4f46\u4e0d\u4f1a\u5f88\u5927\uff0c\u76f8\u4fe1\u5b8c\u6210\u4e86 GAMES101 \u7684\u540c\u5b66\u90fd\u6709\u80fd\u529b\u5b8c\u6210\u8fd9\u95e8\u8bfe\u7a0b\u3002\u6bcf\u4e2a project \u4ee3\u7801\u91cf\u90fd\u4e0d\u4f1a\u5f88\u591a\uff0c\u4f46\u662f\u90fd\u9700\u8981\u4e00\u5b9a\u7684\u601d\u8003\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES202 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u8bfe\u7a0b\u6559\u6750\uff1aReal-Time Rendering, 4th edition. \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 5\u4e2aproject","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/","text":"CS144: Computer Network \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u57fa\u7840\uff0cCS106L \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u7684\u4e3b\u8bb2\u4eba\u4e4b\u4e00\u662f\u7f51\u7edc\u9886\u57df\u7684\u5de8\u64d8 Nick McKeown \u6559\u6388\u3002\u8fd9\u4f4d\u62e5\u6709\u81ea\u5df1\u521b\u4e1a\u516c\u53f8\u7684\u5b66\u754c\u4e1a\u754c\u53cc\u5de8\u4f6c\u4f1a\u5728\u4ed6\u6155\u8bfe\u6bcf\u4e00\u7ae0\u8282\u7684\u6700\u540e\u91c7\u8bbf\u4e00\u4f4d\u4e1a\u754c\u7684\u9ad8\u7ba1\u6216\u8005\u5b66\u754c\u7684\u9ad8\u4eba\uff0c\u975e\u5e38\u5f00\u9614\u773c\u754c\u3002 \u5728\u8fd9\u95e8\u8bfe\u7684 Project \u4e2d\uff0c\u4f60\u5c06\u7528 C++ \u5faa\u5e8f\u6e10\u8fdb\u5730\u642d\u5efa\u51fa\u6574\u4e2a TCP/IP \u534f\u8bae\u6808\uff0c\u5b9e\u73b0 IP \u8def\u7531\u4ee5\u53ca ARP \u534f\u8bae\uff0c\u6700\u540e\u5229\u7528\u4f60\u81ea\u5df1\u7684\u534f\u8bae\u6808\u4ee3\u66ff Linux Kernel \u7684\u7f51\u7edc\u534f\u8bae\u6808\u548c\u5176\u4ed6\u5b66\u751f\u7684\u8ba1\u7b97\u673a\u8fdb\u884c\u901a\u4fe1\uff0c\u975e\u5e38 amazing\uff01 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs144.github.io/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=r2WZNaFyrbQ&list=PL6RdenZrxrw9inR-IJv-erlOKRHjymxMN \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs144.github.io/ \uff0c8 \u4e2a Project \u5e26\u4f60\u5b9e\u73b0\u6574\u4e2a TCP/IP \u534f\u8bae\u6808 \u8d44\u6e90\u6c47\u603b PKUFlyingPig Lexssama's Blogs huangrt01 kiprey \u5eb7\u5b87PL's Blog doraemonzzz ViXbob's libsponge \u5403\u7740\u571f\u8c46\u5750\u5730\u94c1\u7684\u535a\u5ba2 Smith \u661f\u9065\u89c1 EIMadrigal Joey","title":"Stanford CS144: Computer Network"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/#cs144-computer-network","text":"","title":"CS144: Computer Network"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u57fa\u7840\uff0cCS106L \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u7684\u4e3b\u8bb2\u4eba\u4e4b\u4e00\u662f\u7f51\u7edc\u9886\u57df\u7684\u5de8\u64d8 Nick McKeown \u6559\u6388\u3002\u8fd9\u4f4d\u62e5\u6709\u81ea\u5df1\u521b\u4e1a\u516c\u53f8\u7684\u5b66\u754c\u4e1a\u754c\u53cc\u5de8\u4f6c\u4f1a\u5728\u4ed6\u6155\u8bfe\u6bcf\u4e00\u7ae0\u8282\u7684\u6700\u540e\u91c7\u8bbf\u4e00\u4f4d\u4e1a\u754c\u7684\u9ad8\u7ba1\u6216\u8005\u5b66\u754c\u7684\u9ad8\u4eba\uff0c\u975e\u5e38\u5f00\u9614\u773c\u754c\u3002 \u5728\u8fd9\u95e8\u8bfe\u7684 Project \u4e2d\uff0c\u4f60\u5c06\u7528 C++ \u5faa\u5e8f\u6e10\u8fdb\u5730\u642d\u5efa\u51fa\u6574\u4e2a TCP/IP \u534f\u8bae\u6808\uff0c\u5b9e\u73b0 IP \u8def\u7531\u4ee5\u53ca ARP \u534f\u8bae\uff0c\u6700\u540e\u5229\u7528\u4f60\u81ea\u5df1\u7684\u534f\u8bae\u6808\u4ee3\u66ff Linux Kernel \u7684\u7f51\u7edc\u534f\u8bae\u6808\u548c\u5176\u4ed6\u5b66\u751f\u7684\u8ba1\u7b97\u673a\u8fdb\u884c\u901a\u4fe1\uff0c\u975e\u5e38 amazing\uff01","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs144.github.io/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=r2WZNaFyrbQ&list=PL6RdenZrxrw9inR-IJv-erlOKRHjymxMN \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs144.github.io/ \uff0c8 \u4e2a Project \u5e26\u4f60\u5b9e\u73b0\u6574\u4e2a TCP/IP \u534f\u8bae\u6808","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/#_3","text":"PKUFlyingPig Lexssama's Blogs huangrt01 kiprey \u5eb7\u5b87PL's Blog doraemonzzz ViXbob's libsponge \u5403\u7740\u571f\u8c46\u5750\u5730\u94c1\u7684\u535a\u5ba2 Smith \u661f\u9065\u89c1 EIMadrigal Joey","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/","text":"Computer Networking: A Top-Down Approach \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u9a6c\u8428\u8bf8\u585e\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u6709\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u300a\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u300b\u662f\u8ba1\u7b97\u673a\u7f51\u7edc\u9886\u57df\u7684\u4e00\u672c\u7ecf\u5178\u6559\u6750\uff0c\u4e24\u4f4d\u4f5c\u8005 Jim Kurose \u548c Keith Ross \u7cbe\u5fc3\u5236\u4f5c\u4e86\u6559\u6750\u914d\u5957\u7684\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u5e76\u4e14\u516c\u5f00\u4e86\u81ea\u5df1\u5f55\u5236\u7684\u7f51\u8bfe\u89c6\u9891\uff0c\u4ea4\u4e92\u5f0f\u7684\u5728\u7ebf\u7ae0\u8282\u6d4b\u8bd5\uff0c\u4ee5\u53ca\u5229\u7528 WireShark \u8fdb\u884c\u6293\u5305\u5206\u6790\u7684 lab\u3002\u552f\u4e00\u9057\u61be\u7684\u662f\u8fd9\u95e8\u8bfe\u5e76\u6ca1\u6709\u786c\u6838\u7684\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u800c Stanford \u7684 CS144 \u80fd\u5f88\u597d\u5730\u5f25\u8865\u8fd9\u4e00\u70b9\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://gaia.cs.umass.edu/kurose_ross/index.php \u8bfe\u7a0b\u89c6\u9891\uff1a https://gaia.cs.umass.edu/kurose_ross/lectures.php \u8bfe\u7a0b\u6559\u6750\uff1aComputer Networking: A Top-Down Approach \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://gaia.cs.umass.edu/kurose_ross/wireshark.php \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Computer-Network-A-Top-Down-Approach - GitHub \u4e2d\u3002","title":"Computer Networking: A Top-Down Approach"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/#computer-networking-a-top-down-approach","text":"","title":"Computer Networking: A Top-Down Approach"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u9a6c\u8428\u8bf8\u585e\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u6709\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u300a\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u300b\u662f\u8ba1\u7b97\u673a\u7f51\u7edc\u9886\u57df\u7684\u4e00\u672c\u7ecf\u5178\u6559\u6750\uff0c\u4e24\u4f4d\u4f5c\u8005 Jim Kurose \u548c Keith Ross \u7cbe\u5fc3\u5236\u4f5c\u4e86\u6559\u6750\u914d\u5957\u7684\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u5e76\u4e14\u516c\u5f00\u4e86\u81ea\u5df1\u5f55\u5236\u7684\u7f51\u8bfe\u89c6\u9891\uff0c\u4ea4\u4e92\u5f0f\u7684\u5728\u7ebf\u7ae0\u8282\u6d4b\u8bd5\uff0c\u4ee5\u53ca\u5229\u7528 WireShark \u8fdb\u884c\u6293\u5305\u5206\u6790\u7684 lab\u3002\u552f\u4e00\u9057\u61be\u7684\u662f\u8fd9\u95e8\u8bfe\u5e76\u6ca1\u6709\u786c\u6838\u7684\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u800c Stanford \u7684 CS144 \u80fd\u5f88\u597d\u5730\u5f25\u8865\u8fd9\u4e00\u70b9\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://gaia.cs.umass.edu/kurose_ross/index.php \u8bfe\u7a0b\u89c6\u9891\uff1a https://gaia.cs.umass.edu/kurose_ross/lectures.php \u8bfe\u7a0b\u6559\u6750\uff1aComputer Networking: A Top-Down Approach \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://gaia.cs.umass.edu/kurose_ross/wireshark.php","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Computer-Network-A-Top-Down-Approach - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/","text":"USTC Computer Networking:A Top-Down Approach \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u4e2d\u56fd\u79d1\u5b66\u6280\u672f\u5927\u5b66 \u6388\u8bfe\u6559\u5e08\uff1a\u90d1\u70c7\u3001\u6768\u575a \u5148\u4fee\u8981\u6c42\uff1a\u64cd\u4f5c\u7cfb\u7edf\uff08\u975e\u5fc5\u9700\uff09 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u5e94\u8be5\u662f\u4e2d\u6587\u4e92\u8054\u7f51\u4e0a\u6bd4\u8f83\u706b\u7684\u8ba1\u7b97\u673a\u7f51\u7edc\u8bfe\u4e86\uff0c\u6559\u6750\u91c7\u7528\u795e\u4e66\u8ba1\u7b97\u673a\u7f51\u7edc\uff08\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\uff09\uff0c\u6388\u8bfe\u98ce\u683c\u66f4\u504f\u5411\u5b9e\u9645\u800c\u975e\u7eaf\u7406\u8bba\uff08 \u5f3a\u70c8\u5efa\u8bae \u5148\u9605\u8bfb\u6559\u6750\u9884\u4e60\u518d\u770b\u8bfe\uff0c\u5426\u5219\u4e0a\u8bfe\u65f6 \u53ef\u80fd \u4f1a\u6709\u4e9b\u61f5\u5708\uff09\u3002 \u8bfe\u7a0b\u5185\u5bb9\u5305\u62ec \u5927\u90e8\u5206 \u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u91cc\u7684\u5185\u5bb9\uff0c\u540c\u65f6 \u6db5\u76d6 \u8003\u8bd5\u5185\u5bb9\uff0c\u53ef\u653e\u5fc3\u89c2\u770b\u3002 \u8bfe\u7a0b\u89c6\u9891\u662f\u90d1\u70c7\u8001\u5e08\u672c\u4eba\u5728\u54d4\u54e9\u54d4\u54e9\u4e0a\u4e0a\u4f20\u7684\uff0c\u4e14\u4ece2020\u5e74\u81f3\u4eca\u4e00\u76f4\u575a\u6301\u5728\u8bc4\u8bba\u533a\u7b54\u7591\uff0c\u5c5e\u5b9e\u8d1f\u8d23\u4e14\u8ba4\u771f\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://staff.ustc.edu.cn/~qzheng/teaching.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1JV411t7ow/ \u8bfe\u7a0b\u8bfe\u4ef6\uff1a http://staff.ustc.edu.cn/~qzheng/cn.zip \u8bfe\u7a0b\u6559\u6750\uff1a\u8ba1\u7b97\u673a\u7f51\u7edc\uff08\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5 \u7b2c7\u7248\uff09\uff0c\u673a\u68b0\u5de5\u4e1a\u51fa\u7248\u793e\uff0c2016","title":"USTC Computer Networking:A Top-Down Approach"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/#ustc-computer-networkinga-top-down-approach","text":"","title":"USTC Computer Networking:A Top-Down Approach"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u4e2d\u56fd\u79d1\u5b66\u6280\u672f\u5927\u5b66 \u6388\u8bfe\u6559\u5e08\uff1a\u90d1\u70c7\u3001\u6768\u575a \u5148\u4fee\u8981\u6c42\uff1a\u64cd\u4f5c\u7cfb\u7edf\uff08\u975e\u5fc5\u9700\uff09 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u5e94\u8be5\u662f\u4e2d\u6587\u4e92\u8054\u7f51\u4e0a\u6bd4\u8f83\u706b\u7684\u8ba1\u7b97\u673a\u7f51\u7edc\u8bfe\u4e86\uff0c\u6559\u6750\u91c7\u7528\u795e\u4e66\u8ba1\u7b97\u673a\u7f51\u7edc\uff08\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\uff09\uff0c\u6388\u8bfe\u98ce\u683c\u66f4\u504f\u5411\u5b9e\u9645\u800c\u975e\u7eaf\u7406\u8bba\uff08 \u5f3a\u70c8\u5efa\u8bae \u5148\u9605\u8bfb\u6559\u6750\u9884\u4e60\u518d\u770b\u8bfe\uff0c\u5426\u5219\u4e0a\u8bfe\u65f6 \u53ef\u80fd \u4f1a\u6709\u4e9b\u61f5\u5708\uff09\u3002 \u8bfe\u7a0b\u5185\u5bb9\u5305\u62ec \u5927\u90e8\u5206 \u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u91cc\u7684\u5185\u5bb9\uff0c\u540c\u65f6 \u6db5\u76d6 \u8003\u8bd5\u5185\u5bb9\uff0c\u53ef\u653e\u5fc3\u89c2\u770b\u3002 \u8bfe\u7a0b\u89c6\u9891\u662f\u90d1\u70c7\u8001\u5e08\u672c\u4eba\u5728\u54d4\u54e9\u54d4\u54e9\u4e0a\u4e0a\u4f20\u7684\uff0c\u4e14\u4ece2020\u5e74\u81f3\u4eca\u4e00\u76f4\u575a\u6301\u5728\u8bc4\u8bba\u533a\u7b54\u7591\uff0c\u5c5e\u5b9e\u8d1f\u8d23\u4e14\u8ba4\u771f\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://staff.ustc.edu.cn/~qzheng/teaching.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1JV411t7ow/ \u8bfe\u7a0b\u8bfe\u4ef6\uff1a http://staff.ustc.edu.cn/~qzheng/cn.zip \u8bfe\u7a0b\u6559\u6750\uff1a\u8ba1\u7b97\u673a\u7f51\u7edc\uff08\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5 \u7b2c7\u7248\uff09\uff0c\u673a\u68b0\u5de5\u4e1a\u51fa\u7248\u793e\uff0c2016","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/","text":"MIT 6.031: Software Construction \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u7684\u76ee\u6807\u5c31\u662f\u8ba9\u5b66\u751f\u5b66\u4f1a\u5982\u4f55\u5199\u51fa\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\uff0c\u6240\u8c13\u9ad8\u8d28\u91cf\uff0c\u5219\u662f\u6ee1\u8db3\u4e0b\u9762\u4e09\u4e2a\u76ee\u6807\uff08\u8bfe\u7a0b\u8bbe\u8ba1\u8005\u539f\u8bdd\u590d\u5236\uff0c\u4ee5\u9632\u81ea\u5df1\u7ffb\u8bd1\u66f2\u89e3\u672c\u610f\uff09\uff1a Safe from bugs. Correctness (correct behavior right now) and defensiveness (correct behavior in the future) are required in any software we build. Easy to understand. The code has to communicate to future programmers who need to understand it and make changes in it (fixing bugs or adding new features). That future programmer might be you, months or years from now. You\u2019ll be surprised how much you forget if you don\u2019t write it down, and how much it helps your own future self to have a good design. Ready for change. Software always changes. Some designs make it easy to make changes; others require throwing away and rewriting a lot of code. \u4e3a\u6b64\uff0c\u8fd9\u95e8\u8bfe\u7684\u8bbe\u8ba1\u8005\u4eec\u7cbe\u5fc3\u7f16\u5199\u4e86\u4e00\u672c\u4e66\u6765\u9610\u91ca\u8bf8\u591a\u8f6f\u4ef6\u6784\u5efa\u7684\u6838\u5fc3\u539f\u5219\u4e0e\u524d\u4eba\u603b\u7ed3\u4e0b\u6765\u7684\u5b9d\u8d35\u7ecf\u9a8c\uff0c\u5185\u5bb9\u7ec6\u8282\u5230\u5982\u4f55\u7f16\u5199\u6ce8\u91ca\u548c\u51fd\u6570 Specification\uff0c\u5982\u4f55\u8bbe\u8ba1\u62bd\u8c61\u6570\u636e\u7ed3\u6784\u4ee5\u53ca\u8bf8\u591a\u5e76\u884c\u7f16\u7a0b\u7684\u5185\u5bb9\uff0c\u5e76\u4e14\u4f1a\u8ba9\u4f60\u5728\u7cbe\u5fc3\u8bbe\u8ba1\u7684 Java \u7f16\u7a0b\u9879\u76ee\u91cc\u4f53\u9a8c\u548c\u7ec3\u4e60\u8fd9\u4e9b\u7f16\u7a0b\u6a21\u5f0f\u3002 2016\u5e74\u6625\u5b63\u5b66\u671f\u8fd9\u95e8\u8bfe\u5f00\u6e90\u4e86\u5176\u6240\u6709\u7f16\u7a0b\u4f5c\u4e1a\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u800c\u6700\u65b0\u7684\u8bfe\u7a0b\u6559\u6750\u53ef\u4ee5\u5728\u5176\u6700\u65b0\u7684\u6559\u5b66\u7f51\u7ad9\u4e0a\u627e\u5230\uff0c\u5177\u4f53\u94fe\u63a5\u53c2\u89c1\u4e0b\u65b9\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a 2021spring , 2016spring \u8bfe\u7a0b\u89c6\u9891\uff1a\u65e0 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u7684\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a + 1 \u4e2a Project \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.031-software-construction - GitHub \u4e2d\u3002 @pengzhangzhi \u5b8c\u6210\u4e86\u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u5e76\u8bb0\u5f55\u4e86\u7b14\u8bb0, \u4ee3\u7801\u5f00\u6e90\u5728 pengzhangzhi/self-taught-CS/Software Construction - Github \u3002","title":"MIT 6.031: Software Construction"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/#mit-6031-software-construction","text":"","title":"MIT 6.031: Software Construction"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u7684\u76ee\u6807\u5c31\u662f\u8ba9\u5b66\u751f\u5b66\u4f1a\u5982\u4f55\u5199\u51fa\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\uff0c\u6240\u8c13\u9ad8\u8d28\u91cf\uff0c\u5219\u662f\u6ee1\u8db3\u4e0b\u9762\u4e09\u4e2a\u76ee\u6807\uff08\u8bfe\u7a0b\u8bbe\u8ba1\u8005\u539f\u8bdd\u590d\u5236\uff0c\u4ee5\u9632\u81ea\u5df1\u7ffb\u8bd1\u66f2\u89e3\u672c\u610f\uff09\uff1a Safe from bugs. Correctness (correct behavior right now) and defensiveness (correct behavior in the future) are required in any software we build. Easy to understand. The code has to communicate to future programmers who need to understand it and make changes in it (fixing bugs or adding new features). That future programmer might be you, months or years from now. You\u2019ll be surprised how much you forget if you don\u2019t write it down, and how much it helps your own future self to have a good design. Ready for change. Software always changes. Some designs make it easy to make changes; others require throwing away and rewriting a lot of code. \u4e3a\u6b64\uff0c\u8fd9\u95e8\u8bfe\u7684\u8bbe\u8ba1\u8005\u4eec\u7cbe\u5fc3\u7f16\u5199\u4e86\u4e00\u672c\u4e66\u6765\u9610\u91ca\u8bf8\u591a\u8f6f\u4ef6\u6784\u5efa\u7684\u6838\u5fc3\u539f\u5219\u4e0e\u524d\u4eba\u603b\u7ed3\u4e0b\u6765\u7684\u5b9d\u8d35\u7ecf\u9a8c\uff0c\u5185\u5bb9\u7ec6\u8282\u5230\u5982\u4f55\u7f16\u5199\u6ce8\u91ca\u548c\u51fd\u6570 Specification\uff0c\u5982\u4f55\u8bbe\u8ba1\u62bd\u8c61\u6570\u636e\u7ed3\u6784\u4ee5\u53ca\u8bf8\u591a\u5e76\u884c\u7f16\u7a0b\u7684\u5185\u5bb9\uff0c\u5e76\u4e14\u4f1a\u8ba9\u4f60\u5728\u7cbe\u5fc3\u8bbe\u8ba1\u7684 Java \u7f16\u7a0b\u9879\u76ee\u91cc\u4f53\u9a8c\u548c\u7ec3\u4e60\u8fd9\u4e9b\u7f16\u7a0b\u6a21\u5f0f\u3002 2016\u5e74\u6625\u5b63\u5b66\u671f\u8fd9\u95e8\u8bfe\u5f00\u6e90\u4e86\u5176\u6240\u6709\u7f16\u7a0b\u4f5c\u4e1a\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u800c\u6700\u65b0\u7684\u8bfe\u7a0b\u6559\u6750\u53ef\u4ee5\u5728\u5176\u6700\u65b0\u7684\u6559\u5b66\u7f51\u7ad9\u4e0a\u627e\u5230\uff0c\u5177\u4f53\u94fe\u63a5\u53c2\u89c1\u4e0b\u65b9\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a 2021spring , 2016spring \u8bfe\u7a0b\u89c6\u9891\uff1a\u65e0 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u7684\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a + 1 \u4e2a Project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.031-software-construction - GitHub \u4e2d\u3002 @pengzhangzhi \u5b8c\u6210\u4e86\u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u5e76\u8bb0\u5f55\u4e86\u7b14\u8bb0, \u4ee3\u7801\u5f00\u6e90\u5728 pengzhangzhi/self-taught-CS/Software Construction - Github \u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/","text":"UCB CS169: software engineering \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aRuby/JavaScript \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u7a0b\uff0c\u4e0d\u540c\u4e8e\u5f88\u591a\u4f20\u7edf\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u5f3a\u8c03\u5404\u79cd\u7c7b\u56fe\u3001\u6587\u6863\u8bbe\u8ba1 (plan and document \u6a21\u5f0f)\uff0c\u8fd9\u95e8\u8bfe\u4e13\u6ce8\u4e8e\u6700\u8fd1\u9010\u6e10\u6d41\u884c\u8d77\u6765\u7684\u654f\u6377\u5f00\u53d1 (Agile Development)\u6a21\u5f0f\uff0c\u5229\u7528\u4e91\u5e73\u53f0\u63d0\u4f9b\u8f6f\u4ef6\u5373\u670d\u52a1 (software as a service)\u3002\u4e3a\u6b64\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u8005\u7f16\u5199\u4e86 Software as a service \u8fd9\u672c\u6559\u6750\uff0c\u901a\u8fc7 Ruby/Rails \u6846\u67b6\u6765\u9610\u91ca SaaS \u8fd9\u4e2a\u6982\u5ff5\uff0c\u5e76\u4e14\u6709\u4e30\u5bcc\u7684\u914d\u5957\u7f16\u7a0b\u7ec3\u4e60\u3002 \u8fd9\u95e8\u8bfe\u5728 Edx \u8fd9\u4e2a\u7531 MIT \u548c Havard \u5927\u5b66\u53d1\u8d77\u7684\u5728\u7ebf\u6559\u80b2\u5e73\u53f0\u5168\u8d44\u6599\u5f00\u6e90\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728 Edx \u81ea\u884c\u641c\u7d22 Agile SaaS Development \u8fd9\u95e8\u8bfe\u7a0b\u8fdb\u884c\u5b66\u4e60\u3002\u8bfe\u7a0b\u5185\u5bb9\u57fa\u672c\u6309\u7167\u6559\u6750\u7684\u987a\u5e8f\u5e26\u4f60\u4e00\u6b65\u6b65\u4ee5\u654f\u6377\u5f00\u53d1\u7684\u65b9\u5f0f\u642d\u5efa\u4e00\u4e2a\u8f6f\u4ef6\u5e76\u514d\u8d39\u90e8\u7f72\u5728\u4e91\u5e73\u53f0\u4e0a\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.saasbook.info/courses \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1 Edx \u8bfe\u7a0b\u4e3b\u9875\u3002 \u8bfe\u7a0b\u6559\u6750\uff1a Software as a service \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1 Edx \u8bfe\u7a0b\u4e3b\u9875\u3002 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS169-Software-Engineering - GitHub \u4e2d\u3002","title":"UCB CS169: software engineering"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/#ucb-cs169-software-engineering","text":"","title":"UCB CS169: software engineering"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aRuby/JavaScript \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u7a0b\uff0c\u4e0d\u540c\u4e8e\u5f88\u591a\u4f20\u7edf\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u5f3a\u8c03\u5404\u79cd\u7c7b\u56fe\u3001\u6587\u6863\u8bbe\u8ba1 (plan and document \u6a21\u5f0f)\uff0c\u8fd9\u95e8\u8bfe\u4e13\u6ce8\u4e8e\u6700\u8fd1\u9010\u6e10\u6d41\u884c\u8d77\u6765\u7684\u654f\u6377\u5f00\u53d1 (Agile Development)\u6a21\u5f0f\uff0c\u5229\u7528\u4e91\u5e73\u53f0\u63d0\u4f9b\u8f6f\u4ef6\u5373\u670d\u52a1 (software as a service)\u3002\u4e3a\u6b64\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u8005\u7f16\u5199\u4e86 Software as a service \u8fd9\u672c\u6559\u6750\uff0c\u901a\u8fc7 Ruby/Rails \u6846\u67b6\u6765\u9610\u91ca SaaS \u8fd9\u4e2a\u6982\u5ff5\uff0c\u5e76\u4e14\u6709\u4e30\u5bcc\u7684\u914d\u5957\u7f16\u7a0b\u7ec3\u4e60\u3002 \u8fd9\u95e8\u8bfe\u5728 Edx \u8fd9\u4e2a\u7531 MIT \u548c Havard \u5927\u5b66\u53d1\u8d77\u7684\u5728\u7ebf\u6559\u80b2\u5e73\u53f0\u5168\u8d44\u6599\u5f00\u6e90\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728 Edx \u81ea\u884c\u641c\u7d22 Agile SaaS Development \u8fd9\u95e8\u8bfe\u7a0b\u8fdb\u884c\u5b66\u4e60\u3002\u8bfe\u7a0b\u5185\u5bb9\u57fa\u672c\u6309\u7167\u6559\u6750\u7684\u987a\u5e8f\u5e26\u4f60\u4e00\u6b65\u6b65\u4ee5\u654f\u6377\u5f00\u53d1\u7684\u65b9\u5f0f\u642d\u5efa\u4e00\u4e2a\u8f6f\u4ef6\u5e76\u514d\u8d39\u90e8\u7f72\u5728\u4e91\u5e73\u53f0\u4e0a\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.saasbook.info/courses \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1 Edx \u8bfe\u7a0b\u4e3b\u9875\u3002 \u8bfe\u7a0b\u6559\u6750\uff1a Software as a service \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1 Edx \u8bfe\u7a0b\u4e3b\u9875\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS169-Software-Engineering - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"}]} \ No newline at end of file +{"config":{"indexing":"full","lang":["ja"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"\u524d\u8a00 \u6700\u8fd1\u66f4\u65b0\uff1a\u589e\u52a0\u9648\u5929\u5947 \u673a\u5668\u5b66\u4e60\u7f16\u8bd1 \uff0c\u589e\u52a0 CMU \u673a\u5668\u5b66\u4e60\u7cfb\u7edf \uff5e \u8fd9\u662f\u4e00\u672c\u8ba1\u7b97\u673a\u7684\u81ea\u5b66\u6307\u5357\uff0c\u4e5f\u662f\u5bf9\u81ea\u5df1\u5927\u5b66\u4e09\u5e74\u81ea\u5b66\u751f\u6daf\u7684\u4e00\u4e2a\u7eaa\u5ff5\u3002 \u8fd9\u540c\u65f6\u4e5f\u662f\u4e00\u4efd\u732e\u7ed9\u5317\u5927\u4fe1\u79d1\u5b66\u5f1f\u5b66\u59b9\u4eec\u7684\u793c\u7269\u3002\u5982\u679c\u8fd9\u672c\u4e66\u80fd\u5bf9\u4f60\u4eec\u7684\u4fe1\u79d1\u751f\u6daf\u6709\u54ea\u6015\u4e00\u4e1d\u4e00\u6beb\u7684\u5e2e\u52a9\uff0c\u90fd\u662f\u5bf9\u6211\u6781\u5927\u7684\u9f13\u52b1\u548c\u6170\u85c9\u3002 \u672c\u4e66\u76ee\u524d\u89c4\u5212\u4e86\u4ee5\u4e0b\u90e8\u5206(\u5982\u679c\u4f60\u6709\u5176\u4ed6\u597d\u7684\u5efa\u8bae\uff0c\u6216\u8005\u60f3\u52a0\u5165\u8d21\u732e\u8005\u7684\u884c\u5217\uff0c\u6b22\u8fce\u90ae\u4ef6 zhongyinmin@pku.edu.cn \u6216\u8005\u5728 issue \u91cc\u63d0\u95ee)\uff1a \u5fc5\u5b66\u5de5\u5177\uff1aIDE, \u7ffb\u5899, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, \u5b9e\u7528\u5de5\u5177 ... \u56fd\u5916\u9ad8\u8d28\u91cf CS \u8bfe\u7a0b\u6c47\u603b \uff1a\u6211\u5c06\u628a\u6211\u4e0a\u8fc7\u7684\u6240\u6709\u9ad8\u8d28\u91cf\u7684\u56fd\u5916 CS \u8bfe\u7a0b\u5206\u95e8\u522b\u7c7b\u8fdb\u884c\u6c47\u603b\uff0c\u5e76\u7ed9\u51fa\u76f8\u5173\u7684\u81ea\u5b66\u5efa\u8bae\uff0c\u5927\u90e8\u5206\u8bfe\u7a0b\u90fd\u4f1a\u6709\u4e00\u4e2a\u72ec\u7acb\u7684\u4ed3\u5e93\u7ef4\u62a4\u76f8\u5173\u7684\u8d44\u6e90\u4ee5\u53ca\u6211\u7684\u4f5c\u4e1a\u5b9e\u73b0\u3002 \u73af\u5883\u914d\u7f6e\uff1aLinux \u57fa\u7840\uff0c bash \uff0c\u73af\u5883\u53d8\u91cf\uff0cAnaconda ... \u7ecf\u5178\u4e66\u7c4d\u63a8\u8350\uff1a\u770b\u8fc7 CSAPP \u8fd9\u672c\u4e66\u7684\u540c\u5b66\u4e00\u5b9a\u611f\u53f9\u597d\u4e66\u7684\u91cd\u8981\uff0c\u6211\u5c06\u5217\u4e3e\u63a8\u8350\u81ea\u5df1\u770b\u8fc7\u7684\u8ba1\u7b97\u673a\u9886\u57df\u7684\u5fc5\u770b\u597d\u4e66\u4e0e\u8d44\u6e90\u94fe\u63a5\u3002 \u68a6\u5f00\u59cb\u7684\u5730\u65b9 \u2014\u2014 CS61A \u5927\u4e00\u5165\u5b66\u65f6\u6211\u662f\u4e00\u4e2a\u5bf9\u8ba1\u7b97\u673a\u4e00\u65e0\u6240\u77e5\u7684\u5c0f\u767d\uff0c\u88c5\u4e86\u51e0\u5341\u4e2a G \u7684 Visual Studio \u5929\u5929\u548c OJ \u4f60\u6b7b\u6211\u6d3b\u3002\u51ed\u7740\u9ad8\u4e2d\u7684\u6570\u5b66\u5e95\u5b50\u6211\u6570\u5b66\u8bfe\u5b66\u5f97\u8fd8\u4e0d\u9519\uff0c\u4f46\u5728\u4e13\u4e1a\u8bfe\u4e0a\u5bf9\u7ade\u8d5b\u5927\u4f6c\u53ea\u6709\u4ef0\u671b\u3002\u63d0\u5230\u7f16\u7a0b\u6211\u53ea\u4f1a\u6253\u5f00\u90a3\u7b28\u91cd\u7684 IDE\uff0c\u65b0\u5efa\u4e00\u4e2a\u6211\u4e5f\u4e0d\u77e5\u9053\u5177\u4f53\u662f\u5e72\u5565\u7684\u547d\u4ee4\u884c\u9879\u76ee\uff0c\u7136\u540e\u5c31\u662f cin , cout , for \u5faa\u73af\uff0c\u7136\u540e CE, RE, WA \u5faa\u73af\u3002\u5f53\u65f6\u7684\u6211\u5c31\u5904\u5728\u4e00\u79cd\u62fc\u547d\u60f3\u5b66\u597d\u4f46\u4e0d\u77e5\u9053\u600e\u4e48\u5b66\uff0c\u8bfe\u4e0a\u8ba4\u771f\u542c\u8bb2\u4f46\u9898\u8fd8\u4e0d\u4f1a\u505a\uff0c\u8bfe\u540e\u505a\u4f5c\u4e1a\u5b8c\u5168\u662f\u7528\u65f6\u95f4\u548c\u5b83\u786c\u8017\u7684\u75db\u82e6\u72b6\u6001\u3002\u6211\u81f3\u4eca\u7535\u8111\u91cc\u8fd8\u5b58\u7740\u81ea\u5df1\u5927\u4e00\u4e0a\u5b66\u671f\u8ba1\u7b97\u6982\u8bba\u5927\u4f5c\u4e1a\u7684\u6e90\u4ee3\u7801 \u2014\u2014 \u4e00\u4e2a 1200 \u884c\u7684 C++ \u6587\u4ef6\uff0c\u6ca1\u6709\u5934\u6587\u4ef6\u3001\u6ca1\u6709\u7c7b\u3001\u6ca1\u6709\u5c01\u88c5\u3001\u6ca1\u6709 unit test\u3001\u6ca1\u6709 Makefile\u3001\u6ca1\u6709 Git\uff0c\u552f\u4e00\u7684\u4f18\u70b9\u662f\u5b83\u786e\u5b9e\u80fd\u8dd1\uff0c\u7f3a\u70b9\u662f\u201c\u80fd\u8dd1\u201d\u7684\u8865\u96c6\u3002\u6211\u4e00\u5ea6\u6000\u7591\u6211\u662f\u4e0d\u662f\u4e0d\u9002\u5408\u5b66\u8ba1\u7b97\u673a\uff0c\u56e0\u4e3a\u7ae5\u5e74\u5bf9\u4e8e\u6781\u5ba2\u7684\u6240\u6709\u60f3\u8c61\uff0c\u5df2\u7ecf\u88ab\u6211\u7b2c\u4e00\u4e2a\u5b66\u671f\u7684\u4f53\u9a8c\u5f7b\u5e95\u7c89\u788e\u4e86\u3002 \u8fd9\u4e00\u5207\u7684\u8f6c\u673a\u53d1\u751f\u5728\u6211\u5927\u4e00\u7684\u5bd2\u5047\uff0c\u6211\u5fc3\u8840\u6765\u6f6e\u60f3\u5b66\u4e60 Python\u3002\u65e0\u610f\u95f4\u770b\u5230\u77e5\u4e4e\u6709\u4eba\u63a8\u8350\u4e86 CS61A \u8fd9\u95e8\u8bfe\uff0c\u8bf4\u662f UC Berkeley \u7684\u5927\u4e00\u5165\u95e8\u8bfe\u7a0b\uff0c\u8bb2\u7684\u5c31\u662f Python\u3002\u6211\u6c38\u8fdc\u4e0d\u4f1a\u5fd8\u8bb0\u90a3\u4e00\u5929\uff0c\u6253\u5f00 CS61A \u8bfe\u7a0b\u7f51\u7ad9\u7684\u90a3\u4e2a\u77ac\u95f4\uff0c\u5c31\u50cf\u54e5\u4f26\u5e03\u53d1\u73b0\u4e86\u65b0\u5927\u9646\u4e00\u6837\uff0c\u6211\u5f00\u542f\u4e86\u65b0\u4e16\u754c\u7684\u5927\u95e8\u3002 \u6211\u4e00\u53e3\u6c14 3 \u4e2a\u661f\u671f\u4e0a\u5b8c\u4e86\u8fd9\u95e8\u8bfe\uff0c\u5b83\u8ba9\u6211\u7b2c\u4e00\u6b21\u611f\u89c9\u5230\u539f\u6765 CS \u53ef\u4ee5\u5b66\u5f97\u5982\u6b64\u5145\u5b9e\u800c\u6709\u8da3\uff0c\u539f\u6765\u8fd9\u4e16\u4e0a\u7adf\u6709\u5982\u6b64\u7cbe\u534e\u7684\u8bfe\u7a0b\u3002 \u4e3a\u907f\u514d\u6709\u5d07\u6d0b\u5a9a\u5916\u4e4b\u5acc\uff0c\u6211\u5355\u7eaf\u4ece\u4e00\u4e2a\u5b66\u751f\u7684\u89c6\u89d2\u6765\u8bb2\u8bb2\u81ea\u5b66 CS61A \u7684\u4f53\u9a8c\uff1a \u72ec\u7acb\u642d\u5efa\u7684\u8bfe\u7a0b\u7f51\u7ad9: \u4e00\u4e2a\u7f51\u7ad9\u5c06\u6240\u6709\u8bfe\u7a0b\u8d44\u6e90\u6574\u5408\u4e00\u4f53\uff0c\u6761\u7406\u5206\u660e\u7684\u8bfe\u7a0b schedule\u3001\u6240\u6709 slides, hw, discussion \u7684\u6587\u4ef6\u94fe\u63a5\u3001\u8be6\u7ec6\u660e\u786e\u7684\u8bfe\u7a0b\u7ed9\u5206\u8bf4\u660e\u3001\u5386\u5e74\u7684\u8003\u8bd5\u9898\u4e0e\u7b54\u6848\u3002\u8fd9\u6837\u4e00\u4e2a\u7f51\u7ad9\u629b\u5f00\u7f8e\u89c2\u7a0b\u5ea6\u4e0d\u8c08\uff0c\u65e2\u65b9\u4fbf\u5b66\u751f\uff0c\u4e5f\u8ba9\u8d44\u6e90\u516c\u6b63\u900f\u660e\u3002 \u8bfe\u7a0b\u6559\u6388\u4eb2\u81ea\u7f16\u5199\u7684\u6559\u6750\uff1aCS61A \u8fd9\u95e8\u8bfe\u7684\u5f00\u8bfe\u8001\u5e08\u5c06MIT\u7684\u7ecf\u5178\u6559\u6750 Structure and Interpretation of Computer Programs (SICP) \u7528Python\u8fd9\u95e8\u8bed\u8a00\u8fdb\u884c\u6539\u7f16\uff08\u539f\u6559\u6750\u57fa\u4e8e Scheme \u8bed\u8a00\uff09\uff0c\u4fdd\u8bc1\u4e86\u8bfe\u5802\u5185\u5bb9\u4e0e\u6559\u6750\u5185\u5bb9\u7684\u4e00\u81f4\u6027\uff0c\u540c\u65f6\u8865\u5145\u4e86\u66f4\u591a\u7ec6\u8282\uff0c\u53ef\u4ee5\u8bf4\u8bda\u610f\u6ee1\u6ee1\u3002\u800c\u4e14\u5168\u4e66\u5f00\u6e90\uff0c\u53ef\u4ee5\u76f4\u63a5\u7ebf\u4e0a\u9605\u8bfb\u3002 \u4e30\u5bcc\u5230\u8ba9\u4eba\u773c\u82b1\u7f2d\u4e71\u7684\u8bfe\u7a0b\u4f5c\u4e1a\uff1a14 \u4e2a lab \u5de9\u56fa\u968f\u5802\u77e5\u8bc6\u70b9\uff0c10 \u4e2a homework\uff0c\u8fd8\u6709 4 \u4e2a\u4ee3\u7801\u91cf\u5747\u4e0a\u5343\u884c\u7684 project\u3002\u4e0e\u5927\u5bb6\u719f\u6089\u7684 OJ \u548c Word \u6587\u6863\u5f0f\u7684\u4f5c\u4e1a\u4e0d\u540c\uff0c\u6240\u6709\u4f5c\u4e1a\u5747\u6709\u5b8c\u5584\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u4fdd\u59c6\u7ea7\u7684\u4f5c\u4e1a\u8bf4\u660e\u3002\u6bcf\u4e2a Project \u90fd\u6709\u8be6\u5c3d\u7684 handout \u6587\u6863\u3001\u5168\u81ea\u52a8\u7684\u8bc4\u5206\u811a\u672c\u3002CS61A \u751a\u81f3\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a \u81ea\u52a8\u5316\u7684\u4f5c\u4e1a\u63d0\u4ea4\u8bc4\u5206\u7cfb\u7edf \uff08\u636e\u8bf4\u8fd8\u53d1\u4e86\u8bba\u6587\uff09\u3002\u5f53\u7136\uff0c\u6709\u4eba\u4f1a\u8bf4\u201c\u4e00\u4e2a project \u51e0\u5343\u884c\u4ee3\u7801\u5927\u90e8\u5206\u90fd\u662f\u52a9\u6559\u5e2e\u4f60\u5199\u597d\u7684\uff0c\u4f60\u8fd8\u80fd\u5b66\u5230\u5565\uff1f\u201d\u3002\u6b64\u8a00\u5dee\u77e3\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u521a\u521a\u63a5\u89e6\u8ba1\u7b97\u673a\uff0c\u8fde\u5b89\u88c5 Python \u90fd\u78d5\u78d5\u7eca\u7eca\u7684\u5c0f\u767d\u6765\u8bf4\uff0c\u8fd9\u6837\u5b8c\u5584\u7684\u4ee3\u7801\u6846\u67b6\u65e2\u53ef\u4ee5\u8ba9\u4f60\u4e13\u6ce8\u4e8e\u5de9\u56fa\u8bfe\u5802\u4e0a\u5b66\u4e60\u5230\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\uff0c\u53c8\u80fd\u6709\u201c\u6211\u624d\u5b66\u4e86\u4e00\u4e2a\u6708\u5c31\u80fd\u505a\u4e00\u4e2a\u5c0f\u6e38\u620f\u4e86\uff01\u201d\u7684\u6210\u5c31\u611f\uff0c\u8fd8\u80fd\u6709\u673a\u4f1a\u9605\u8bfb\u5b66\u4e60\u522b\u4eba\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\uff0c\u4ece\u800c\u4e3a\u81ea\u5df1\u6240\u7528\u3002\u6211\u89c9\u5f97\u5728\u4f4e\u5e74\u7ea7\uff0c\u8fd9\u79cd\u4ee3\u7801\u6846\u67b6\u53ef\u4ee5\u8bf4\u767e\u5229\u800c\u65e0\u4e00\u5bb3\u3002\u552f\u4e00\u7684\u5bb3\u4e5f\u8bb8\u662f\u82e6\u4e86\u8001\u5e08\u548c\u52a9\u6559\uff0c\u56e0\u4e3a\u5f00\u53d1\u8fd9\u6837\u7684\u4f5c\u4e1a\u53ef\u60f3\u800c\u77e5\u9700\u8981\u76f8\u5f53\u7684\u65f6\u95f4\u6295\u5165\u3002 \u6bcf\u5468 Discussion \u8ba8\u8bba\u8bfe\uff0c\u52a9\u6559\u4f1a\u8bb2\u89e3\u77e5\u8bc6\u96be\u70b9\u548c\u8003\u8bd5\u4f8b\u9898\uff1a\u7c7b\u4f3c\u4e8e\u5317\u4eac\u5927\u5b66 ICS \u7684\u5c0f\u73ed\u7814\u8ba8\uff0c\u4f46\u4e60\u9898\u5168\u90e8\u7528 LaTeX \u64b0\u5199\uff0c\u76f8\u5f53\u89c4\u8303\u4e14\u4f1a\u660e\u786e\u7ed9\u51fa solution\u3002 \u8fd9\u6837\u7684\u8bfe\u7a0b\uff0c\u4f60\u5b8c\u5168\u4e0d\u9700\u8981\u4efb\u4f55\u8ba1\u7b97\u673a\u7684\u57fa\u7840\uff0c\u4f60\u53ea\u9700\u8981\u52aa\u529b\u3001\u8ba4\u771f\u3001\u82b1\u65f6\u95f4\u5c31\u591f\u4e86\u3002\u6b64\u524d\u90a3\u79cd\u6709\u52b2\u6ca1\u5904\u4f7f\u7684\u611f\u89c9\uff0c\u90a3\u79cd\u4ed8\u51fa\u518d\u591a\u65f6\u95f4\u5374\u5f97\u4e0d\u5230\u56de\u62a5\u7684\u611f\u89c9\uff0c\u4ece\u6b64\u70df\u6d88\u4e91\u6563\u3002\u8fd9\u592a\u9002\u5408\u6211\u4e86\uff0c\u6211\u4ece\u6b64\u7231\u4e0a\u4e86\u81ea\u5b66\u3002 \u8bd5\u60f3\u5982\u679c\u6709\u4eba\u80fd\u628a\u8270\u6df1\u7684\u77e5\u8bc6\u70b9\u56bc\u788e\u56bc\u70c2\uff0c\u7528\u751f\u52a8\u76f4\u767d\u7684\u65b9\u5f0f\u5448\u73b0\u7ed9\u4f60\uff0c\u8fd8\u6709\u90a3\u4e48\u591a\u542c\u8d77\u6765\u5c31\u5f88 fancy\uff0c\u79cd\u7c7b\u7e41\u591a\u7684 project \u6765\u5de9\u56fa\u4f60\u7684\u7406\u8bba\u77e5\u8bc6\uff0c\u4f60\u4f1a\u89c9\u5f97\u4ed6\u4eec\u771f\u7684\u662f\u5728\u503e\u5c3d\u5168\u529b\u60f3\u65b9\u8bbe\u6cd5\u5730\u8ba9\u4f60\u5b8c\u5168\u638c\u63e1\u8fd9\u95e8\u8bfe\uff0c\u4f60\u4f1a\u89c9\u5f97\u4e0d\u5b66\u597d\u5b83\u7b80\u76f4\u662f\u5bf9\u8fd9\u4e9b\u8bfe\u7a0b\u5efa\u8bbe\u8005\u7684\u4fae\u8fb1\u3002 \u5982\u679c\u4f60\u89c9\u5f97\u6211\u5728\u5938\u5927\u5176\u8bcd\uff0c\u90a3\u4e48\u4e0d\u59a8\u4ece CS61A \u5f00\u59cb\uff0c\u56e0\u4e3a\u5b83\u662f\u6211\u7684\u68a6\u5f00\u59cb\u7684\u5730\u65b9\u3002 \u4e3a\u4ec0\u4e48\u5199\u8fd9\u672c\u4e66 \u5728\u62112020\u5e74\u79cb\u5b63\u5b66\u671f\u62c5\u4efb\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\uff08CSAPP\uff09\u8fd9\u95e8\u8bfe\u7684\u52a9\u6559\u65f6\uff0c\u6211\u5df2\u7ecf\u81ea\u5b66\u4e00\u5e74\u591a\u4e86\u3002\u8fd9\u4e00\u5e74\u591a\u6765\u6211\u65e0\u6bd4\u4eab\u53d7\u8fd9\u79cd\u81ea\u5b66\u6a21\u5f0f\uff0c\u4e3a\u4e86\u5206\u4eab\u8fd9\u79cd\u5feb\u4e50\uff0c\u6211\u4e3a\u81ea\u5df1\u7684\u5c0f\u73ed\u540c\u5b66\u505a\u8fc7\u4e00\u4e2a CS\u81ea\u5b66\u8d44\u6599\u6574\u7406\u4ed3\u5e93 \u3002\u5f53\u65f6\u7eaf\u7cb9\u662f\u5fc3\u8840\u6765\u6f6e\uff0c\u56e0\u4e3a\u6211\u4e5f\u4e0d\u6562\u516c\u7136\u9f13\u52b1\u5927\u5bb6\u7fd8\u8bfe\u81ea\u5b66\u3002 \u4f46\u968f\u7740\u53c8\u4e00\u5e74\u65f6\u95f4\u7684\u7ef4\u62a4\uff0c\u8fd9\u4e2a\u4ed3\u5e93\u7684\u5185\u5bb9\u5df2\u7ecf\u76f8\u5f53\u4e30\u5bcc\uff0c\u57fa\u672c\u8986\u76d6\u4e86\u8ba1\u79d1\u3001\u667a\u80fd\u7cfb\u3001\u8f6f\u5de5\u7cfb\u7684\u7edd\u5927\u591a\u6570\u8bfe\u7a0b\uff0c\u6211\u4e5f\u4e3a\u6bcf\u4e2a\u8bfe\u7a0b\u90fd\u5efa\u4e86\u5404\u81ea\u7684 GitHub \u4ed3\u5e93\uff0c\u6c47\u603b\u6211\u7528\u5230\u7684\u81ea\u5b66\u8d44\u6599\u4ee5\u53ca\u4f5c\u4e1a\u5b9e\u73b0\u3002 \u76f4\u5230\u5927\u56db\u5f00\u59cb\u51d1\u5b66\u5206\u6bd5\u4e1a\u7684\u65f6\u5019\uff0c\u6211\u6253\u5f00\u81ea\u5df1\u7684\u57f9\u517b\u65b9\u6848\uff0c\u6211\u53d1\u73b0\u5b83\u5df2\u7ecf\u662f\u6211\u8fd9\u4e2a\u81ea\u5b66\u4ed3\u5e93\u7684\u5b50\u96c6\u4e86\uff0c\u800c\u8fd9\u8ddd\u79bb\u6211\u5f00\u59cb\u81ea\u5b66\u4e5f\u624d\u4e24\u5e74\u534a\u800c\u5df2\u3002\u4e8e\u662f\uff0c\u4e00\u4e2a\u5927\u80c6\u7684\u60f3\u6cd5\u5728\u6211\u8111\u6d77\u4e2d\u6d6e\u73b0\uff1a\u4e5f\u8bb8\uff0c\u6211\u53ef\u4ee5\u6253\u9020\u4e00\u4e2a\u81ea\u5b66\u5f0f\u7684\u57f9\u517b\u65b9\u6848\uff0c\u628a\u6211\u8fd9\u4e09\u5e74\u81ea\u5b66\u7ecf\u5386\u4e2d\u9047\u5230\u7684\u5751\u3001\u8d70\u8fc7\u7684\u8def\u8bb0\u5f55\u4e0b\u6765\uff0c\u4ee5\u671f\u80fd\u4e3a\u540e\u6765\u7684\u5b66\u5f1f\u5b66\u59b9\u4eec\u8d21\u732e\u81ea\u5df1\u7684\u4e00\u4efd\u5fae\u8584\u4e4b\u529b\u3002 \u5982\u679c\u5927\u5bb6\u53ef\u4ee5\u5728\u4e09\u5e74\u4e0d\u5230\u7684\u65f6\u95f4\u91cc\u5c31\u80fd\u5efa\u7acb\u8d77\u6574\u5ea7CS\u7684\u57fa\u7840\u5927\u53a6\uff0c\u80fd\u6709\u76f8\u5bf9\u624e\u5b9e\u7684\u6570\u5b66\u529f\u5e95\u548c\u4ee3\u7801\u80fd\u529b\uff0c\u7ecf\u5386\u8fc7\u6570\u5341\u4e2a\u5343\u884c\u4ee3\u7801\u91cf\u7684 Project \u7684\u6d17\u793c\uff0c\u638c\u63e1\u81f3\u5c11 C/C++/Java/JS/Python/Go/Rust \u7b49\u4e3b\u6d41\u8bed\u8a00\uff0c\u5bf9\u7b97\u6cd5\u3001\u7535\u8def\u3001\u4f53\u7cfb\u3001\u7f51\u7edc\u3001\u64cd\u7edf\u3001\u7f16\u8bd1\u3001\u4eba\u5de5\u667a\u80fd\u3001\u673a\u5668\u5b66\u4e60\u3001\u8ba1\u7b97\u673a\u89c6\u89c9\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u3001\u5f3a\u5316\u5b66\u4e60\u3001\u5bc6\u7801\u5b66\u3001\u4fe1\u606f\u8bba\u3001\u535a\u5f08\u8bba\u3001\u6570\u503c\u5206\u6790\u3001\u7edf\u8ba1\u5b66\u3001\u5206\u5e03\u5f0f\u3001\u6570\u636e\u5e93\u3001\u56fe\u5f62\u5b66\u3001Web\u5f00\u53d1\u3001\u4e91\u670d\u52a1\u3001\u8d85\u7b97\u7b49\u7b49\u65b9\u9762\u5747\u6709\u6d89\u730e\u3002\u6211\u60f3\uff0c\u4f60\u5c06\u6709\u8db3\u591f\u7684\u5e95\u6c14\u548c\u81ea\u4fe1\u9009\u62e9\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\uff0c\u65e0\u8bba\u662f\u5c31\u4e1a\u8fd8\u662f\u79d1\u7814\uff0c\u4f60\u90fd\u5c06\u6709\u76f8\u5f53\u7684\u7ade\u4e89\u529b\u3002 \u56e0\u4e3a\u6211\u575a\u4fe1\uff0c\u65e2\u7136\u4f60\u80fd\u575a\u6301\u542c\u6211 BB \u5230\u8fd9\u91cc\uff0c\u4f60\u4e00\u5b9a\u4e0d\u7f3a\u5b66\u597d CS \u7684\u80fd\u529b\uff0c\u4f60\u53ea\u662f\u6ca1\u6709\u4e00\u4e2a\u597d\u7684\u8001\u5e08\uff0c\u7ed9\u4f60\u8bb2\u4e00\u95e8\u597d\u7684\u8bfe\u7a0b\u3002\u800c\u6211\uff0c\u5c06\u529b\u56fe\u6839\u636e\u6211\u4e09\u5e74\u7684\u4f53\u9a8c\uff0c\u4e3a\u4f60\u6311\u9009\u8fd9\u6837\u7684\u8bfe\u7a0b\u3002 \u81ea\u5b66\u7684\u597d\u5904 \u5bf9\u6211\u6765\u8bf4\uff0c\u81ea\u5b66\u6700\u5927\u7684\u597d\u5904\u5c31\u5728\u4e8e\u53ef\u4ee5\u5b8c\u5168\u6839\u636e\u81ea\u5df1\u7684\u8fdb\u5ea6\u6765\u8c03\u6574\u5b66\u4e60\u901f\u5ea6\u3002\u5bf9\u4e8e\u4e00\u4e9b\u7591\u96be\u77e5\u8bc6\u70b9\uff0c\u6211\u53ef\u4ee5\u53cd\u590d\u56de\u770b\u89c6\u9891\uff0c\u5728\u7f51\u4e0a\u8c37\u6b4c\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u4e0a StackOverflow \u63d0\u95ee\u9898\uff0c\u76f4\u5230\u5b8c\u5168\u5c06\u5b83\u5f04\u660e\u767d\u3002\u800c\u5bf9\u4e8e\u81ea\u5df1\u638c\u63e1\u5f97\u76f8\u5bf9\u8f83\u5feb\u7684\u5185\u5bb9\uff0c\u5219\u53ef\u4ee5\u4e24\u500d\u901f\u751a\u81f3\u4e09\u500d\u901f\u7565\u8fc7\u3002 \u81ea\u5b66\u7684\u53e6\u4e00\u5927\u597d\u5904\u5c31\u662f\u535a\u91c7\u4f17\u957f\u3002\u8ba1\u7b97\u673a\u7cfb\u7684\u51e0\u5927\u6838\u5fc3\u8bfe\u7a0b\uff1a\u4f53\u7cfb\u3001\u7f51\u7edc\u3001\u64cd\u7edf\u3001\u7f16\u8bd1\uff0c\u6bcf\u4e00\u95e8\u6211\u57fa\u672c\u90fd\u4e0a\u8fc7\u4e0d\u540c\u5927\u5b66\u7684\u8bfe\u7a0b\uff0c\u4e0d\u540c\u7684\u6559\u6750\u3001\u4e0d\u540c\u7684\u77e5\u8bc6\u70b9\u4fa7\u91cd\u3001\u4e0d\u540c\u7684 project \u5c06\u4f1a\u6781\u5927\u4e30\u5bcc\u4f60\u7684\u89c6\u91ce\uff0c\u4e5f\u4f1a\u8ba9\u4f60\u7406\u89e3\u9519\u8bef\u7684\u4e00\u4e9b\u5185\u5bb9\u5f97\u5230\u53ca\u65f6\u7ea0\u6b63\u3002 \u81ea\u5b66\u7684\u7b2c\u4e09\u4e2a\u597d\u5904\u662f\u65f6\u95f4\u81ea\u7531\uff0c\u5177\u4f53\u539f\u56e0\u7701\u7565\u3002 \u81ea\u5b66\u7684\u574f\u5904 \u5f53\u7136\uff0c\u4f5c\u4e3a CS \u81ea\u5b66\u4e3b\u4e49\u7684\u5fe0\u5b9e\u62e5\u8db8\uff0c\u6211\u4e0d\u5f97\u4e0d\u627f\u8ba4\u81ea\u5b66\u4e5f\u6709\u5b83\u7684\u574f\u5904\u3002 \u7b2c\u4e00\u5c31\u662f\u4ea4\u6d41\u6c9f\u901a\u7684\u4e0d\u4fbf\u3002\u6211\u5176\u5b9e\u662f\u4e00\u4e2a\u5f88\u70ed\u8877\u4e8e\u63d0\u95ee\u7684\u4eba\uff0c\u5bf9\u4e8e\u6240\u6709\u6ca1\u6709\u5f04\u660e\u767d\u7684\u70b9\uff0c\u6211\u90fd\u559c\u6b22\u7a77\u8ffd\u5230\u5e95\u3002\u4f46\u5f53\u4f60\u9762\u5bf9\u7740\u5c4f\u5e55\u542c\u5230\u8001\u5e08\u8bb2\u4e86\u4e00\u4e2a\u4f60\u6ca1\u660e\u767d\u7684\u77e5\u8bc6\u70b9\u7684\u65f6\u5019\uff0c\u4f60\u65e0\u6cd5\u987a\u7740\u7f51\u7ebf\u5230\u53e6\u4e00\u7aef\u5411\u8001\u5e08\u95ee\u4e2a\u660e\u767d\u3002\u6211\u52aa\u529b\u901a\u8fc7\u72ec\u7acb\u601d\u8003\u548c\u5584\u7528 Google \u6765\u7f13\u89e3\u8fd9\u4e00\u70b9\uff0c\u4f46\u662f\uff0c\u5982\u679c\u80fd\u6709\u51e0\u4e2a\u5fd7\u540c\u9053\u5408\u7684\u4f19\u4f34\u7ed3\u4f34\u81ea\u5b66\uff0c\u90a3\u5c06\u662f\u6781\u597d\u7684\u3002\u5173\u4e8e\u4ea4\u6d41\u7fa4\u7684\u5efa\u7acb\uff0c\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003\u4ed3\u5e93 README \u4e2d\u7684\u6559\u7a0b\u3002 \u7b2c\u4e8c\u5c31\u662f\u8fd9\u4e9b\u81ea\u5b66\u7684\u8bfe\u7a0b\u57fa\u672c\u90fd\u662f\u82f1\u6587\u7684\u3002\u4ece\u89c6\u9891\u5230slides\u5230\u4f5c\u4e1a\u5168\u662f\u82f1\u6587\uff0c\u6240\u4ee5\u6709\u4e00\u5b9a\u7684\u95e8\u69db\u3002\u4e0d\u8fc7\u6211\u89c9\u5f97\u8fd9\u4e2a\u6311\u6218\u5982\u679c\u4f60\u514b\u670d\u4e86\u7684\u8bdd\u5bf9\u4f60\u662f\u6781\u4e3a\u6709\u5229\u7684\u3002\u56e0\u4e3a\u5728\u5f53\u4e0b\uff0c\u867d\u7136\u6211\u5f88\u4e0d\u60c5\u613f\uff0c\u4f46\u4e5f\u4e0d\u5f97\u4e0d\u627f\u8ba4\uff0c\u5728\u8ba1\u7b97\u673a\u9886\u57df\uff0c\u5f88\u591a\u4f18\u8d28\u7684\u6587\u6863\u3001\u8bba\u575b\u3001\u7f51\u7ad9\u90fd\u662f\u5168\u82f1\u6587\u7684\u3002\u517b\u6210\u82f1\u6587\u9605\u8bfb\u7684\u4e60\u60ef\uff0c\u5728\u8d64\u65d7\u63d2\u904d\u4e16\u754c\u4e4b\u524d\uff0c\u8fd8\u662f\u6709\u4e00\u5b9a\u597d\u5904\u7684\uff08\u72d7\u5934\u4fdd\u547d\uff09\u3002 \u7b2c\u4e09\uff0c\u4e5f\u662f\u6211\u89c9\u5f97\u6700\u56f0\u96be\u7684\u4e00\u70b9\uff0c\u5c31\u662f\u81ea\u5f8b\u3002\u56e0\u4e3a\u6ca1\u6709 DDL \u6709\u65f6\u5019\u771f\u7684\u662f\u4e00\u4ef6\u53ef\u6015\u7684\u4e8b\u60c5\uff0c\u7279\u522b\u662f\u968f\u7740\u5b66\u4e60\u7684\u6df1\u5165\uff0c\u56fd\u5916\u7684\u5f88\u591a\u8bfe\u7a0b\u662f\u76f8\u5f53\u8650\u7684\u3002\u4f60\u5f97\u6709\u8db3\u591f\u7684\u9a71\u52a8\u529b\u5f3a\u8feb\u81ea\u5df1\u9759\u4e0b\u5fc3\u6765\uff0c\u9605\u8bfb\u51e0\u5341\u9875\u7684 Project Handout\uff0c\u7406\u89e3\u4e0a\u5343\u884c\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u5fcd\u53d7\u6570\u4e2a\u5c0f\u65f6\u7684 debug \u65f6\u5149\u3002\u800c\u8fd9\u4e00\u5207\uff0c\u6ca1\u6709\u5b66\u5206\uff0c\u6ca1\u6709\u7ee9\u70b9\uff0c\u6ca1\u6709\u8001\u5e08\uff0c\u6ca1\u6709\u540c\u5b66\uff0c\u53ea\u6709\u4e00\u4e2a\u4fe1\u5ff5 \u2014\u2014 \u4f60\u5728\u53d8\u5f3a\u3002 \u8fd9\u672c\u4e66\u9002\u5408\u8c01 \u6b63\u5982\u6211\u5728\u524d\u8a00\u91cc\u8bf4\u7684\uff0c\u4efb\u4f55\u6709\u5fd7\u4e8e\u81ea\u5b66\u8ba1\u7b97\u673a\u7684\u670b\u53cb\u90fd\u53ef\u4ee5\u53c2\u8003\u8fd9\u672c\u4e66\u3002\u5982\u679c\u4f60\u5df2\u7ecf\u6709\u4e86\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u57fa\u7840\uff0c\u53ea\u662f\u5bf9\u67d0\u4e2a\u7279\u5b9a\u7684\u9886\u57df\u611f\u5174\u8da3\uff0c\u53ef\u4ee5\u9009\u62e9\u6027\u5730\u6311\u9009\u4f60\u611f\u5174\u8da3\u7684\u5185\u5bb9\u8fdb\u884c\u5b66\u4e60\u3002\u5f53\u7136\uff0c\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u50cf\u6211\u5f53\u5e74\u4e00\u6837\u5bf9\u8ba1\u7b97\u673a\u4e00\u65e0\u6240\u77e5\u7684\u5c0f\u767d\uff0c\u521d\u5165\u5927\u5b66\u7684\u6821\u95e8\uff0c\u6211\u5e0c\u671b\u8fd9\u672c\u4e66\u80fd\u6210\u4e3a\u4f60\u7684\u653b\u7565\uff0c\u8ba9\u4f60\u82b1\u6700\u5c11\u7684\u65f6\u95f4\u638c\u63e1\u4f60\u6240\u9700\u8981\u7684\u77e5\u8bc6\u548c\u80fd\u529b\u3002\u67d0\u79cd\u7a0b\u5ea6\u4e0a\uff0c\u8fd9\u672c\u4e66\u66f4\u50cf\u662f\u4e00\u4e2a\u6839\u636e\u6211\u7684\u4f53\u9a8c\u6765\u6392\u5e8f\u7684\u8bfe\u7a0b\u641c\u7d22\u5f15\u64ce\uff0c\u5e2e\u52a9\u5927\u5bb6\u8db3\u4e0d\u51fa\u6237\uff0c\u4f53\u9a8c\u4e16\u754c\u9876\u7ea7\u540d\u6821\u7684\u8ba1\u7b97\u673a\u4f18\u8d28\u8bfe\u7a0b\u3002 \u5f53\u7136\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u8fd8\u672a\u6bd5\u4e1a\u7684\u672c\u79d1\u751f\uff0c\u6211\u6df1\u611f\u81ea\u5df1\u6ca1\u6709\u80fd\u529b\u4e5f\u6ca1\u6709\u6743\u5229\u53bb\u5ba3\u626c\u4e00\u79cd\u5b66\u4e60\u65b9\u5f0f\uff0c\u6211\u53ea\u662f\u5e0c\u671b\u8fd9\u4efd\u8d44\u6599\u80fd\u8ba9\u90a3\u4e9b\u540c\u6837\u6709\u81ea\u5b66\u4e4b\u5fc3\u548c\u6bc5\u529b\u670b\u53cb\u53ef\u4ee5\u5c11\u8d70\u4e9b\u5f2f\u8def\uff0c\u6536\u83b7\u66f4\u4e30\u5bcc\u3001\u66f4\u591a\u6837\u3001\u66f4\u6ee1\u8db3\u7684\u5b66\u4e60\u4f53\u9a8c\u3002 \u7279\u522b\u9e23\u8c22 \u5728\u8fd9\u91cc\uff0c\u6211\u6000\u7740\u5d07\u656c\u4e4b\u5fc3\u771f\u8bda\u5730\u611f\u8c22\u6240\u6709\u5c06\u8bfe\u7a0b\u8d44\u6e90\u65e0\u507f\u5f00\u6e90\u7684\u5404\u4f4d\u6559\u6388\u4eec\u3002\u8fd9\u4e9b\u8bfe\u7a0b\u503e\u6ce8\u4e86\u4ed6\u4eec\u6570\u5341\u5e74\u6559\u5b66\u751f\u6daf\u7684\u79ef\u6dc0\u548c\u5fc3\u8840\uff0c\u4ed6\u4eec\u5374\u9009\u62e9\u65e0\u79c1\u5730\u8ba9\u6240\u6709\u4eba\u4eab\u53d7\u5230\u5982\u6b64\u9ad8\u8d28\u91cf\u7684CS\u6559\u80b2\u3002\u6ca1\u6709\u4ed6\u4eec\uff0c\u6211\u7684\u5927\u5b66\u751f\u6d3b\u4e0d\u4f1a\u8fd9\u6837\u5145\u5b9e\u800c\u5feb\u4e50\u3002\u5f88\u591a\u6559\u6388\u5728\u6211\u7ed9\u4ed6\u4eec\u53d1\u4e86\u611f\u8c22\u90ae\u4ef6\u4e4b\u540e\uff0c\u751a\u81f3\u4f1a\u56de\u590d\u4e0a\u767e\u5b57\u7684\u957f\u6587\uff0c\u771f\u7684\u8ba9\u6211\u65e0\u6bd4\u611f\u52a8\u3002\u4ed6\u4eec\u4e5f\u65f6\u523b\u6fc0\u52b1\u7740\u6211\uff0c\u505a\u4e00\u4ef6\u4e8b\uff0c\u5c31\u5f97\u7528\u5fc3\u505a\u597d\uff0c\u65e0\u8bba\u662f\u79d1\u7814\uff0c\u8fd8\u662f\u4e3a\u4eba\u3002 \u4f60\u4e5f\u60f3\u52a0\u5165\u5230\u8d21\u732e\u8005\u7684\u884c\u5217 \u4e00\u4e2a\u4eba\u7684\u529b\u91cf\u7ec8\u7a76\u662f\u6709\u9650\u7684\uff0c\u8fd9\u672c\u4e66\u4e5f\u662f\u6211\u5728\u7e41\u91cd\u7684\u79d1\u7814\u4e4b\u4f59\u71ac\u591c\u62bd\u7a7a\u5199\u51fa\u6765\u7684\uff0c\u96be\u514d\u6709\u4e0d\u591f\u5b8c\u5584\u4e4b\u5904\u3002\u53e6\u5916\uff0c\u7531\u4e8e\u4e2a\u4eba\u505a\u7684\u662f\u7cfb\u7edf\u65b9\u5411\uff0c\u5f88\u591a\u8bfe\u7a0b\u4fa7\u91cd\u7cfb\u7edf\u9886\u57df\uff0c\u5bf9\u4e8e\u6570\u5b66\u3001\u7406\u8bba\u8ba1\u7b97\u673a\u3001\u9ad8\u7ea7\u7b97\u6cd5\u76f8\u5173\u7684\u5185\u5bb9\u5219\u76f8\u5bf9\u5c11\u4e9b\u3002\u5982\u679c\u6709\u5927\u4f6c\u60f3\u5728\u5176\u4ed6\u9886\u57df\u5206\u4eab\u81ea\u5df1\u7684\u81ea\u5b66\u7ecf\u5386\u4e0e\u8d44\u6e90\uff0c\u53ef\u4ee5\u76f4\u63a5\u5728\u9879\u76ee\u4e2d\u53d1\u8d77 Pull Request\uff0c\u4e5f\u6b22\u8fce\u548c\u6211\u90ae\u4ef6\u8054\u7cfb\uff08 zhongyinmin@pku.edu.cn \uff09\u3002 \u5173\u4e8e\u4ea4\u6d41\u7fa4\u7684\u5efa\u7acb \u65b9\u6cd5\u53c2\u89c1\u4ed3\u5e93\u7684 README.md \u3002","title":"\u524d\u8a00"},{"location":"#_1","text":"\u6700\u8fd1\u66f4\u65b0\uff1a\u589e\u52a0\u9648\u5929\u5947 \u673a\u5668\u5b66\u4e60\u7f16\u8bd1 \uff0c\u589e\u52a0 CMU \u673a\u5668\u5b66\u4e60\u7cfb\u7edf \uff5e \u8fd9\u662f\u4e00\u672c\u8ba1\u7b97\u673a\u7684\u81ea\u5b66\u6307\u5357\uff0c\u4e5f\u662f\u5bf9\u81ea\u5df1\u5927\u5b66\u4e09\u5e74\u81ea\u5b66\u751f\u6daf\u7684\u4e00\u4e2a\u7eaa\u5ff5\u3002 \u8fd9\u540c\u65f6\u4e5f\u662f\u4e00\u4efd\u732e\u7ed9\u5317\u5927\u4fe1\u79d1\u5b66\u5f1f\u5b66\u59b9\u4eec\u7684\u793c\u7269\u3002\u5982\u679c\u8fd9\u672c\u4e66\u80fd\u5bf9\u4f60\u4eec\u7684\u4fe1\u79d1\u751f\u6daf\u6709\u54ea\u6015\u4e00\u4e1d\u4e00\u6beb\u7684\u5e2e\u52a9\uff0c\u90fd\u662f\u5bf9\u6211\u6781\u5927\u7684\u9f13\u52b1\u548c\u6170\u85c9\u3002 \u672c\u4e66\u76ee\u524d\u89c4\u5212\u4e86\u4ee5\u4e0b\u90e8\u5206(\u5982\u679c\u4f60\u6709\u5176\u4ed6\u597d\u7684\u5efa\u8bae\uff0c\u6216\u8005\u60f3\u52a0\u5165\u8d21\u732e\u8005\u7684\u884c\u5217\uff0c\u6b22\u8fce\u90ae\u4ef6 zhongyinmin@pku.edu.cn \u6216\u8005\u5728 issue \u91cc\u63d0\u95ee)\uff1a \u5fc5\u5b66\u5de5\u5177\uff1aIDE, \u7ffb\u5899, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, \u5b9e\u7528\u5de5\u5177 ... \u56fd\u5916\u9ad8\u8d28\u91cf CS \u8bfe\u7a0b\u6c47\u603b \uff1a\u6211\u5c06\u628a\u6211\u4e0a\u8fc7\u7684\u6240\u6709\u9ad8\u8d28\u91cf\u7684\u56fd\u5916 CS \u8bfe\u7a0b\u5206\u95e8\u522b\u7c7b\u8fdb\u884c\u6c47\u603b\uff0c\u5e76\u7ed9\u51fa\u76f8\u5173\u7684\u81ea\u5b66\u5efa\u8bae\uff0c\u5927\u90e8\u5206\u8bfe\u7a0b\u90fd\u4f1a\u6709\u4e00\u4e2a\u72ec\u7acb\u7684\u4ed3\u5e93\u7ef4\u62a4\u76f8\u5173\u7684\u8d44\u6e90\u4ee5\u53ca\u6211\u7684\u4f5c\u4e1a\u5b9e\u73b0\u3002 \u73af\u5883\u914d\u7f6e\uff1aLinux \u57fa\u7840\uff0c bash \uff0c\u73af\u5883\u53d8\u91cf\uff0cAnaconda ... \u7ecf\u5178\u4e66\u7c4d\u63a8\u8350\uff1a\u770b\u8fc7 CSAPP \u8fd9\u672c\u4e66\u7684\u540c\u5b66\u4e00\u5b9a\u611f\u53f9\u597d\u4e66\u7684\u91cd\u8981\uff0c\u6211\u5c06\u5217\u4e3e\u63a8\u8350\u81ea\u5df1\u770b\u8fc7\u7684\u8ba1\u7b97\u673a\u9886\u57df\u7684\u5fc5\u770b\u597d\u4e66\u4e0e\u8d44\u6e90\u94fe\u63a5\u3002","title":"\u524d\u8a00"},{"location":"#cs61a","text":"\u5927\u4e00\u5165\u5b66\u65f6\u6211\u662f\u4e00\u4e2a\u5bf9\u8ba1\u7b97\u673a\u4e00\u65e0\u6240\u77e5\u7684\u5c0f\u767d\uff0c\u88c5\u4e86\u51e0\u5341\u4e2a G \u7684 Visual Studio \u5929\u5929\u548c OJ \u4f60\u6b7b\u6211\u6d3b\u3002\u51ed\u7740\u9ad8\u4e2d\u7684\u6570\u5b66\u5e95\u5b50\u6211\u6570\u5b66\u8bfe\u5b66\u5f97\u8fd8\u4e0d\u9519\uff0c\u4f46\u5728\u4e13\u4e1a\u8bfe\u4e0a\u5bf9\u7ade\u8d5b\u5927\u4f6c\u53ea\u6709\u4ef0\u671b\u3002\u63d0\u5230\u7f16\u7a0b\u6211\u53ea\u4f1a\u6253\u5f00\u90a3\u7b28\u91cd\u7684 IDE\uff0c\u65b0\u5efa\u4e00\u4e2a\u6211\u4e5f\u4e0d\u77e5\u9053\u5177\u4f53\u662f\u5e72\u5565\u7684\u547d\u4ee4\u884c\u9879\u76ee\uff0c\u7136\u540e\u5c31\u662f cin , cout , for \u5faa\u73af\uff0c\u7136\u540e CE, RE, WA \u5faa\u73af\u3002\u5f53\u65f6\u7684\u6211\u5c31\u5904\u5728\u4e00\u79cd\u62fc\u547d\u60f3\u5b66\u597d\u4f46\u4e0d\u77e5\u9053\u600e\u4e48\u5b66\uff0c\u8bfe\u4e0a\u8ba4\u771f\u542c\u8bb2\u4f46\u9898\u8fd8\u4e0d\u4f1a\u505a\uff0c\u8bfe\u540e\u505a\u4f5c\u4e1a\u5b8c\u5168\u662f\u7528\u65f6\u95f4\u548c\u5b83\u786c\u8017\u7684\u75db\u82e6\u72b6\u6001\u3002\u6211\u81f3\u4eca\u7535\u8111\u91cc\u8fd8\u5b58\u7740\u81ea\u5df1\u5927\u4e00\u4e0a\u5b66\u671f\u8ba1\u7b97\u6982\u8bba\u5927\u4f5c\u4e1a\u7684\u6e90\u4ee3\u7801 \u2014\u2014 \u4e00\u4e2a 1200 \u884c\u7684 C++ \u6587\u4ef6\uff0c\u6ca1\u6709\u5934\u6587\u4ef6\u3001\u6ca1\u6709\u7c7b\u3001\u6ca1\u6709\u5c01\u88c5\u3001\u6ca1\u6709 unit test\u3001\u6ca1\u6709 Makefile\u3001\u6ca1\u6709 Git\uff0c\u552f\u4e00\u7684\u4f18\u70b9\u662f\u5b83\u786e\u5b9e\u80fd\u8dd1\uff0c\u7f3a\u70b9\u662f\u201c\u80fd\u8dd1\u201d\u7684\u8865\u96c6\u3002\u6211\u4e00\u5ea6\u6000\u7591\u6211\u662f\u4e0d\u662f\u4e0d\u9002\u5408\u5b66\u8ba1\u7b97\u673a\uff0c\u56e0\u4e3a\u7ae5\u5e74\u5bf9\u4e8e\u6781\u5ba2\u7684\u6240\u6709\u60f3\u8c61\uff0c\u5df2\u7ecf\u88ab\u6211\u7b2c\u4e00\u4e2a\u5b66\u671f\u7684\u4f53\u9a8c\u5f7b\u5e95\u7c89\u788e\u4e86\u3002 \u8fd9\u4e00\u5207\u7684\u8f6c\u673a\u53d1\u751f\u5728\u6211\u5927\u4e00\u7684\u5bd2\u5047\uff0c\u6211\u5fc3\u8840\u6765\u6f6e\u60f3\u5b66\u4e60 Python\u3002\u65e0\u610f\u95f4\u770b\u5230\u77e5\u4e4e\u6709\u4eba\u63a8\u8350\u4e86 CS61A \u8fd9\u95e8\u8bfe\uff0c\u8bf4\u662f UC Berkeley \u7684\u5927\u4e00\u5165\u95e8\u8bfe\u7a0b\uff0c\u8bb2\u7684\u5c31\u662f Python\u3002\u6211\u6c38\u8fdc\u4e0d\u4f1a\u5fd8\u8bb0\u90a3\u4e00\u5929\uff0c\u6253\u5f00 CS61A \u8bfe\u7a0b\u7f51\u7ad9\u7684\u90a3\u4e2a\u77ac\u95f4\uff0c\u5c31\u50cf\u54e5\u4f26\u5e03\u53d1\u73b0\u4e86\u65b0\u5927\u9646\u4e00\u6837\uff0c\u6211\u5f00\u542f\u4e86\u65b0\u4e16\u754c\u7684\u5927\u95e8\u3002 \u6211\u4e00\u53e3\u6c14 3 \u4e2a\u661f\u671f\u4e0a\u5b8c\u4e86\u8fd9\u95e8\u8bfe\uff0c\u5b83\u8ba9\u6211\u7b2c\u4e00\u6b21\u611f\u89c9\u5230\u539f\u6765 CS \u53ef\u4ee5\u5b66\u5f97\u5982\u6b64\u5145\u5b9e\u800c\u6709\u8da3\uff0c\u539f\u6765\u8fd9\u4e16\u4e0a\u7adf\u6709\u5982\u6b64\u7cbe\u534e\u7684\u8bfe\u7a0b\u3002 \u4e3a\u907f\u514d\u6709\u5d07\u6d0b\u5a9a\u5916\u4e4b\u5acc\uff0c\u6211\u5355\u7eaf\u4ece\u4e00\u4e2a\u5b66\u751f\u7684\u89c6\u89d2\u6765\u8bb2\u8bb2\u81ea\u5b66 CS61A \u7684\u4f53\u9a8c\uff1a \u72ec\u7acb\u642d\u5efa\u7684\u8bfe\u7a0b\u7f51\u7ad9: \u4e00\u4e2a\u7f51\u7ad9\u5c06\u6240\u6709\u8bfe\u7a0b\u8d44\u6e90\u6574\u5408\u4e00\u4f53\uff0c\u6761\u7406\u5206\u660e\u7684\u8bfe\u7a0b schedule\u3001\u6240\u6709 slides, hw, discussion \u7684\u6587\u4ef6\u94fe\u63a5\u3001\u8be6\u7ec6\u660e\u786e\u7684\u8bfe\u7a0b\u7ed9\u5206\u8bf4\u660e\u3001\u5386\u5e74\u7684\u8003\u8bd5\u9898\u4e0e\u7b54\u6848\u3002\u8fd9\u6837\u4e00\u4e2a\u7f51\u7ad9\u629b\u5f00\u7f8e\u89c2\u7a0b\u5ea6\u4e0d\u8c08\uff0c\u65e2\u65b9\u4fbf\u5b66\u751f\uff0c\u4e5f\u8ba9\u8d44\u6e90\u516c\u6b63\u900f\u660e\u3002 \u8bfe\u7a0b\u6559\u6388\u4eb2\u81ea\u7f16\u5199\u7684\u6559\u6750\uff1aCS61A \u8fd9\u95e8\u8bfe\u7684\u5f00\u8bfe\u8001\u5e08\u5c06MIT\u7684\u7ecf\u5178\u6559\u6750 Structure and Interpretation of Computer Programs (SICP) \u7528Python\u8fd9\u95e8\u8bed\u8a00\u8fdb\u884c\u6539\u7f16\uff08\u539f\u6559\u6750\u57fa\u4e8e Scheme \u8bed\u8a00\uff09\uff0c\u4fdd\u8bc1\u4e86\u8bfe\u5802\u5185\u5bb9\u4e0e\u6559\u6750\u5185\u5bb9\u7684\u4e00\u81f4\u6027\uff0c\u540c\u65f6\u8865\u5145\u4e86\u66f4\u591a\u7ec6\u8282\uff0c\u53ef\u4ee5\u8bf4\u8bda\u610f\u6ee1\u6ee1\u3002\u800c\u4e14\u5168\u4e66\u5f00\u6e90\uff0c\u53ef\u4ee5\u76f4\u63a5\u7ebf\u4e0a\u9605\u8bfb\u3002 \u4e30\u5bcc\u5230\u8ba9\u4eba\u773c\u82b1\u7f2d\u4e71\u7684\u8bfe\u7a0b\u4f5c\u4e1a\uff1a14 \u4e2a lab \u5de9\u56fa\u968f\u5802\u77e5\u8bc6\u70b9\uff0c10 \u4e2a homework\uff0c\u8fd8\u6709 4 \u4e2a\u4ee3\u7801\u91cf\u5747\u4e0a\u5343\u884c\u7684 project\u3002\u4e0e\u5927\u5bb6\u719f\u6089\u7684 OJ \u548c Word \u6587\u6863\u5f0f\u7684\u4f5c\u4e1a\u4e0d\u540c\uff0c\u6240\u6709\u4f5c\u4e1a\u5747\u6709\u5b8c\u5584\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u4fdd\u59c6\u7ea7\u7684\u4f5c\u4e1a\u8bf4\u660e\u3002\u6bcf\u4e2a Project \u90fd\u6709\u8be6\u5c3d\u7684 handout \u6587\u6863\u3001\u5168\u81ea\u52a8\u7684\u8bc4\u5206\u811a\u672c\u3002CS61A \u751a\u81f3\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a \u81ea\u52a8\u5316\u7684\u4f5c\u4e1a\u63d0\u4ea4\u8bc4\u5206\u7cfb\u7edf \uff08\u636e\u8bf4\u8fd8\u53d1\u4e86\u8bba\u6587\uff09\u3002\u5f53\u7136\uff0c\u6709\u4eba\u4f1a\u8bf4\u201c\u4e00\u4e2a project \u51e0\u5343\u884c\u4ee3\u7801\u5927\u90e8\u5206\u90fd\u662f\u52a9\u6559\u5e2e\u4f60\u5199\u597d\u7684\uff0c\u4f60\u8fd8\u80fd\u5b66\u5230\u5565\uff1f\u201d\u3002\u6b64\u8a00\u5dee\u77e3\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u521a\u521a\u63a5\u89e6\u8ba1\u7b97\u673a\uff0c\u8fde\u5b89\u88c5 Python \u90fd\u78d5\u78d5\u7eca\u7eca\u7684\u5c0f\u767d\u6765\u8bf4\uff0c\u8fd9\u6837\u5b8c\u5584\u7684\u4ee3\u7801\u6846\u67b6\u65e2\u53ef\u4ee5\u8ba9\u4f60\u4e13\u6ce8\u4e8e\u5de9\u56fa\u8bfe\u5802\u4e0a\u5b66\u4e60\u5230\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\uff0c\u53c8\u80fd\u6709\u201c\u6211\u624d\u5b66\u4e86\u4e00\u4e2a\u6708\u5c31\u80fd\u505a\u4e00\u4e2a\u5c0f\u6e38\u620f\u4e86\uff01\u201d\u7684\u6210\u5c31\u611f\uff0c\u8fd8\u80fd\u6709\u673a\u4f1a\u9605\u8bfb\u5b66\u4e60\u522b\u4eba\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\uff0c\u4ece\u800c\u4e3a\u81ea\u5df1\u6240\u7528\u3002\u6211\u89c9\u5f97\u5728\u4f4e\u5e74\u7ea7\uff0c\u8fd9\u79cd\u4ee3\u7801\u6846\u67b6\u53ef\u4ee5\u8bf4\u767e\u5229\u800c\u65e0\u4e00\u5bb3\u3002\u552f\u4e00\u7684\u5bb3\u4e5f\u8bb8\u662f\u82e6\u4e86\u8001\u5e08\u548c\u52a9\u6559\uff0c\u56e0\u4e3a\u5f00\u53d1\u8fd9\u6837\u7684\u4f5c\u4e1a\u53ef\u60f3\u800c\u77e5\u9700\u8981\u76f8\u5f53\u7684\u65f6\u95f4\u6295\u5165\u3002 \u6bcf\u5468 Discussion \u8ba8\u8bba\u8bfe\uff0c\u52a9\u6559\u4f1a\u8bb2\u89e3\u77e5\u8bc6\u96be\u70b9\u548c\u8003\u8bd5\u4f8b\u9898\uff1a\u7c7b\u4f3c\u4e8e\u5317\u4eac\u5927\u5b66 ICS \u7684\u5c0f\u73ed\u7814\u8ba8\uff0c\u4f46\u4e60\u9898\u5168\u90e8\u7528 LaTeX \u64b0\u5199\uff0c\u76f8\u5f53\u89c4\u8303\u4e14\u4f1a\u660e\u786e\u7ed9\u51fa solution\u3002 \u8fd9\u6837\u7684\u8bfe\u7a0b\uff0c\u4f60\u5b8c\u5168\u4e0d\u9700\u8981\u4efb\u4f55\u8ba1\u7b97\u673a\u7684\u57fa\u7840\uff0c\u4f60\u53ea\u9700\u8981\u52aa\u529b\u3001\u8ba4\u771f\u3001\u82b1\u65f6\u95f4\u5c31\u591f\u4e86\u3002\u6b64\u524d\u90a3\u79cd\u6709\u52b2\u6ca1\u5904\u4f7f\u7684\u611f\u89c9\uff0c\u90a3\u79cd\u4ed8\u51fa\u518d\u591a\u65f6\u95f4\u5374\u5f97\u4e0d\u5230\u56de\u62a5\u7684\u611f\u89c9\uff0c\u4ece\u6b64\u70df\u6d88\u4e91\u6563\u3002\u8fd9\u592a\u9002\u5408\u6211\u4e86\uff0c\u6211\u4ece\u6b64\u7231\u4e0a\u4e86\u81ea\u5b66\u3002 \u8bd5\u60f3\u5982\u679c\u6709\u4eba\u80fd\u628a\u8270\u6df1\u7684\u77e5\u8bc6\u70b9\u56bc\u788e\u56bc\u70c2\uff0c\u7528\u751f\u52a8\u76f4\u767d\u7684\u65b9\u5f0f\u5448\u73b0\u7ed9\u4f60\uff0c\u8fd8\u6709\u90a3\u4e48\u591a\u542c\u8d77\u6765\u5c31\u5f88 fancy\uff0c\u79cd\u7c7b\u7e41\u591a\u7684 project \u6765\u5de9\u56fa\u4f60\u7684\u7406\u8bba\u77e5\u8bc6\uff0c\u4f60\u4f1a\u89c9\u5f97\u4ed6\u4eec\u771f\u7684\u662f\u5728\u503e\u5c3d\u5168\u529b\u60f3\u65b9\u8bbe\u6cd5\u5730\u8ba9\u4f60\u5b8c\u5168\u638c\u63e1\u8fd9\u95e8\u8bfe\uff0c\u4f60\u4f1a\u89c9\u5f97\u4e0d\u5b66\u597d\u5b83\u7b80\u76f4\u662f\u5bf9\u8fd9\u4e9b\u8bfe\u7a0b\u5efa\u8bbe\u8005\u7684\u4fae\u8fb1\u3002 \u5982\u679c\u4f60\u89c9\u5f97\u6211\u5728\u5938\u5927\u5176\u8bcd\uff0c\u90a3\u4e48\u4e0d\u59a8\u4ece CS61A \u5f00\u59cb\uff0c\u56e0\u4e3a\u5b83\u662f\u6211\u7684\u68a6\u5f00\u59cb\u7684\u5730\u65b9\u3002","title":"\u68a6\u5f00\u59cb\u7684\u5730\u65b9 \u2014\u2014 CS61A"},{"location":"#_2","text":"\u5728\u62112020\u5e74\u79cb\u5b63\u5b66\u671f\u62c5\u4efb\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\uff08CSAPP\uff09\u8fd9\u95e8\u8bfe\u7684\u52a9\u6559\u65f6\uff0c\u6211\u5df2\u7ecf\u81ea\u5b66\u4e00\u5e74\u591a\u4e86\u3002\u8fd9\u4e00\u5e74\u591a\u6765\u6211\u65e0\u6bd4\u4eab\u53d7\u8fd9\u79cd\u81ea\u5b66\u6a21\u5f0f\uff0c\u4e3a\u4e86\u5206\u4eab\u8fd9\u79cd\u5feb\u4e50\uff0c\u6211\u4e3a\u81ea\u5df1\u7684\u5c0f\u73ed\u540c\u5b66\u505a\u8fc7\u4e00\u4e2a CS\u81ea\u5b66\u8d44\u6599\u6574\u7406\u4ed3\u5e93 \u3002\u5f53\u65f6\u7eaf\u7cb9\u662f\u5fc3\u8840\u6765\u6f6e\uff0c\u56e0\u4e3a\u6211\u4e5f\u4e0d\u6562\u516c\u7136\u9f13\u52b1\u5927\u5bb6\u7fd8\u8bfe\u81ea\u5b66\u3002 \u4f46\u968f\u7740\u53c8\u4e00\u5e74\u65f6\u95f4\u7684\u7ef4\u62a4\uff0c\u8fd9\u4e2a\u4ed3\u5e93\u7684\u5185\u5bb9\u5df2\u7ecf\u76f8\u5f53\u4e30\u5bcc\uff0c\u57fa\u672c\u8986\u76d6\u4e86\u8ba1\u79d1\u3001\u667a\u80fd\u7cfb\u3001\u8f6f\u5de5\u7cfb\u7684\u7edd\u5927\u591a\u6570\u8bfe\u7a0b\uff0c\u6211\u4e5f\u4e3a\u6bcf\u4e2a\u8bfe\u7a0b\u90fd\u5efa\u4e86\u5404\u81ea\u7684 GitHub \u4ed3\u5e93\uff0c\u6c47\u603b\u6211\u7528\u5230\u7684\u81ea\u5b66\u8d44\u6599\u4ee5\u53ca\u4f5c\u4e1a\u5b9e\u73b0\u3002 \u76f4\u5230\u5927\u56db\u5f00\u59cb\u51d1\u5b66\u5206\u6bd5\u4e1a\u7684\u65f6\u5019\uff0c\u6211\u6253\u5f00\u81ea\u5df1\u7684\u57f9\u517b\u65b9\u6848\uff0c\u6211\u53d1\u73b0\u5b83\u5df2\u7ecf\u662f\u6211\u8fd9\u4e2a\u81ea\u5b66\u4ed3\u5e93\u7684\u5b50\u96c6\u4e86\uff0c\u800c\u8fd9\u8ddd\u79bb\u6211\u5f00\u59cb\u81ea\u5b66\u4e5f\u624d\u4e24\u5e74\u534a\u800c\u5df2\u3002\u4e8e\u662f\uff0c\u4e00\u4e2a\u5927\u80c6\u7684\u60f3\u6cd5\u5728\u6211\u8111\u6d77\u4e2d\u6d6e\u73b0\uff1a\u4e5f\u8bb8\uff0c\u6211\u53ef\u4ee5\u6253\u9020\u4e00\u4e2a\u81ea\u5b66\u5f0f\u7684\u57f9\u517b\u65b9\u6848\uff0c\u628a\u6211\u8fd9\u4e09\u5e74\u81ea\u5b66\u7ecf\u5386\u4e2d\u9047\u5230\u7684\u5751\u3001\u8d70\u8fc7\u7684\u8def\u8bb0\u5f55\u4e0b\u6765\uff0c\u4ee5\u671f\u80fd\u4e3a\u540e\u6765\u7684\u5b66\u5f1f\u5b66\u59b9\u4eec\u8d21\u732e\u81ea\u5df1\u7684\u4e00\u4efd\u5fae\u8584\u4e4b\u529b\u3002 \u5982\u679c\u5927\u5bb6\u53ef\u4ee5\u5728\u4e09\u5e74\u4e0d\u5230\u7684\u65f6\u95f4\u91cc\u5c31\u80fd\u5efa\u7acb\u8d77\u6574\u5ea7CS\u7684\u57fa\u7840\u5927\u53a6\uff0c\u80fd\u6709\u76f8\u5bf9\u624e\u5b9e\u7684\u6570\u5b66\u529f\u5e95\u548c\u4ee3\u7801\u80fd\u529b\uff0c\u7ecf\u5386\u8fc7\u6570\u5341\u4e2a\u5343\u884c\u4ee3\u7801\u91cf\u7684 Project \u7684\u6d17\u793c\uff0c\u638c\u63e1\u81f3\u5c11 C/C++/Java/JS/Python/Go/Rust \u7b49\u4e3b\u6d41\u8bed\u8a00\uff0c\u5bf9\u7b97\u6cd5\u3001\u7535\u8def\u3001\u4f53\u7cfb\u3001\u7f51\u7edc\u3001\u64cd\u7edf\u3001\u7f16\u8bd1\u3001\u4eba\u5de5\u667a\u80fd\u3001\u673a\u5668\u5b66\u4e60\u3001\u8ba1\u7b97\u673a\u89c6\u89c9\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u3001\u5f3a\u5316\u5b66\u4e60\u3001\u5bc6\u7801\u5b66\u3001\u4fe1\u606f\u8bba\u3001\u535a\u5f08\u8bba\u3001\u6570\u503c\u5206\u6790\u3001\u7edf\u8ba1\u5b66\u3001\u5206\u5e03\u5f0f\u3001\u6570\u636e\u5e93\u3001\u56fe\u5f62\u5b66\u3001Web\u5f00\u53d1\u3001\u4e91\u670d\u52a1\u3001\u8d85\u7b97\u7b49\u7b49\u65b9\u9762\u5747\u6709\u6d89\u730e\u3002\u6211\u60f3\uff0c\u4f60\u5c06\u6709\u8db3\u591f\u7684\u5e95\u6c14\u548c\u81ea\u4fe1\u9009\u62e9\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\uff0c\u65e0\u8bba\u662f\u5c31\u4e1a\u8fd8\u662f\u79d1\u7814\uff0c\u4f60\u90fd\u5c06\u6709\u76f8\u5f53\u7684\u7ade\u4e89\u529b\u3002 \u56e0\u4e3a\u6211\u575a\u4fe1\uff0c\u65e2\u7136\u4f60\u80fd\u575a\u6301\u542c\u6211 BB \u5230\u8fd9\u91cc\uff0c\u4f60\u4e00\u5b9a\u4e0d\u7f3a\u5b66\u597d CS \u7684\u80fd\u529b\uff0c\u4f60\u53ea\u662f\u6ca1\u6709\u4e00\u4e2a\u597d\u7684\u8001\u5e08\uff0c\u7ed9\u4f60\u8bb2\u4e00\u95e8\u597d\u7684\u8bfe\u7a0b\u3002\u800c\u6211\uff0c\u5c06\u529b\u56fe\u6839\u636e\u6211\u4e09\u5e74\u7684\u4f53\u9a8c\uff0c\u4e3a\u4f60\u6311\u9009\u8fd9\u6837\u7684\u8bfe\u7a0b\u3002","title":"\u4e3a\u4ec0\u4e48\u5199\u8fd9\u672c\u4e66"},{"location":"#_3","text":"\u5bf9\u6211\u6765\u8bf4\uff0c\u81ea\u5b66\u6700\u5927\u7684\u597d\u5904\u5c31\u5728\u4e8e\u53ef\u4ee5\u5b8c\u5168\u6839\u636e\u81ea\u5df1\u7684\u8fdb\u5ea6\u6765\u8c03\u6574\u5b66\u4e60\u901f\u5ea6\u3002\u5bf9\u4e8e\u4e00\u4e9b\u7591\u96be\u77e5\u8bc6\u70b9\uff0c\u6211\u53ef\u4ee5\u53cd\u590d\u56de\u770b\u89c6\u9891\uff0c\u5728\u7f51\u4e0a\u8c37\u6b4c\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u4e0a StackOverflow \u63d0\u95ee\u9898\uff0c\u76f4\u5230\u5b8c\u5168\u5c06\u5b83\u5f04\u660e\u767d\u3002\u800c\u5bf9\u4e8e\u81ea\u5df1\u638c\u63e1\u5f97\u76f8\u5bf9\u8f83\u5feb\u7684\u5185\u5bb9\uff0c\u5219\u53ef\u4ee5\u4e24\u500d\u901f\u751a\u81f3\u4e09\u500d\u901f\u7565\u8fc7\u3002 \u81ea\u5b66\u7684\u53e6\u4e00\u5927\u597d\u5904\u5c31\u662f\u535a\u91c7\u4f17\u957f\u3002\u8ba1\u7b97\u673a\u7cfb\u7684\u51e0\u5927\u6838\u5fc3\u8bfe\u7a0b\uff1a\u4f53\u7cfb\u3001\u7f51\u7edc\u3001\u64cd\u7edf\u3001\u7f16\u8bd1\uff0c\u6bcf\u4e00\u95e8\u6211\u57fa\u672c\u90fd\u4e0a\u8fc7\u4e0d\u540c\u5927\u5b66\u7684\u8bfe\u7a0b\uff0c\u4e0d\u540c\u7684\u6559\u6750\u3001\u4e0d\u540c\u7684\u77e5\u8bc6\u70b9\u4fa7\u91cd\u3001\u4e0d\u540c\u7684 project \u5c06\u4f1a\u6781\u5927\u4e30\u5bcc\u4f60\u7684\u89c6\u91ce\uff0c\u4e5f\u4f1a\u8ba9\u4f60\u7406\u89e3\u9519\u8bef\u7684\u4e00\u4e9b\u5185\u5bb9\u5f97\u5230\u53ca\u65f6\u7ea0\u6b63\u3002 \u81ea\u5b66\u7684\u7b2c\u4e09\u4e2a\u597d\u5904\u662f\u65f6\u95f4\u81ea\u7531\uff0c\u5177\u4f53\u539f\u56e0\u7701\u7565\u3002","title":"\u81ea\u5b66\u7684\u597d\u5904"},{"location":"#_4","text":"\u5f53\u7136\uff0c\u4f5c\u4e3a CS \u81ea\u5b66\u4e3b\u4e49\u7684\u5fe0\u5b9e\u62e5\u8db8\uff0c\u6211\u4e0d\u5f97\u4e0d\u627f\u8ba4\u81ea\u5b66\u4e5f\u6709\u5b83\u7684\u574f\u5904\u3002 \u7b2c\u4e00\u5c31\u662f\u4ea4\u6d41\u6c9f\u901a\u7684\u4e0d\u4fbf\u3002\u6211\u5176\u5b9e\u662f\u4e00\u4e2a\u5f88\u70ed\u8877\u4e8e\u63d0\u95ee\u7684\u4eba\uff0c\u5bf9\u4e8e\u6240\u6709\u6ca1\u6709\u5f04\u660e\u767d\u7684\u70b9\uff0c\u6211\u90fd\u559c\u6b22\u7a77\u8ffd\u5230\u5e95\u3002\u4f46\u5f53\u4f60\u9762\u5bf9\u7740\u5c4f\u5e55\u542c\u5230\u8001\u5e08\u8bb2\u4e86\u4e00\u4e2a\u4f60\u6ca1\u660e\u767d\u7684\u77e5\u8bc6\u70b9\u7684\u65f6\u5019\uff0c\u4f60\u65e0\u6cd5\u987a\u7740\u7f51\u7ebf\u5230\u53e6\u4e00\u7aef\u5411\u8001\u5e08\u95ee\u4e2a\u660e\u767d\u3002\u6211\u52aa\u529b\u901a\u8fc7\u72ec\u7acb\u601d\u8003\u548c\u5584\u7528 Google \u6765\u7f13\u89e3\u8fd9\u4e00\u70b9\uff0c\u4f46\u662f\uff0c\u5982\u679c\u80fd\u6709\u51e0\u4e2a\u5fd7\u540c\u9053\u5408\u7684\u4f19\u4f34\u7ed3\u4f34\u81ea\u5b66\uff0c\u90a3\u5c06\u662f\u6781\u597d\u7684\u3002\u5173\u4e8e\u4ea4\u6d41\u7fa4\u7684\u5efa\u7acb\uff0c\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003\u4ed3\u5e93 README \u4e2d\u7684\u6559\u7a0b\u3002 \u7b2c\u4e8c\u5c31\u662f\u8fd9\u4e9b\u81ea\u5b66\u7684\u8bfe\u7a0b\u57fa\u672c\u90fd\u662f\u82f1\u6587\u7684\u3002\u4ece\u89c6\u9891\u5230slides\u5230\u4f5c\u4e1a\u5168\u662f\u82f1\u6587\uff0c\u6240\u4ee5\u6709\u4e00\u5b9a\u7684\u95e8\u69db\u3002\u4e0d\u8fc7\u6211\u89c9\u5f97\u8fd9\u4e2a\u6311\u6218\u5982\u679c\u4f60\u514b\u670d\u4e86\u7684\u8bdd\u5bf9\u4f60\u662f\u6781\u4e3a\u6709\u5229\u7684\u3002\u56e0\u4e3a\u5728\u5f53\u4e0b\uff0c\u867d\u7136\u6211\u5f88\u4e0d\u60c5\u613f\uff0c\u4f46\u4e5f\u4e0d\u5f97\u4e0d\u627f\u8ba4\uff0c\u5728\u8ba1\u7b97\u673a\u9886\u57df\uff0c\u5f88\u591a\u4f18\u8d28\u7684\u6587\u6863\u3001\u8bba\u575b\u3001\u7f51\u7ad9\u90fd\u662f\u5168\u82f1\u6587\u7684\u3002\u517b\u6210\u82f1\u6587\u9605\u8bfb\u7684\u4e60\u60ef\uff0c\u5728\u8d64\u65d7\u63d2\u904d\u4e16\u754c\u4e4b\u524d\uff0c\u8fd8\u662f\u6709\u4e00\u5b9a\u597d\u5904\u7684\uff08\u72d7\u5934\u4fdd\u547d\uff09\u3002 \u7b2c\u4e09\uff0c\u4e5f\u662f\u6211\u89c9\u5f97\u6700\u56f0\u96be\u7684\u4e00\u70b9\uff0c\u5c31\u662f\u81ea\u5f8b\u3002\u56e0\u4e3a\u6ca1\u6709 DDL \u6709\u65f6\u5019\u771f\u7684\u662f\u4e00\u4ef6\u53ef\u6015\u7684\u4e8b\u60c5\uff0c\u7279\u522b\u662f\u968f\u7740\u5b66\u4e60\u7684\u6df1\u5165\uff0c\u56fd\u5916\u7684\u5f88\u591a\u8bfe\u7a0b\u662f\u76f8\u5f53\u8650\u7684\u3002\u4f60\u5f97\u6709\u8db3\u591f\u7684\u9a71\u52a8\u529b\u5f3a\u8feb\u81ea\u5df1\u9759\u4e0b\u5fc3\u6765\uff0c\u9605\u8bfb\u51e0\u5341\u9875\u7684 Project Handout\uff0c\u7406\u89e3\u4e0a\u5343\u884c\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u5fcd\u53d7\u6570\u4e2a\u5c0f\u65f6\u7684 debug \u65f6\u5149\u3002\u800c\u8fd9\u4e00\u5207\uff0c\u6ca1\u6709\u5b66\u5206\uff0c\u6ca1\u6709\u7ee9\u70b9\uff0c\u6ca1\u6709\u8001\u5e08\uff0c\u6ca1\u6709\u540c\u5b66\uff0c\u53ea\u6709\u4e00\u4e2a\u4fe1\u5ff5 \u2014\u2014 \u4f60\u5728\u53d8\u5f3a\u3002","title":"\u81ea\u5b66\u7684\u574f\u5904"},{"location":"#_5","text":"\u6b63\u5982\u6211\u5728\u524d\u8a00\u91cc\u8bf4\u7684\uff0c\u4efb\u4f55\u6709\u5fd7\u4e8e\u81ea\u5b66\u8ba1\u7b97\u673a\u7684\u670b\u53cb\u90fd\u53ef\u4ee5\u53c2\u8003\u8fd9\u672c\u4e66\u3002\u5982\u679c\u4f60\u5df2\u7ecf\u6709\u4e86\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u57fa\u7840\uff0c\u53ea\u662f\u5bf9\u67d0\u4e2a\u7279\u5b9a\u7684\u9886\u57df\u611f\u5174\u8da3\uff0c\u53ef\u4ee5\u9009\u62e9\u6027\u5730\u6311\u9009\u4f60\u611f\u5174\u8da3\u7684\u5185\u5bb9\u8fdb\u884c\u5b66\u4e60\u3002\u5f53\u7136\uff0c\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u50cf\u6211\u5f53\u5e74\u4e00\u6837\u5bf9\u8ba1\u7b97\u673a\u4e00\u65e0\u6240\u77e5\u7684\u5c0f\u767d\uff0c\u521d\u5165\u5927\u5b66\u7684\u6821\u95e8\uff0c\u6211\u5e0c\u671b\u8fd9\u672c\u4e66\u80fd\u6210\u4e3a\u4f60\u7684\u653b\u7565\uff0c\u8ba9\u4f60\u82b1\u6700\u5c11\u7684\u65f6\u95f4\u638c\u63e1\u4f60\u6240\u9700\u8981\u7684\u77e5\u8bc6\u548c\u80fd\u529b\u3002\u67d0\u79cd\u7a0b\u5ea6\u4e0a\uff0c\u8fd9\u672c\u4e66\u66f4\u50cf\u662f\u4e00\u4e2a\u6839\u636e\u6211\u7684\u4f53\u9a8c\u6765\u6392\u5e8f\u7684\u8bfe\u7a0b\u641c\u7d22\u5f15\u64ce\uff0c\u5e2e\u52a9\u5927\u5bb6\u8db3\u4e0d\u51fa\u6237\uff0c\u4f53\u9a8c\u4e16\u754c\u9876\u7ea7\u540d\u6821\u7684\u8ba1\u7b97\u673a\u4f18\u8d28\u8bfe\u7a0b\u3002 \u5f53\u7136\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u8fd8\u672a\u6bd5\u4e1a\u7684\u672c\u79d1\u751f\uff0c\u6211\u6df1\u611f\u81ea\u5df1\u6ca1\u6709\u80fd\u529b\u4e5f\u6ca1\u6709\u6743\u5229\u53bb\u5ba3\u626c\u4e00\u79cd\u5b66\u4e60\u65b9\u5f0f\uff0c\u6211\u53ea\u662f\u5e0c\u671b\u8fd9\u4efd\u8d44\u6599\u80fd\u8ba9\u90a3\u4e9b\u540c\u6837\u6709\u81ea\u5b66\u4e4b\u5fc3\u548c\u6bc5\u529b\u670b\u53cb\u53ef\u4ee5\u5c11\u8d70\u4e9b\u5f2f\u8def\uff0c\u6536\u83b7\u66f4\u4e30\u5bcc\u3001\u66f4\u591a\u6837\u3001\u66f4\u6ee1\u8db3\u7684\u5b66\u4e60\u4f53\u9a8c\u3002","title":"\u8fd9\u672c\u4e66\u9002\u5408\u8c01"},{"location":"#_6","text":"\u5728\u8fd9\u91cc\uff0c\u6211\u6000\u7740\u5d07\u656c\u4e4b\u5fc3\u771f\u8bda\u5730\u611f\u8c22\u6240\u6709\u5c06\u8bfe\u7a0b\u8d44\u6e90\u65e0\u507f\u5f00\u6e90\u7684\u5404\u4f4d\u6559\u6388\u4eec\u3002\u8fd9\u4e9b\u8bfe\u7a0b\u503e\u6ce8\u4e86\u4ed6\u4eec\u6570\u5341\u5e74\u6559\u5b66\u751f\u6daf\u7684\u79ef\u6dc0\u548c\u5fc3\u8840\uff0c\u4ed6\u4eec\u5374\u9009\u62e9\u65e0\u79c1\u5730\u8ba9\u6240\u6709\u4eba\u4eab\u53d7\u5230\u5982\u6b64\u9ad8\u8d28\u91cf\u7684CS\u6559\u80b2\u3002\u6ca1\u6709\u4ed6\u4eec\uff0c\u6211\u7684\u5927\u5b66\u751f\u6d3b\u4e0d\u4f1a\u8fd9\u6837\u5145\u5b9e\u800c\u5feb\u4e50\u3002\u5f88\u591a\u6559\u6388\u5728\u6211\u7ed9\u4ed6\u4eec\u53d1\u4e86\u611f\u8c22\u90ae\u4ef6\u4e4b\u540e\uff0c\u751a\u81f3\u4f1a\u56de\u590d\u4e0a\u767e\u5b57\u7684\u957f\u6587\uff0c\u771f\u7684\u8ba9\u6211\u65e0\u6bd4\u611f\u52a8\u3002\u4ed6\u4eec\u4e5f\u65f6\u523b\u6fc0\u52b1\u7740\u6211\uff0c\u505a\u4e00\u4ef6\u4e8b\uff0c\u5c31\u5f97\u7528\u5fc3\u505a\u597d\uff0c\u65e0\u8bba\u662f\u79d1\u7814\uff0c\u8fd8\u662f\u4e3a\u4eba\u3002","title":"\u7279\u522b\u9e23\u8c22"},{"location":"#_7","text":"\u4e00\u4e2a\u4eba\u7684\u529b\u91cf\u7ec8\u7a76\u662f\u6709\u9650\u7684\uff0c\u8fd9\u672c\u4e66\u4e5f\u662f\u6211\u5728\u7e41\u91cd\u7684\u79d1\u7814\u4e4b\u4f59\u71ac\u591c\u62bd\u7a7a\u5199\u51fa\u6765\u7684\uff0c\u96be\u514d\u6709\u4e0d\u591f\u5b8c\u5584\u4e4b\u5904\u3002\u53e6\u5916\uff0c\u7531\u4e8e\u4e2a\u4eba\u505a\u7684\u662f\u7cfb\u7edf\u65b9\u5411\uff0c\u5f88\u591a\u8bfe\u7a0b\u4fa7\u91cd\u7cfb\u7edf\u9886\u57df\uff0c\u5bf9\u4e8e\u6570\u5b66\u3001\u7406\u8bba\u8ba1\u7b97\u673a\u3001\u9ad8\u7ea7\u7b97\u6cd5\u76f8\u5173\u7684\u5185\u5bb9\u5219\u76f8\u5bf9\u5c11\u4e9b\u3002\u5982\u679c\u6709\u5927\u4f6c\u60f3\u5728\u5176\u4ed6\u9886\u57df\u5206\u4eab\u81ea\u5df1\u7684\u81ea\u5b66\u7ecf\u5386\u4e0e\u8d44\u6e90\uff0c\u53ef\u4ee5\u76f4\u63a5\u5728\u9879\u76ee\u4e2d\u53d1\u8d77 Pull Request\uff0c\u4e5f\u6b22\u8fce\u548c\u6211\u90ae\u4ef6\u8054\u7cfb\uff08 zhongyinmin@pku.edu.cn \uff09\u3002","title":"\u4f60\u4e5f\u60f3\u52a0\u5165\u5230\u8d21\u732e\u8005\u7684\u884c\u5217"},{"location":"#_8","text":"\u65b9\u6cd5\u53c2\u89c1\u4ed3\u5e93\u7684 README.md \u3002","title":"\u5173\u4e8e\u4ea4\u6d41\u7fa4\u7684\u5efa\u7acb"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/","text":"\u4e00\u4e2a\u4ec5\u4f9b\u53c2\u8003\u7684 CS \u5b66\u4e60\u89c4\u5212 \u8ba1\u7b97\u673a\u9886\u57df\u65b9\u5411\u5e9e\u6742\uff0c\u77e5\u8bc6\u6d69\u5982\u70df\u6d77\uff0c\u6bcf\u4e2a\u7ec6\u5206\u9886\u57df\u5982\u679c\u6df1\u7a76\u4e0b\u53bb\u90fd\u53ef\u4ee5\u8bf4\u5b66\u65e0\u6b62\u5883\u3002\u56e0\u6b64\uff0c\u4e00\u4e2a\u6e05\u6670\u660e\u786e\u7684\u5b66\u4e60\u89c4\u5212\u662f\u975e\u5e38\u91cd\u8981\u7684\u3002\u8fd9\u4e00\u8282\u7684\u5185\u5bb9\u662f\u5bf9\u540e\u7eed\u6574\u672c\u4e66\u7684\u5185\u5bb9\u7684\u4e00\u4e2a\u6982\u89c8\uff0c\u4f60\u53ef\u4ee5\u5c06\u5176\u770b\u4f5c\u662f\u8fd9\u672c\u4e66\u7684\u76ee\u5f55\uff0c\u6309\u9700\u9009\u62e9\u81ea\u5df1\u611f\u5174\u8da3\u7684\u5185\u5bb9\u8fdb\u884c\u5b66\u4e60\u3002 \u4e0d\u8fc7\uff0c\u5728\u5f00\u59cb\u5b66\u4e60\u4e4b\u524d\uff0c\u5148\u5411\u5c0f\u767d\u4eec\u5f3a\u70c8\u63a8\u8350\u4e00\u4e2a\u79d1\u666e\u5411\u7cfb\u5217\u89c6\u9891 Crash Course: Computer Science \uff0c\u5728\u77ed\u77ed 8 \u4e2a\u5c0f\u65f6\u91cc\u975e\u5e38\u751f\u52a8\u4e14\u5168\u9762\u5730\u79d1\u666e\u4e86\u5173\u4e8e\u8ba1\u7b97\u673a\u79d1\u5b66\u7684\u65b9\u65b9\u9762\u9762\uff1a\u8ba1\u7b97\u673a\u7684\u5386\u53f2\u3001\u8ba1\u7b97\u673a\u662f\u5982\u4f55\u8fd0\u4f5c\u7684\u3001\u7ec4\u6210\u8ba1\u7b97\u673a\u7684\u5404\u4e2a\u91cd\u8981\u6a21\u5757\u3001\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\u7684\u91cd\u8981\u601d\u60f3\u7b49\u7b49\u7b49\u7b49\u3002\u6b63\u5982\u5b83\u7684\u53e3\u53f7\u6240\u8bf4\u7684 Computers are not magic! \uff0c\u5e0c\u671b\u770b\u5b8c\u8fd9\u4e2a\u89c6\u9891\u4e4b\u540e\uff0c\u5927\u5bb6\u80fd\u5bf9\u8ba1\u7b97\u673a\u79d1\u5b66\u6709\u4e2a\u5168\u8c8c\u6027\u5730\u611f\u77e5\uff0c\u4ece\u800c\u6000\u7740\u5174\u8da3\u53bb\u9762\u5bf9\u4e0b\u9762\u6d69\u5982\u70df\u6d77\u7684\u66f4\u4e3a\u7ec6\u81f4\u4e14\u6df1\u5165\u7684\u5b66\u4e60\u5185\u5bb9\u3002 \u5fc5\u5b66\u5de5\u5177 \u4fd7\u8bdd\u8bf4\uff1a\u78e8\u5200\u4e0d\u8bef\u780d\u67f4\u5de5\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u521a\u521a\u63a5\u89e6\u8ba1\u7b97\u673a\u768424k\u7eaf\u5c0f\u767d\uff0c\u5b66\u4f1a\u4e00\u4e9b\u5de5\u5177\u5c06\u4f1a\u8ba9\u4f60\u4e8b\u534a\u529f\u500d\u3002 \u5b66\u4f1a\u63d0\u95ee\uff1a\u4e5f\u8bb8\u4f60\u4f1a\u60ca\u8bb6\uff0c\u63d0\u95ee\u4e5f\u7b97\u8ba1\u7b97\u673a\u5fc5\u5907\u6280\u80fd\u5417\uff0c\u8fd8\u653e\u5728\u7b2c\u4e00\u6761\uff1f\u6211\u89c9\u5f97\u5728\u5f00\u6e90\u793e\u533a\u4e2d\uff0c\u5b66\u4f1a\u63d0\u95ee\u662f\u4e00\u9879\u975e\u5e38\u91cd\u8981\u7684\u80fd\u529b\uff0c\u5b83\u5305\u542b\u4e24\u65b9\u9762\u7684\u4e8b\u60c5\u3002\u5176\u4e00\u662f\u4f1a\u53d8\u76f8\u5730\u57f9\u517b\u4f60\u81ea\u4e3b\u89e3\u51b3\u95ee\u9898\u7684\u80fd\u529b\uff0c\u56e0\u4e3a\u4ece\u5f62\u6210\u95ee\u9898\u3001\u63cf\u8ff0\u95ee\u9898\u5e76\u53d1\u5e03\u3001\u4ed6\u4eba\u56de\u7b54\u3001\u6700\u540e\u518d\u5230\u7406\u89e3\u56de\u7b54\u8fd9\u4e2a\u5468\u671f\u662f\u975e\u5e38\u957f\u7684\uff0c\u5982\u679c\u9047\u5230\u4ec0\u4e48\u9e21\u6bdb\u849c\u76ae\u7684\u4e8b\u60c5\u90fd\u5e0c\u671b\u522b\u4eba\u6700\u597d\u8fdc\u7a0b\u684c\u9762\u624b\u628a\u624b\u5e2e\u4f60\u5b8c\u6210\uff0c\u90a3\u8ba1\u7b97\u673a\u7684\u4e16\u754c\u57fa\u672c\u4e0e\u4f60\u65e0\u7f18\u4e86\u3002\u5176\u4e8c\uff0c\u5982\u679c\u771f\u7684\u7ecf\u8fc7\u5c1d\u8bd5\u8fd8\u65e0\u6cd5\u89e3\u51b3\uff0c\u53ef\u4ee5\u501f\u52a9\u5f00\u6e90\u793e\u533a\u7684\u5e2e\u52a9\uff0c\u4f46\u8fd9\u65f6\u5019\u5982\u4f55\u901a\u8fc7\u7b80\u6d01\u7684\u6587\u5b57\u8ba9\u522b\u4eba\u77ac\u95f4\u7406\u89e3\u4f60\u7684\u5904\u5883\u4ee5\u53ca\u76ee\u7684\uff0c\u5c31\u663e\u5f97\u5c24\u4e3a\u91cd\u8981\u3002\u63a8\u8350\u9605\u8bfb \u63d0\u95ee\u7684\u667a\u6167 \u8fd9\u7bc7\u6587\u7ae0\uff0c\u8fd9\u4e0d\u4ec5\u80fd\u63d0\u9ad8\u4f60\u89e3\u51b3\u95ee\u9898\u7684\u6982\u7387\u548c\u6548\u7387\uff0c\u4e5f\u80fd\u8ba9\u5f00\u6e90\u793e\u533a\u91cc\u65e0\u507f\u63d0\u4f9b\u89e3\u7b54\u7684\u4eba\u4eec\u62e5\u6709\u4e00\u4e2a\u597d\u5fc3\u60c5\u3002 MIT-Missing-Semester \u8fd9\u95e8\u8bfe\u8986\u76d6\u4e86\u8fd9\u4e9b\u5de5\u5177\u4e2d\u7edd\u5927\u90e8\u5206\uff0c\u800c\u4e14\u6709\u76f8\u5f53\u8be6\u7ec6\u7684\u4f7f\u7528\u6307\u5bfc\uff0c\u5f3a\u70c8\u5efa\u8bae\u5c0f\u767d\u5b66\u4e60\u3002 \u7ffb\u5899 \uff1a\u7531\u4e8e\u4e00\u4e9b\u4f17\u6240\u5468\u77e5\u7684\u539f\u56e0\uff0c\u8c37\u6b4c\u3001GitHub \u7b49\u7f51\u7ad9\u5728\u5927\u9646\u65e0\u6cd5\u8bbf\u95ee\u3002\u7136\u800c\u5f88\u591a\u65f6\u5019\uff0c\u8c37\u6b4c\u548c StackOverflow \u53ef\u4ee5\u89e3\u51b3\u4f60\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684 99% \u7684\u95ee\u9898\u3002\u56e0\u6b64\uff0c\u5b66\u4f1a\u7ffb\u5899\u51e0\u4e4e\u662f\u4e00\u4e2a\u5185\u5730 CSer \u7684\u5fc5\u5907\u6280\u80fd\u3002\uff08\u8003\u8651\u5230\u6cd5\u5f8b\u95ee\u9898\uff0c\u8fd9\u4e2a\u6587\u6863\u63d0\u4f9b\u7684\u7ffb\u5899\u65b9\u5f0f\u4ec5\u5bf9\u62e5\u6709\u5317\u5927\u90ae\u7bb1\u7684\u7528\u6237\u9002\u7528\uff09\u3002 \u547d\u4ee4\u884c\uff1a\u719f\u7ec3\u4f7f\u7528\u547d\u4ee4\u884c\u662f\u4e00\u79cd\u5e38\u5e38\u88ab\u5ffd\u89c6\uff0c\u6216\u88ab\u8ba4\u4e3a\u96be\u4ee5\u638c\u63e1\u7684\u6280\u80fd\uff0c\u4f46\u5b9e\u9645\u4e0a\uff0c\u5b83\u4f1a\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u4f5c\u4e3a\u5de5\u7a0b\u5e08\u7684\u7075\u6d3b\u6027\u4ee5\u53ca\u751f\u4ea7\u529b\u3002 \u547d\u4ee4\u884c\u7684\u827a\u672f \u662f\u4e00\u4efd\u975e\u5e38\u7ecf\u5178\u7684\u6559\u7a0b\uff0c\u5b83\u6e90\u4e8e Quora \u7684\u4e00\u4e2a\u63d0\u95ee\uff0c\u4f46\u5728\u5404\u8def\u5927\u795e\u7684\u8d21\u732e\u52aa\u529b\u4e0b\u5df2\u7ecf\u6210\u4e3a\u4e86\u4e00\u4e2a GitHub \u5341\u4e07 stars \u7684\u9876\u6d41\u9879\u76ee\uff0c\u88ab\u7ffb\u8bd1\u6210\u4e86\u5341\u51e0\u79cd\u8bed\u8a00\u3002\u6559\u7a0b\u4e0d\u957f\uff0c\u975e\u5e38\u5efa\u8bae\u5927\u5bb6\u53cd\u590d\u901a\u8bfb\uff0c\u5728\u5b9e\u8df5\u4e2d\u5185\u5316\u5438\u6536\u3002\u540c\u65f6\uff0c\u638c\u63e1 Shell \u811a\u672c\u7f16\u7a0b\u4e5f\u662f\u4e00\u9879\u4e0d\u5bb9\u5ffd\u89c6\u7684\u6280\u672f\uff0c\u53ef\u4ee5\u53c2\u8003\u8fd9\u4e2a \u6559\u7a0b \u3002 IDE (Integrated Development Environment)\uff1a\u96c6\u6210\u5f00\u53d1\u73af\u5883\uff0c\u8bf4\u767d\u4e86\u5c31\u662f\u4f60\u5199\u4ee3\u7801\u7684\u5730\u65b9\u3002\u4f5c\u4e3a\u4e00\u4e2a\u7801\u519c\uff0cIDE \u7684\u91cd\u8981\u6027\u4e0d\u8a00\u800c\u55bb\uff0c\u4f46\u7531\u4e8e\u5f88\u591a IDE \u662f\u4e3a\u5927\u578b\u5de5\u7a0b\u9879\u76ee\u8bbe\u8ba1\u7684\uff0c\u4f53\u91cf\u8f83\u5927\uff0c\u529f\u80fd\u4e5f\u8fc7\u4e8e\u4e30\u5bcc\u3002\u5176\u5b9e\u5982\u4eca\u4e00\u4e9b\u8f7b\u4fbf\u7684\u6587\u672c\u7f16\u8f91\u5668\u914d\u5408\u4e30\u5bcc\u7684\u63d2\u4ef6\u751f\u6001\u57fa\u672c\u53ef\u4ee5\u6ee1\u8db3\u65e5\u5e38\u7684\u8f7b\u91cf\u7f16\u7a0b\u9700\u6c42\u3002\u4e2a\u4eba\u5e38\u7528\u7684\u7f16\u8f91\u5668\u662f VS Code \u548c Sublime\uff08\u524d\u8005\u7684\u63d2\u4ef6\u914d\u7f6e\u975e\u5e38\u7b80\u5355\uff0c\u540e\u8005\u7565\u663e\u590d\u6742\u4f46\u989c\u503c\u5f88\u9ad8\uff09\u3002\u5f53\u7136\u5bf9\u4e8e\u5927\u578b\u9879\u76ee\u6211\u8fd8\u662f\u4f1a\u91c7\u7528\u7565\u91cd\u578b\u7684 IDE\uff0c\u4f8b\u5982 Pycharm (Python)\uff0cIDEA (Java) \u7b49\u7b49\uff08\u514d\u8d23\u7533\u660e\uff1a\u6240\u6709\u7684 IDE \u90fd\u662f\u4e16\u754c\u4e0a\u6700\u597d\u7684 IDE\uff09\u3002 Vim \uff1a\u4e00\u6b3e\u547d\u4ee4\u884c\u7f16\u8f91\u5de5\u5177\u3002\u8fd9\u662f\u4e00\u4e2a\u5b66\u4e60\u66f2\u7ebf\u6709\u4e9b\u9661\u5ced\u7684\u7f16\u8f91\u5668\uff0c\u4e0d\u8fc7\u5b66\u4f1a\u5b83\u6211\u89c9\u5f97\u662f\u975e\u5e38\u6709\u5fc5\u8981\u7684\uff0c\u56e0\u4e3a\u5b83\u5c06\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u7684\u5f00\u53d1\u6548\u7387\u3002\u73b0\u5728\u7edd\u5927\u591a\u6570 IDE \u4e5f\u90fd\u652f\u6301 Vim \u63d2\u4ef6\uff0c\u8ba9\u4f60\u5728\u4eab\u53d7\u73b0\u4ee3\u5f00\u53d1\u73af\u5883\u7684\u540c\u65f6\u4fdd\u7559\u6781\u5ba2\u7684\u70ab\u9177\uff08yue\uff09\u3002 Git \uff1a\u4e00\u6b3e\u4ee3\u7801\u7248\u672c\u63a7\u5236\u5de5\u5177\u3002Git\u7684\u5b66\u4e60\u66f2\u7ebf\u53ef\u80fd\u66f4\u4e3a\u9661\u5ced\uff0c\u4f46\u51fa\u81ea Linux \u4e4b\u7236 Linus \u4e4b\u624b\u7684 Git \u7edd\u5bf9\u662f\u6bcf\u4e2a\u5b66 CS \u7684\u7ae5\u978b\u5fc5\u987b\u638c\u63e1\u7684\u795e\u5668\u4e4b\u4e00\u3002 GitHub \uff1a\u57fa\u4e8e Git \u7684\u4ee3\u7801\u6258\u7ba1\u5e73\u53f0\u3002\u5168\u4e16\u754c\u6700\u5927\u7684\u4ee3\u7801\u5f00\u6e90\u793e\u533a\uff0c\u5927\u4f6c\u96c6\u805a\u5730\u3002 GNU Make \uff1a\u4e00\u6b3e\u5de5\u7a0b\u6784\u5efa\u5de5\u5177\u3002\u5584\u7528 GNU Make \u4f1a\u8ba9\u4f60\u517b\u6210\u4ee3\u7801\u6a21\u5757\u5316\u7684\u4e60\u60ef\uff0c\u540c\u65f6\u4e5f\u80fd\u8ba9\u4f60\u719f\u6089\u4e00\u4e9b\u5927\u578b\u5de5\u7a0b\u7684\u7f16\u8bd1\u94fe\u63a5\u6d41\u7a0b\u3002 CMake \uff1a\u4e00\u6b3e\u529f\u80fd\u6bd4 GNU Make \u66f4\u4e3a\u5f3a\u5927\u7684\u6784\u5efa\u5de5\u5177\uff0c\u5efa\u8bae\u638c\u63e1 GNU Make \u4e4b\u540e\u518d\u52a0\u4ee5\u5b66\u4e60\u3002 LaTex \uff1a \u903c\u683c\u63d0\u5347 \u8bba\u6587\u6392\u7248\u5de5\u5177\u3002 Docker \uff1a\u4e00\u6b3e\u76f8\u8f83\u4e8e\u865a\u62df\u673a\u66f4\u8f7b\u91cf\u7ea7\u7684\u8f6f\u4ef6\u6253\u5305\u4e0e\u73af\u5883\u90e8\u7f72\u5de5\u5177\u3002 \u5b9e\u7528\u5de5\u5177\u7bb1 \uff1a\u9664\u4e86\u4e0a\u9762\u63d0\u5230\u7684\u8fd9\u4e9b\u5728\u5f00\u53d1\u4e2d\u4f7f\u7528\u9891\u7387\u6781\u9ad8\u7684\u5de5\u5177\u4e4b\u5916\uff0c\u6211\u8fd8\u6536\u96c6\u4e86\u5f88\u591a\u5b9e\u7528\u6709\u8da3\u7684\u514d\u8d39\u5de5\u5177\uff0c\u4f8b\u5982\u4e00\u4e9b\u4e0b\u8f7d\u5de5\u5177\u3001\u8bbe\u8ba1\u5de5\u5177\u3001\u5b66\u4e60\u7f51\u7ad9\u7b49\u7b49\u3002 Thesis \uff1a\u6bd5\u4e1a\u8bba\u6587 Word \u5199\u4f5c\u6559\u7a0b\u3002 \u597d\u4e66\u63a8\u8350 \u79c1\u4ee5\u4e3a\u4e00\u672c\u597d\u7684\u6559\u6750\u5e94\u5f53\u662f\u4ee5\u4eba\u4e3a\u672c\u7684\uff0c\u800c\u4e0d\u662f\u70ab\u6280\u5f0f\u7684\u7406\u8bba\u5806\u780c\u3002\u544a\u8bc9\u8bfb\u8005\u201c\u662f\u4ec0\u4e48\u201d\u56fa\u7136\u91cd\u8981\uff0c\u4f46\u66f4\u597d\u7684\u5e94\u5f53\u662f\u6559\u6750\u4f5c\u8005\u5c06\u5176\u5728\u8fd9\u4e2a\u9886\u57df\u6df1\u8015\u51e0\u5341\u5e74\u7684\u7ecf\u9a8c\u878d\u6c47\u8fdb\u4e66\u4e2d\uff0c\u5411\u8bfb\u8005\u5a13\u5a13\u9053\u6765\u201c\u4e3a\u4ec0\u4e48\u201d\u4ee5\u53ca\u672a\u6765\u5e94\u8be5\u201c\u600e\u4e48\u505a\u201d\u3002 \u94fe\u63a5\u6233\u8fd9\u91cc \u73af\u5883\u914d\u7f6e \u4f60\u4ee5\u4e3a\u7684\u5f00\u53d1 \u2014\u2014 \u5728 IDE \u91cc\u75af\u72c2\u7801\u4ee3\u7801\u6570\u5c0f\u65f6\u3002 \u5b9e\u9645\u4e0a\u7684\u5f00\u53d1 \u2014\u2014 \u914d\u73af\u5883\u914d\u51e0\u5929\u8fd8\u6ca1\u5f00\u59cb\u5199\u4ee3\u7801\u3002 PC \u7aef\u73af\u5883\u914d\u7f6e \u5982\u679c\u4f60\u662f Mac \u7528\u6237\uff0c\u90a3\u4e48\u4f60\u5f88\u5e78\u8fd0\uff0c\u8fd9\u4efd \u6307\u5357 \u5c06\u4f1a\u624b\u628a\u624b\u5730\u5e26\u4f60\u642d\u5efa\u8d77\u6574\u5957\u5f00\u53d1\u73af\u5883\u3002\u5982\u679c\u4f60\u662f Windows \u7528\u6237\uff0c\u53ef\u4ee5\u53c2\u8003\u8fd9\u4e2a\u76f8\u5bf9\u7b80\u7565\u7684 \u6559\u7a0b \u3002 \u53e6\u5916\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003\u4e00\u4efd\u7075\u611f\u6765\u81ea 6.NULL MIT-Missing-Semester \u7684 \u73af\u5883\u914d\u7f6e\u6307\u5357 \uff0c\u91cd\u70b9\u5728\u4e8e\u7ec8\u7aef\u7684\u7f8e\u5316\u914d\u7f6e\u3002\u6b64\u5916\u8fd8\u5305\u62ec\u5e38\u7528\u8f6f\u4ef6\u6e90\uff08\u5982 GitHub, Anaconda, PyPI \u7b49\uff09\u7684\u52a0\u901f\u4e0e\u66ff\u6362\u4ee5\u53ca\u4e00\u4e9b IDE \u7684\u914d\u7f6e\u4e0e\u6fc0\u6d3b\u6559\u7a0b\u3002 \u670d\u52a1\u5668\u7aef\u73af\u5883\u914d\u7f6e \u63a8\u8350\u4e00\u4e2a\u975e\u5e38\u4e0d\u9519\u7684 GitHub \u9879\u76ee DevOps-Guide \uff0c\u5176\u4e2d\u6db5\u76d6\u4e86\u975e\u5e38\u591a\u7684\u8fd0\u7ef4\u65b9\u9762\u7684\u57fa\u7840\u77e5\u8bc6\u548c\u6559\u7a0b\uff0c\u4f8b\u5982 Docker, Kubernetes, Linux, CI-CD, GitHub Actions \u7b49\u7b49\u3002 \u8bfe\u7a0b\u5730\u56fe \u6b63\u5982\u8fd9\u7ae0\u5f00\u5934\u63d0\u5230\u7684\uff0c\u8fd9\u4efd\u8bfe\u7a0b\u5730\u56fe\u4ec5\u4ec5\u662f\u4e00\u4e2a \u4ec5\u4f9b\u53c2\u8003 \u7684\u8bfe\u7a0b\u89c4\u5212\uff0c\u6211\u4f5c\u4e3a\u4e00\u4e2a\u4e34\u8fd1\u6bd5\u4e1a\u7684\u672c\u79d1\u751f\u3002\u6df1\u611f\u81ea\u5df1\u6ca1\u6709\u6743\u5229\u4e5f\u6ca1\u6709\u80fd\u529b\u5411\u522b\u4eba\u5ba3\u626c\u201c\u5e94\u8be5\u600e\u4e48\u5b66\u201d\u3002\u56e0\u6b64\u5982\u679c\u4f60\u89c9\u5f97\u4ee5\u4e0b\u7684\u8bfe\u7a0b\u5206\u7c7b\u4e0e\u9009\u62e9\u6709\u4e0d\u5408\u7406\u4e4b\u5904\uff0c\u6211\u5168\u76d8\u63a5\u53d7\uff0c\u5e76\u6df1\u611f\u62b1\u6b49\u3002\u4f60\u53ef\u4ee5\u5728\u4e0b\u4e00\u8282 \u5b9a\u5236\u5c5e\u4e8e\u4f60\u7684\u8bfe\u7a0b\u5730\u56fe \u4ee5\u4e0b\u8bfe\u7a0b\u7c7b\u522b\u4e2d\u9664\u4e86\u542b\u6709 \u57fa\u7840 \u548c \u5165\u95e8 \u5b57\u773c\u7684\u4ee5\u5916\uff0c\u5e76\u65e0\u660e\u786e\u7684\u5148\u540e\u6b21\u5e8f\uff0c\u5927\u5bb6\u53ea\u8981\u6ee1\u8db3\u67d0\u4e2a\u8bfe\u7a0b\u7684\u5148\u4fee\u8981\u6c42\uff0c\u5b8c\u5168\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u7684\u9700\u8981\u548c\u559c\u597d\u9009\u62e9\u60f3\u8981\u5b66\u4e60\u7684\u8bfe\u7a0b\u3002 \u53e6\u5916\u7531\u4e8e\u8d21\u732e\u8005\u7684\u4e0d\u65ad\u589e\u52a0\uff0c\u8fd9\u4efd\u8bfe\u7a0b\u5730\u56fe\u5df2\u7ecf\u4ece\u6700\u521d\u6211\u7684\u5b66\u4e60\u7ecf\u5386\uff0c\u53d1\u5c55\u6210\u4e3a\u5f88\u591a CS \u81ea\u5b66\u8005\u7684\u8d44\u6e90\u5408\u96c6\uff0c\u5176\u4e2d\u96be\u514d\u6709\u5185\u5bb9\u4ea4\u53c9\u751a\u81f3\u91cd\u590d\u7684\u3002\u4e4b\u6240\u4ee5\u90fd\u5217\u51fa\u6765\uff0c\u8fd8\u662f\u5e0c\u671b\u96c6\u767e\u5bb6\u4e4b\u957f\uff0c\u7ed9\u5927\u5bb6\u5c3d\u53ef\u80fd\u591a\u7684\u9009\u62e9\u4e0e\u53c2\u8003\u3002 \u6570\u5b66\u57fa\u7840 \u5fae\u79ef\u5206\u4e0e\u7ebf\u6027\u4ee3\u6570 \u4f5c\u4e3a\u5927\u4e00\u65b0\u751f\uff0c\u5b66\u597d\u5fae\u79ef\u5206\u7ebf\u4ee3\u662f\u548c\u5199\u4ee3\u7801\u81f3\u5c11\u540c\u7b49\u91cd\u8981\u7684\u4e8b\u60c5\uff0c\u76f8\u4fe1\u5df2\u7ecf\u6709\u65e0\u6570\u7684\u524d\u4eba\u7ecf\u9a8c\u63d0\u5230\u8fc7\u8fd9\u4e00\u70b9\uff0c\u4f46\u6211\u8fd8\u662f\u8981\u4e0d\u538c\u5176\u70e6\u5730\u518d\u5f3a\u8c03\u4e00\u904d\uff1a\u5b66\u597d\u5fae\u79ef\u5206\u7ebf\u4ee3\u771f\u7684\u5f88\u91cd\u8981\uff01\u4f60\u4e5f\u8bb8\u4f1a\u5410\u69fd\u8fd9\u4e9b\u4e1c\u897f\u5c82\u4e0d\u662f\u8003\u5b8c\u5c31\u5fd8\uff0c\u90a3\u6211\u89c9\u5f97\u4f60\u662f\u5e76\u6ca1\u6709\u628a\u63e1\u4f4f\u5b83\u4eec\u672c\u8d28\uff0c\u5bf9\u5b83\u4eec\u7684\u7406\u89e3\u8fd8\u6ca1\u6709\u8fbe\u5230\u523b\u9aa8\u94ed\u5fc3\u7684\u7a0b\u5ea6\u3002\u5982\u679c\u89c9\u5f97\u8001\u5e08\u8bfe\u4e0a\u8bb2\u7684\u5185\u5bb9\u6666\u6da9\u96be\u61c2\uff0c\u4e0d\u59a8\u53c2\u8003 MIT \u7684 Calculus Course \u548c 18.06: Linear Algebra \u7684\u8bfe\u7a0b notes\uff0c\u81f3\u5c11\u4e8e\u6211\u800c\u8a00\uff0c\u5b83\u5e2e\u52a9\u6211\u6df1\u523b\u7406\u89e3\u4e86\u5fae\u79ef\u5206\u548c\u7ebf\u6027\u4ee3\u6570\u7684\u8bb8\u591a\u672c\u8d28\u3002\u987a\u9053\u518d\u5b89\u5229\u4e00\u4e2a\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \uff0c\u4ed6\u7684\u9891\u9053\u6709\u5f88\u591a\u7528\u751f\u52a8\u5f62\u8c61\u7684\u52a8\u753b\u9610\u91ca\u6570\u5b66\u672c\u8d28\u5185\u6838\u7684\u89c6\u9891\uff0c\u517c\u5177\u6df1\u5ea6\u548c\u5e7f\u5ea6\uff0c\u8d28\u91cf\u975e\u5e38\u9ad8\u3002 \u4fe1\u606f\u8bba\u5165\u95e8 \u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u53ca\u65e9\u4e86\u89e3\u4e00\u4e9b\u4fe1\u606f\u8bba\u7684\u57fa\u7840\u77e5\u8bc6\uff0c\u6211\u89c9\u5f97\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002\u4f46\u5927\u591a\u4fe1\u606f\u8bba\u8bfe\u7a0b\u90fd\u9762\u5411\u9ad8\u5e74\u7ea7\u672c\u79d1\u751f\u751a\u81f3\u7814\u7a76\u751f\uff0c\u5bf9\u65b0\u624b\u6781\u4e0d\u53cb\u597d\u3002\u800c MIT \u7684 6.050J: Information theory and Entropy \u8fd9\u95e8\u8bfe\u6b63\u662f\u4e3a\u5927\u4e00\u65b0\u751f\u91cf\u8eab\u5b9a\u5236\u7684\uff0c\u51e0\u4e4e\u6ca1\u6709\u5148\u4fee\u8981\u6c42\uff0c\u6db5\u76d6\u4e86\u7f16\u7801\u3001\u538b\u7f29\u3001\u901a\u4fe1\u3001\u4fe1\u606f\u71b5\u7b49\u7b49\u5185\u5bb9\uff0c\u975e\u5e38\u6709\u8da3\u3002 \u6570\u5b66\u8fdb\u9636 \u79bb\u6563\u6570\u5b66\u4e0e\u6982\u7387\u8bba \u96c6\u5408\u8bba\u3001\u56fe\u8bba\u3001\u6982\u7387\u8bba\u7b49\u7b49\u662f\u7b97\u6cd5\u63a8\u5bfc\u4e0e\u8bc1\u660e\u7684\u91cd\u8981\u5de5\u5177\uff0c\u4e5f\u662f\u540e\u7eed\u9ad8\u9636\u6570\u5b66\u8bfe\u7a0b\u7684\u57fa\u7840\u3002\u4f46\u6211\u89c9\u5f97\u8fd9\u7c7b\u8bfe\u7a0b\u7684\u8bb2\u6388\u5f88\u5bb9\u6613\u843d\u5165\u7406\u8bba\u5316\u4e0e\u5f62\u5f0f\u5316\u7684\u7aa0\u81fc\uff0c\u8ba9\u8bfe\u5802\u6210\u4e3a\u5b9a\u7406\u7ed3\u8bba\u7684\u5806\u780c\uff0c\u800c\u65e0\u6cd5\u4f7f\u5b66\u751f\u6df1\u523b\u628a\u63e1\u7406\u8bba\u7684\u672c\u8d28\uff0c\u8fdb\u800c\u9020\u6210\u5b66\u4e86\u5c31\u80cc\uff0c\u8003\u4e86\u5c31\u5fd8\u7684\u602a\u5708\u3002\u5982\u679c\u80fd\u5728\u7406\u8bba\u6559\u5b66\u4e2d\u7a7f\u63d2\u7b97\u6cd5\u8fd0\u7528\u5b9e\u4f8b\uff0c\u5b66\u751f\u5728\u62d3\u5c55\u7b97\u6cd5\u77e5\u8bc6\u7684\u540c\u65f6\u4e5f\u80fd\u7aa5\u89c1\u7406\u8bba\u7684\u529b\u91cf\u548c\u9b45\u529b\u3002 UCB CS70 : discrete Math and probability theory \u548c UCB CS126 : Probability theory \u662f UC Berkeley \u7684\u6982\u7387\u8bba\u8bfe\u7a0b\uff0c\u524d\u8005\u8986\u76d6\u4e86\u79bb\u6563\u6570\u5b66\u548c\u6982\u7387\u8bba\u57fa\u7840\uff0c\u540e\u8005\u5219\u6d89\u53ca\u968f\u673a\u8fc7\u7a0b\u4ee5\u53ca\u6df1\u5165\u7684\u7406\u8bba\u5185\u5bb9\u3002\u4e24\u8005\u90fd\u975e\u5e38\u6ce8\u91cd\u7406\u8bba\u548c\u5b9e\u8df5\u7684\u7ed3\u5408\uff0c\u6709\u4e30\u5bcc\u7684\u7b97\u6cd5\u5b9e\u9645\u8fd0\u7528\u5b9e\u4f8b\uff0c\u540e\u8005\u8fd8\u6709\u5927\u91cf\u7684 Python \u7f16\u7a0b\u4f5c\u4e1a\u6765\u8ba9\u5b66\u751f\u8fd0\u7528\u6982\u7387\u8bba\u7684\u77e5\u8bc6\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u3002 \u6570\u503c\u5206\u6790 \u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u57f9\u517b\u8ba1\u7b97\u601d\u7ef4\u662f\u5f88\u91cd\u8981\u7684\uff0c\u5b9e\u9645\u95ee\u9898\u7684\u5efa\u6a21\u3001\u79bb\u6563\u5316\uff0c\u8ba1\u7b97\u673a\u7684\u6a21\u62df\u3001\u5206\u6790\uff0c\u662f\u4e00\u9879\u5f88\u91cd\u8981\u7684\u80fd\u529b\u3002\u800c\u8fd9\u4e24\u5e74\u5f00\u59cb\u98ce\u9761\u7684\uff0c\u7531 MIT \u6253\u9020\u7684 Julia \u7f16\u7a0b\u8bed\u8a00\u4ee5\u5176 C \u4e00\u6837\u7684\u901f\u5ea6\u548c Python \u4e00\u6837\u53cb\u597d\u7684\u8bed\u6cd5\u5728\u6570\u503c\u8ba1\u7b97\u9886\u57df\u6709\u4e00\u7edf\u5929\u4e0b\u4e4b\u52bf\uff0cMIT \u7684\u8bb8\u591a\u6570\u5b66\u8bfe\u7a0b\u4e5f\u5f00\u59cb\u7528 Julia \u4f5c\u4e3a\u6559\u5b66\u5de5\u5177\uff0c\u628a\u8270\u6df1\u7684\u6570\u5b66\u7406\u8bba\u7528\u76f4\u89c2\u6e05\u6670\u7684\u4ee3\u7801\u5c55\u793a\u51fa\u6765\u3002 ComputationalThinking \u662f MIT \u5f00\u8bbe\u7684\u4e00\u95e8\u8ba1\u7b97\u601d\u7ef4\u5165\u95e8\u8bfe\uff0c\u6240\u6709\u8bfe\u7a0b\u5185\u5bb9\u5168\u90e8\u5f00\u6e90\uff0c\u53ef\u4ee5\u5728\u8bfe\u7a0b\u7f51\u7ad9\u76f4\u63a5\u8bbf\u95ee\u3002\u8fd9\u95e8\u8bfe\u5229\u7528 Julia \u7f16\u7a0b\u8bed\u8a00\uff0c\u5728\u56fe\u50cf\u5904\u7406\u3001\u793e\u4f1a\u79d1\u5b66\u4e0e\u6570\u636e\u79d1\u5b66\u3001\u6c14\u5019\u5b66\u5efa\u6a21\u4e09\u4e2a topic \u4e0b\u5e26\u9886\u5b66\u751f\u7406\u89e3\u7b97\u6cd5\u3001\u6570\u5b66\u5efa\u6a21\u3001\u6570\u636e\u5206\u6790\u3001\u4ea4\u4e92\u8bbe\u8ba1\u3001\u56fe\u4f8b\u5c55\u793a\uff0c\u8ba9\u5b66\u751f\u4f53\u9a8c\u8ba1\u7b97\u4e0e\u79d1\u5b66\u7684\u7f8e\u5999\u7ed3\u5408\u3002\u5185\u5bb9\u867d\u7136\u4e0d\u96be\uff0c\u4f46\u7ed9\u6211\u6700\u6df1\u523b\u7684\u611f\u53d7\u5c31\u662f\uff0c\u79d1\u5b66\u7684\u9b45\u529b\u5e76\u4e0d\u662f\u6545\u5f04\u7384\u865a\u7684\u8270\u6df1\u7406\u8bba\uff0c\u4e0d\u662f\u8bd8\u5c48\u8071\u7259\u7684\u672f\u8bed\u884c\u8bdd\uff0c\u800c\u662f\u7528\u76f4\u89c2\u751f\u52a8\u7684\u6848\u4f8b\uff0c\u7528\u7b80\u7ec3\u6df1\u523b\u7684\u8bed\u8a00\uff0c\u8ba9\u6bcf\u4e2a\u666e\u901a\u4eba\u90fd\u80fd\u7406\u89e3\u3002 \u4e0a\u5b8c\u4e0a\u9762\u7684\u4f53\u9a8c\u8bfe\u4e4b\u540e\uff0c\u5982\u679c\u610f\u72b9\u672a\u5c3d\u7684\u8bdd\uff0c\u4e0d\u59a8\u8bd5\u8bd5 MIT \u7684 18.330 : Introduction to numerical analysis \uff0c\u8fd9\u95e8\u8bfe\u7684\u7f16\u7a0b\u4f5c\u4e1a\u540c\u6837\u4f1a\u7528 Julia \u7f16\u7a0b\u8bed\u8a00\uff0c\u4e0d\u8fc7\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u90fd\u4e0a\u4e86\u4e00\u4e2a\u53f0\u9636\u3002\u5185\u5bb9\u6d89\u53ca\u4e86\u6d6e\u70b9\u7f16\u7801\u3001Root finding\u3001\u7ebf\u6027\u7cfb\u7edf\u3001\u5fae\u5206\u65b9\u7a0b\u7b49\u7b49\u65b9\u9762\uff0c\u6574\u95e8\u8bfe\u7684\u4e3b\u65e8\u5c31\u662f\u8ba9\u4f60\u5229\u7528\u79bb\u6563\u5316\u7684\u8ba1\u7b97\u673a\u8868\u793a\u53bb\u4f30\u8ba1\u548c\u903c\u8fd1\u4e00\u4e2a\u6570\u5b66\u4e0a\u8fde\u7eed\u7684\u6982\u5ff5\u3002\u8fd9\u95e8\u8bfe\u7684\u6559\u6388\u8fd8\u4e13\u95e8\u64b0\u5199\u4e86\u4e00\u672c\u914d\u5957\u7684\u5f00\u6e90\u6559\u6750 Fundamentals of Numerical Computation \uff0c\u91cc\u9762\u9644\u6709\u4e30\u5bcc\u7684 Julia \u4ee3\u7801\u5b9e\u4f8b\u548c\u4e25\u8c28\u7684\u516c\u5f0f\u63a8\u5bfc\u3002 \u5982\u679c\u4f60\u8fd8\u610f\u72b9\u672a\u5c3d\u7684\u8bdd\uff0c\u8fd8\u6709 MIT \u7684\u6570\u503c\u5206\u6790\u7814\u7a76\u751f\u8bfe\u7a0b 18.335: Introduction to numerical method \u4f9b\u4f60\u53c2\u8003\u3002 \u5fae\u5206\u65b9\u7a0b \u5982\u679c\u4e16\u95f4\u4e07\u7269\u7684\u8fd0\u52a8\u53d1\u5c55\u90fd\u80fd\u7528\u65b9\u7a0b\u6765\u523b\u753b\u548c\u63cf\u8ff0\uff0c\u8fd9\u662f\u4e00\u4ef6\u591a\u4e48\u9177\u7684\u4e8b\u60c5\u5440\uff01\u867d\u7136\u51e0\u4e4e\u4efb\u4f55\u4e00\u6240\u5b66\u6821\u7684 CS \u57f9\u517b\u65b9\u6848\u4e2d\u90fd\u6ca1\u6709\u5fae\u5206\u65b9\u7a0b\u76f8\u5173\u7684\u5fc5\u4fee\u8bfe\u7a0b\uff0c\u4f46\u6211\u8fd8\u662f\u89c9\u5f97\u638c\u63e1\u5b83\u4f1a\u8d4b\u4e88\u4f60\u4e00\u4e2a\u65b0\u7684\u89c6\u89d2\u6765\u5ba1\u89c6\u8fd9\u4e2a\u4e16\u754c\u3002 \u7531\u4e8e\u5fae\u5206\u65b9\u7a0b\u4e2d\u5f80\u5f80\u4f1a\u7528\u5230\u5f88\u591a\u590d\u53d8\u51fd\u6570\u7684\u77e5\u8bc6\uff0c\u6240\u4ee5\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003 MIT18.04: Complex variables functions \u7684\u8bfe\u7a0b notes \u6765\u8865\u9f50\u5148\u4fee\u77e5\u8bc6\u3002 MIT18.03: differential equations ) \u4e3b\u8981\u8986\u76d6\u4e86\u5e38\u5fae\u5206\u65b9\u7a0b\u7684\u6c42\u89e3\uff0c\u5728\u6b64\u57fa\u7840\u4e4b\u4e0a MIT18.152: Partial differential equations ) \u5219\u4f1a\u6df1\u5165\u504f\u5fae\u5206\u65b9\u7a0b\u7684\u5efa\u6a21\u4e0e\u6c42\u89e3\u3002\u638c\u63e1\u4e86\u5fae\u5206\u65b9\u7a0b\u8fd9\u4e00\u6709\u5229\u5de5\u5177\uff0c\u76f8\u4fe1\u5bf9\u4e8e\u4f60\u7684\u5b9e\u9645\u95ee\u9898\u7684\u5efa\u6a21\u80fd\u529b\u4ee5\u53ca\u4ece\u4f17\u591a\u566a\u58f0\u53d8\u91cf\u4e2d\u628a\u63e1\u672c\u8d28\u7684\u76f4\u89c9\u90fd\u4f1a\u6709\u5f88\u5927\u5e2e\u52a9\u3002 \u6570\u5b66\u9ad8\u9636 \u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u6211\u7ecf\u5e38\u542c\u5230\u6570\u5b66\u65e0\u7528\u8bba\u7684\u8bba\u65ad\uff0c\u5bf9\u6b64\u6211\u4e0d\u6562\u82df\u540c\u4f46\u4e5f\u65e0\u6743\u53cd\u5bf9\uff0c\u4f46\u82e5\u51e1\u4e8b\u90fd\u786c\u8981\u4e89\u51fa\u4e2a\u6709\u7528\u548c\u65e0\u7528\u7684\u533a\u522b\u6765\uff0c\u5012\u4e5f\u7740\u5b9e\u65e0\u8da3\uff0c\u56e0\u6b64\u4e0b\u9762\u8fd9\u4e9b\u9762\u5411\u9ad8\u5e74\u7ea7\u751a\u81f3\u7814\u7a76\u751f\u7684\u6570\u5b66\u8bfe\u7a0b\uff0c\u5927\u5bb6\u6309\u5174\u8da3\u81ea\u53d6\u6240\u9700\u3002 \u51f8\u4f18\u5316 Standford EE364A: Convex Optimization \u4fe1\u606f\u8bba MIT6.441: Information Theory \u5e94\u7528\u7edf\u8ba1\u5b66 MIT18.650: Statistics for Applications \u521d\u7b49\u6570\u8bba MIT18.781: Theory of Numbers \u5bc6\u7801\u5b66 Standford CS255: Cryptography \u7f16\u7a0b\u5165\u95e8 Languages are tools, you choose the right tool to do the right thing. Since there's no universally perfect tool, there's no universally perfect language. Shell MIT-Missing-Semester Python Harvard CS50: This is CS50x UCB CS61A: Structure and Interpretation of Computer Programs C++ Stanford CS106B/X: Programming Abstractions Stanford CS106L: Standard C++ Programming Rust Stanford CS110L: Safety in Systems Programming OCaml Cornell CS3110 textbook: Functional Programming in OCaml \u7535\u5b50\u57fa\u7840 \u7535\u8def\u57fa\u7840 \u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u4e86\u89e3\u4e00\u4e9b\u57fa\u7840\u7684\u7535\u8def\u77e5\u8bc6\uff0c\u611f\u53d7\u4ece\u4f20\u611f\u5668\u6536\u96c6\u6570\u636e\u5230\u6570\u636e\u5206\u6790\u518d\u5230\u7b97\u6cd5\u9884\u6d4b\u6574\u6761\u6d41\u6c34\u7ebf\uff0c\u5bf9\u4e8e\u540e\u7eed\u77e5\u8bc6\u7684\u5b66\u4e60\u4ee5\u53ca\u8ba1\u7b97\u601d\u7ef4\u7684\u57f9\u517b\u8fd8\u662f\u5f88\u6709\u5e2e\u52a9\u7684\u3002 EE16A&B: Designing Information Devices and Systems I&II \u662f\u4f2f\u514b\u5229 EE \u5b66\u751f\u7684\u5927\u4e00\u5165\u95e8\u8bfe\uff0c\u5176\u4e2d EE16A \u6ce8\u91cd\u901a\u8fc7\u7535\u8def\u4ece\u5b9e\u9645\u73af\u5883\u4e2d\u6536\u96c6\u548c\u5206\u6790\u6570\u636e\uff0c\u800c EE16B \u5219\u4fa7\u91cd\u4ece\u8fd9\u4e9b\u6536\u96c6\u5230\u7684\u6570\u636e\u8fdb\u884c\u5206\u6790\u5e76\u505a\u51fa\u9884\u6d4b\u884c\u4e3a\u3002 \u4fe1\u53f7\u4e0e\u7cfb\u7edf \u4fe1\u53f7\u4e0e\u7cfb\u7edf\u662f\u4e00\u95e8\u6211\u89c9\u5f97\u975e\u5e38\u503c\u5f97\u4e00\u4e0a\u7684\u8bfe\uff0c\u6700\u521d\u5b66\u5b83\u53ea\u662f\u4e3a\u4e86\u6ee1\u8db3\u6211\u5bf9\u5085\u91cc\u53f6\u53d8\u6362\u7684\u597d\u5947\uff0c\u4f46\u5b66\u5b8c\u4e4b\u540e\u6211\u624d\u4e0d\u7981\u611f\u53f9\uff0c\u5085\u7acb\u53f6\u53d8\u6362\u7ed9\u6211\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5168\u65b0\u7684\u89c6\u89d2\u53bb\u770b\u5f85\u8fd9\u4e2a\u4e16\u754c\uff0c\u5c31\u5982\u540c\u5fae\u5206\u65b9\u7a0b\u4e00\u6837\uff0c\u8ba9\u4f60\u6c89\u6d78\u5728\u7528\u6570\u5b66\u53bb\u7cbe\u786e\u63cf\u7ed8\u548c\u523b\u753b\u8fd9\u4e2a\u4e16\u754c\u7684\u4f18\u96c5\u4e0e\u795e\u5947\u4e4b\u4e2d\u3002 MIT 6.003: signal and systems \u63d0\u4f9b\u4e86\u5168\u90e8\u7684\u8bfe\u7a0b\u5f55\u5f71\u3001\u4e66\u9762\u4f5c\u4e1a\u4ee5\u53ca\u7b54\u6848\u3002\u4e5f\u53ef\u4ee5\u53bb\u770b\u8fd9\u95e8\u8bfe\u7684 \u8fdc\u53e4\u7248\u672c \u800c UCB EE120: Signal and Systems \u5173\u4e8e\u5085\u7acb\u53f6\u53d8\u6362\u7684 notes \u5199\u5f97\u975e\u5e38\u597d\uff0c\u5e76\u4e14\u63d0\u4f9b\u4e866 \u4e2a\u975e\u5e38\u6709\u8da3\u7684 Python \u7f16\u7a0b\u4f5c\u4e1a\uff0c\u8ba9\u4f60\u5b9e\u8df5\u4e2d\u8fd0\u7528\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u7684\u7406\u8bba\u4e0e\u7b97\u6cd5\u3002 \u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 \u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 UCB CS61B: Data Structures and Algorithms Coursera: Algorithms I & II \u7b97\u6cd5\u8bbe\u8ba1\u4e0e\u5206\u6790 UCB CS170: Efficient Algorithms and Intractable Problems \u8f6f\u4ef6\u5de5\u7a0b \u5165\u95e8\u8bfe \u4e00\u4efd\u201c\u80fd\u8dd1\u201d\u7684\u4ee3\u7801\uff0c\u548c\u4e00\u4efd\u9ad8\u8d28\u91cf\u7684\u5de5\u4e1a\u7ea7\u4ee3\u7801\u662f\u6709\u672c\u8d28\u533a\u522b\u7684\u3002\u56e0\u6b64\u6211\u975e\u5e38\u63a8\u8350\u4f4e\u5e74\u7ea7\u7684\u540c\u5b66\u5b66\u4e60\u4e00\u4e0b MIT 6.031: Software Construction \u8fd9\u95e8\u8bfe\uff0c\u5b83\u4f1a\u4ee5 Java \u8bed\u8a00\u4e3a\u57fa\u7840\uff0c\u4ee5\u4e30\u5bcc\u7ec6\u81f4\u7684\u9605\u8bfb\u6750\u6599\u548c\u7cbe\u5fc3\u8bbe\u8ba1\u7684\u7f16\u7a0b\u7ec3\u4e60\u4f20\u6388\u5982\u4f55\u7f16\u5199 \u4e0d\u6613\u51fa bug\u3001\u7b80\u660e\u6613\u61c2\u3001\u6613\u4e8e\u7ef4\u62a4\u4fee\u6539 \u7684\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5927\u5230\u5b8f\u89c2\u6570\u636e\u7ed3\u6784\u8bbe\u8ba1\uff0c\u5c0f\u5230\u5982\u4f55\u5199\u6ce8\u91ca\uff0c\u9075\u5faa\u8fd9\u4e9b\u524d\u4eba\u603b\u7ed3\u7684\u7ec6\u8282\u548c\u7ecf\u9a8c\uff0c\u5bf9\u4e8e\u4f60\u6b64\u540e\u7684\u7f16\u7a0b\u751f\u6daf\u5927\u6709\u88e8\u76ca\u3002 \u4e13\u4e1a\u8bfe \u5f53\u7136\uff0c\u5982\u679c\u4f60\u60f3\u7cfb\u7edf\u6027\u5730\u4e0a\u4e00\u95e8\u8f6f\u4ef6\u5de5\u7a0b\u7684\u8bfe\u7a0b\uff0c\u90a3\u6211\u63a8\u8350\u7684\u662f\u4f2f\u514b\u5229\u7684 UCB CS169: software engineering \u3002\u4f46\u9700\u8981\u63d0\u9192\u7684\u662f\uff0c\u548c\u5927\u591a\u5b66\u6821\uff08\u5305\u62ec\u8d35\u6821\uff09\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u7a0b\u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe\u4e0d\u4f1a\u6d89\u53ca\u4f20\u7edf\u7684 design and document \u6a21\u5f0f\uff0c\u5373\u5f3a\u8c03\u5404\u79cd\u7c7b\u56fe\u3001\u6d41\u7a0b\u56fe\u53ca\u6587\u6863\u8bbe\u8ba1\uff0c\u800c\u662f\u91c7\u7528\u8fd1\u4e9b\u5e74\u6d41\u884c\u8d77\u6765\u7684\u5c0f\u56e2\u961f\u5feb\u901f\u8fed\u4ee3 Agile Develepment \u5f00\u53d1\u6a21\u5f0f\u4ee5\u53ca\u5229\u7528\u4e91\u5e73\u53f0\u7684 Software as a service \u670d\u52a1\u6a21\u5f0f\u3002 \u4f53\u7cfb\u7ed3\u6784 \u5165\u95e8\u8bfe \u4ece\u5c0f\u6211\u5c31\u4e00\u76f4\u542c\u8bf4\uff0c\u8ba1\u7b97\u673a\u7684\u4e16\u754c\u662f\u7531 01 \u6784\u6210\u7684\uff0c\u6211\u4e0d\u7406\u89e3\u4f46\u5927\u53d7\u9707\u64bc\u3002\u5982\u679c\u4f60\u7684\u5185\u5fc3\u4e5f\u6000\u6709\u8fd9\u4efd\u597d\u5947\uff0c\u4e0d\u59a8\u82b1\u4e00\u5230\u4e24\u4e2a\u6708\u7684\u65f6\u95f4\u5b66\u4e60 Coursera: Nand2Tetris \u8fd9\u95e8\u65e0\u95e8\u69db\u7684\u8ba1\u7b97\u673a\u8bfe\u7a0b\u3002\u8fd9\u95e8\u9ebb\u96c0\u867d\u5c0f\u4e94\u810f\u4ff1\u5168\u7684\u8bfe\u7a0b\u4f1a\u4ece 01 \u5f00\u59cb\u8ba9\u4f60\u4eb2\u624b\u9020\u51fa\u4e00\u53f0\u8ba1\u7b97\u673a\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c\u4fc4\u7f57\u65af\u65b9\u5757\u5c0f\u6e38\u620f\u3002\u4e00\u95e8\u8bfe\u91cc\u6db5\u76d6\u4e86\u7f16\u8bd1\u3001\u865a\u62df\u673a\u3001\u6c47\u7f16\u3001\u4f53\u7cfb\u7ed3\u6784\u3001\u6570\u5b57\u7535\u8def\u3001\u903b\u8f91\u95e8\u7b49\u7b49\u4ece\u4e0a\u81f3\u4e0b\u3001\u4ece\u8f6f\u81f3\u786c\u7684\u5404\u7c7b\u77e5\u8bc6\uff0c\u975e\u5e38\u5168\u9762\u3002\u96be\u5ea6\u4e0a\u4e5f\u662f\u901a\u8fc7\u7cbe\u5fc3\u7684\u8bbe\u8ba1\uff0c\u7565\u53bb\u4e86\u4f17\u591a\u73b0\u4ee3\u8ba1\u7b97\u673a\u590d\u6742\u7684\u7ec6\u8282\uff0c\u63d0\u53d6\u51fa\u4e86\u6700\u6838\u5fc3\u672c\u8d28\u7684\u4e1c\u897f\uff0c\u529b\u56fe\u8ba9\u6bcf\u4e2a\u4eba\u90fd\u80fd\u7406\u89e3\u3002\u5728\u4f4e\u5e74\u7ea7\uff0c\u5982\u679c\u5c31\u80fd\u4ece\u5b8f\u89c2\u4e0a\u5efa\u7acb\u5bf9\u6574\u4e2a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7684\u9e1f\u77b0\u56fe\uff0c\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002 \u4e13\u4e1a\u8bfe \u5f53\u7136\uff0c\u5982\u679c\u60f3\u6df1\u5165\u73b0\u4ee3\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u7684\u590d\u6742\u7ec6\u8282\uff0c\u8fd8\u5f97\u4e0a\u4e00\u95e8\u5927\u5b66\u672c\u79d1\u96be\u5ea6\u7684\u8bfe\u7a0b UCB CS61C: Great Ideas in Computer Architecture \u3002UC Berkeley \u4f5c\u4e3a RISC-V \u67b6\u6784\u7684\u53d1\u6e90\u5730\uff0c\u5728\u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u7b97\u5f97\u4e0a\u9996\u5c48\u4e00\u6307\u3002\u5176\u8bfe\u7a0b\u975e\u5e38\u6ce8\u91cd\u5b9e\u8df5\uff0c\u4f60\u4f1a\u5728 Project \u4e2d\u624b\u5199\u6c47\u7f16\u6784\u9020\u795e\u7ecf\u7f51\u7edc\uff0c\u4ece\u96f6\u5f00\u59cb\u642d\u5efa\u4e00\u4e2a CPU\uff0c\u8fd9\u4e9b\u5b9e\u8df5\u90fd\u4f1a\u8ba9\u4f60\u5bf9\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u6709\u66f4\u4e3a\u6df1\u5165\u7684\u7406\u89e3\uff0c\u800c\u4e0d\u662f\u4ec5\u505c\u7559\u4e8e\u201c\u53d6\u6307\u8bd1\u7801\u6267\u884c\u8bbf\u5b58\u5199\u56de\u201d\u7684\u5355\u8c03\u80cc\u8bf5\u91cc\u3002 \u7cfb\u7edf\u5165\u95e8 \u8ba1\u7b97\u673a\u7cfb\u7edf\u662f\u4e00\u4e2a\u5e9e\u6742\u800c\u6df1\u523b\u7684\u4e3b\u9898\uff0c\u5728\u6df1\u5165\u5b66\u4e60\u67d0\u4e2a\u7ec6\u5206\u9886\u57df\u4e4b\u524d\uff0c\u5bf9\u5404\u4e2a\u9886\u57df\u6709\u4e00\u4e2a\u5b8f\u89c2\u6982\u5ff5\u6027\u7684\u7406\u89e3\uff0c\u5bf9\u4e00\u4e9b\u901a\u7528\u6027\u7684\u8bbe\u8ba1\u539f\u5219\u6709\u6240\u77e5\u6653\uff0c\u4f1a\u8ba9\u4f60\u5728\u4e4b\u540e\u7684\u6df1\u5165\u5b66\u4e60\u4e2d\u4e0d\u65ad\u5f3a\u5316\u4e00\u4e9b\u6700\u4e3a\u6838\u5fc3\u4e43\u81f3\u54f2\u5b66\u7684\u6982\u5ff5\uff0c\u800c\u4e0d\u4f1a\u684e\u688f\u4e8e\u590d\u6742\u7684\u5185\u90e8\u7ec6\u8282\u548c\u5404\u79cd trick\u3002\u56e0\u4e3a\u5728\u6211\u770b\u6765\uff0c\u5b66\u4e60\u7cfb\u7edf\u6700\u5173\u952e\u7684\u8fd8\u662f\u60f3\u8ba9\u4f60\u9886\u609f\u5230\u8fd9\u4e9b\u6700\u6838\u5fc3\u7684\u4e1c\u897f\uff0c\u4ece\u800c\u80fd\u591f\u8bbe\u8ba1\u548c\u5b9e\u73b0\u51fa\u5c5e\u4e8e\u81ea\u5df1\u7684\u7cfb\u7edf\u3002 MIT6.033: System Engineering \u662f MIT \u7684\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u4e3b\u9898\u6d89\u53ca\u4e86\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f51\u7edc\u3001\u5206\u5e03\u5f0f\u548c\u7cfb\u7edf\u5b89\u5168\uff0c\u9664\u4e86\u77e5\u8bc6\u70b9\u7684\u4f20\u6388\u5916\uff0c\u8fd9\u95e8\u8bfe\u8fd8\u4f1a\u8bb2\u6388\u4e00\u4e9b\u5199\u4f5c\u548c\u8868\u8fbe\u4e0a\u7684\u6280\u5de7\uff0c\u8ba9\u4f60\u5b66\u4f1a\u5982\u4f55\u8bbe\u8ba1\u5e76\u5411\u522b\u4eba\u4ecb\u7ecd\u548c\u5206\u6790\u81ea\u5df1\u7684\u7cfb\u7edf\u3002\u8fd9\u672c\u4e66\u914d\u5957\u7684\u6559\u6750 Principles of Computer System Design: An Introduction \u4e5f\u5199\u5f97\u975e\u5e38\u597d\uff0c\u63a8\u8350\u5927\u5bb6\u9605\u8bfb\u3002 CMU 15-213: Introduction to Computer System \u662f CMU \u7684\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u5185\u5bb9\u8986\u76d6\u4e86\u4f53\u7cfb\u7ed3\u6784\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u94fe\u63a5\u3001\u5e76\u884c\u3001\u7f51\u7edc\u7b49\u7b49\uff0c\u517c\u5177\u5e7f\u5ea6\u548c\u6df1\u5ea6\uff0c\u914d\u5957\u7684\u6559\u6750 Computer Systems: A Programmer's Perspective \u4e5f\u662f\u8d28\u91cf\u6781\u9ad8\uff0c\u5f3a\u70c8\u5efa\u8bae\u9605\u8bfb\u3002 \u64cd\u4f5c\u7cfb\u7edf \u64cd\u4f5c\u7cfb\u7edf\u4f5c\u4e3a\u5404\u7c7b\u7eb7\u7e41\u590d\u6742\u7684\u5e95\u5c42\u786c\u4ef6\u865a\u62df\u5316\u51fa\u4e00\u5957\u89c4\u8303\u4f18\u96c5\u7684\u62bd\u8c61\uff0c\u7ed9\u6240\u6709\u5e94\u7528\u8f6f\u4ef6\u63d0\u4f9b\u4e30\u5bcc\u7684\u529f\u80fd\u652f\u6301\u3002\u4e86\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u8bbe\u8ba1\u539f\u5219\u548c\u5185\u90e8\u539f\u7406\u5bf9\u4e8e\u4e00\u4e2a\u4e0d\u6ee1\u8db3\u4e8e\u5f53\u8c03\u5305\u4fa0\u7684\u7a0b\u5e8f\u5458\u6765\u8bf4\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002\u51fa\u4e8e\u5bf9\u64cd\u4f5c\u7cfb\u7edf\u7684\u70ed\u7231\uff0c\u6211\u4e0a\u8fc7\u56fd\u5185\u5916\u5f88\u591a\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\uff0c\u5b83\u4eec\u5404\u6709\u4fa7\u91cd\u548c\u4f18\u52a3\uff0c\u5927\u5bb6\u53ef\u4ee5\u6839\u636e\u5174\u8da3\u5404\u53d6\u6240\u9700\u3002 MIT 6.S081: Operating System Engineering \uff0cMIT \u8457\u540d PDOS \u5b9e\u9a8c\u5ba4\u51fa\u54c1\uff0c11 \u4e2a Project \u8ba9\u4f60\u5728\u4e00\u4e2a\u5b9e\u73b0\u975e\u5e38\u4f18\u96c5\u7684\u7c7bUnix\u64cd\u4f5c\u7cfb\u7edfxv6\u4e0a\u589e\u52a0\u5404\u7c7b\u529f\u80fd\u6a21\u5757\u3002\u8fd9\u95e8\u8bfe\u4e5f\u8ba9\u6211\u6df1\u523b\u8ba4\u8bc6\u5230\uff0c\u505a\u7cfb\u7edf\u4e0d\u662f\u9760 PPT \u5ff5\u51fa\u6765\u7684\uff0c\u662f\u5f97\u51e0\u4e07\u884c\u4ee3\u7801\u4e00\u70b9\u70b9\u7d2f\u8d77\u6765\u7684\u3002 UCB CS162: Operating System \uff0c\u4f2f\u514b\u5229\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\uff0c\u91c7\u7528\u548c Stanford \u540c\u6837\u7684 Project \u2014\u2014 \u4e00\u4e2a\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf Pintos\u3002\u6211\u4f5c\u4e3a\u5317\u4eac\u5927\u5b662022\u5e74\u6625\u5b63\u5b66\u671f\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9a8c\u73ed\u7684\u52a9\u6559\uff0c\u5f15\u5165\u5e76\u6539\u5584\u4e86\u8fd9\u4e2a Project\uff0c\u8bfe\u7a0b\u8d44\u6e90\u4e5f\u4f1a\u5168\u90e8\u5f00\u6e90\uff0c\u5177\u4f53\u53c2\u89c1 \u8bfe\u7a0b\u7f51\u7ad9 \u3002 NJU: Operating System Design and Implementation \uff0c\u5357\u4eac\u5927\u5b66\u7684\u848b\u708e\u5ca9\u8001\u5e08\u5f00\u8bbe\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u3002\u848b\u8001\u5e08\u4ee5\u5176\u72ec\u5230\u7684\u7cfb\u7edf\u89c6\u89d2\u7ed3\u5408\u4e30\u5bcc\u7684\u4ee3\u7801\u793a\u4f8b\u5c06\u4f17\u591a\u64cd\u4f5c\u7cfb\u7edf\u7684\u6982\u5ff5\u8bb2\u5f97\u6df1\u5165\u6d45\u51fa\uff0c\u6b64\u5916\u8fd9\u95e8\u8bfe\u7684\u5168\u90e8\u8bfe\u7a0b\u5185\u5bb9\u90fd\u662f\u4e2d\u6587\u7684\uff0c\u975e\u5e38\u65b9\u4fbf\u5927\u5bb6\u5b66\u4e60\u3002 \u5e76\u884c\u4e0e\u5206\u5e03\u5f0f\u7cfb\u7edf \u60f3\u5fc5\u8fd9\u4e24\u5e74\u5404\u7c7b CS \u8bb2\u5ea7\u91cc\u6700\u5e38\u542c\u5230\u7684\u8bdd\u5c31\u662f\u201c\u6469\u5c14\u5b9a\u5f8b\u6b63\u5728\u8d70\u5411\u7ec8\u7ed3\u201d\uff0c\u6b64\u8bdd\u4e0d\u5047\uff0c\u5f53\u5355\u6838\u80fd\u529b\u8fbe\u5230\u4e0a\u9650\u65f6\uff0c\u591a\u6838\u4e43\u81f3\u4f17\u6838\u67b6\u6784\u5982\u65e5\u4e2d\u5929\u3002\u786c\u4ef6\u7684\u53d8\u5316\u5e26\u6765\u7684\u662f\u4e0a\u5c42\u7f16\u7a0b\u903b\u8f91\u7684\u9002\u5e94\u4e0e\u6539\u53d8\uff0c\u8981\u60f3\u5145\u5206\u5229\u7528\u786c\u4ef6\u6027\u80fd\uff0c\u7f16\u5199\u5e76\u884c\u7a0b\u5e8f\u51e0\u4e4e\u6210\u4e86\u7a0b\u5e8f\u5458\u7684\u5fc5\u5907\u6280\u80fd\u3002\u4e0e\u6b64\u540c\u65f6\uff0c\u6df1\u5ea6\u5b66\u4e60\u7684\u5174\u8d77\u5bf9\u8ba1\u7b97\u673a\u7b97\u529b\u4e0e\u5b58\u50a8\u7684\u8981\u6c42\u90fd\u8fbe\u5230\u4e86\u524d\u6240\u672a\u6709\u7684\u9ad8\u5ea6\uff0c\u5927\u89c4\u6a21\u96c6\u7fa4\u7684\u90e8\u7f72\u548c\u4f18\u5316\u4e5f\u6210\u4e3a\u70ed\u95e8\u6280\u672f\u8bdd\u9898\u3002 \u5e76\u884c\u8ba1\u7b97 CMU 15-418/Stanford CS149: Parallel Computing \u5206\u5e03\u5f0f\u7cfb\u7edf MIT 6.824: Distributed System \u7cfb\u7edf\u5b89\u5168 \u4e0d\u77e5\u9053\u4f60\u5f53\u5e74\u9009\u62e9\u8ba1\u7b97\u673a\u662f\u4e0d\u662f\u56e0\u4e3a\u6000\u7740\u4e00\u4e2a\u4e2d\u4e8c\u7684\u9ed1\u5ba2\u68a6\u60f3\uff0c\u4f46\u73b0\u5b9e\u5374\u662f\u6210\u4e3a\u9ed1\u5ba2\u9053\u963b\u4e14\u957f\u3002 \u7406\u8bba UCB CS161: Computer Security \u662f\u4f2f\u514b\u5229\u7684\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u4f1a\u6db5\u76d6\u6808\u653b\u51fb\u3001\u5bc6\u7801\u5b66\u3001\u7f51\u7ad9\u5b89\u5168\u3001\u7f51\u7edc\u5b89\u5168\u7b49\u7b49\u5185\u5bb9\u3002 \u5b9e\u8df5 \u638c\u63e1\u8fd9\u4e9b\u7406\u8bba\u77e5\u8bc6\u4e4b\u540e\uff0c\u8fd8\u9700\u8981\u5728\u5b9e\u8df5\u4e2d\u57f9\u517b\u548c\u953b\u70bc\u8fd9\u4e9b\u201c\u9ed1\u5ba2\u7d20\u517b\u201d\u3002 CTF \u593a\u65d7\u8d5b \u662f\u4e00\u9879\u6bd4\u8f83\u70ed\u95e8\u7684\u7cfb\u7edf\u5b89\u5168\u6bd4\u8d5b\uff0c\u8d5b\u9898\u4e2d\u4f1a\u878d\u4f1a\u8d2f\u901a\u5730\u8003\u5bdf\u4f60\u5bf9\u8ba1\u7b97\u673a\u5404\u4e2a\u9886\u57df\u77e5\u8bc6\u7684\u7406\u89e3\u548c\u8fd0\u7528\u3002\u5317\u5927\u4eca\u5e74\u4e5f\u6210\u529f\u4e3e\u529e\u4e86 \u7b2c 0 \u5c4a\u548c\u7b2c 1 \u5c4a \uff0c\u9f13\u52b1\u5927\u5bb6\u540e\u671f\u8e0a\u8dc3\u53c2\u4e0e\uff0c\u5728\u5b9e\u8df5\u4e2d\u63d0\u9ad8\u81ea\u5df1\u3002\u4e0b\u9762\u5217\u4e3e\u4e00\u4e9b\u6211\u5e73\u65f6\u5b66\u4e60\uff08\u6478\u9c7c\uff09\u7528\u5230\u7684\u8d44\u6e90\uff1a CTF-wiki CTF-101 Hacker-101 \u8ba1\u7b97\u673a\u7f51\u7edc \u8ba1\u7f51\u8457\u540d\u6559\u6750\u300a\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u300b\u7684\u914d\u5957\u5b66\u4e60\u8d44\u6e90 Computer Networking: A Top-Down Approach \u3002 \u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a TCP/IP \u534f\u8bae\u6808\u66f4\u80fd\u52a0\u6df1\u5bf9\u8ba1\u7b97\u673a\u7f51\u7edc\u7684\u7406\u89e3\u4e86\uff0c\u6240\u4ee5\u4e0d\u59a8\u8bd5\u8bd5 Stanford CS144: Computer Network \uff0c8 \u4e2a Project \u5e26\u4f60\u5b9e\u73b0\u6574\u4e2a\u534f\u8bae\u6808\u3002 \u6570\u636e\u5e93\u7cfb\u7edf \u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a\u5173\u7cfb\u578b\u6570\u636e\u5e93\u66f4\u80fd\u52a0\u6df1\u5bf9\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u7406\u89e3\u4e86\u3002 C++\u7248 CMU 15-445: Introduction to Database System Java\u7248 UCB CS186: Introduction to Database System \u7f16\u8bd1\u539f\u7406 \u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a\u7f16\u8bd1\u5668\u66f4\u80fd\u52a0\u6df1\u5bf9\u7f16\u8bd1\u5668\u7684\u7406\u89e3\u4e86\u3002 Stanford CS143: Compilers \u8ba1\u7b97\u673a\u56fe\u5f62\u5b66 Stanford CS148 Games101 Games103 Games202 Web\u5f00\u53d1 \u7f51\u7ad9\u7684\u5f00\u53d1\u5f88\u5c11\u5728\u8ba1\u7b97\u673a\u7684\u57f9\u517b\u65b9\u6848\u91cc\u88ab\u91cd\u89c6\uff0c\u4f46\u5176\u5b9e\u638c\u63e1\u8fd9\u9879\u6280\u80fd\u8fd8\u662f\u597d\u5904\u591a\u591a\u7684\uff0c\u4f8b\u5982\u642d\u5efa\u81ea\u5df1\u7684\u4e2a\u4eba\u4e3b\u9875\uff0c\u6291\u6216\u662f\u7ed9\u81ea\u5df1\u7684\u8bfe\u7a0b\u9879\u76ee\u505a\u4e00\u4e2a\u7cbe\u5f69\u7684\u5c55\u793a\u7f51\u9875\u3002 \u4e24\u5468\u901f\u6210\u7248 MIT web development course \u7cfb\u7edf\u5b66\u4e60\u7248 Stanford CS142: Web Applications \u6570\u636e\u79d1\u5b66 UCB Data100: Principles and Techniques of Data Science \u4eba\u5de5\u667a\u80fd \u5165\u95e8\u8bfe Harvard CS50\u2019s Introduction to AI with Python \u4e13\u4e1a\u8bfe UCB CS188: Introduction to Artificial Intelligence \u673a\u5668\u5b66\u4e60 \u5165\u95e8\u8bfe Coursera: Machine Learning \u4e13\u4e1a\u8bfe Stanford CS229: Machine Learning UCB CS189: Introduction to Machine Learning \u6df1\u5ea6\u5b66\u4e60 \u5165\u95e8\u8bfe Coursera: Deep Learning \u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60 \u8ba1\u7b97\u673a\u89c6\u89c9 Stanford CS231n: CNN for Visual Recognition \u81ea\u7136\u8bed\u8a00\u5904\u7406 Stanford CS224n: Natural Language Processing \u56fe\u795e\u7ecf\u7f51\u7edc Stanford CS224w: Machine Learning with Graphs \u5f3a\u5316\u5b66\u4e60 UCB CS285: Deep Reinforcement Learning \u5b9a\u5236\u5c5e\u4e8e\u4f60\u7684\u8bfe\u7a0b\u5730\u56fe \u6388\u4eba\u4ee5\u9c7c\u4e0d\u5982\u6388\u4eba\u4ee5\u6e14\u3002 \u4ee5\u4e0a\u7684\u8bfe\u7a0b\u89c4\u5212\u96be\u514d\u5e26\u6709\u5f3a\u70c8\u7684\u4e2a\u4eba\u504f\u597d\uff0c\u4e0d\u4e00\u5b9a\u9002\u5408\u6240\u6709\u4eba\uff0c\u66f4\u591a\u662f\u8d77\u5230\u629b\u7816\u5f15\u7389\u7684\u4f5c\u7528\u3002\u5982\u679c\u4f60\u60f3\u6311\u9009\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\u548c\u5185\u5bb9\u52a0\u4ee5\u5b66\u4e60\uff0c\u53ef\u4ee5\u53c2\u8003\u6211\u5728\u4e0b\u9762\u5217\u51fa\u6765\u7684\u8d44\u6e90\u3002 MIT OpenCourseWare : \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u7684\u8bfe\u7a0b\u8d44\u6e90\u5f00\u653e\u5171\u4eab\u9879\u76ee\uff0c\u6536\u5f55\u4e86\u6570\u4ee5\u5343\u8ba1\u7684\u5404\u79d1\u8bfe\u7a0b\u8d44\u6e90\uff0c\u5176\u4e2d\u8ba1\u7b97\u673a\u7c7b\u7684\u8bfe\u53f7\u662f 6.xxx\u3002 MIT CS Course List : \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002 UC Berkeley EECS Course Map : UC Berkeley \u7684 EECS \u57f9\u517b\u65b9\u6848\uff0c\u4ee5\u8bfe\u7a0b\u5730\u56fe\u7684\u65b9\u5f0f\u5c06\u5404\u95e8\u8bfe\u7a0b\u7684\u7c7b\u522b\u548c\u5148\u4fee\u5173\u7cfb\u4e00\u76ee\u4e86\u7136\u5730\u5448\u73b0\uff0c\u5176\u4e2d\u7edd\u5927\u591a\u6570\u8bfe\u7a0b\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 UC Berkeley CS Course List : UC Berkeley \u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002 Stanford CS Course List : \u65af\u5766\u798f\u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002","title":"\u4e00\u4e2a\u4ec5\u4f9b\u53c2\u8003\u7684CS\u5b66\u4e60\u89c4\u5212"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#cs","text":"\u8ba1\u7b97\u673a\u9886\u57df\u65b9\u5411\u5e9e\u6742\uff0c\u77e5\u8bc6\u6d69\u5982\u70df\u6d77\uff0c\u6bcf\u4e2a\u7ec6\u5206\u9886\u57df\u5982\u679c\u6df1\u7a76\u4e0b\u53bb\u90fd\u53ef\u4ee5\u8bf4\u5b66\u65e0\u6b62\u5883\u3002\u56e0\u6b64\uff0c\u4e00\u4e2a\u6e05\u6670\u660e\u786e\u7684\u5b66\u4e60\u89c4\u5212\u662f\u975e\u5e38\u91cd\u8981\u7684\u3002\u8fd9\u4e00\u8282\u7684\u5185\u5bb9\u662f\u5bf9\u540e\u7eed\u6574\u672c\u4e66\u7684\u5185\u5bb9\u7684\u4e00\u4e2a\u6982\u89c8\uff0c\u4f60\u53ef\u4ee5\u5c06\u5176\u770b\u4f5c\u662f\u8fd9\u672c\u4e66\u7684\u76ee\u5f55\uff0c\u6309\u9700\u9009\u62e9\u81ea\u5df1\u611f\u5174\u8da3\u7684\u5185\u5bb9\u8fdb\u884c\u5b66\u4e60\u3002 \u4e0d\u8fc7\uff0c\u5728\u5f00\u59cb\u5b66\u4e60\u4e4b\u524d\uff0c\u5148\u5411\u5c0f\u767d\u4eec\u5f3a\u70c8\u63a8\u8350\u4e00\u4e2a\u79d1\u666e\u5411\u7cfb\u5217\u89c6\u9891 Crash Course: Computer Science \uff0c\u5728\u77ed\u77ed 8 \u4e2a\u5c0f\u65f6\u91cc\u975e\u5e38\u751f\u52a8\u4e14\u5168\u9762\u5730\u79d1\u666e\u4e86\u5173\u4e8e\u8ba1\u7b97\u673a\u79d1\u5b66\u7684\u65b9\u65b9\u9762\u9762\uff1a\u8ba1\u7b97\u673a\u7684\u5386\u53f2\u3001\u8ba1\u7b97\u673a\u662f\u5982\u4f55\u8fd0\u4f5c\u7684\u3001\u7ec4\u6210\u8ba1\u7b97\u673a\u7684\u5404\u4e2a\u91cd\u8981\u6a21\u5757\u3001\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\u7684\u91cd\u8981\u601d\u60f3\u7b49\u7b49\u7b49\u7b49\u3002\u6b63\u5982\u5b83\u7684\u53e3\u53f7\u6240\u8bf4\u7684 Computers are not magic! \uff0c\u5e0c\u671b\u770b\u5b8c\u8fd9\u4e2a\u89c6\u9891\u4e4b\u540e\uff0c\u5927\u5bb6\u80fd\u5bf9\u8ba1\u7b97\u673a\u79d1\u5b66\u6709\u4e2a\u5168\u8c8c\u6027\u5730\u611f\u77e5\uff0c\u4ece\u800c\u6000\u7740\u5174\u8da3\u53bb\u9762\u5bf9\u4e0b\u9762\u6d69\u5982\u70df\u6d77\u7684\u66f4\u4e3a\u7ec6\u81f4\u4e14\u6df1\u5165\u7684\u5b66\u4e60\u5185\u5bb9\u3002","title":"\u4e00\u4e2a\u4ec5\u4f9b\u53c2\u8003\u7684 CS \u5b66\u4e60\u89c4\u5212"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_1","text":"\u4fd7\u8bdd\u8bf4\uff1a\u78e8\u5200\u4e0d\u8bef\u780d\u67f4\u5de5\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u521a\u521a\u63a5\u89e6\u8ba1\u7b97\u673a\u768424k\u7eaf\u5c0f\u767d\uff0c\u5b66\u4f1a\u4e00\u4e9b\u5de5\u5177\u5c06\u4f1a\u8ba9\u4f60\u4e8b\u534a\u529f\u500d\u3002 \u5b66\u4f1a\u63d0\u95ee\uff1a\u4e5f\u8bb8\u4f60\u4f1a\u60ca\u8bb6\uff0c\u63d0\u95ee\u4e5f\u7b97\u8ba1\u7b97\u673a\u5fc5\u5907\u6280\u80fd\u5417\uff0c\u8fd8\u653e\u5728\u7b2c\u4e00\u6761\uff1f\u6211\u89c9\u5f97\u5728\u5f00\u6e90\u793e\u533a\u4e2d\uff0c\u5b66\u4f1a\u63d0\u95ee\u662f\u4e00\u9879\u975e\u5e38\u91cd\u8981\u7684\u80fd\u529b\uff0c\u5b83\u5305\u542b\u4e24\u65b9\u9762\u7684\u4e8b\u60c5\u3002\u5176\u4e00\u662f\u4f1a\u53d8\u76f8\u5730\u57f9\u517b\u4f60\u81ea\u4e3b\u89e3\u51b3\u95ee\u9898\u7684\u80fd\u529b\uff0c\u56e0\u4e3a\u4ece\u5f62\u6210\u95ee\u9898\u3001\u63cf\u8ff0\u95ee\u9898\u5e76\u53d1\u5e03\u3001\u4ed6\u4eba\u56de\u7b54\u3001\u6700\u540e\u518d\u5230\u7406\u89e3\u56de\u7b54\u8fd9\u4e2a\u5468\u671f\u662f\u975e\u5e38\u957f\u7684\uff0c\u5982\u679c\u9047\u5230\u4ec0\u4e48\u9e21\u6bdb\u849c\u76ae\u7684\u4e8b\u60c5\u90fd\u5e0c\u671b\u522b\u4eba\u6700\u597d\u8fdc\u7a0b\u684c\u9762\u624b\u628a\u624b\u5e2e\u4f60\u5b8c\u6210\uff0c\u90a3\u8ba1\u7b97\u673a\u7684\u4e16\u754c\u57fa\u672c\u4e0e\u4f60\u65e0\u7f18\u4e86\u3002\u5176\u4e8c\uff0c\u5982\u679c\u771f\u7684\u7ecf\u8fc7\u5c1d\u8bd5\u8fd8\u65e0\u6cd5\u89e3\u51b3\uff0c\u53ef\u4ee5\u501f\u52a9\u5f00\u6e90\u793e\u533a\u7684\u5e2e\u52a9\uff0c\u4f46\u8fd9\u65f6\u5019\u5982\u4f55\u901a\u8fc7\u7b80\u6d01\u7684\u6587\u5b57\u8ba9\u522b\u4eba\u77ac\u95f4\u7406\u89e3\u4f60\u7684\u5904\u5883\u4ee5\u53ca\u76ee\u7684\uff0c\u5c31\u663e\u5f97\u5c24\u4e3a\u91cd\u8981\u3002\u63a8\u8350\u9605\u8bfb \u63d0\u95ee\u7684\u667a\u6167 \u8fd9\u7bc7\u6587\u7ae0\uff0c\u8fd9\u4e0d\u4ec5\u80fd\u63d0\u9ad8\u4f60\u89e3\u51b3\u95ee\u9898\u7684\u6982\u7387\u548c\u6548\u7387\uff0c\u4e5f\u80fd\u8ba9\u5f00\u6e90\u793e\u533a\u91cc\u65e0\u507f\u63d0\u4f9b\u89e3\u7b54\u7684\u4eba\u4eec\u62e5\u6709\u4e00\u4e2a\u597d\u5fc3\u60c5\u3002 MIT-Missing-Semester \u8fd9\u95e8\u8bfe\u8986\u76d6\u4e86\u8fd9\u4e9b\u5de5\u5177\u4e2d\u7edd\u5927\u90e8\u5206\uff0c\u800c\u4e14\u6709\u76f8\u5f53\u8be6\u7ec6\u7684\u4f7f\u7528\u6307\u5bfc\uff0c\u5f3a\u70c8\u5efa\u8bae\u5c0f\u767d\u5b66\u4e60\u3002 \u7ffb\u5899 \uff1a\u7531\u4e8e\u4e00\u4e9b\u4f17\u6240\u5468\u77e5\u7684\u539f\u56e0\uff0c\u8c37\u6b4c\u3001GitHub \u7b49\u7f51\u7ad9\u5728\u5927\u9646\u65e0\u6cd5\u8bbf\u95ee\u3002\u7136\u800c\u5f88\u591a\u65f6\u5019\uff0c\u8c37\u6b4c\u548c StackOverflow \u53ef\u4ee5\u89e3\u51b3\u4f60\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684 99% \u7684\u95ee\u9898\u3002\u56e0\u6b64\uff0c\u5b66\u4f1a\u7ffb\u5899\u51e0\u4e4e\u662f\u4e00\u4e2a\u5185\u5730 CSer \u7684\u5fc5\u5907\u6280\u80fd\u3002\uff08\u8003\u8651\u5230\u6cd5\u5f8b\u95ee\u9898\uff0c\u8fd9\u4e2a\u6587\u6863\u63d0\u4f9b\u7684\u7ffb\u5899\u65b9\u5f0f\u4ec5\u5bf9\u62e5\u6709\u5317\u5927\u90ae\u7bb1\u7684\u7528\u6237\u9002\u7528\uff09\u3002 \u547d\u4ee4\u884c\uff1a\u719f\u7ec3\u4f7f\u7528\u547d\u4ee4\u884c\u662f\u4e00\u79cd\u5e38\u5e38\u88ab\u5ffd\u89c6\uff0c\u6216\u88ab\u8ba4\u4e3a\u96be\u4ee5\u638c\u63e1\u7684\u6280\u80fd\uff0c\u4f46\u5b9e\u9645\u4e0a\uff0c\u5b83\u4f1a\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u4f5c\u4e3a\u5de5\u7a0b\u5e08\u7684\u7075\u6d3b\u6027\u4ee5\u53ca\u751f\u4ea7\u529b\u3002 \u547d\u4ee4\u884c\u7684\u827a\u672f \u662f\u4e00\u4efd\u975e\u5e38\u7ecf\u5178\u7684\u6559\u7a0b\uff0c\u5b83\u6e90\u4e8e Quora \u7684\u4e00\u4e2a\u63d0\u95ee\uff0c\u4f46\u5728\u5404\u8def\u5927\u795e\u7684\u8d21\u732e\u52aa\u529b\u4e0b\u5df2\u7ecf\u6210\u4e3a\u4e86\u4e00\u4e2a GitHub \u5341\u4e07 stars \u7684\u9876\u6d41\u9879\u76ee\uff0c\u88ab\u7ffb\u8bd1\u6210\u4e86\u5341\u51e0\u79cd\u8bed\u8a00\u3002\u6559\u7a0b\u4e0d\u957f\uff0c\u975e\u5e38\u5efa\u8bae\u5927\u5bb6\u53cd\u590d\u901a\u8bfb\uff0c\u5728\u5b9e\u8df5\u4e2d\u5185\u5316\u5438\u6536\u3002\u540c\u65f6\uff0c\u638c\u63e1 Shell \u811a\u672c\u7f16\u7a0b\u4e5f\u662f\u4e00\u9879\u4e0d\u5bb9\u5ffd\u89c6\u7684\u6280\u672f\uff0c\u53ef\u4ee5\u53c2\u8003\u8fd9\u4e2a \u6559\u7a0b \u3002 IDE (Integrated Development Environment)\uff1a\u96c6\u6210\u5f00\u53d1\u73af\u5883\uff0c\u8bf4\u767d\u4e86\u5c31\u662f\u4f60\u5199\u4ee3\u7801\u7684\u5730\u65b9\u3002\u4f5c\u4e3a\u4e00\u4e2a\u7801\u519c\uff0cIDE \u7684\u91cd\u8981\u6027\u4e0d\u8a00\u800c\u55bb\uff0c\u4f46\u7531\u4e8e\u5f88\u591a IDE \u662f\u4e3a\u5927\u578b\u5de5\u7a0b\u9879\u76ee\u8bbe\u8ba1\u7684\uff0c\u4f53\u91cf\u8f83\u5927\uff0c\u529f\u80fd\u4e5f\u8fc7\u4e8e\u4e30\u5bcc\u3002\u5176\u5b9e\u5982\u4eca\u4e00\u4e9b\u8f7b\u4fbf\u7684\u6587\u672c\u7f16\u8f91\u5668\u914d\u5408\u4e30\u5bcc\u7684\u63d2\u4ef6\u751f\u6001\u57fa\u672c\u53ef\u4ee5\u6ee1\u8db3\u65e5\u5e38\u7684\u8f7b\u91cf\u7f16\u7a0b\u9700\u6c42\u3002\u4e2a\u4eba\u5e38\u7528\u7684\u7f16\u8f91\u5668\u662f VS Code \u548c Sublime\uff08\u524d\u8005\u7684\u63d2\u4ef6\u914d\u7f6e\u975e\u5e38\u7b80\u5355\uff0c\u540e\u8005\u7565\u663e\u590d\u6742\u4f46\u989c\u503c\u5f88\u9ad8\uff09\u3002\u5f53\u7136\u5bf9\u4e8e\u5927\u578b\u9879\u76ee\u6211\u8fd8\u662f\u4f1a\u91c7\u7528\u7565\u91cd\u578b\u7684 IDE\uff0c\u4f8b\u5982 Pycharm (Python)\uff0cIDEA (Java) \u7b49\u7b49\uff08\u514d\u8d23\u7533\u660e\uff1a\u6240\u6709\u7684 IDE \u90fd\u662f\u4e16\u754c\u4e0a\u6700\u597d\u7684 IDE\uff09\u3002 Vim \uff1a\u4e00\u6b3e\u547d\u4ee4\u884c\u7f16\u8f91\u5de5\u5177\u3002\u8fd9\u662f\u4e00\u4e2a\u5b66\u4e60\u66f2\u7ebf\u6709\u4e9b\u9661\u5ced\u7684\u7f16\u8f91\u5668\uff0c\u4e0d\u8fc7\u5b66\u4f1a\u5b83\u6211\u89c9\u5f97\u662f\u975e\u5e38\u6709\u5fc5\u8981\u7684\uff0c\u56e0\u4e3a\u5b83\u5c06\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u7684\u5f00\u53d1\u6548\u7387\u3002\u73b0\u5728\u7edd\u5927\u591a\u6570 IDE \u4e5f\u90fd\u652f\u6301 Vim \u63d2\u4ef6\uff0c\u8ba9\u4f60\u5728\u4eab\u53d7\u73b0\u4ee3\u5f00\u53d1\u73af\u5883\u7684\u540c\u65f6\u4fdd\u7559\u6781\u5ba2\u7684\u70ab\u9177\uff08yue\uff09\u3002 Git \uff1a\u4e00\u6b3e\u4ee3\u7801\u7248\u672c\u63a7\u5236\u5de5\u5177\u3002Git\u7684\u5b66\u4e60\u66f2\u7ebf\u53ef\u80fd\u66f4\u4e3a\u9661\u5ced\uff0c\u4f46\u51fa\u81ea Linux \u4e4b\u7236 Linus \u4e4b\u624b\u7684 Git \u7edd\u5bf9\u662f\u6bcf\u4e2a\u5b66 CS \u7684\u7ae5\u978b\u5fc5\u987b\u638c\u63e1\u7684\u795e\u5668\u4e4b\u4e00\u3002 GitHub \uff1a\u57fa\u4e8e Git \u7684\u4ee3\u7801\u6258\u7ba1\u5e73\u53f0\u3002\u5168\u4e16\u754c\u6700\u5927\u7684\u4ee3\u7801\u5f00\u6e90\u793e\u533a\uff0c\u5927\u4f6c\u96c6\u805a\u5730\u3002 GNU Make \uff1a\u4e00\u6b3e\u5de5\u7a0b\u6784\u5efa\u5de5\u5177\u3002\u5584\u7528 GNU Make \u4f1a\u8ba9\u4f60\u517b\u6210\u4ee3\u7801\u6a21\u5757\u5316\u7684\u4e60\u60ef\uff0c\u540c\u65f6\u4e5f\u80fd\u8ba9\u4f60\u719f\u6089\u4e00\u4e9b\u5927\u578b\u5de5\u7a0b\u7684\u7f16\u8bd1\u94fe\u63a5\u6d41\u7a0b\u3002 CMake \uff1a\u4e00\u6b3e\u529f\u80fd\u6bd4 GNU Make \u66f4\u4e3a\u5f3a\u5927\u7684\u6784\u5efa\u5de5\u5177\uff0c\u5efa\u8bae\u638c\u63e1 GNU Make \u4e4b\u540e\u518d\u52a0\u4ee5\u5b66\u4e60\u3002 LaTex \uff1a \u903c\u683c\u63d0\u5347 \u8bba\u6587\u6392\u7248\u5de5\u5177\u3002 Docker \uff1a\u4e00\u6b3e\u76f8\u8f83\u4e8e\u865a\u62df\u673a\u66f4\u8f7b\u91cf\u7ea7\u7684\u8f6f\u4ef6\u6253\u5305\u4e0e\u73af\u5883\u90e8\u7f72\u5de5\u5177\u3002 \u5b9e\u7528\u5de5\u5177\u7bb1 \uff1a\u9664\u4e86\u4e0a\u9762\u63d0\u5230\u7684\u8fd9\u4e9b\u5728\u5f00\u53d1\u4e2d\u4f7f\u7528\u9891\u7387\u6781\u9ad8\u7684\u5de5\u5177\u4e4b\u5916\uff0c\u6211\u8fd8\u6536\u96c6\u4e86\u5f88\u591a\u5b9e\u7528\u6709\u8da3\u7684\u514d\u8d39\u5de5\u5177\uff0c\u4f8b\u5982\u4e00\u4e9b\u4e0b\u8f7d\u5de5\u5177\u3001\u8bbe\u8ba1\u5de5\u5177\u3001\u5b66\u4e60\u7f51\u7ad9\u7b49\u7b49\u3002 Thesis \uff1a\u6bd5\u4e1a\u8bba\u6587 Word \u5199\u4f5c\u6559\u7a0b\u3002","title":"\u5fc5\u5b66\u5de5\u5177"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_2","text":"\u79c1\u4ee5\u4e3a\u4e00\u672c\u597d\u7684\u6559\u6750\u5e94\u5f53\u662f\u4ee5\u4eba\u4e3a\u672c\u7684\uff0c\u800c\u4e0d\u662f\u70ab\u6280\u5f0f\u7684\u7406\u8bba\u5806\u780c\u3002\u544a\u8bc9\u8bfb\u8005\u201c\u662f\u4ec0\u4e48\u201d\u56fa\u7136\u91cd\u8981\uff0c\u4f46\u66f4\u597d\u7684\u5e94\u5f53\u662f\u6559\u6750\u4f5c\u8005\u5c06\u5176\u5728\u8fd9\u4e2a\u9886\u57df\u6df1\u8015\u51e0\u5341\u5e74\u7684\u7ecf\u9a8c\u878d\u6c47\u8fdb\u4e66\u4e2d\uff0c\u5411\u8bfb\u8005\u5a13\u5a13\u9053\u6765\u201c\u4e3a\u4ec0\u4e48\u201d\u4ee5\u53ca\u672a\u6765\u5e94\u8be5\u201c\u600e\u4e48\u505a\u201d\u3002 \u94fe\u63a5\u6233\u8fd9\u91cc","title":"\u597d\u4e66\u63a8\u8350"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_3","text":"\u4f60\u4ee5\u4e3a\u7684\u5f00\u53d1 \u2014\u2014 \u5728 IDE \u91cc\u75af\u72c2\u7801\u4ee3\u7801\u6570\u5c0f\u65f6\u3002 \u5b9e\u9645\u4e0a\u7684\u5f00\u53d1 \u2014\u2014 \u914d\u73af\u5883\u914d\u51e0\u5929\u8fd8\u6ca1\u5f00\u59cb\u5199\u4ee3\u7801\u3002","title":"\u73af\u5883\u914d\u7f6e"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#pc","text":"\u5982\u679c\u4f60\u662f Mac \u7528\u6237\uff0c\u90a3\u4e48\u4f60\u5f88\u5e78\u8fd0\uff0c\u8fd9\u4efd \u6307\u5357 \u5c06\u4f1a\u624b\u628a\u624b\u5730\u5e26\u4f60\u642d\u5efa\u8d77\u6574\u5957\u5f00\u53d1\u73af\u5883\u3002\u5982\u679c\u4f60\u662f Windows \u7528\u6237\uff0c\u53ef\u4ee5\u53c2\u8003\u8fd9\u4e2a\u76f8\u5bf9\u7b80\u7565\u7684 \u6559\u7a0b \u3002 \u53e6\u5916\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003\u4e00\u4efd\u7075\u611f\u6765\u81ea 6.NULL MIT-Missing-Semester \u7684 \u73af\u5883\u914d\u7f6e\u6307\u5357 \uff0c\u91cd\u70b9\u5728\u4e8e\u7ec8\u7aef\u7684\u7f8e\u5316\u914d\u7f6e\u3002\u6b64\u5916\u8fd8\u5305\u62ec\u5e38\u7528\u8f6f\u4ef6\u6e90\uff08\u5982 GitHub, Anaconda, PyPI \u7b49\uff09\u7684\u52a0\u901f\u4e0e\u66ff\u6362\u4ee5\u53ca\u4e00\u4e9b IDE \u7684\u914d\u7f6e\u4e0e\u6fc0\u6d3b\u6559\u7a0b\u3002","title":"PC \u7aef\u73af\u5883\u914d\u7f6e"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_4","text":"\u63a8\u8350\u4e00\u4e2a\u975e\u5e38\u4e0d\u9519\u7684 GitHub \u9879\u76ee DevOps-Guide \uff0c\u5176\u4e2d\u6db5\u76d6\u4e86\u975e\u5e38\u591a\u7684\u8fd0\u7ef4\u65b9\u9762\u7684\u57fa\u7840\u77e5\u8bc6\u548c\u6559\u7a0b\uff0c\u4f8b\u5982 Docker, Kubernetes, Linux, CI-CD, GitHub Actions \u7b49\u7b49\u3002","title":"\u670d\u52a1\u5668\u7aef\u73af\u5883\u914d\u7f6e"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_5","text":"\u6b63\u5982\u8fd9\u7ae0\u5f00\u5934\u63d0\u5230\u7684\uff0c\u8fd9\u4efd\u8bfe\u7a0b\u5730\u56fe\u4ec5\u4ec5\u662f\u4e00\u4e2a \u4ec5\u4f9b\u53c2\u8003 \u7684\u8bfe\u7a0b\u89c4\u5212\uff0c\u6211\u4f5c\u4e3a\u4e00\u4e2a\u4e34\u8fd1\u6bd5\u4e1a\u7684\u672c\u79d1\u751f\u3002\u6df1\u611f\u81ea\u5df1\u6ca1\u6709\u6743\u5229\u4e5f\u6ca1\u6709\u80fd\u529b\u5411\u522b\u4eba\u5ba3\u626c\u201c\u5e94\u8be5\u600e\u4e48\u5b66\u201d\u3002\u56e0\u6b64\u5982\u679c\u4f60\u89c9\u5f97\u4ee5\u4e0b\u7684\u8bfe\u7a0b\u5206\u7c7b\u4e0e\u9009\u62e9\u6709\u4e0d\u5408\u7406\u4e4b\u5904\uff0c\u6211\u5168\u76d8\u63a5\u53d7\uff0c\u5e76\u6df1\u611f\u62b1\u6b49\u3002\u4f60\u53ef\u4ee5\u5728\u4e0b\u4e00\u8282 \u5b9a\u5236\u5c5e\u4e8e\u4f60\u7684\u8bfe\u7a0b\u5730\u56fe \u4ee5\u4e0b\u8bfe\u7a0b\u7c7b\u522b\u4e2d\u9664\u4e86\u542b\u6709 \u57fa\u7840 \u548c \u5165\u95e8 \u5b57\u773c\u7684\u4ee5\u5916\uff0c\u5e76\u65e0\u660e\u786e\u7684\u5148\u540e\u6b21\u5e8f\uff0c\u5927\u5bb6\u53ea\u8981\u6ee1\u8db3\u67d0\u4e2a\u8bfe\u7a0b\u7684\u5148\u4fee\u8981\u6c42\uff0c\u5b8c\u5168\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u7684\u9700\u8981\u548c\u559c\u597d\u9009\u62e9\u60f3\u8981\u5b66\u4e60\u7684\u8bfe\u7a0b\u3002 \u53e6\u5916\u7531\u4e8e\u8d21\u732e\u8005\u7684\u4e0d\u65ad\u589e\u52a0\uff0c\u8fd9\u4efd\u8bfe\u7a0b\u5730\u56fe\u5df2\u7ecf\u4ece\u6700\u521d\u6211\u7684\u5b66\u4e60\u7ecf\u5386\uff0c\u53d1\u5c55\u6210\u4e3a\u5f88\u591a CS \u81ea\u5b66\u8005\u7684\u8d44\u6e90\u5408\u96c6\uff0c\u5176\u4e2d\u96be\u514d\u6709\u5185\u5bb9\u4ea4\u53c9\u751a\u81f3\u91cd\u590d\u7684\u3002\u4e4b\u6240\u4ee5\u90fd\u5217\u51fa\u6765\uff0c\u8fd8\u662f\u5e0c\u671b\u96c6\u767e\u5bb6\u4e4b\u957f\uff0c\u7ed9\u5927\u5bb6\u5c3d\u53ef\u80fd\u591a\u7684\u9009\u62e9\u4e0e\u53c2\u8003\u3002","title":"\u8bfe\u7a0b\u5730\u56fe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_6","text":"","title":"\u6570\u5b66\u57fa\u7840"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_7","text":"\u4f5c\u4e3a\u5927\u4e00\u65b0\u751f\uff0c\u5b66\u597d\u5fae\u79ef\u5206\u7ebf\u4ee3\u662f\u548c\u5199\u4ee3\u7801\u81f3\u5c11\u540c\u7b49\u91cd\u8981\u7684\u4e8b\u60c5\uff0c\u76f8\u4fe1\u5df2\u7ecf\u6709\u65e0\u6570\u7684\u524d\u4eba\u7ecf\u9a8c\u63d0\u5230\u8fc7\u8fd9\u4e00\u70b9\uff0c\u4f46\u6211\u8fd8\u662f\u8981\u4e0d\u538c\u5176\u70e6\u5730\u518d\u5f3a\u8c03\u4e00\u904d\uff1a\u5b66\u597d\u5fae\u79ef\u5206\u7ebf\u4ee3\u771f\u7684\u5f88\u91cd\u8981\uff01\u4f60\u4e5f\u8bb8\u4f1a\u5410\u69fd\u8fd9\u4e9b\u4e1c\u897f\u5c82\u4e0d\u662f\u8003\u5b8c\u5c31\u5fd8\uff0c\u90a3\u6211\u89c9\u5f97\u4f60\u662f\u5e76\u6ca1\u6709\u628a\u63e1\u4f4f\u5b83\u4eec\u672c\u8d28\uff0c\u5bf9\u5b83\u4eec\u7684\u7406\u89e3\u8fd8\u6ca1\u6709\u8fbe\u5230\u523b\u9aa8\u94ed\u5fc3\u7684\u7a0b\u5ea6\u3002\u5982\u679c\u89c9\u5f97\u8001\u5e08\u8bfe\u4e0a\u8bb2\u7684\u5185\u5bb9\u6666\u6da9\u96be\u61c2\uff0c\u4e0d\u59a8\u53c2\u8003 MIT \u7684 Calculus Course \u548c 18.06: Linear Algebra \u7684\u8bfe\u7a0b notes\uff0c\u81f3\u5c11\u4e8e\u6211\u800c\u8a00\uff0c\u5b83\u5e2e\u52a9\u6211\u6df1\u523b\u7406\u89e3\u4e86\u5fae\u79ef\u5206\u548c\u7ebf\u6027\u4ee3\u6570\u7684\u8bb8\u591a\u672c\u8d28\u3002\u987a\u9053\u518d\u5b89\u5229\u4e00\u4e2a\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \uff0c\u4ed6\u7684\u9891\u9053\u6709\u5f88\u591a\u7528\u751f\u52a8\u5f62\u8c61\u7684\u52a8\u753b\u9610\u91ca\u6570\u5b66\u672c\u8d28\u5185\u6838\u7684\u89c6\u9891\uff0c\u517c\u5177\u6df1\u5ea6\u548c\u5e7f\u5ea6\uff0c\u8d28\u91cf\u975e\u5e38\u9ad8\u3002","title":"\u5fae\u79ef\u5206\u4e0e\u7ebf\u6027\u4ee3\u6570"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_8","text":"\u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u53ca\u65e9\u4e86\u89e3\u4e00\u4e9b\u4fe1\u606f\u8bba\u7684\u57fa\u7840\u77e5\u8bc6\uff0c\u6211\u89c9\u5f97\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002\u4f46\u5927\u591a\u4fe1\u606f\u8bba\u8bfe\u7a0b\u90fd\u9762\u5411\u9ad8\u5e74\u7ea7\u672c\u79d1\u751f\u751a\u81f3\u7814\u7a76\u751f\uff0c\u5bf9\u65b0\u624b\u6781\u4e0d\u53cb\u597d\u3002\u800c MIT \u7684 6.050J: Information theory and Entropy \u8fd9\u95e8\u8bfe\u6b63\u662f\u4e3a\u5927\u4e00\u65b0\u751f\u91cf\u8eab\u5b9a\u5236\u7684\uff0c\u51e0\u4e4e\u6ca1\u6709\u5148\u4fee\u8981\u6c42\uff0c\u6db5\u76d6\u4e86\u7f16\u7801\u3001\u538b\u7f29\u3001\u901a\u4fe1\u3001\u4fe1\u606f\u71b5\u7b49\u7b49\u5185\u5bb9\uff0c\u975e\u5e38\u6709\u8da3\u3002","title":"\u4fe1\u606f\u8bba\u5165\u95e8"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_9","text":"","title":"\u6570\u5b66\u8fdb\u9636"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_10","text":"\u96c6\u5408\u8bba\u3001\u56fe\u8bba\u3001\u6982\u7387\u8bba\u7b49\u7b49\u662f\u7b97\u6cd5\u63a8\u5bfc\u4e0e\u8bc1\u660e\u7684\u91cd\u8981\u5de5\u5177\uff0c\u4e5f\u662f\u540e\u7eed\u9ad8\u9636\u6570\u5b66\u8bfe\u7a0b\u7684\u57fa\u7840\u3002\u4f46\u6211\u89c9\u5f97\u8fd9\u7c7b\u8bfe\u7a0b\u7684\u8bb2\u6388\u5f88\u5bb9\u6613\u843d\u5165\u7406\u8bba\u5316\u4e0e\u5f62\u5f0f\u5316\u7684\u7aa0\u81fc\uff0c\u8ba9\u8bfe\u5802\u6210\u4e3a\u5b9a\u7406\u7ed3\u8bba\u7684\u5806\u780c\uff0c\u800c\u65e0\u6cd5\u4f7f\u5b66\u751f\u6df1\u523b\u628a\u63e1\u7406\u8bba\u7684\u672c\u8d28\uff0c\u8fdb\u800c\u9020\u6210\u5b66\u4e86\u5c31\u80cc\uff0c\u8003\u4e86\u5c31\u5fd8\u7684\u602a\u5708\u3002\u5982\u679c\u80fd\u5728\u7406\u8bba\u6559\u5b66\u4e2d\u7a7f\u63d2\u7b97\u6cd5\u8fd0\u7528\u5b9e\u4f8b\uff0c\u5b66\u751f\u5728\u62d3\u5c55\u7b97\u6cd5\u77e5\u8bc6\u7684\u540c\u65f6\u4e5f\u80fd\u7aa5\u89c1\u7406\u8bba\u7684\u529b\u91cf\u548c\u9b45\u529b\u3002 UCB CS70 : discrete Math and probability theory \u548c UCB CS126 : Probability theory \u662f UC Berkeley \u7684\u6982\u7387\u8bba\u8bfe\u7a0b\uff0c\u524d\u8005\u8986\u76d6\u4e86\u79bb\u6563\u6570\u5b66\u548c\u6982\u7387\u8bba\u57fa\u7840\uff0c\u540e\u8005\u5219\u6d89\u53ca\u968f\u673a\u8fc7\u7a0b\u4ee5\u53ca\u6df1\u5165\u7684\u7406\u8bba\u5185\u5bb9\u3002\u4e24\u8005\u90fd\u975e\u5e38\u6ce8\u91cd\u7406\u8bba\u548c\u5b9e\u8df5\u7684\u7ed3\u5408\uff0c\u6709\u4e30\u5bcc\u7684\u7b97\u6cd5\u5b9e\u9645\u8fd0\u7528\u5b9e\u4f8b\uff0c\u540e\u8005\u8fd8\u6709\u5927\u91cf\u7684 Python \u7f16\u7a0b\u4f5c\u4e1a\u6765\u8ba9\u5b66\u751f\u8fd0\u7528\u6982\u7387\u8bba\u7684\u77e5\u8bc6\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u3002","title":"\u79bb\u6563\u6570\u5b66\u4e0e\u6982\u7387\u8bba"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_11","text":"\u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u57f9\u517b\u8ba1\u7b97\u601d\u7ef4\u662f\u5f88\u91cd\u8981\u7684\uff0c\u5b9e\u9645\u95ee\u9898\u7684\u5efa\u6a21\u3001\u79bb\u6563\u5316\uff0c\u8ba1\u7b97\u673a\u7684\u6a21\u62df\u3001\u5206\u6790\uff0c\u662f\u4e00\u9879\u5f88\u91cd\u8981\u7684\u80fd\u529b\u3002\u800c\u8fd9\u4e24\u5e74\u5f00\u59cb\u98ce\u9761\u7684\uff0c\u7531 MIT \u6253\u9020\u7684 Julia \u7f16\u7a0b\u8bed\u8a00\u4ee5\u5176 C \u4e00\u6837\u7684\u901f\u5ea6\u548c Python \u4e00\u6837\u53cb\u597d\u7684\u8bed\u6cd5\u5728\u6570\u503c\u8ba1\u7b97\u9886\u57df\u6709\u4e00\u7edf\u5929\u4e0b\u4e4b\u52bf\uff0cMIT \u7684\u8bb8\u591a\u6570\u5b66\u8bfe\u7a0b\u4e5f\u5f00\u59cb\u7528 Julia \u4f5c\u4e3a\u6559\u5b66\u5de5\u5177\uff0c\u628a\u8270\u6df1\u7684\u6570\u5b66\u7406\u8bba\u7528\u76f4\u89c2\u6e05\u6670\u7684\u4ee3\u7801\u5c55\u793a\u51fa\u6765\u3002 ComputationalThinking \u662f MIT \u5f00\u8bbe\u7684\u4e00\u95e8\u8ba1\u7b97\u601d\u7ef4\u5165\u95e8\u8bfe\uff0c\u6240\u6709\u8bfe\u7a0b\u5185\u5bb9\u5168\u90e8\u5f00\u6e90\uff0c\u53ef\u4ee5\u5728\u8bfe\u7a0b\u7f51\u7ad9\u76f4\u63a5\u8bbf\u95ee\u3002\u8fd9\u95e8\u8bfe\u5229\u7528 Julia \u7f16\u7a0b\u8bed\u8a00\uff0c\u5728\u56fe\u50cf\u5904\u7406\u3001\u793e\u4f1a\u79d1\u5b66\u4e0e\u6570\u636e\u79d1\u5b66\u3001\u6c14\u5019\u5b66\u5efa\u6a21\u4e09\u4e2a topic \u4e0b\u5e26\u9886\u5b66\u751f\u7406\u89e3\u7b97\u6cd5\u3001\u6570\u5b66\u5efa\u6a21\u3001\u6570\u636e\u5206\u6790\u3001\u4ea4\u4e92\u8bbe\u8ba1\u3001\u56fe\u4f8b\u5c55\u793a\uff0c\u8ba9\u5b66\u751f\u4f53\u9a8c\u8ba1\u7b97\u4e0e\u79d1\u5b66\u7684\u7f8e\u5999\u7ed3\u5408\u3002\u5185\u5bb9\u867d\u7136\u4e0d\u96be\uff0c\u4f46\u7ed9\u6211\u6700\u6df1\u523b\u7684\u611f\u53d7\u5c31\u662f\uff0c\u79d1\u5b66\u7684\u9b45\u529b\u5e76\u4e0d\u662f\u6545\u5f04\u7384\u865a\u7684\u8270\u6df1\u7406\u8bba\uff0c\u4e0d\u662f\u8bd8\u5c48\u8071\u7259\u7684\u672f\u8bed\u884c\u8bdd\uff0c\u800c\u662f\u7528\u76f4\u89c2\u751f\u52a8\u7684\u6848\u4f8b\uff0c\u7528\u7b80\u7ec3\u6df1\u523b\u7684\u8bed\u8a00\uff0c\u8ba9\u6bcf\u4e2a\u666e\u901a\u4eba\u90fd\u80fd\u7406\u89e3\u3002 \u4e0a\u5b8c\u4e0a\u9762\u7684\u4f53\u9a8c\u8bfe\u4e4b\u540e\uff0c\u5982\u679c\u610f\u72b9\u672a\u5c3d\u7684\u8bdd\uff0c\u4e0d\u59a8\u8bd5\u8bd5 MIT \u7684 18.330 : Introduction to numerical analysis \uff0c\u8fd9\u95e8\u8bfe\u7684\u7f16\u7a0b\u4f5c\u4e1a\u540c\u6837\u4f1a\u7528 Julia \u7f16\u7a0b\u8bed\u8a00\uff0c\u4e0d\u8fc7\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u90fd\u4e0a\u4e86\u4e00\u4e2a\u53f0\u9636\u3002\u5185\u5bb9\u6d89\u53ca\u4e86\u6d6e\u70b9\u7f16\u7801\u3001Root finding\u3001\u7ebf\u6027\u7cfb\u7edf\u3001\u5fae\u5206\u65b9\u7a0b\u7b49\u7b49\u65b9\u9762\uff0c\u6574\u95e8\u8bfe\u7684\u4e3b\u65e8\u5c31\u662f\u8ba9\u4f60\u5229\u7528\u79bb\u6563\u5316\u7684\u8ba1\u7b97\u673a\u8868\u793a\u53bb\u4f30\u8ba1\u548c\u903c\u8fd1\u4e00\u4e2a\u6570\u5b66\u4e0a\u8fde\u7eed\u7684\u6982\u5ff5\u3002\u8fd9\u95e8\u8bfe\u7684\u6559\u6388\u8fd8\u4e13\u95e8\u64b0\u5199\u4e86\u4e00\u672c\u914d\u5957\u7684\u5f00\u6e90\u6559\u6750 Fundamentals of Numerical Computation \uff0c\u91cc\u9762\u9644\u6709\u4e30\u5bcc\u7684 Julia \u4ee3\u7801\u5b9e\u4f8b\u548c\u4e25\u8c28\u7684\u516c\u5f0f\u63a8\u5bfc\u3002 \u5982\u679c\u4f60\u8fd8\u610f\u72b9\u672a\u5c3d\u7684\u8bdd\uff0c\u8fd8\u6709 MIT \u7684\u6570\u503c\u5206\u6790\u7814\u7a76\u751f\u8bfe\u7a0b 18.335: Introduction to numerical method \u4f9b\u4f60\u53c2\u8003\u3002","title":"\u6570\u503c\u5206\u6790"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_12","text":"\u5982\u679c\u4e16\u95f4\u4e07\u7269\u7684\u8fd0\u52a8\u53d1\u5c55\u90fd\u80fd\u7528\u65b9\u7a0b\u6765\u523b\u753b\u548c\u63cf\u8ff0\uff0c\u8fd9\u662f\u4e00\u4ef6\u591a\u4e48\u9177\u7684\u4e8b\u60c5\u5440\uff01\u867d\u7136\u51e0\u4e4e\u4efb\u4f55\u4e00\u6240\u5b66\u6821\u7684 CS \u57f9\u517b\u65b9\u6848\u4e2d\u90fd\u6ca1\u6709\u5fae\u5206\u65b9\u7a0b\u76f8\u5173\u7684\u5fc5\u4fee\u8bfe\u7a0b\uff0c\u4f46\u6211\u8fd8\u662f\u89c9\u5f97\u638c\u63e1\u5b83\u4f1a\u8d4b\u4e88\u4f60\u4e00\u4e2a\u65b0\u7684\u89c6\u89d2\u6765\u5ba1\u89c6\u8fd9\u4e2a\u4e16\u754c\u3002 \u7531\u4e8e\u5fae\u5206\u65b9\u7a0b\u4e2d\u5f80\u5f80\u4f1a\u7528\u5230\u5f88\u591a\u590d\u53d8\u51fd\u6570\u7684\u77e5\u8bc6\uff0c\u6240\u4ee5\u5927\u5bb6\u53ef\u4ee5\u53c2\u8003 MIT18.04: Complex variables functions \u7684\u8bfe\u7a0b notes \u6765\u8865\u9f50\u5148\u4fee\u77e5\u8bc6\u3002 MIT18.03: differential equations ) \u4e3b\u8981\u8986\u76d6\u4e86\u5e38\u5fae\u5206\u65b9\u7a0b\u7684\u6c42\u89e3\uff0c\u5728\u6b64\u57fa\u7840\u4e4b\u4e0a MIT18.152: Partial differential equations ) \u5219\u4f1a\u6df1\u5165\u504f\u5fae\u5206\u65b9\u7a0b\u7684\u5efa\u6a21\u4e0e\u6c42\u89e3\u3002\u638c\u63e1\u4e86\u5fae\u5206\u65b9\u7a0b\u8fd9\u4e00\u6709\u5229\u5de5\u5177\uff0c\u76f8\u4fe1\u5bf9\u4e8e\u4f60\u7684\u5b9e\u9645\u95ee\u9898\u7684\u5efa\u6a21\u80fd\u529b\u4ee5\u53ca\u4ece\u4f17\u591a\u566a\u58f0\u53d8\u91cf\u4e2d\u628a\u63e1\u672c\u8d28\u7684\u76f4\u89c9\u90fd\u4f1a\u6709\u5f88\u5927\u5e2e\u52a9\u3002","title":"\u5fae\u5206\u65b9\u7a0b"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_13","text":"\u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u6211\u7ecf\u5e38\u542c\u5230\u6570\u5b66\u65e0\u7528\u8bba\u7684\u8bba\u65ad\uff0c\u5bf9\u6b64\u6211\u4e0d\u6562\u82df\u540c\u4f46\u4e5f\u65e0\u6743\u53cd\u5bf9\uff0c\u4f46\u82e5\u51e1\u4e8b\u90fd\u786c\u8981\u4e89\u51fa\u4e2a\u6709\u7528\u548c\u65e0\u7528\u7684\u533a\u522b\u6765\uff0c\u5012\u4e5f\u7740\u5b9e\u65e0\u8da3\uff0c\u56e0\u6b64\u4e0b\u9762\u8fd9\u4e9b\u9762\u5411\u9ad8\u5e74\u7ea7\u751a\u81f3\u7814\u7a76\u751f\u7684\u6570\u5b66\u8bfe\u7a0b\uff0c\u5927\u5bb6\u6309\u5174\u8da3\u81ea\u53d6\u6240\u9700\u3002","title":"\u6570\u5b66\u9ad8\u9636"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_14","text":"Standford EE364A: Convex Optimization","title":"\u51f8\u4f18\u5316"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_15","text":"MIT6.441: Information Theory","title":"\u4fe1\u606f\u8bba"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_16","text":"MIT18.650: Statistics for Applications","title":"\u5e94\u7528\u7edf\u8ba1\u5b66"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_17","text":"MIT18.781: Theory of Numbers","title":"\u521d\u7b49\u6570\u8bba"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_18","text":"Standford CS255: Cryptography","title":"\u5bc6\u7801\u5b66"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_19","text":"Languages are tools, you choose the right tool to do the right thing. Since there's no universally perfect tool, there's no universally perfect language.","title":"\u7f16\u7a0b\u5165\u95e8"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#shell","text":"MIT-Missing-Semester","title":"Shell"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#python","text":"Harvard CS50: This is CS50x UCB CS61A: Structure and Interpretation of Computer Programs","title":"Python"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#c","text":"Stanford CS106B/X: Programming Abstractions Stanford CS106L: Standard C++ Programming","title":"C++"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#rust","text":"Stanford CS110L: Safety in Systems Programming","title":"Rust"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#ocaml","text":"Cornell CS3110 textbook: Functional Programming in OCaml","title":"OCaml"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_20","text":"","title":"\u7535\u5b50\u57fa\u7840"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_21","text":"\u4f5c\u4e3a\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\uff0c\u4e86\u89e3\u4e00\u4e9b\u57fa\u7840\u7684\u7535\u8def\u77e5\u8bc6\uff0c\u611f\u53d7\u4ece\u4f20\u611f\u5668\u6536\u96c6\u6570\u636e\u5230\u6570\u636e\u5206\u6790\u518d\u5230\u7b97\u6cd5\u9884\u6d4b\u6574\u6761\u6d41\u6c34\u7ebf\uff0c\u5bf9\u4e8e\u540e\u7eed\u77e5\u8bc6\u7684\u5b66\u4e60\u4ee5\u53ca\u8ba1\u7b97\u601d\u7ef4\u7684\u57f9\u517b\u8fd8\u662f\u5f88\u6709\u5e2e\u52a9\u7684\u3002 EE16A&B: Designing Information Devices and Systems I&II \u662f\u4f2f\u514b\u5229 EE \u5b66\u751f\u7684\u5927\u4e00\u5165\u95e8\u8bfe\uff0c\u5176\u4e2d EE16A \u6ce8\u91cd\u901a\u8fc7\u7535\u8def\u4ece\u5b9e\u9645\u73af\u5883\u4e2d\u6536\u96c6\u548c\u5206\u6790\u6570\u636e\uff0c\u800c EE16B \u5219\u4fa7\u91cd\u4ece\u8fd9\u4e9b\u6536\u96c6\u5230\u7684\u6570\u636e\u8fdb\u884c\u5206\u6790\u5e76\u505a\u51fa\u9884\u6d4b\u884c\u4e3a\u3002","title":"\u7535\u8def\u57fa\u7840"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_22","text":"\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u662f\u4e00\u95e8\u6211\u89c9\u5f97\u975e\u5e38\u503c\u5f97\u4e00\u4e0a\u7684\u8bfe\uff0c\u6700\u521d\u5b66\u5b83\u53ea\u662f\u4e3a\u4e86\u6ee1\u8db3\u6211\u5bf9\u5085\u91cc\u53f6\u53d8\u6362\u7684\u597d\u5947\uff0c\u4f46\u5b66\u5b8c\u4e4b\u540e\u6211\u624d\u4e0d\u7981\u611f\u53f9\uff0c\u5085\u7acb\u53f6\u53d8\u6362\u7ed9\u6211\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5168\u65b0\u7684\u89c6\u89d2\u53bb\u770b\u5f85\u8fd9\u4e2a\u4e16\u754c\uff0c\u5c31\u5982\u540c\u5fae\u5206\u65b9\u7a0b\u4e00\u6837\uff0c\u8ba9\u4f60\u6c89\u6d78\u5728\u7528\u6570\u5b66\u53bb\u7cbe\u786e\u63cf\u7ed8\u548c\u523b\u753b\u8fd9\u4e2a\u4e16\u754c\u7684\u4f18\u96c5\u4e0e\u795e\u5947\u4e4b\u4e2d\u3002 MIT 6.003: signal and systems \u63d0\u4f9b\u4e86\u5168\u90e8\u7684\u8bfe\u7a0b\u5f55\u5f71\u3001\u4e66\u9762\u4f5c\u4e1a\u4ee5\u53ca\u7b54\u6848\u3002\u4e5f\u53ef\u4ee5\u53bb\u770b\u8fd9\u95e8\u8bfe\u7684 \u8fdc\u53e4\u7248\u672c \u800c UCB EE120: Signal and Systems \u5173\u4e8e\u5085\u7acb\u53f6\u53d8\u6362\u7684 notes \u5199\u5f97\u975e\u5e38\u597d\uff0c\u5e76\u4e14\u63d0\u4f9b\u4e866 \u4e2a\u975e\u5e38\u6709\u8da3\u7684 Python \u7f16\u7a0b\u4f5c\u4e1a\uff0c\u8ba9\u4f60\u5b9e\u8df5\u4e2d\u8fd0\u7528\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u7684\u7406\u8bba\u4e0e\u7b97\u6cd5\u3002","title":"\u4fe1\u53f7\u4e0e\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_23","text":"","title":"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_24","text":"UCB CS61B: Data Structures and Algorithms Coursera: Algorithms I & II","title":"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_25","text":"UCB CS170: Efficient Algorithms and Intractable Problems","title":"\u7b97\u6cd5\u8bbe\u8ba1\u4e0e\u5206\u6790"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_26","text":"","title":"\u8f6f\u4ef6\u5de5\u7a0b"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_27","text":"\u4e00\u4efd\u201c\u80fd\u8dd1\u201d\u7684\u4ee3\u7801\uff0c\u548c\u4e00\u4efd\u9ad8\u8d28\u91cf\u7684\u5de5\u4e1a\u7ea7\u4ee3\u7801\u662f\u6709\u672c\u8d28\u533a\u522b\u7684\u3002\u56e0\u6b64\u6211\u975e\u5e38\u63a8\u8350\u4f4e\u5e74\u7ea7\u7684\u540c\u5b66\u5b66\u4e60\u4e00\u4e0b MIT 6.031: Software Construction \u8fd9\u95e8\u8bfe\uff0c\u5b83\u4f1a\u4ee5 Java \u8bed\u8a00\u4e3a\u57fa\u7840\uff0c\u4ee5\u4e30\u5bcc\u7ec6\u81f4\u7684\u9605\u8bfb\u6750\u6599\u548c\u7cbe\u5fc3\u8bbe\u8ba1\u7684\u7f16\u7a0b\u7ec3\u4e60\u4f20\u6388\u5982\u4f55\u7f16\u5199 \u4e0d\u6613\u51fa bug\u3001\u7b80\u660e\u6613\u61c2\u3001\u6613\u4e8e\u7ef4\u62a4\u4fee\u6539 \u7684\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5927\u5230\u5b8f\u89c2\u6570\u636e\u7ed3\u6784\u8bbe\u8ba1\uff0c\u5c0f\u5230\u5982\u4f55\u5199\u6ce8\u91ca\uff0c\u9075\u5faa\u8fd9\u4e9b\u524d\u4eba\u603b\u7ed3\u7684\u7ec6\u8282\u548c\u7ecf\u9a8c\uff0c\u5bf9\u4e8e\u4f60\u6b64\u540e\u7684\u7f16\u7a0b\u751f\u6daf\u5927\u6709\u88e8\u76ca\u3002","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_28","text":"\u5f53\u7136\uff0c\u5982\u679c\u4f60\u60f3\u7cfb\u7edf\u6027\u5730\u4e0a\u4e00\u95e8\u8f6f\u4ef6\u5de5\u7a0b\u7684\u8bfe\u7a0b\uff0c\u90a3\u6211\u63a8\u8350\u7684\u662f\u4f2f\u514b\u5229\u7684 UCB CS169: software engineering \u3002\u4f46\u9700\u8981\u63d0\u9192\u7684\u662f\uff0c\u548c\u5927\u591a\u5b66\u6821\uff08\u5305\u62ec\u8d35\u6821\uff09\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u7a0b\u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe\u4e0d\u4f1a\u6d89\u53ca\u4f20\u7edf\u7684 design and document \u6a21\u5f0f\uff0c\u5373\u5f3a\u8c03\u5404\u79cd\u7c7b\u56fe\u3001\u6d41\u7a0b\u56fe\u53ca\u6587\u6863\u8bbe\u8ba1\uff0c\u800c\u662f\u91c7\u7528\u8fd1\u4e9b\u5e74\u6d41\u884c\u8d77\u6765\u7684\u5c0f\u56e2\u961f\u5feb\u901f\u8fed\u4ee3 Agile Develepment \u5f00\u53d1\u6a21\u5f0f\u4ee5\u53ca\u5229\u7528\u4e91\u5e73\u53f0\u7684 Software as a service \u670d\u52a1\u6a21\u5f0f\u3002","title":"\u4e13\u4e1a\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_29","text":"","title":"\u4f53\u7cfb\u7ed3\u6784"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_30","text":"\u4ece\u5c0f\u6211\u5c31\u4e00\u76f4\u542c\u8bf4\uff0c\u8ba1\u7b97\u673a\u7684\u4e16\u754c\u662f\u7531 01 \u6784\u6210\u7684\uff0c\u6211\u4e0d\u7406\u89e3\u4f46\u5927\u53d7\u9707\u64bc\u3002\u5982\u679c\u4f60\u7684\u5185\u5fc3\u4e5f\u6000\u6709\u8fd9\u4efd\u597d\u5947\uff0c\u4e0d\u59a8\u82b1\u4e00\u5230\u4e24\u4e2a\u6708\u7684\u65f6\u95f4\u5b66\u4e60 Coursera: Nand2Tetris \u8fd9\u95e8\u65e0\u95e8\u69db\u7684\u8ba1\u7b97\u673a\u8bfe\u7a0b\u3002\u8fd9\u95e8\u9ebb\u96c0\u867d\u5c0f\u4e94\u810f\u4ff1\u5168\u7684\u8bfe\u7a0b\u4f1a\u4ece 01 \u5f00\u59cb\u8ba9\u4f60\u4eb2\u624b\u9020\u51fa\u4e00\u53f0\u8ba1\u7b97\u673a\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c\u4fc4\u7f57\u65af\u65b9\u5757\u5c0f\u6e38\u620f\u3002\u4e00\u95e8\u8bfe\u91cc\u6db5\u76d6\u4e86\u7f16\u8bd1\u3001\u865a\u62df\u673a\u3001\u6c47\u7f16\u3001\u4f53\u7cfb\u7ed3\u6784\u3001\u6570\u5b57\u7535\u8def\u3001\u903b\u8f91\u95e8\u7b49\u7b49\u4ece\u4e0a\u81f3\u4e0b\u3001\u4ece\u8f6f\u81f3\u786c\u7684\u5404\u7c7b\u77e5\u8bc6\uff0c\u975e\u5e38\u5168\u9762\u3002\u96be\u5ea6\u4e0a\u4e5f\u662f\u901a\u8fc7\u7cbe\u5fc3\u7684\u8bbe\u8ba1\uff0c\u7565\u53bb\u4e86\u4f17\u591a\u73b0\u4ee3\u8ba1\u7b97\u673a\u590d\u6742\u7684\u7ec6\u8282\uff0c\u63d0\u53d6\u51fa\u4e86\u6700\u6838\u5fc3\u672c\u8d28\u7684\u4e1c\u897f\uff0c\u529b\u56fe\u8ba9\u6bcf\u4e2a\u4eba\u90fd\u80fd\u7406\u89e3\u3002\u5728\u4f4e\u5e74\u7ea7\uff0c\u5982\u679c\u5c31\u80fd\u4ece\u5b8f\u89c2\u4e0a\u5efa\u7acb\u5bf9\u6574\u4e2a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7684\u9e1f\u77b0\u56fe\uff0c\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_31","text":"\u5f53\u7136\uff0c\u5982\u679c\u60f3\u6df1\u5165\u73b0\u4ee3\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u7684\u590d\u6742\u7ec6\u8282\uff0c\u8fd8\u5f97\u4e0a\u4e00\u95e8\u5927\u5b66\u672c\u79d1\u96be\u5ea6\u7684\u8bfe\u7a0b UCB CS61C: Great Ideas in Computer Architecture \u3002UC Berkeley \u4f5c\u4e3a RISC-V \u67b6\u6784\u7684\u53d1\u6e90\u5730\uff0c\u5728\u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u7b97\u5f97\u4e0a\u9996\u5c48\u4e00\u6307\u3002\u5176\u8bfe\u7a0b\u975e\u5e38\u6ce8\u91cd\u5b9e\u8df5\uff0c\u4f60\u4f1a\u5728 Project \u4e2d\u624b\u5199\u6c47\u7f16\u6784\u9020\u795e\u7ecf\u7f51\u7edc\uff0c\u4ece\u96f6\u5f00\u59cb\u642d\u5efa\u4e00\u4e2a CPU\uff0c\u8fd9\u4e9b\u5b9e\u8df5\u90fd\u4f1a\u8ba9\u4f60\u5bf9\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u6709\u66f4\u4e3a\u6df1\u5165\u7684\u7406\u89e3\uff0c\u800c\u4e0d\u662f\u4ec5\u505c\u7559\u4e8e\u201c\u53d6\u6307\u8bd1\u7801\u6267\u884c\u8bbf\u5b58\u5199\u56de\u201d\u7684\u5355\u8c03\u80cc\u8bf5\u91cc\u3002","title":"\u4e13\u4e1a\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_32","text":"\u8ba1\u7b97\u673a\u7cfb\u7edf\u662f\u4e00\u4e2a\u5e9e\u6742\u800c\u6df1\u523b\u7684\u4e3b\u9898\uff0c\u5728\u6df1\u5165\u5b66\u4e60\u67d0\u4e2a\u7ec6\u5206\u9886\u57df\u4e4b\u524d\uff0c\u5bf9\u5404\u4e2a\u9886\u57df\u6709\u4e00\u4e2a\u5b8f\u89c2\u6982\u5ff5\u6027\u7684\u7406\u89e3\uff0c\u5bf9\u4e00\u4e9b\u901a\u7528\u6027\u7684\u8bbe\u8ba1\u539f\u5219\u6709\u6240\u77e5\u6653\uff0c\u4f1a\u8ba9\u4f60\u5728\u4e4b\u540e\u7684\u6df1\u5165\u5b66\u4e60\u4e2d\u4e0d\u65ad\u5f3a\u5316\u4e00\u4e9b\u6700\u4e3a\u6838\u5fc3\u4e43\u81f3\u54f2\u5b66\u7684\u6982\u5ff5\uff0c\u800c\u4e0d\u4f1a\u684e\u688f\u4e8e\u590d\u6742\u7684\u5185\u90e8\u7ec6\u8282\u548c\u5404\u79cd trick\u3002\u56e0\u4e3a\u5728\u6211\u770b\u6765\uff0c\u5b66\u4e60\u7cfb\u7edf\u6700\u5173\u952e\u7684\u8fd8\u662f\u60f3\u8ba9\u4f60\u9886\u609f\u5230\u8fd9\u4e9b\u6700\u6838\u5fc3\u7684\u4e1c\u897f\uff0c\u4ece\u800c\u80fd\u591f\u8bbe\u8ba1\u548c\u5b9e\u73b0\u51fa\u5c5e\u4e8e\u81ea\u5df1\u7684\u7cfb\u7edf\u3002 MIT6.033: System Engineering \u662f MIT \u7684\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u4e3b\u9898\u6d89\u53ca\u4e86\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f51\u7edc\u3001\u5206\u5e03\u5f0f\u548c\u7cfb\u7edf\u5b89\u5168\uff0c\u9664\u4e86\u77e5\u8bc6\u70b9\u7684\u4f20\u6388\u5916\uff0c\u8fd9\u95e8\u8bfe\u8fd8\u4f1a\u8bb2\u6388\u4e00\u4e9b\u5199\u4f5c\u548c\u8868\u8fbe\u4e0a\u7684\u6280\u5de7\uff0c\u8ba9\u4f60\u5b66\u4f1a\u5982\u4f55\u8bbe\u8ba1\u5e76\u5411\u522b\u4eba\u4ecb\u7ecd\u548c\u5206\u6790\u81ea\u5df1\u7684\u7cfb\u7edf\u3002\u8fd9\u672c\u4e66\u914d\u5957\u7684\u6559\u6750 Principles of Computer System Design: An Introduction \u4e5f\u5199\u5f97\u975e\u5e38\u597d\uff0c\u63a8\u8350\u5927\u5bb6\u9605\u8bfb\u3002 CMU 15-213: Introduction to Computer System \u662f CMU \u7684\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u5185\u5bb9\u8986\u76d6\u4e86\u4f53\u7cfb\u7ed3\u6784\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u94fe\u63a5\u3001\u5e76\u884c\u3001\u7f51\u7edc\u7b49\u7b49\uff0c\u517c\u5177\u5e7f\u5ea6\u548c\u6df1\u5ea6\uff0c\u914d\u5957\u7684\u6559\u6750 Computer Systems: A Programmer's Perspective \u4e5f\u662f\u8d28\u91cf\u6781\u9ad8\uff0c\u5f3a\u70c8\u5efa\u8bae\u9605\u8bfb\u3002","title":"\u7cfb\u7edf\u5165\u95e8"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_33","text":"\u64cd\u4f5c\u7cfb\u7edf\u4f5c\u4e3a\u5404\u7c7b\u7eb7\u7e41\u590d\u6742\u7684\u5e95\u5c42\u786c\u4ef6\u865a\u62df\u5316\u51fa\u4e00\u5957\u89c4\u8303\u4f18\u96c5\u7684\u62bd\u8c61\uff0c\u7ed9\u6240\u6709\u5e94\u7528\u8f6f\u4ef6\u63d0\u4f9b\u4e30\u5bcc\u7684\u529f\u80fd\u652f\u6301\u3002\u4e86\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u8bbe\u8ba1\u539f\u5219\u548c\u5185\u90e8\u539f\u7406\u5bf9\u4e8e\u4e00\u4e2a\u4e0d\u6ee1\u8db3\u4e8e\u5f53\u8c03\u5305\u4fa0\u7684\u7a0b\u5e8f\u5458\u6765\u8bf4\u662f\u5927\u6709\u88e8\u76ca\u7684\u3002\u51fa\u4e8e\u5bf9\u64cd\u4f5c\u7cfb\u7edf\u7684\u70ed\u7231\uff0c\u6211\u4e0a\u8fc7\u56fd\u5185\u5916\u5f88\u591a\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\uff0c\u5b83\u4eec\u5404\u6709\u4fa7\u91cd\u548c\u4f18\u52a3\uff0c\u5927\u5bb6\u53ef\u4ee5\u6839\u636e\u5174\u8da3\u5404\u53d6\u6240\u9700\u3002 MIT 6.S081: Operating System Engineering \uff0cMIT \u8457\u540d PDOS \u5b9e\u9a8c\u5ba4\u51fa\u54c1\uff0c11 \u4e2a Project \u8ba9\u4f60\u5728\u4e00\u4e2a\u5b9e\u73b0\u975e\u5e38\u4f18\u96c5\u7684\u7c7bUnix\u64cd\u4f5c\u7cfb\u7edfxv6\u4e0a\u589e\u52a0\u5404\u7c7b\u529f\u80fd\u6a21\u5757\u3002\u8fd9\u95e8\u8bfe\u4e5f\u8ba9\u6211\u6df1\u523b\u8ba4\u8bc6\u5230\uff0c\u505a\u7cfb\u7edf\u4e0d\u662f\u9760 PPT \u5ff5\u51fa\u6765\u7684\uff0c\u662f\u5f97\u51e0\u4e07\u884c\u4ee3\u7801\u4e00\u70b9\u70b9\u7d2f\u8d77\u6765\u7684\u3002 UCB CS162: Operating System \uff0c\u4f2f\u514b\u5229\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\uff0c\u91c7\u7528\u548c Stanford \u540c\u6837\u7684 Project \u2014\u2014 \u4e00\u4e2a\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf Pintos\u3002\u6211\u4f5c\u4e3a\u5317\u4eac\u5927\u5b662022\u5e74\u6625\u5b63\u5b66\u671f\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9a8c\u73ed\u7684\u52a9\u6559\uff0c\u5f15\u5165\u5e76\u6539\u5584\u4e86\u8fd9\u4e2a Project\uff0c\u8bfe\u7a0b\u8d44\u6e90\u4e5f\u4f1a\u5168\u90e8\u5f00\u6e90\uff0c\u5177\u4f53\u53c2\u89c1 \u8bfe\u7a0b\u7f51\u7ad9 \u3002 NJU: Operating System Design and Implementation \uff0c\u5357\u4eac\u5927\u5b66\u7684\u848b\u708e\u5ca9\u8001\u5e08\u5f00\u8bbe\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u3002\u848b\u8001\u5e08\u4ee5\u5176\u72ec\u5230\u7684\u7cfb\u7edf\u89c6\u89d2\u7ed3\u5408\u4e30\u5bcc\u7684\u4ee3\u7801\u793a\u4f8b\u5c06\u4f17\u591a\u64cd\u4f5c\u7cfb\u7edf\u7684\u6982\u5ff5\u8bb2\u5f97\u6df1\u5165\u6d45\u51fa\uff0c\u6b64\u5916\u8fd9\u95e8\u8bfe\u7684\u5168\u90e8\u8bfe\u7a0b\u5185\u5bb9\u90fd\u662f\u4e2d\u6587\u7684\uff0c\u975e\u5e38\u65b9\u4fbf\u5927\u5bb6\u5b66\u4e60\u3002","title":"\u64cd\u4f5c\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_34","text":"\u60f3\u5fc5\u8fd9\u4e24\u5e74\u5404\u7c7b CS \u8bb2\u5ea7\u91cc\u6700\u5e38\u542c\u5230\u7684\u8bdd\u5c31\u662f\u201c\u6469\u5c14\u5b9a\u5f8b\u6b63\u5728\u8d70\u5411\u7ec8\u7ed3\u201d\uff0c\u6b64\u8bdd\u4e0d\u5047\uff0c\u5f53\u5355\u6838\u80fd\u529b\u8fbe\u5230\u4e0a\u9650\u65f6\uff0c\u591a\u6838\u4e43\u81f3\u4f17\u6838\u67b6\u6784\u5982\u65e5\u4e2d\u5929\u3002\u786c\u4ef6\u7684\u53d8\u5316\u5e26\u6765\u7684\u662f\u4e0a\u5c42\u7f16\u7a0b\u903b\u8f91\u7684\u9002\u5e94\u4e0e\u6539\u53d8\uff0c\u8981\u60f3\u5145\u5206\u5229\u7528\u786c\u4ef6\u6027\u80fd\uff0c\u7f16\u5199\u5e76\u884c\u7a0b\u5e8f\u51e0\u4e4e\u6210\u4e86\u7a0b\u5e8f\u5458\u7684\u5fc5\u5907\u6280\u80fd\u3002\u4e0e\u6b64\u540c\u65f6\uff0c\u6df1\u5ea6\u5b66\u4e60\u7684\u5174\u8d77\u5bf9\u8ba1\u7b97\u673a\u7b97\u529b\u4e0e\u5b58\u50a8\u7684\u8981\u6c42\u90fd\u8fbe\u5230\u4e86\u524d\u6240\u672a\u6709\u7684\u9ad8\u5ea6\uff0c\u5927\u89c4\u6a21\u96c6\u7fa4\u7684\u90e8\u7f72\u548c\u4f18\u5316\u4e5f\u6210\u4e3a\u70ed\u95e8\u6280\u672f\u8bdd\u9898\u3002","title":"\u5e76\u884c\u4e0e\u5206\u5e03\u5f0f\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_35","text":"CMU 15-418/Stanford CS149: Parallel Computing","title":"\u5e76\u884c\u8ba1\u7b97"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_36","text":"MIT 6.824: Distributed System","title":"\u5206\u5e03\u5f0f\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_37","text":"\u4e0d\u77e5\u9053\u4f60\u5f53\u5e74\u9009\u62e9\u8ba1\u7b97\u673a\u662f\u4e0d\u662f\u56e0\u4e3a\u6000\u7740\u4e00\u4e2a\u4e2d\u4e8c\u7684\u9ed1\u5ba2\u68a6\u60f3\uff0c\u4f46\u73b0\u5b9e\u5374\u662f\u6210\u4e3a\u9ed1\u5ba2\u9053\u963b\u4e14\u957f\u3002","title":"\u7cfb\u7edf\u5b89\u5168"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_38","text":"UCB CS161: Computer Security \u662f\u4f2f\u514b\u5229\u7684\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u4f1a\u6db5\u76d6\u6808\u653b\u51fb\u3001\u5bc6\u7801\u5b66\u3001\u7f51\u7ad9\u5b89\u5168\u3001\u7f51\u7edc\u5b89\u5168\u7b49\u7b49\u5185\u5bb9\u3002","title":"\u7406\u8bba"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_39","text":"\u638c\u63e1\u8fd9\u4e9b\u7406\u8bba\u77e5\u8bc6\u4e4b\u540e\uff0c\u8fd8\u9700\u8981\u5728\u5b9e\u8df5\u4e2d\u57f9\u517b\u548c\u953b\u70bc\u8fd9\u4e9b\u201c\u9ed1\u5ba2\u7d20\u517b\u201d\u3002 CTF \u593a\u65d7\u8d5b \u662f\u4e00\u9879\u6bd4\u8f83\u70ed\u95e8\u7684\u7cfb\u7edf\u5b89\u5168\u6bd4\u8d5b\uff0c\u8d5b\u9898\u4e2d\u4f1a\u878d\u4f1a\u8d2f\u901a\u5730\u8003\u5bdf\u4f60\u5bf9\u8ba1\u7b97\u673a\u5404\u4e2a\u9886\u57df\u77e5\u8bc6\u7684\u7406\u89e3\u548c\u8fd0\u7528\u3002\u5317\u5927\u4eca\u5e74\u4e5f\u6210\u529f\u4e3e\u529e\u4e86 \u7b2c 0 \u5c4a\u548c\u7b2c 1 \u5c4a \uff0c\u9f13\u52b1\u5927\u5bb6\u540e\u671f\u8e0a\u8dc3\u53c2\u4e0e\uff0c\u5728\u5b9e\u8df5\u4e2d\u63d0\u9ad8\u81ea\u5df1\u3002\u4e0b\u9762\u5217\u4e3e\u4e00\u4e9b\u6211\u5e73\u65f6\u5b66\u4e60\uff08\u6478\u9c7c\uff09\u7528\u5230\u7684\u8d44\u6e90\uff1a CTF-wiki CTF-101 Hacker-101","title":"\u5b9e\u8df5"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_40","text":"\u8ba1\u7f51\u8457\u540d\u6559\u6750\u300a\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u300b\u7684\u914d\u5957\u5b66\u4e60\u8d44\u6e90 Computer Networking: A Top-Down Approach \u3002 \u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a TCP/IP \u534f\u8bae\u6808\u66f4\u80fd\u52a0\u6df1\u5bf9\u8ba1\u7b97\u673a\u7f51\u7edc\u7684\u7406\u89e3\u4e86\uff0c\u6240\u4ee5\u4e0d\u59a8\u8bd5\u8bd5 Stanford CS144: Computer Network \uff0c8 \u4e2a Project \u5e26\u4f60\u5b9e\u73b0\u6574\u4e2a\u534f\u8bae\u6808\u3002","title":"\u8ba1\u7b97\u673a\u7f51\u7edc"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_41","text":"\u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a\u5173\u7cfb\u578b\u6570\u636e\u5e93\u66f4\u80fd\u52a0\u6df1\u5bf9\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u7406\u89e3\u4e86\u3002","title":"\u6570\u636e\u5e93\u7cfb\u7edf"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#c_1","text":"CMU 15-445: Introduction to Database System","title":"C++\u7248"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#java","text":"UCB CS186: Introduction to Database System","title":"Java\u7248"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_42","text":"\u6ca1\u6709\u4ec0\u4e48\u80fd\u6bd4\u81ea\u5df1\u5199\u4e2a\u7f16\u8bd1\u5668\u66f4\u80fd\u52a0\u6df1\u5bf9\u7f16\u8bd1\u5668\u7684\u7406\u89e3\u4e86\u3002 Stanford CS143: Compilers","title":"\u7f16\u8bd1\u539f\u7406"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_43","text":"Stanford CS148 Games101 Games103 Games202","title":"\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#web","text":"\u7f51\u7ad9\u7684\u5f00\u53d1\u5f88\u5c11\u5728\u8ba1\u7b97\u673a\u7684\u57f9\u517b\u65b9\u6848\u91cc\u88ab\u91cd\u89c6\uff0c\u4f46\u5176\u5b9e\u638c\u63e1\u8fd9\u9879\u6280\u80fd\u8fd8\u662f\u597d\u5904\u591a\u591a\u7684\uff0c\u4f8b\u5982\u642d\u5efa\u81ea\u5df1\u7684\u4e2a\u4eba\u4e3b\u9875\uff0c\u6291\u6216\u662f\u7ed9\u81ea\u5df1\u7684\u8bfe\u7a0b\u9879\u76ee\u505a\u4e00\u4e2a\u7cbe\u5f69\u7684\u5c55\u793a\u7f51\u9875\u3002","title":"Web\u5f00\u53d1"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_44","text":"MIT web development course","title":"\u4e24\u5468\u901f\u6210\u7248"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_45","text":"Stanford CS142: Web Applications","title":"\u7cfb\u7edf\u5b66\u4e60\u7248"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_46","text":"UCB Data100: Principles and Techniques of Data Science","title":"\u6570\u636e\u79d1\u5b66"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_47","text":"","title":"\u4eba\u5de5\u667a\u80fd"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_48","text":"Harvard CS50\u2019s Introduction to AI with Python","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_49","text":"UCB CS188: Introduction to Artificial Intelligence","title":"\u4e13\u4e1a\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_50","text":"","title":"\u673a\u5668\u5b66\u4e60"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_51","text":"Coursera: Machine Learning","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_52","text":"Stanford CS229: Machine Learning UCB CS189: Introduction to Machine Learning","title":"\u4e13\u4e1a\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_53","text":"","title":"\u6df1\u5ea6\u5b66\u4e60"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_54","text":"Coursera: Deep Learning \u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60","title":"\u5165\u95e8\u8bfe"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_55","text":"Stanford CS231n: CNN for Visual Recognition","title":"\u8ba1\u7b97\u673a\u89c6\u89c9"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_56","text":"Stanford CS224n: Natural Language Processing","title":"\u81ea\u7136\u8bed\u8a00\u5904\u7406"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_57","text":"Stanford CS224w: Machine Learning with Graphs","title":"\u56fe\u795e\u7ecf\u7f51\u7edc"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_58","text":"UCB CS285: Deep Reinforcement Learning","title":"\u5f3a\u5316\u5b66\u4e60"},{"location":"CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/#_59","text":"\u6388\u4eba\u4ee5\u9c7c\u4e0d\u5982\u6388\u4eba\u4ee5\u6e14\u3002 \u4ee5\u4e0a\u7684\u8bfe\u7a0b\u89c4\u5212\u96be\u514d\u5e26\u6709\u5f3a\u70c8\u7684\u4e2a\u4eba\u504f\u597d\uff0c\u4e0d\u4e00\u5b9a\u9002\u5408\u6240\u6709\u4eba\uff0c\u66f4\u591a\u662f\u8d77\u5230\u629b\u7816\u5f15\u7389\u7684\u4f5c\u7528\u3002\u5982\u679c\u4f60\u60f3\u6311\u9009\u81ea\u5df1\u611f\u5174\u8da3\u7684\u65b9\u5411\u548c\u5185\u5bb9\u52a0\u4ee5\u5b66\u4e60\uff0c\u53ef\u4ee5\u53c2\u8003\u6211\u5728\u4e0b\u9762\u5217\u51fa\u6765\u7684\u8d44\u6e90\u3002 MIT OpenCourseWare : \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u7684\u8bfe\u7a0b\u8d44\u6e90\u5f00\u653e\u5171\u4eab\u9879\u76ee\uff0c\u6536\u5f55\u4e86\u6570\u4ee5\u5343\u8ba1\u7684\u5404\u79d1\u8bfe\u7a0b\u8d44\u6e90\uff0c\u5176\u4e2d\u8ba1\u7b97\u673a\u7c7b\u7684\u8bfe\u53f7\u662f 6.xxx\u3002 MIT CS Course List : \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002 UC Berkeley EECS Course Map : UC Berkeley \u7684 EECS \u57f9\u517b\u65b9\u6848\uff0c\u4ee5\u8bfe\u7a0b\u5730\u56fe\u7684\u65b9\u5f0f\u5c06\u5404\u95e8\u8bfe\u7a0b\u7684\u7c7b\u522b\u548c\u5148\u4fee\u5173\u7cfb\u4e00\u76ee\u4e86\u7136\u5730\u5448\u73b0\uff0c\u5176\u4e2d\u7edd\u5927\u591a\u6570\u8bfe\u7a0b\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 UC Berkeley CS Course List : UC Berkeley \u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002 Stanford CS Course List : \u65af\u5766\u798f\u7684 CS \u8bfe\u7a0b\u5217\u8868\u3002","title":"\u5b9a\u5236\u5c5e\u4e8e\u4f60\u7684\u8bfe\u7a0b\u5730\u56fe"},{"location":"%E5%90%8E%E8%AE%B0/","text":"\u540e\u8bb0 \u4ece\u6700\u521d\u7684\u60f3\u6cd5\u5f00\u59cb\uff0c\u5230\u65ad\u65ad\u7eed\u7eed\u5b8c\u6210\u8fd9\u672c\u4e66\uff0c\u518d\u5230\u6811\u6d1e\u7684\u70ed\u70c8\u53cd\u54cd\uff0c\u6211\u5f88\u6fc0\u52a8\uff0c\u4f46\u4e5f\u4e94\u5473\u6742\u9648\u3002\u539f\u6765\u5728\u5317\u5927\u8fd9\u4e2a\u56ed\u5b50\u91cc\uff0c\u4e5f\u6709\u90a3\u4e48\u591a\u4eba\uff0c\u5bf9\u81ea\u5df1\u7684\u672c\u79d1\u751f\u6daf\u5e76\u4e0d\u6ee1\u610f\u3002\u800c\u8fd9\u91cc\uff0c\u53ef\u662f\u56ca\u62ec\u4e86\u4e2d\u56fd\u975e\u5e38\u4f18\u79c0\u7684\u4e00\u5e2e\u5e74\u8f7b\u4eba\u3002\u6240\u4ee5\u95ee\u9898\u51fa\u5728\u54ea\u91cc\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u662f\u4e2a\u7c4d\u7c4d\u65e0\u540d\u7684\u672c\u79d1\u751f\u5440\uff0c\u53ea\u662f\u4e00\u4e2a\u5355\u7eaf\u7684\u6c42\u5b66\u8005\uff0c\u6211\u7684\u76ee\u6807\u53ea\u662f\u60f3\u5feb\u4e50\u5730\u3001\u81ea\u7531\u5730\u3001\u9ad8\u8d28\u91cf\u5730\u638c\u63e1\u90a3\u4e9b\u4e13\u4e1a\u77e5\u8bc6\uff0c\u6211\u60f3\uff0c\u6b63\u5728\u770b\u8fd9\u672c\u4e66\u7684\u5927\u591a\u6570\u672c\u79d1\u751f\u4e5f\u662f\u5982\u6b64\uff0c\u8c01\u60f3\u4ed8\u51fa\u65f6\u95f4\u4f46\u5374\u6536\u6548\u751a\u5fae\u5462\uff1f\u53c8\u662f\u8c01\u8feb\u4f7f\u5927\u5bb6\u5e26\u7740\u75db\u82e6\u53bb\u5e94\u4ed8\u5462\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u5199\u8fd9\u672c\u4e66\u7edd\u4e0d\u662f\u4e3a\u4e86\u9f13\u52b1\u5927\u5bb6\u7fd8\u8bfe\u81ea\u5b66\uff0c\u8bd5\u95ee\u8c01\u4e0d\u60f3\u5728\u8bfe\u5802\u4e0a\u548c\u90a3\u4e48\u591a\u4f18\u79c0\u7684\u540c\u5b66\u6d4e\u6d4e\u4e00\u5802\uff0c\u70ed\u70c8\u8ba8\u8bba\u5462\uff1f\u8c01\u4e0d\u60f3\u9047\u5230\u95ee\u9898\u76f4\u63a5\u627e\u8001\u5e08\u7b54\u7591\u89e3\u60d1\u5462\uff1f\u8c01\u4e0d\u60f3\u8f9b\u82e6\u5b66\u4e60\u7684\u6210\u679c\u53ef\u4ee5\u76f4\u63a5\u5316\u4f5c\u5b66\u6821\u627f\u8ba4\u7684\u5b66\u5206\u7ee9\u70b9\u5462\uff1f\u53ef\u5982\u679c\u4e00\u4e2a\u5162\u5162\u4e1a\u4e1a\u3001\u6309\u65f6\u5230\u5802\u7684\u5b66\u751f\u6536\u83b7\u7684\u5374\u662f\u75db\u82e6\uff0c\u800c\u90a3\u4e2a\u4e00\u5b66\u671f\u53ea\u6709\u8003\u8bd5\u4f1a\u51fa\u5e2d\u7684\u5b66\u751f\u5374\u5b66\u5f97\u81ea\u5f97\u5176\u4e50\uff0c\u8fd9\u516c\u5e73\u5417\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u662f\u4e0d\u7518\uff0c\u4e0d\u7518\u5fc3\u8fd9\u4e9b\u901a\u8fc7\u9ad8\u8003\u6218\u80dc\u65e0\u6570\u4eba\u8fdb\u5165\u9ad8\u6821\u7684\u5b66\u5b50\u672c\u53ef\u4ee5\u6536\u83b7\u4e00\u4e2a\u66f4\u5feb\u4e50\u7684\u672c\u79d1\u751f\u6daf\uff0c\u4f46\u73b0\u5b9e\u5374\u7559\u7ed9\u4e86\u4ed6\u4eec\u9057\u61be\u3002\u6211\u53cd\u95ee\u81ea\u5df1\uff0c\u672c\u79d1\u6559\u80b2\u7a76\u7adf\u5e94\u8be5\u5e26\u7ed9\u6211\u4eec\u4ec0\u4e48\u5462\uff1f\u662f\u5b66\u5b8c\u6240\u6709\u8fd9\u4e9b\u8bfe\u7a0b\u5417\uff1f\u5012\u4e5f\u672a\u5fc5\uff0c\u5b83\u4e5f\u8bb8\u53ea\u9002\u5408\u6211\u8fd9\u79cdnerd\u3002\u4f46\u6211\u89c9\u5f97\uff0c\u672c\u79d1\u6559\u80b2\u81f3\u5c11\u5f97\u5c55\u73b0\u5b83\u5e94\u6709\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u5206\u4eab\u77e5\u8bc6\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u4ee5\u4eba\u4e3a\u672c\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u6ce8\u91cd\u5b66\u751f\u4f53\u9a8c\u7684\u8bda\u610f\u3002\u5b83\u81f3\u5c11\u4e0d\u5e94\u8be5\u662f\u4e00\u79cd\u6076\u610f\uff0c\u4e00\u79cd\u62fc\u6bd4\u77e5\u8bc6\u7684\u6076\u610f\uff0c\u4e00\u79cd\u80dc\u8005\u4e3a\u738b\u7684\u6076\u610f\uff0c\u4e00\u79cd\u8ba9\u4eba\u5b66\u65e0\u6240\u5f97\u7684\u6076\u610f\u3002\u4f46\u8fd9\u4e00\u5207\u80fd\u6539\u53d8\u5417\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u77e5\u9053\u6211\u505a\u4e86\u5e94\u8be5\u505a\u7684\u4e8b\u60c5\uff0c\u5b66\u751f\u4eec\u4f1a\u7528\u811a\u6295\u7968\uff0c\u6811\u6d1e\u7684\u5173\u6ce8\u91cf\u548c\u56de\u5e16\u6570\u8bc1\u660e\u4e86\u8fd9\u6837\u4e00\u4efd\u8d44\u6599\u662f\u6709\u4ef7\u503c\u7684\uff0c\u4e5f\u9053\u51fa\u4e86\u56fd\u5185CS\u672c\u79d1\u6559\u80b2\u548c\u56fd\u5916\u7684\u5dee\u8ddd\u3002\u4e5f\u8bb8\u8fd9\u6837\u7684\u6539\u53d8\u662f\u5fae\u4e4e\u5176\u5fae\u7684\uff0c\u4f46\u522b\u5fd8\u4e86\u6211\u53ea\u662f\u4e00\u4e2a\u7c4d\u7c4d\u65e0\u540d\u7684\u672c\u79d1\u751f\uff0c\u662f\u5317\u5927\u4fe1\u79d1\u4e00\u5343\u591a\u540d\u672c\u79d1\u751f\u4e2d\u7684\u666e\u901a\u4e00\u5458\uff0c\u662f\u4e2d\u56fd\u51e0\u767e\u4e07\u5728\u8bfb\u672c\u79d1\u751f\u4e2d\u7684\u4e00\u5206\u5b50\uff0c\u5982\u679c\u6709\u66f4\u591a\u7684\u4eba\u7ad9\u51fa\u6765\uff0c\u6bcf\u4e2a\u4eba\u505a\u4e00\u70b9\u70b9\uff0c\u4e5f\u8bb8\u662f\u5206\u4eab\u4e00\u4e2a\u5e16\u5b50\uff0c\u4e5f\u8bb8\u662f\u5f53\u4e00\u95e8\u8bfe\u7684\u52a9\u6559\uff0c\u4e5f\u8bb8\u662f\u7cbe\u5fc3\u8bbe\u8ba1\u4e00\u95e8\u8bfe\u7684lab\uff0c\u66f4\u6216\u8bb8\u662f\u5c06\u6765\u83b7\u5f97\u6559\u804c\u4e4b\u540e\u5f00\u8bbe\u4e00\u95e8\u9ad8\u8d28\u91cf\u7684\u8bfe\u7a0b\uff0c\u51fa\u7248\u4e00\u672c\u7ecf\u5178\u7684\u6559\u6750\u3002\u672c\u79d1\u6559\u80b2\u771f\u7684\u6709\u4ec0\u4e48\u6280\u672f\u58c1\u5792\u5417\uff1f\u6211\u770b\u672a\u5fc5\uff0c\u6559\u80b2\u9760\u7684\u662f\u8bda\u610f\uff0c\u9760\u7684\u662f\u80b2\u4eba\u4e4b\u5fc3\u3002 \u4eca\u5929\u662f2021\u5e7412\u670812\u65e5\uff0c\u6211\u671f\u5f85\u5728\u4e0d\u4e45\u7684\u5c06\u6765\u8fd9\u4e2a\u5e16\u5b50\u4f1a\u88ab\u9057\u5fd8\uff0c\u5927\u5bb6\u53ef\u4ee5\u6ee1\u5fc3\u6b22\u559c\u5730\u9009\u7740\u81ea\u5df1\u57f9\u517b\u65b9\u6848\u4e0a\u7684\u8bfe\u7a0b\uff0c\u505a\u7740\u5b66\u6821\u81ea\u884c\u8bbe\u8ba1\u7684\u5404\u7c7b\u7f16\u7a0b\u5b9e\u9a8c\uff0c\u8bfe\u5802\u6ca1\u6709\u7b7e\u5230\u4e5f\u80fd\u6d4e\u6d4e\u4e00\u5802\uff0c\u5b66\u751f\u8e0a\u8dc3\u5730\u53d1\u8a00\u4e92\u52a8\uff0c\u5927\u5bb6\u7684\u6536\u83b7\u53ef\u4ee5\u548c\u52aa\u529b\u6210\u6b63\u6bd4\uff0c\u90a3\u4e9b\u66fe\u7ecf\u7684\u9057\u61be\u548c\u75db\u82e6\u53ef\u4ee5\u6c38\u8fdc\u6210\u4e3a\u5386\u53f2\u3002\u6211\u771f\u7684\u5f88\u671f\u5f85\u90a3\u4e00\u5929\uff0c\u771f\u7684\u771f\u7684\u771f\u7684\u5f88\u671f\u5f85\u3002 PKUFlyingPig 2021\u5e7412\u670812\u65e5\u5199\u4e8e\u71d5\u56ed","title":"\u540e\u8bb0"},{"location":"%E5%90%8E%E8%AE%B0/#_1","text":"\u4ece\u6700\u521d\u7684\u60f3\u6cd5\u5f00\u59cb\uff0c\u5230\u65ad\u65ad\u7eed\u7eed\u5b8c\u6210\u8fd9\u672c\u4e66\uff0c\u518d\u5230\u6811\u6d1e\u7684\u70ed\u70c8\u53cd\u54cd\uff0c\u6211\u5f88\u6fc0\u52a8\uff0c\u4f46\u4e5f\u4e94\u5473\u6742\u9648\u3002\u539f\u6765\u5728\u5317\u5927\u8fd9\u4e2a\u56ed\u5b50\u91cc\uff0c\u4e5f\u6709\u90a3\u4e48\u591a\u4eba\uff0c\u5bf9\u81ea\u5df1\u7684\u672c\u79d1\u751f\u6daf\u5e76\u4e0d\u6ee1\u610f\u3002\u800c\u8fd9\u91cc\uff0c\u53ef\u662f\u56ca\u62ec\u4e86\u4e2d\u56fd\u975e\u5e38\u4f18\u79c0\u7684\u4e00\u5e2e\u5e74\u8f7b\u4eba\u3002\u6240\u4ee5\u95ee\u9898\u51fa\u5728\u54ea\u91cc\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u662f\u4e2a\u7c4d\u7c4d\u65e0\u540d\u7684\u672c\u79d1\u751f\u5440\uff0c\u53ea\u662f\u4e00\u4e2a\u5355\u7eaf\u7684\u6c42\u5b66\u8005\uff0c\u6211\u7684\u76ee\u6807\u53ea\u662f\u60f3\u5feb\u4e50\u5730\u3001\u81ea\u7531\u5730\u3001\u9ad8\u8d28\u91cf\u5730\u638c\u63e1\u90a3\u4e9b\u4e13\u4e1a\u77e5\u8bc6\uff0c\u6211\u60f3\uff0c\u6b63\u5728\u770b\u8fd9\u672c\u4e66\u7684\u5927\u591a\u6570\u672c\u79d1\u751f\u4e5f\u662f\u5982\u6b64\uff0c\u8c01\u60f3\u4ed8\u51fa\u65f6\u95f4\u4f46\u5374\u6536\u6548\u751a\u5fae\u5462\uff1f\u53c8\u662f\u8c01\u8feb\u4f7f\u5927\u5bb6\u5e26\u7740\u75db\u82e6\u53bb\u5e94\u4ed8\u5462\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u5199\u8fd9\u672c\u4e66\u7edd\u4e0d\u662f\u4e3a\u4e86\u9f13\u52b1\u5927\u5bb6\u7fd8\u8bfe\u81ea\u5b66\uff0c\u8bd5\u95ee\u8c01\u4e0d\u60f3\u5728\u8bfe\u5802\u4e0a\u548c\u90a3\u4e48\u591a\u4f18\u79c0\u7684\u540c\u5b66\u6d4e\u6d4e\u4e00\u5802\uff0c\u70ed\u70c8\u8ba8\u8bba\u5462\uff1f\u8c01\u4e0d\u60f3\u9047\u5230\u95ee\u9898\u76f4\u63a5\u627e\u8001\u5e08\u7b54\u7591\u89e3\u60d1\u5462\uff1f\u8c01\u4e0d\u60f3\u8f9b\u82e6\u5b66\u4e60\u7684\u6210\u679c\u53ef\u4ee5\u76f4\u63a5\u5316\u4f5c\u5b66\u6821\u627f\u8ba4\u7684\u5b66\u5206\u7ee9\u70b9\u5462\uff1f\u53ef\u5982\u679c\u4e00\u4e2a\u5162\u5162\u4e1a\u4e1a\u3001\u6309\u65f6\u5230\u5802\u7684\u5b66\u751f\u6536\u83b7\u7684\u5374\u662f\u75db\u82e6\uff0c\u800c\u90a3\u4e2a\u4e00\u5b66\u671f\u53ea\u6709\u8003\u8bd5\u4f1a\u51fa\u5e2d\u7684\u5b66\u751f\u5374\u5b66\u5f97\u81ea\u5f97\u5176\u4e50\uff0c\u8fd9\u516c\u5e73\u5417\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u662f\u4e0d\u7518\uff0c\u4e0d\u7518\u5fc3\u8fd9\u4e9b\u901a\u8fc7\u9ad8\u8003\u6218\u80dc\u65e0\u6570\u4eba\u8fdb\u5165\u9ad8\u6821\u7684\u5b66\u5b50\u672c\u53ef\u4ee5\u6536\u83b7\u4e00\u4e2a\u66f4\u5feb\u4e50\u7684\u672c\u79d1\u751f\u6daf\uff0c\u4f46\u73b0\u5b9e\u5374\u7559\u7ed9\u4e86\u4ed6\u4eec\u9057\u61be\u3002\u6211\u53cd\u95ee\u81ea\u5df1\uff0c\u672c\u79d1\u6559\u80b2\u7a76\u7adf\u5e94\u8be5\u5e26\u7ed9\u6211\u4eec\u4ec0\u4e48\u5462\uff1f\u662f\u5b66\u5b8c\u6240\u6709\u8fd9\u4e9b\u8bfe\u7a0b\u5417\uff1f\u5012\u4e5f\u672a\u5fc5\uff0c\u5b83\u4e5f\u8bb8\u53ea\u9002\u5408\u6211\u8fd9\u79cdnerd\u3002\u4f46\u6211\u89c9\u5f97\uff0c\u672c\u79d1\u6559\u80b2\u81f3\u5c11\u5f97\u5c55\u73b0\u5b83\u5e94\u6709\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u5206\u4eab\u77e5\u8bc6\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u4ee5\u4eba\u4e3a\u672c\u7684\u8bda\u610f\uff0c\u4e00\u79cd\u6ce8\u91cd\u5b66\u751f\u4f53\u9a8c\u7684\u8bda\u610f\u3002\u5b83\u81f3\u5c11\u4e0d\u5e94\u8be5\u662f\u4e00\u79cd\u6076\u610f\uff0c\u4e00\u79cd\u62fc\u6bd4\u77e5\u8bc6\u7684\u6076\u610f\uff0c\u4e00\u79cd\u80dc\u8005\u4e3a\u738b\u7684\u6076\u610f\uff0c\u4e00\u79cd\u8ba9\u4eba\u5b66\u65e0\u6240\u5f97\u7684\u6076\u610f\u3002\u4f46\u8fd9\u4e00\u5207\u80fd\u6539\u53d8\u5417\uff1f\u6211\u4e0d\u77e5\u9053\u3002 \u6211\u53ea\u77e5\u9053\u6211\u505a\u4e86\u5e94\u8be5\u505a\u7684\u4e8b\u60c5\uff0c\u5b66\u751f\u4eec\u4f1a\u7528\u811a\u6295\u7968\uff0c\u6811\u6d1e\u7684\u5173\u6ce8\u91cf\u548c\u56de\u5e16\u6570\u8bc1\u660e\u4e86\u8fd9\u6837\u4e00\u4efd\u8d44\u6599\u662f\u6709\u4ef7\u503c\u7684\uff0c\u4e5f\u9053\u51fa\u4e86\u56fd\u5185CS\u672c\u79d1\u6559\u80b2\u548c\u56fd\u5916\u7684\u5dee\u8ddd\u3002\u4e5f\u8bb8\u8fd9\u6837\u7684\u6539\u53d8\u662f\u5fae\u4e4e\u5176\u5fae\u7684\uff0c\u4f46\u522b\u5fd8\u4e86\u6211\u53ea\u662f\u4e00\u4e2a\u7c4d\u7c4d\u65e0\u540d\u7684\u672c\u79d1\u751f\uff0c\u662f\u5317\u5927\u4fe1\u79d1\u4e00\u5343\u591a\u540d\u672c\u79d1\u751f\u4e2d\u7684\u666e\u901a\u4e00\u5458\uff0c\u662f\u4e2d\u56fd\u51e0\u767e\u4e07\u5728\u8bfb\u672c\u79d1\u751f\u4e2d\u7684\u4e00\u5206\u5b50\uff0c\u5982\u679c\u6709\u66f4\u591a\u7684\u4eba\u7ad9\u51fa\u6765\uff0c\u6bcf\u4e2a\u4eba\u505a\u4e00\u70b9\u70b9\uff0c\u4e5f\u8bb8\u662f\u5206\u4eab\u4e00\u4e2a\u5e16\u5b50\uff0c\u4e5f\u8bb8\u662f\u5f53\u4e00\u95e8\u8bfe\u7684\u52a9\u6559\uff0c\u4e5f\u8bb8\u662f\u7cbe\u5fc3\u8bbe\u8ba1\u4e00\u95e8\u8bfe\u7684lab\uff0c\u66f4\u6216\u8bb8\u662f\u5c06\u6765\u83b7\u5f97\u6559\u804c\u4e4b\u540e\u5f00\u8bbe\u4e00\u95e8\u9ad8\u8d28\u91cf\u7684\u8bfe\u7a0b\uff0c\u51fa\u7248\u4e00\u672c\u7ecf\u5178\u7684\u6559\u6750\u3002\u672c\u79d1\u6559\u80b2\u771f\u7684\u6709\u4ec0\u4e48\u6280\u672f\u58c1\u5792\u5417\uff1f\u6211\u770b\u672a\u5fc5\uff0c\u6559\u80b2\u9760\u7684\u662f\u8bda\u610f\uff0c\u9760\u7684\u662f\u80b2\u4eba\u4e4b\u5fc3\u3002 \u4eca\u5929\u662f2021\u5e7412\u670812\u65e5\uff0c\u6211\u671f\u5f85\u5728\u4e0d\u4e45\u7684\u5c06\u6765\u8fd9\u4e2a\u5e16\u5b50\u4f1a\u88ab\u9057\u5fd8\uff0c\u5927\u5bb6\u53ef\u4ee5\u6ee1\u5fc3\u6b22\u559c\u5730\u9009\u7740\u81ea\u5df1\u57f9\u517b\u65b9\u6848\u4e0a\u7684\u8bfe\u7a0b\uff0c\u505a\u7740\u5b66\u6821\u81ea\u884c\u8bbe\u8ba1\u7684\u5404\u7c7b\u7f16\u7a0b\u5b9e\u9a8c\uff0c\u8bfe\u5802\u6ca1\u6709\u7b7e\u5230\u4e5f\u80fd\u6d4e\u6d4e\u4e00\u5802\uff0c\u5b66\u751f\u8e0a\u8dc3\u5730\u53d1\u8a00\u4e92\u52a8\uff0c\u5927\u5bb6\u7684\u6536\u83b7\u53ef\u4ee5\u548c\u52aa\u529b\u6210\u6b63\u6bd4\uff0c\u90a3\u4e9b\u66fe\u7ecf\u7684\u9057\u61be\u548c\u75db\u82e6\u53ef\u4ee5\u6c38\u8fdc\u6210\u4e3a\u5386\u53f2\u3002\u6211\u771f\u7684\u5f88\u671f\u5f85\u90a3\u4e00\u5929\uff0c\u771f\u7684\u771f\u7684\u771f\u7684\u5f88\u671f\u5f85\u3002 PKUFlyingPig 2021\u5e7412\u670812\u65e5\u5199\u4e8e\u71d5\u56ed","title":"\u540e\u8bb0"},{"location":"%E5%9F%B9%E5%85%BB%E6%96%B9%E6%A1%88Pro/","text":"under construction.","title":"\u57f9\u517b\u65b9\u6848Pro"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/","text":"\u597d\u4e66\u63a8\u8350 \u7531\u4e8e\u7248\u6743\u539f\u56e0\uff0c\u4e0b\u9762\u5217\u4e3e\u7684\u56fe\u4e66\u4e2d\u9664\u4e86\u5f00\u6e90\u8d44\u6e90\u63d0\u4f9b\u4e86\u94fe\u63a5\uff0c\u5176\u4ed6\u7684\u8d44\u6e90\u8bf7\u5927\u5bb6\u81ea\u884c\u901a\u8fc7 libgen \u6216 z-lib \u67e5\u627e\u3002 \u8d44\u6e90\u6c47\u603b Free Programming Books : \u5f00\u6e90\u7f16\u7a0b\u4e66\u7c4d\u8d44\u6e90\u6c47\u603b CS Textbook Recommendations : \u8ba1\u7b97\u673a\u79d1\u5b66\u65b9\u5411\u63a8\u8350\u6559\u6750\u5217\u8868 C Book Guide and List : C\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 C++ Book Guide and List : C++\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 Python Book Guide and List : Python\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 \u7cfb\u7edf\u5165\u95e8 Computer Systems: A Programmer's Perspective [ \u8c46\u74e3 ] Principles of Computer System Design: An Introduction [ \u8c46\u74e3 ] \u64cd\u4f5c\u7cfb\u7edf \u73b0\u4ee3\u64cd\u4f5c\u7cfb\u7edf: \u539f\u7406\u4e0e\u5b9e\u73b0 [ \u8c46\u74e3 ] Operating Systems: Three Easy Pieces [ \u8c46\u74e3 ] Modern Operating Systems [ \u8c46\u74e3 ] Operating Systems: Principles and Practice [ \u8c46\u74e3 ] \u8ba1\u7b97\u673a\u7f51\u7edc Computer Networks: A Systems Approach [ \u8c46\u74e3 ] Computer Networking: A Top-Down Approach [ \u8c46\u74e3 ] \u5206\u5e03\u5f0f\u7cfb\u7edf Patterns of Distributed System (Blog) Distributed Systems for Fun and Profit (Blog) Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems [ \u8c46\u74e3 ] \u6570\u636e\u5e93\u7cfb\u7edf Architecture of a Database System [ \u8c46\u74e3 ] Readings in Database Systems [ \u8c46\u74e3 ] Database System Concepts [ \u8c46\u74e3 ] \u7f16\u8bd1\u539f\u7406 Engineering a Compiler [ \u8c46\u74e3 ] Compilers: Principles, Techniques, and Tools [ \u8c46\u74e3 ] \u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00 \u8ba1\u7b97\u673a\u7a0b\u5e8f\u7684\u6784\u9020\u548c\u89e3\u91ca [ \u8c46\u74e3 ] Essentials of Programming Languages [ \u8c46\u74e3 ] Practical Foundations for Programming Languages [ \u8c46\u74e3 ] Software Foundations [ \u8c46\u74e3 ] [ \u5317\u5927\u76f8\u5173\u8bfe\u7a0b ] Types and Programming Languages [ \u8c46\u74e3 ] [ \u5317\u5927\u76f8\u5173\u8bfe\u7a0b ] \u4f53\u7cfb\u7ed3\u6784 \u8d85\u6807\u91cf\u5904\u7406\u5668\u8bbe\u8ba1: Superscalar RISC Processor Design [ \u8c46\u74e3 ] Computer Organization and Design RISC-V Edition [ \u8c46\u74e3 ] Computer Organization and Design: The Hardware/Software Interface [ \u8c46\u74e3 ] Computer Architecture: A Quantitative Approach [ \u8c46\u74e3 ] \u7406\u8bba\u8ba1\u7b97\u673a\u79d1\u5b66 Introduction to the Theory of Computation [ \u8c46\u74e3 ] \u5bc6\u7801\u5b66 Cryptography Engineering: Design Principles and Practical Applications [ \u8c46\u74e3 ] Introduction to Modern Cryptography [ \u8c46\u74e3 ] \u9006\u5411\u5de5\u7a0b \u9006\u5411\u5de5\u7a0b\u6838\u5fc3\u539f\u7406 [ \u8c46\u74e3 ] \u52a0\u5bc6\u4e0e\u89e3\u5bc6 [ \u8c46\u74e3 ] \u8ba1\u7b97\u673a\u56fe\u5f62\u5b66 Monte Carlo theory, methods and examples Advanced Global Illumination [ \u8c46\u74e3 ] Fundamentals of Computer Graphics [ \u8c46\u74e3 ] Fluid Simulation for Computer Graphics [ \u8c46\u74e3 ] Physically Based Rendering: From Theory To Implementation [ \u8c46\u74e3 ] Real-Time Rendering [ \u8c46\u74e3 ] \u6e38\u620f\u5f15\u64ce \u6e38\u620f\u7f16\u7a0b\u6a21\u5f0f: Game Programming Patterns [ \u8c46\u74e3 ] \u5b9e\u65f6\u78b0\u649e\u68c0\u6d4b\u7b97\u6cd5\u6280\u672f [ \u8c46\u74e3 ] Game AI Pro Series [ \u8c46\u74e3 ] Artificial Intelligence for Games [ \u8c46\u74e3 ] Game Engine Architecture [ \u8c46\u74e3 ] Game Programming Gems Series [ \u8c46\u74e3 ] \u8f6f\u4ef6\u5de5\u7a0b Software Engineering at Google [ \u8c46\u74e3 ] \u8bbe\u8ba1\u6a21\u5f0f \u8bbe\u8ba1\u6a21\u5f0f: \u53ef\u590d\u7528\u9762\u5411\u5bf9\u8c61\u8f6f\u4ef6\u7684\u57fa\u7840 [ \u8c46\u74e3 ] \u5927\u8bdd\u8bbe\u8ba1\u6a21\u5f0f [ \u8c46\u74e3 ] Head First \u8bbe\u8ba1\u6a21\u5f0f [ \u8c46\u74e3 ] \u6df1\u5ea6\u5b66\u4e60 \u52a8\u624b\u5b66\u6df1\u5ea6\u5b66\u4e60 [ \u8c46\u74e3 ] \u795e\u7ecf\u7f51\u7edc\u4e0e\u6df1\u5ea6\u5b66\u4e60 [ \u8c46\u74e3 ] \u6df1\u5ea6\u5b66\u4e60\u5165\u95e8 [ \u8c46\u74e3 ] \u7b80\u5355\u7c97\u66b4 TensorFlow 2 (Tutorial) Speech and Language Processing [ \u8c46\u74e3 ] \u8ba1\u7b97\u673a\u89c6\u89c9 Multiple View Geometry in Computer Vision [ \u8c46\u74e3 ] \u673a\u5668\u4eba Probabilistic Robotics [ \u8c46\u74e3 ] \u9762\u8bd5 \u5251\u6307 Offer\uff1a\u540d\u4f01\u9762\u8bd5\u5b98\u7cbe\u8bb2\u5178\u578b\u7f16\u7a0b\u9898 [ \u8c46\u74e3 ] Cracking The Coding Interview [ \u8c46\u74e3 ]","title":"\u597d\u4e66\u63a8\u8350"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_1","text":"\u7531\u4e8e\u7248\u6743\u539f\u56e0\uff0c\u4e0b\u9762\u5217\u4e3e\u7684\u56fe\u4e66\u4e2d\u9664\u4e86\u5f00\u6e90\u8d44\u6e90\u63d0\u4f9b\u4e86\u94fe\u63a5\uff0c\u5176\u4ed6\u7684\u8d44\u6e90\u8bf7\u5927\u5bb6\u81ea\u884c\u901a\u8fc7 libgen \u6216 z-lib \u67e5\u627e\u3002","title":"\u597d\u4e66\u63a8\u8350"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_2","text":"Free Programming Books : \u5f00\u6e90\u7f16\u7a0b\u4e66\u7c4d\u8d44\u6e90\u6c47\u603b CS Textbook Recommendations : \u8ba1\u7b97\u673a\u79d1\u5b66\u65b9\u5411\u63a8\u8350\u6559\u6750\u5217\u8868 C Book Guide and List : C\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 C++ Book Guide and List : C++\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868 Python Book Guide and List : Python\u8bed\u8a00\u76f8\u5173\u7684\u7f16\u7a0b\u4e66\u7c4d\u63a8\u8350\u5217\u8868","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_3","text":"Computer Systems: A Programmer's Perspective [ \u8c46\u74e3 ] Principles of Computer System Design: An Introduction [ \u8c46\u74e3 ]","title":"\u7cfb\u7edf\u5165\u95e8"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_4","text":"\u73b0\u4ee3\u64cd\u4f5c\u7cfb\u7edf: \u539f\u7406\u4e0e\u5b9e\u73b0 [ \u8c46\u74e3 ] Operating Systems: Three Easy Pieces [ \u8c46\u74e3 ] Modern Operating Systems [ \u8c46\u74e3 ] Operating Systems: Principles and Practice [ \u8c46\u74e3 ]","title":"\u64cd\u4f5c\u7cfb\u7edf"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_5","text":"Computer Networks: A Systems Approach [ \u8c46\u74e3 ] Computer Networking: A Top-Down Approach [ \u8c46\u74e3 ]","title":"\u8ba1\u7b97\u673a\u7f51\u7edc"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_6","text":"Patterns of Distributed System (Blog) Distributed Systems for Fun and Profit (Blog) Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems [ \u8c46\u74e3 ]","title":"\u5206\u5e03\u5f0f\u7cfb\u7edf"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_7","text":"Architecture of a Database System [ \u8c46\u74e3 ] Readings in Database Systems [ \u8c46\u74e3 ] Database System Concepts [ \u8c46\u74e3 ]","title":"\u6570\u636e\u5e93\u7cfb\u7edf"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_8","text":"Engineering a Compiler [ \u8c46\u74e3 ] Compilers: Principles, Techniques, and Tools [ \u8c46\u74e3 ]","title":"\u7f16\u8bd1\u539f\u7406"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_9","text":"\u8ba1\u7b97\u673a\u7a0b\u5e8f\u7684\u6784\u9020\u548c\u89e3\u91ca [ \u8c46\u74e3 ] Essentials of Programming Languages [ \u8c46\u74e3 ] Practical Foundations for Programming Languages [ \u8c46\u74e3 ] Software Foundations [ \u8c46\u74e3 ] [ \u5317\u5927\u76f8\u5173\u8bfe\u7a0b ] Types and Programming Languages [ \u8c46\u74e3 ] [ \u5317\u5927\u76f8\u5173\u8bfe\u7a0b ]","title":"\u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_10","text":"\u8d85\u6807\u91cf\u5904\u7406\u5668\u8bbe\u8ba1: Superscalar RISC Processor Design [ \u8c46\u74e3 ] Computer Organization and Design RISC-V Edition [ \u8c46\u74e3 ] Computer Organization and Design: The Hardware/Software Interface [ \u8c46\u74e3 ] Computer Architecture: A Quantitative Approach [ \u8c46\u74e3 ]","title":"\u4f53\u7cfb\u7ed3\u6784"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_11","text":"Introduction to the Theory of Computation [ \u8c46\u74e3 ]","title":"\u7406\u8bba\u8ba1\u7b97\u673a\u79d1\u5b66"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_12","text":"Cryptography Engineering: Design Principles and Practical Applications [ \u8c46\u74e3 ] Introduction to Modern Cryptography [ \u8c46\u74e3 ]","title":"\u5bc6\u7801\u5b66"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_13","text":"\u9006\u5411\u5de5\u7a0b\u6838\u5fc3\u539f\u7406 [ \u8c46\u74e3 ] \u52a0\u5bc6\u4e0e\u89e3\u5bc6 [ \u8c46\u74e3 ]","title":"\u9006\u5411\u5de5\u7a0b"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_14","text":"Monte Carlo theory, methods and examples Advanced Global Illumination [ \u8c46\u74e3 ] Fundamentals of Computer Graphics [ \u8c46\u74e3 ] Fluid Simulation for Computer Graphics [ \u8c46\u74e3 ] Physically Based Rendering: From Theory To Implementation [ \u8c46\u74e3 ] Real-Time Rendering [ \u8c46\u74e3 ]","title":"\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_15","text":"\u6e38\u620f\u7f16\u7a0b\u6a21\u5f0f: Game Programming Patterns [ \u8c46\u74e3 ] \u5b9e\u65f6\u78b0\u649e\u68c0\u6d4b\u7b97\u6cd5\u6280\u672f [ \u8c46\u74e3 ] Game AI Pro Series [ \u8c46\u74e3 ] Artificial Intelligence for Games [ \u8c46\u74e3 ] Game Engine Architecture [ \u8c46\u74e3 ] Game Programming Gems Series [ \u8c46\u74e3 ]","title":"\u6e38\u620f\u5f15\u64ce"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_16","text":"Software Engineering at Google [ \u8c46\u74e3 ]","title":"\u8f6f\u4ef6\u5de5\u7a0b"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_17","text":"\u8bbe\u8ba1\u6a21\u5f0f: \u53ef\u590d\u7528\u9762\u5411\u5bf9\u8c61\u8f6f\u4ef6\u7684\u57fa\u7840 [ \u8c46\u74e3 ] \u5927\u8bdd\u8bbe\u8ba1\u6a21\u5f0f [ \u8c46\u74e3 ] Head First \u8bbe\u8ba1\u6a21\u5f0f [ \u8c46\u74e3 ]","title":"\u8bbe\u8ba1\u6a21\u5f0f"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_18","text":"\u52a8\u624b\u5b66\u6df1\u5ea6\u5b66\u4e60 [ \u8c46\u74e3 ] \u795e\u7ecf\u7f51\u7edc\u4e0e\u6df1\u5ea6\u5b66\u4e60 [ \u8c46\u74e3 ] \u6df1\u5ea6\u5b66\u4e60\u5165\u95e8 [ \u8c46\u74e3 ] \u7b80\u5355\u7c97\u66b4 TensorFlow 2 (Tutorial) Speech and Language Processing [ \u8c46\u74e3 ]","title":"\u6df1\u5ea6\u5b66\u4e60"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_19","text":"Multiple View Geometry in Computer Vision [ \u8c46\u74e3 ]","title":"\u8ba1\u7b97\u673a\u89c6\u89c9"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_20","text":"Probabilistic Robotics [ \u8c46\u74e3 ]","title":"\u673a\u5668\u4eba"},{"location":"%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/#_21","text":"\u5251\u6307 Offer\uff1a\u540d\u4f01\u9762\u8bd5\u5b98\u7cbe\u8bb2\u5178\u578b\u7f16\u7a0b\u9898 [ \u8c46\u74e3 ] Cracking The Coding Interview [ \u8c46\u74e3 ]","title":"\u9762\u8bd5"},{"location":"Web%E5%BC%80%E5%8F%91/CS142/","text":"Stanford CS142: Web Applications \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6709\u4e00\u5b9a\u7684\u7f16\u7a0b\u7ecf\u9a8c \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u65af\u5766\u798f\u7684 Web \u5e94\u7528\u5f00\u53d1\u8bfe\u7a0b\uff0c\u5185\u5bb9\u8986\u76d6\u4e86 HTML, CSS, JavaScript, ReactJs, NodeJS, ExpressJS, Web\u5b89\u5168\u7b49\u7b49\u30028 \u4e2a Project \u4f1a\u8ba9\u4f60\u5728\u5b9e\u6218\u4e2d\u953b\u70bc\u81ea\u5df1\u7684 Web \u5f00\u53d1\u6280\u5de7\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://web.stanford.edu/class/cs142/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://web.stanford.edu/class/cs142/lectures.html \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://web.stanford.edu/class/cs142/projects.html","title":"Stanford CS142: Web Applications"},{"location":"Web%E5%BC%80%E5%8F%91/CS142/#stanford-cs142-web-applications","text":"","title":"Stanford CS142: Web Applications"},{"location":"Web%E5%BC%80%E5%8F%91/CS142/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6709\u4e00\u5b9a\u7684\u7f16\u7a0b\u7ecf\u9a8c \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u65af\u5766\u798f\u7684 Web \u5e94\u7528\u5f00\u53d1\u8bfe\u7a0b\uff0c\u5185\u5bb9\u8986\u76d6\u4e86 HTML, CSS, JavaScript, ReactJs, NodeJS, ExpressJS, Web\u5b89\u5168\u7b49\u7b49\u30028 \u4e2a Project \u4f1a\u8ba9\u4f60\u5728\u5b9e\u6218\u4e2d\u953b\u70bc\u81ea\u5df1\u7684 Web \u5f00\u53d1\u6280\u5de7\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"Web%E5%BC%80%E5%8F%91/CS142/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://web.stanford.edu/class/cs142/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://web.stanford.edu/class/cs142/lectures.html \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://web.stanford.edu/class/cs142/projects.html","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"Web%E5%BC%80%E5%8F%91/fullstackopen/","text":"University of Helsinki: Full Stack open 2022 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUniversity of Helsinki \u5148\u4fee\u8981\u6c42\uff1a\u5177\u5907\u826f\u597d\u7684\u7f16\u7a0b\u6280\u80fd\u3001\u57fa\u672c\u7684\u7f51\u7edc\u7f16\u7a0b\u548c\u6570\u636e\u5e93\u77e5\u8bc6\uff0c\u5e76\u4e14\u4e86\u89e3\u4f7f\u7528 Git \u8fd9\u4e2a\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u7684\u57fa\u7840\u77e5\u8bc6\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS/NoSQL/SQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 \u672c\u8bfe\u7a0b\u662f\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528 JavaScript \u5f00\u53d1\u73b0\u4ee3Web\u5e94\u7528\u7a0b\u5e8f\u3002 \u8bfe\u7a0b\u7684\u91cd\u70b9\u662f\u4f7f\u7528 ReactJS \u6784\u5efa\u5355\u9875\u9762\u5e94\u7528\u7a0b\u5e8f\uff08SPA\uff09\uff0c\u5e76\u4f7f\u7528\u7531 Node.js \u6784\u5efa REST API\u3002\u8be5\u8bfe\u7a0b\u8fd8\u5305\u542b\u4ecb\u7ecd GraphQL \u7684\u90e8\u5206\uff0c\u8fd9\u662f REST API \u7684\u73b0\u4ee3\u66ff\u4ee3\u65b9\u6848\u3002 \u8bfe\u7a0b\u8fd8\u5305\u62ec\u6d4b\u8bd5\u3001\u914d\u7f6e\u548c\u73af\u5883\u7ba1\u7406\uff0c\u4ee5\u53ca\u4f7f\u7528 MongoDB \u6765\u5b58\u50a8\u5e94\u7528\u7684\u6570\u636e\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://fullstackopen.com/zh/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b Discord \u7fa4\u7ec4\uff1a https://study.cs.helsinki.fi/discord/join/fullstack/ \u8bfe\u7a0b Telegram \u7fa4\u7ec4\uff1a https://t.me/fullstackcourse/","title":"University of Helsinki: Full Stack open 2022"},{"location":"Web%E5%BC%80%E5%8F%91/fullstackopen/#university-of-helsinki-full-stack-open-2022","text":"","title":"University of Helsinki: Full Stack open 2022"},{"location":"Web%E5%BC%80%E5%8F%91/fullstackopen/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUniversity of Helsinki \u5148\u4fee\u8981\u6c42\uff1a\u5177\u5907\u826f\u597d\u7684\u7f16\u7a0b\u6280\u80fd\u3001\u57fa\u672c\u7684\u7f51\u7edc\u7f16\u7a0b\u548c\u6570\u636e\u5e93\u77e5\u8bc6\uff0c\u5e76\u4e14\u4e86\u89e3\u4f7f\u7528 Git \u8fd9\u4e2a\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u7684\u57fa\u7840\u77e5\u8bc6\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS/NoSQL/SQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 \u672c\u8bfe\u7a0b\u662f\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528 JavaScript \u5f00\u53d1\u73b0\u4ee3Web\u5e94\u7528\u7a0b\u5e8f\u3002 \u8bfe\u7a0b\u7684\u91cd\u70b9\u662f\u4f7f\u7528 ReactJS \u6784\u5efa\u5355\u9875\u9762\u5e94\u7528\u7a0b\u5e8f\uff08SPA\uff09\uff0c\u5e76\u4f7f\u7528\u7531 Node.js \u6784\u5efa REST API\u3002\u8be5\u8bfe\u7a0b\u8fd8\u5305\u542b\u4ecb\u7ecd GraphQL \u7684\u90e8\u5206\uff0c\u8fd9\u662f REST API \u7684\u73b0\u4ee3\u66ff\u4ee3\u65b9\u6848\u3002 \u8bfe\u7a0b\u8fd8\u5305\u62ec\u6d4b\u8bd5\u3001\u914d\u7f6e\u548c\u73af\u5883\u7ba1\u7406\uff0c\u4ee5\u53ca\u4f7f\u7528 MongoDB \u6765\u5b58\u50a8\u5e94\u7528\u7684\u6570\u636e\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"Web%E5%BC%80%E5%8F%91/fullstackopen/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://fullstackopen.com/zh/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b Discord \u7fa4\u7ec4\uff1a https://study.cs.helsinki.fi/discord/join/fullstack/ \u8bfe\u7a0b Telegram \u7fa4\u7ec4\uff1a https://t.me/fullstackcourse/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"Web%E5%BC%80%E5%8F%91/mitweb/","text":"MIT Web Development Crash Course \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS/NoSQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 MIT \u5728\u6bcf\u5e74 1 \u6708\u4efd\u4f1a\u6709\u4e00\u4e2a\u4e3a\u671f 4 \u5468\u7684 Independent Activities Period (IAP)\uff0c\u5728\u8fd9\u4e2a\u6708\u91cc\uff0cMIT \u7684\u5b66\u751f\u548c\u8001\u5e08\u53ef\u4ee5\u81ea\u7531\u5730\u5f00\u8bbe\u5f88\u591a\u6709\u8da3\u7684\u8bfe\u7a0b\uff0c\u800c\u8fd9\u95e8\u7f51\u7ad9\u5f00\u53d1\u8bfe\u7a0b\u5c31\u662f\u5176\u4e2d\u4e4b\u4e00\u3002 \u5728\u4e00\u4e2a\u6708\u7684\u65f6\u95f4\u91cc\uff0c\u4f60\u4f1a\u4ece\u96f6\u5f00\u59cb\u638c\u63e1\u4e00\u4e2a\u7f51\u7ad9\u7684\u8bbe\u8ba1\u3001\u642d\u5efa\u3001\u7f8e\u5316\u3001\u4ea4\u4e92\u7b49\u7b49\u6838\u5fc3\u5185\u5bb9\uff0c\u57fa\u672c\u8986\u76d6\u4e86 Web \u5f00\u53d1\u7684\u524d\u540e\u7aef\u5927\u90e8\u5206\u6280\u672f\u6808\u3002\u5982\u679c\u4f60\u4e0d\u9700\u8981\u7cfb\u7edf\u5730\u5b66\u4e60\u7f51\u7edc\u5f00\u53d1\uff0c\u800c\u53ea\u662f\u51fa\u4e8e\u5174\u8da3\u60f3\u628a\u5b83\u52a0\u5165\u81ea\u5df1\u7684\u6280\u80fd\u5305\u91cc\uff0c\u90a3\u4e48\u8fd9\u95e8\u8bfe\u5c06\u975e\u5e38\u9002\u5408\u4f60\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://weblab.mit.edu/schedule/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b Schedule","title":"MIT web development course"},{"location":"Web%E5%BC%80%E5%8F%91/mitweb/#mit-web-development-crash-course","text":"","title":"MIT Web Development Crash Course"},{"location":"Web%E5%BC%80%E5%8F%91/mitweb/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aJavaScript/HTML/CSS/NoSQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 MIT \u5728\u6bcf\u5e74 1 \u6708\u4efd\u4f1a\u6709\u4e00\u4e2a\u4e3a\u671f 4 \u5468\u7684 Independent Activities Period (IAP)\uff0c\u5728\u8fd9\u4e2a\u6708\u91cc\uff0cMIT \u7684\u5b66\u751f\u548c\u8001\u5e08\u53ef\u4ee5\u81ea\u7531\u5730\u5f00\u8bbe\u5f88\u591a\u6709\u8da3\u7684\u8bfe\u7a0b\uff0c\u800c\u8fd9\u95e8\u7f51\u7ad9\u5f00\u53d1\u8bfe\u7a0b\u5c31\u662f\u5176\u4e2d\u4e4b\u4e00\u3002 \u5728\u4e00\u4e2a\u6708\u7684\u65f6\u95f4\u91cc\uff0c\u4f60\u4f1a\u4ece\u96f6\u5f00\u59cb\u638c\u63e1\u4e00\u4e2a\u7f51\u7ad9\u7684\u8bbe\u8ba1\u3001\u642d\u5efa\u3001\u7f8e\u5316\u3001\u4ea4\u4e92\u7b49\u7b49\u6838\u5fc3\u5185\u5bb9\uff0c\u57fa\u672c\u8986\u76d6\u4e86 Web \u5f00\u53d1\u7684\u524d\u540e\u7aef\u5927\u90e8\u5206\u6280\u672f\u6808\u3002\u5982\u679c\u4f60\u4e0d\u9700\u8981\u7cfb\u7edf\u5730\u5b66\u4e60\u7f51\u7edc\u5f00\u53d1\uff0c\u800c\u53ea\u662f\u51fa\u4e8e\u5174\u8da3\u60f3\u628a\u5b83\u52a0\u5165\u81ea\u5df1\u7684\u6280\u80fd\u5305\u91cc\uff0c\u90a3\u4e48\u8fd9\u95e8\u8bfe\u5c06\u975e\u5e38\u9002\u5408\u4f60\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"Web%E5%BC%80%E5%8F%91/mitweb/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://weblab.mit.edu/schedule/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b Schedule","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/","text":"CS188: Introduction to Artificial Intelligence \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS70 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u4eba\u5de5\u667a\u80fd\u5165\u95e8\u8bfe\uff0c\u8bfe\u7a0b notes \u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u57fa\u672c\u4e0d\u9700\u8981\u89c2\u770b\u8bfe\u7a0b\u89c6\u9891\u3002\u8bfe\u7a0b\u5185\u5bb9\u7684\u5b89\u6392\u57fa\u672c\u6309\u7167\u4eba\u5de5\u667a\u80fd\u7684\u7ecf\u5178\u6559\u6750 Artificial intelligence: A Modern Approach \u7684\u7ae0\u8282\u987a\u5e8f\uff0c\u8986\u76d6\u4e86\u641c\u7d22\u526a\u679d\u3001\u7ea6\u675f\u6ee1\u8db3\u95ee\u9898\u3001\u9a6c\u5c14\u53ef\u592b\u51b3\u7b56\u8fc7\u7a0b\u3001\u5f3a\u5316\u5b66\u4e60\u3001\u8d1d\u53f6\u65af\u7f51\u7edc\u3001\u9690\u9a6c\u5c14\u53ef\u592b\u6a21\u578b\u4ee5\u53ca\u57fa\u7840\u7684\u673a\u5668\u5b66\u4e60\u548c\u795e\u7ecf\u7f51\u7edc\u7684\u76f8\u5173\u5185\u5bb9\u3002 2018\u5e74\u79cb\u5b63\u5b66\u671f\u7684\u7248\u672c\u514d\u8d39\u5f00\u653e\u4e86 gradescope\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728\u7ebf\u5b8c\u6210\u4e66\u9762\u4f5c\u4e1a\u5e76\u5b9e\u65f6\u5f97\u5230\u6d4b\u8bc4\u7ed3\u679c\u3002\u540c\u65f6\u8bfe\u7a0b\u7684 6 \u4e2a Project \u4e5f\u662f\u8d28\u91cf\u7206\u70b8\uff0c\u590d\u73b0\u4e86\u7ecf\u5178\u7684 Packman\uff08\u5403\u8c46\u4eba\uff09\u5c0f\u6e38\u620f\uff0c\u4f1a\u8ba9\u4f60\u5229\u7528\u5b66\u5230\u7684 AI \u77e5\u8bc6\uff0c\u53bb\u5b9e\u73b0\u76f8\u5173\u7b97\u6cd5\uff0c\u8ba9\u4f60\u7684\u5403\u8c46\u4eba\u5728\u8ff7\u5bab\u91cc\u81ea\u7531\u7a7f\u68ad\uff0c\u8eb2\u907f\u9b3c\u602a\uff0c\u6536\u96c6\u8c46\u5b50\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1aArtificial intelligence: A Modern Approach \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \uff0c14\u4e2a\u5728\u7ebf\u6d4b\u8bc4\u4e66\u9762\u4f5c\u4e1a\u548c 6 \u4e2aProject","title":"UCB CS188: Introduction to Artificial Intelligence"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/#cs188-introduction-to-artificial-intelligence","text":"","title":"CS188: Introduction to Artificial Intelligence"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS70 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u4eba\u5de5\u667a\u80fd\u5165\u95e8\u8bfe\uff0c\u8bfe\u7a0b notes \u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u57fa\u672c\u4e0d\u9700\u8981\u89c2\u770b\u8bfe\u7a0b\u89c6\u9891\u3002\u8bfe\u7a0b\u5185\u5bb9\u7684\u5b89\u6392\u57fa\u672c\u6309\u7167\u4eba\u5de5\u667a\u80fd\u7684\u7ecf\u5178\u6559\u6750 Artificial intelligence: A Modern Approach \u7684\u7ae0\u8282\u987a\u5e8f\uff0c\u8986\u76d6\u4e86\u641c\u7d22\u526a\u679d\u3001\u7ea6\u675f\u6ee1\u8db3\u95ee\u9898\u3001\u9a6c\u5c14\u53ef\u592b\u51b3\u7b56\u8fc7\u7a0b\u3001\u5f3a\u5316\u5b66\u4e60\u3001\u8d1d\u53f6\u65af\u7f51\u7edc\u3001\u9690\u9a6c\u5c14\u53ef\u592b\u6a21\u578b\u4ee5\u53ca\u57fa\u7840\u7684\u673a\u5668\u5b66\u4e60\u548c\u795e\u7ecf\u7f51\u7edc\u7684\u76f8\u5173\u5185\u5bb9\u3002 2018\u5e74\u79cb\u5b63\u5b66\u671f\u7684\u7248\u672c\u514d\u8d39\u5f00\u653e\u4e86 gradescope\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728\u7ebf\u5b8c\u6210\u4e66\u9762\u4f5c\u4e1a\u5e76\u5b9e\u65f6\u5f97\u5230\u6d4b\u8bc4\u7ed3\u679c\u3002\u540c\u65f6\u8bfe\u7a0b\u7684 6 \u4e2a Project \u4e5f\u662f\u8d28\u91cf\u7206\u70b8\uff0c\u590d\u73b0\u4e86\u7ecf\u5178\u7684 Packman\uff08\u5403\u8c46\u4eba\uff09\u5c0f\u6e38\u620f\uff0c\u4f1a\u8ba9\u4f60\u5229\u7528\u5b66\u5230\u7684 AI \u77e5\u8bc6\uff0c\u53bb\u5b9e\u73b0\u76f8\u5173\u7b97\u6cd5\uff0c\u8ba9\u4f60\u7684\u5403\u8c46\u4eba\u5728\u8ff7\u5bab\u91cc\u81ea\u7531\u7a7f\u68ad\uff0c\u8eb2\u907f\u9b3c\u602a\uff0c\u6536\u96c6\u8c46\u5b50\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1aArtificial intelligence: A Modern Approach \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://inst.eecs.berkeley.edu/~cs188/fa18/index.html \uff0c14\u4e2a\u5728\u7ebf\u6d4b\u8bc4\u4e66\u9762\u4f5c\u4e1a\u548c 6 \u4e2aProject","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/","text":"CS50\u2019s Introduction to AI with Python \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aHarvard \u5148\u4fee\u8981\u6c42\uff1a\u57fa\u672c\u6982\u7387\u8bba + Python\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30 \u5c0f\u65f6 \u4e00\u95e8\u975e\u5e38\u57fa\u7840\u7684AI\u5165\u95e8\u8bfe\uff0c\u8ba9\u4eba\u773c\u524d\u4e00\u4eae\u7684\u662f12\u4e2a\u8bbe\u8ba1\u7cbe\u5de7\u7684\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u90fd\u4f1a\u7528\u5b66\u5230\u7684AI\u77e5\u8bc6\u53bb\u5b9e\u73b0\u4e00\u4e2a\u7b80\u6613\u7684\u6e38\u620fAI\uff0c\u6bd4\u5982\u7528\u5f3a\u5316\u5b66\u4e60\u8bad\u7ec3\u4e00\u4e2aNim\u6e38\u620f\u7684AI\uff0c\u7528alpha-beta\u526a\u679d\u53bb\u626b\u96f7\u7b49\u7b49\uff0c\u975e\u5e38\u9002\u5408\u65b0\u624b\u5165\u95e8\u6216\u8005\u5927\u4f6c\u4f11\u95f2\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs50.harvard.edu/ai/2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://cs50.harvard.edu/ai/2020/ \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs50.harvard.edu/ai/2020/ \uff0c12\u4e2a\u7cbe\u5de7\u7684\u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/cs50_ai - GitHub \u4e2d\u3002","title":"Harvard CS50's Introduction to AI with Python"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/#cs50s-introduction-to-ai-with-python","text":"","title":"CS50\u2019s Introduction to AI with Python"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aHarvard \u5148\u4fee\u8981\u6c42\uff1a\u57fa\u672c\u6982\u7387\u8bba + Python\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30 \u5c0f\u65f6 \u4e00\u95e8\u975e\u5e38\u57fa\u7840\u7684AI\u5165\u95e8\u8bfe\uff0c\u8ba9\u4eba\u773c\u524d\u4e00\u4eae\u7684\u662f12\u4e2a\u8bbe\u8ba1\u7cbe\u5de7\u7684\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u90fd\u4f1a\u7528\u5b66\u5230\u7684AI\u77e5\u8bc6\u53bb\u5b9e\u73b0\u4e00\u4e2a\u7b80\u6613\u7684\u6e38\u620fAI\uff0c\u6bd4\u5982\u7528\u5f3a\u5316\u5b66\u4e60\u8bad\u7ec3\u4e00\u4e2aNim\u6e38\u620f\u7684AI\uff0c\u7528alpha-beta\u526a\u679d\u53bb\u626b\u96f7\u7b49\u7b49\uff0c\u975e\u5e38\u9002\u5408\u65b0\u624b\u5165\u95e8\u6216\u8005\u5927\u4f6c\u4f11\u95f2\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs50.harvard.edu/ai/2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://cs50.harvard.edu/ai/2020/ \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs50.harvard.edu/ai/2020/ \uff0c12\u4e2a\u7cbe\u5de7\u7684\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/cs50_ai - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/","text":"\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u4e2d\u56fd\u79d1\u5b66\u9662\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784\uff0c\u6df1\u5ea6\u5b66\u4e60 \u7f16\u7a0b\u8bed\u8a00\uff1aPython, C++, BCL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6+ \u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u662f\u667a\u80fd\u7684\u6838\u5fc3\u7269\u8d28\u8f7d\u4f53\uff0c\u6bcf\u5e74\u5168\u7403\u8981\u5236\u9020\u6570\u4ee5\u5341\u4ebf\u8ba1\u7684\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\uff08\u5305\u62ec\u667a\u80fd\u624b\u673a\u3001\u667a\u80fd\u670d\u52a1\u5668\u3001\u667a\u80fd\u53ef\u7a7f\u6234\u8bbe\u5907\u7b49\uff09\uff0c\u9700\u8981\u5927\u91cf\u7684\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u7684\u8bbe\u8ba1\u8005\u548c\u5f00\u53d1\u8005\u3002\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u4eba\u624d\u7684\u57f9\u517b\u76f4\u63a5\u5173\u7cfb\u5230\u6211\u56fd\u667a\u80fd\u4ea7\u4e1a\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002\u56e0\u6b64\uff0c\u5bf9\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u7684\u8ba4\u8bc6\u548c\u7406\u89e3\u662f\u667a\u80fd\u65f6\u4ee3\u8ba1\u7b97\u673a\u7c7b\u4e13\u4e1a\u5b66\u751f\u57f9\u517b\u65b9\u6848\u4e2d\u4e0d\u53ef\u6216\u7f3a\u7684\u91cd\u8981\u7ec4\u6210\u90e8\u5206\uff0c\u662f\u8ba1\u7b97\u673a\u7c7b\u4e13\u4e1a\u5b66\u751f\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002 \u56fd\u5185\u7684\u9648\u4e91\u9701\u8001\u5e08\u5f00\u7684\u8bfe\uff0c\u5728\u5176\u4ed6\u82e5\u5e72\u4e2a\u5927\u5b66\u4e5f\u90fd\u6709\u5f00\u5bf9\u5e94\u7684\u8bfe\u7a0b\u3002\u8fd9\u95e8\u8bfe\u7528\u4e00\u4e2a\u4e2a\u5b9e\u9a8c\u5e26\u5927\u5bb6\u4ee5\u4e00\u4e2a\u5b8c\u6574\u7684\u89c6\u91ce\u7406\u89e3\u4eba\u5de5\u667a\u80fd\u7684\u6280\u672f\u6808\u3002\u4ece\u4e0a\u5c42\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\uff0c\u5230\u7528\u5e95\u5c42\u8bed\u8a00\u7f16\u5199\u7b97\u5b50\uff0c\u518d\u5230\u786c\u4ef6\u4e2d MLU \u7684\u8bbe\u8ba1\uff0c\u8ba9\u5927\u5bb6\u5f62\u6210\u7cfb\u7edf\u601d\u7ef4\uff0c\u4f53\u4f1a\u81ea\u4e0a\u800c\u4e0b\uff0c\u878d\u4f1a\u8d2f\u901a\u7684\u4e50\u8da3\u3002 \u6211\u505a\u4e86\u5176\u4e2d\u7684 2,3,4,5 \u8fd9\u51e0\u4e2a\u5b9e\u9a8c\uff0c\u5176\u4e2d\u7efc\u5408\u5b9e\u9a8c\u548c\u786c\u4ef6\u5b9e\u9a8c\u6ca1\u6709\u505a\uff0c\u5982\u679c\u6709\u505a\u4e86\u7684\u540c\u5b66\u6b22\u8fce\u5927\u5bb6\u8865\u4e0a\u4f60\u7684\u94fe\u63a5\u3002 \u4e2a\u4eba\u4f53\u4f1a\u662f\u7b2c\u4e09\u7ae0\u5b9e\u73b0\u7b97\u5b50\u7684\u5b9e\u9a8c\u8ba9\u6211\u5bf9\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u4e86\u89e3\u52a0\u6df1\u4e86\u5f88\u591a\u3002\u7b2c\u4e94\u7ae0\u7684\u5b9e\u9a8cBCL\u8bed\u8a00\u7f16\u5199\u7b97\u5b50\u5982\u679c\u4e86\u89e3 CUDA \u7684\u8bdd\u4f1a\u611f\u89c9\u5f88\u719f\u6089\u3002 \u63a8\u8350\u53bb\u4e70\u4e00\u672c\u6559\u6750\u770b\u4e00\u770b\uff0c\u4f1a\u8ba9\u6211\u4eec\u7406\u89e3\u6574\u4f53\u7684\u6280\u672f\u6808\u3002\u719f\u6089\u6df1\u5ea6\u5b66\u4e60\u7684\u540c\u5b66\u53ef\u4ee5\u76f4\u63a5\u4ece\u7b2c\u4e94\u7ae0\u5f00\u59cb\u770b\uff0c\u770b\u770b\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u5e95\u5c42\u5230\u5e95\u662f\u4ec0\u4e48\u6837\u7684\u3002 \u6211\u56e0\u4e3a\u8fd9\u95e8\u8bfe\u7684\u542f\u53d1\uff0c\u53c2\u8003\u4e00\u672c\u4e66\uff08\u4e66\u540d\u5728\u4ed3\u5e93\u4e2d\uff09\u5199\u4e86\u4e00\u4e2a\u7b80\u6613\u7684 \u6df1\u5ea6\u5b66\u4e60\u6846\u67b6 \u3002\u5728\u8fd9\u4e2a\u6846\u67b6\u91cc\u53ef\u4ee5\u770b\u5230\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u5b9e\u9a8c\u4e2d\u7684\u4e00\u4e9b\u5f71\u5b50\u3002\u540c\u65f6\u53d7\u5230 build-your-own-x \u7cfb\u5217\u7684\u542f\u53d1\uff0c\u6211\u4e5f\u6253\u7b97\u5199\u4e00\u4e0b\u6559\u7a0b\uff0c\u6559\u5927\u5bb6\u5199\u4e00\u4e2a\u81ea\u5df1\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\u4ee3\u7801\u7528 Python \u5199\u7684\uff0c\u4ee3\u7801\u91cf\u8f83\u5c11\uff0c\u9002\u5408\u6709\u4e00\u5b9a\u57fa\u7840\u7684\u540c\u5b66\u9605\u8bfb\u3002\u4e4b\u540e\u6253\u7b97\u6dfb\u52a0\u66f4\u591a\u7684\u7b97\u5b50\uff0c\u6709\u671b\u5b9e\u73b0\u4e00\u4e2a\u8f83\u4e3a\u5168\u9762\u7684\u6846\u67b6\uff0c\u5e76\u5e0c\u671b\u79fb\u690d\u5230 C++ \u4e2d\uff0c\u4ee5\u517c\u987e\u6027\u80fd\u4e0e\u5f00\u53d1\u6548\u7387\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a \u5b98\u7f51 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u8bfe\u7a0b\u6559\u6750\uff1a\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\uff08\u9648\u4e91\u9701\uff09 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a6 \u4e2a\u5b9e\u9a8c(\u5305\u62ec\u7f16\u5199\u5377\u79ef\u7b97\u5b50\uff0c\u4e3a TensorFlow \u6dfb\u52a0\u7b97\u5b50\uff0c\u7528 BCL \u7f16\u5199\u7b97\u5b50\u5e76\u96c6\u6210\u5230 TensorFlow \u4e2d\u7b49)(\u5177\u4f53\u5185\u5bb9\u5728\u5b98\u7f51\u53ef\u4ee5\u627e\u5230) \u5b9e\u9a8c\u624b\u518c\uff1a http://forum.cambricon.com/show-8-708-1.html \uff0c\u5b9e\u9a8c 2.0 \u6307\u5bfc\u624b\u518c \u5b66\u4e60\u7b14\u8bb0\uff1a https://sanzo.top/categories/AI-Computing-Systems/ \uff0c\u53c2\u8003\u5b9e\u9a8c\u624b\u518c\u603b\u7ed3\u7684\u7b14\u8bb0 \u8d44\u6e90\u6c47\u603b @ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: ai-system - GitHub \u4e2d\u3002","title":"\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/#_1","text":"","title":"\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/#_2","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u4e2d\u56fd\u79d1\u5b66\u9662\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784\uff0c\u6df1\u5ea6\u5b66\u4e60 \u7f16\u7a0b\u8bed\u8a00\uff1aPython, C++, BCL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6+ \u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u662f\u667a\u80fd\u7684\u6838\u5fc3\u7269\u8d28\u8f7d\u4f53\uff0c\u6bcf\u5e74\u5168\u7403\u8981\u5236\u9020\u6570\u4ee5\u5341\u4ebf\u8ba1\u7684\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\uff08\u5305\u62ec\u667a\u80fd\u624b\u673a\u3001\u667a\u80fd\u670d\u52a1\u5668\u3001\u667a\u80fd\u53ef\u7a7f\u6234\u8bbe\u5907\u7b49\uff09\uff0c\u9700\u8981\u5927\u91cf\u7684\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u7684\u8bbe\u8ba1\u8005\u548c\u5f00\u53d1\u8005\u3002\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u4eba\u624d\u7684\u57f9\u517b\u76f4\u63a5\u5173\u7cfb\u5230\u6211\u56fd\u667a\u80fd\u4ea7\u4e1a\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002\u56e0\u6b64\uff0c\u5bf9\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u7684\u8ba4\u8bc6\u548c\u7406\u89e3\u662f\u667a\u80fd\u65f6\u4ee3\u8ba1\u7b97\u673a\u7c7b\u4e13\u4e1a\u5b66\u751f\u57f9\u517b\u65b9\u6848\u4e2d\u4e0d\u53ef\u6216\u7f3a\u7684\u91cd\u8981\u7ec4\u6210\u90e8\u5206\uff0c\u662f\u8ba1\u7b97\u673a\u7c7b\u4e13\u4e1a\u5b66\u751f\u7684\u6838\u5fc3\u7ade\u4e89\u529b\u3002 \u56fd\u5185\u7684\u9648\u4e91\u9701\u8001\u5e08\u5f00\u7684\u8bfe\uff0c\u5728\u5176\u4ed6\u82e5\u5e72\u4e2a\u5927\u5b66\u4e5f\u90fd\u6709\u5f00\u5bf9\u5e94\u7684\u8bfe\u7a0b\u3002\u8fd9\u95e8\u8bfe\u7528\u4e00\u4e2a\u4e2a\u5b9e\u9a8c\u5e26\u5927\u5bb6\u4ee5\u4e00\u4e2a\u5b8c\u6574\u7684\u89c6\u91ce\u7406\u89e3\u4eba\u5de5\u667a\u80fd\u7684\u6280\u672f\u6808\u3002\u4ece\u4e0a\u5c42\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\uff0c\u5230\u7528\u5e95\u5c42\u8bed\u8a00\u7f16\u5199\u7b97\u5b50\uff0c\u518d\u5230\u786c\u4ef6\u4e2d MLU \u7684\u8bbe\u8ba1\uff0c\u8ba9\u5927\u5bb6\u5f62\u6210\u7cfb\u7edf\u601d\u7ef4\uff0c\u4f53\u4f1a\u81ea\u4e0a\u800c\u4e0b\uff0c\u878d\u4f1a\u8d2f\u901a\u7684\u4e50\u8da3\u3002 \u6211\u505a\u4e86\u5176\u4e2d\u7684 2,3,4,5 \u8fd9\u51e0\u4e2a\u5b9e\u9a8c\uff0c\u5176\u4e2d\u7efc\u5408\u5b9e\u9a8c\u548c\u786c\u4ef6\u5b9e\u9a8c\u6ca1\u6709\u505a\uff0c\u5982\u679c\u6709\u505a\u4e86\u7684\u540c\u5b66\u6b22\u8fce\u5927\u5bb6\u8865\u4e0a\u4f60\u7684\u94fe\u63a5\u3002 \u4e2a\u4eba\u4f53\u4f1a\u662f\u7b2c\u4e09\u7ae0\u5b9e\u73b0\u7b97\u5b50\u7684\u5b9e\u9a8c\u8ba9\u6211\u5bf9\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u4e86\u89e3\u52a0\u6df1\u4e86\u5f88\u591a\u3002\u7b2c\u4e94\u7ae0\u7684\u5b9e\u9a8cBCL\u8bed\u8a00\u7f16\u5199\u7b97\u5b50\u5982\u679c\u4e86\u89e3 CUDA \u7684\u8bdd\u4f1a\u611f\u89c9\u5f88\u719f\u6089\u3002 \u63a8\u8350\u53bb\u4e70\u4e00\u672c\u6559\u6750\u770b\u4e00\u770b\uff0c\u4f1a\u8ba9\u6211\u4eec\u7406\u89e3\u6574\u4f53\u7684\u6280\u672f\u6808\u3002\u719f\u6089\u6df1\u5ea6\u5b66\u4e60\u7684\u540c\u5b66\u53ef\u4ee5\u76f4\u63a5\u4ece\u7b2c\u4e94\u7ae0\u5f00\u59cb\u770b\uff0c\u770b\u770b\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u5e95\u5c42\u5230\u5e95\u662f\u4ec0\u4e48\u6837\u7684\u3002 \u6211\u56e0\u4e3a\u8fd9\u95e8\u8bfe\u7684\u542f\u53d1\uff0c\u53c2\u8003\u4e00\u672c\u4e66\uff08\u4e66\u540d\u5728\u4ed3\u5e93\u4e2d\uff09\u5199\u4e86\u4e00\u4e2a\u7b80\u6613\u7684 \u6df1\u5ea6\u5b66\u4e60\u6846\u67b6 \u3002\u5728\u8fd9\u4e2a\u6846\u67b6\u91cc\u53ef\u4ee5\u770b\u5230\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\u5b9e\u9a8c\u4e2d\u7684\u4e00\u4e9b\u5f71\u5b50\u3002\u540c\u65f6\u53d7\u5230 build-your-own-x \u7cfb\u5217\u7684\u542f\u53d1\uff0c\u6211\u4e5f\u6253\u7b97\u5199\u4e00\u4e0b\u6559\u7a0b\uff0c\u6559\u5927\u5bb6\u5199\u4e00\u4e2a\u81ea\u5df1\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\u4ee3\u7801\u7528 Python \u5199\u7684\uff0c\u4ee3\u7801\u91cf\u8f83\u5c11\uff0c\u9002\u5408\u6709\u4e00\u5b9a\u57fa\u7840\u7684\u540c\u5b66\u9605\u8bfb\u3002\u4e4b\u540e\u6253\u7b97\u6dfb\u52a0\u66f4\u591a\u7684\u7b97\u5b50\uff0c\u6709\u671b\u5b9e\u73b0\u4e00\u4e2a\u8f83\u4e3a\u5168\u9762\u7684\u6846\u67b6\uff0c\u5e76\u5e0c\u671b\u79fb\u690d\u5230 C++ \u4e2d\uff0c\u4ee5\u517c\u987e\u6027\u80fd\u4e0e\u5f00\u53d1\u6548\u7387\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/#_3","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a \u5b98\u7f51 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u8bfe\u7a0b\u6559\u6750\uff1a\u667a\u80fd\u8ba1\u7b97\u7cfb\u7edf\uff08\u9648\u4e91\u9701\uff09 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a6 \u4e2a\u5b9e\u9a8c(\u5305\u62ec\u7f16\u5199\u5377\u79ef\u7b97\u5b50\uff0c\u4e3a TensorFlow \u6dfb\u52a0\u7b97\u5b50\uff0c\u7528 BCL \u7f16\u5199\u7b97\u5b50\u5e76\u96c6\u6210\u5230 TensorFlow \u4e2d\u7b49)(\u5177\u4f53\u5185\u5bb9\u5728\u5b98\u7f51\u53ef\u4ee5\u627e\u5230) \u5b9e\u9a8c\u624b\u518c\uff1a http://forum.cambricon.com/show-8-708-1.html \uff0c\u5b9e\u9a8c 2.0 \u6307\u5bfc\u624b\u518c \u5b66\u4e60\u7b14\u8bb0\uff1a https://sanzo.top/categories/AI-Computing-Systems/ \uff0c\u53c2\u8003\u5b9e\u9a8c\u624b\u518c\u603b\u7ed3\u7684\u7b14\u8bb0","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/#_4","text":"@ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: ai-system - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/","text":"CS61C: Great Ideas in Computer Architecture \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u6700\u540e\u4e00\u95e8\u8bfe\u7a0b\uff0c\u6df1\u5165\u8ba1\u7b97\u673a\u7684\u786c\u4ef6\u7ec6\u8282\uff0c\u5e26\u9886\u5b66\u751f\u9010\u6b65\u7406\u89e3 C \u8bed\u8a00\u662f\u5982\u4f55\u4e00\u6b65\u6b65\u8f6c\u5316\u4e3a RISC-V \u6c47\u7f16\u5e76\u5728 CPU \u4e0a\u6267\u884c\u7684\u3002\u548c Nand2Tetris \u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe \u5728\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u90fd\u4f1a\u63d0\u9ad8\u5f88\u591a\uff0c\u5177\u4f53\u4f1a\u6d89\u53ca\u5230\u6d41\u6c34\u7ebf\u3001Cache\u3001\u865a\u5b58\u4ee5\u53ca\u5e76\u53d1\u76f8\u5173\u7684\u5185\u5bb9\u3002 \u8fd9\u95e8\u8bfe\u7684 Project \u4e5f\u975e\u5e38\u65b0\u9896\u6709\u8da3\u3002Project1 \u4f1a\u8ba9\u4f60\u7528 C \u8bed\u8a00\u5199\u4e00\u4e2a\u5c0f\u7a0b\u5e8f\uff0c20 \u5e74\u79cb\u5b63\u5b66\u671f\u662f\u8457\u540d\u7684\u6e38\u620f Game of Life \u3002Project2 \u4f1a\u8ba9\u4f60\u7528 RISC-V \u6c47\u7f16\u7f16\u5199\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc\uff0c\u7528\u6765 \u8bc6\u522b MNIST \u624b\u5199\u6570\u5b57\uff0c\u975e\u5e38\u953b\u70bc\u4f60\u5bf9\u6c47\u7f16\u4ee3\u7801\u7684\u7406\u89e3\u548c\u8fd0\u7528\u3002Project3 \u4e2d\u4f60\u4f1a\u7528 Logisim \u8fd9\u4e2a\u6570\u5b57\u7535\u8def\u6a21\u62df\u8f6f\u4ef6\u642d\u5efa\u51fa\u4e00\u4e2a\u4e8c\u7ea7\u6d41\u6c34\u7ebf\u7684 CPU\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c RISC-V \u6c47\u7f16\u4ee3\u7801\u3002Project4 \u4f1a\u8ba9\u4f60\u4f7f\u7528 OpenMP, SIMD \u7b49\u65b9\u6cd5\u5e76\u884c\u4f18\u5316\u77e9\u9635\u8fd0\u7b97\uff0c\u5b9e\u73b0\u4e00\u4e2a\u7b80\u6613\u7684 Numpy\u3002 \u603b\u800c\u8a00\u4e4b\uff0c\u8fd9\u662f\u4e2a\u4eba\u4e0a\u8fc7\u7684\u6700\u597d\u7684\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u7684\u8bfe\u7a0b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs61c.org/su20/ \u8bfe\u7a0b\u89c6\u9891\uff1a B \u7ad9 , Youtube \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a11 \u4e2a Lab\uff0c4 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS61C-summer20 - GitHub \u4e2d\u3002","title":"UCB CS61C: Great Ideas in Computer Architecture"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/#cs61c-great-ideas-in-computer-architecture","text":"","title":"CS61C: Great Ideas in Computer Architecture"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u6700\u540e\u4e00\u95e8\u8bfe\u7a0b\uff0c\u6df1\u5165\u8ba1\u7b97\u673a\u7684\u786c\u4ef6\u7ec6\u8282\uff0c\u5e26\u9886\u5b66\u751f\u9010\u6b65\u7406\u89e3 C \u8bed\u8a00\u662f\u5982\u4f55\u4e00\u6b65\u6b65\u8f6c\u5316\u4e3a RISC-V \u6c47\u7f16\u5e76\u5728 CPU \u4e0a\u6267\u884c\u7684\u3002\u548c Nand2Tetris \u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe \u5728\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u90fd\u4f1a\u63d0\u9ad8\u5f88\u591a\uff0c\u5177\u4f53\u4f1a\u6d89\u53ca\u5230\u6d41\u6c34\u7ebf\u3001Cache\u3001\u865a\u5b58\u4ee5\u53ca\u5e76\u53d1\u76f8\u5173\u7684\u5185\u5bb9\u3002 \u8fd9\u95e8\u8bfe\u7684 Project \u4e5f\u975e\u5e38\u65b0\u9896\u6709\u8da3\u3002Project1 \u4f1a\u8ba9\u4f60\u7528 C \u8bed\u8a00\u5199\u4e00\u4e2a\u5c0f\u7a0b\u5e8f\uff0c20 \u5e74\u79cb\u5b63\u5b66\u671f\u662f\u8457\u540d\u7684\u6e38\u620f Game of Life \u3002Project2 \u4f1a\u8ba9\u4f60\u7528 RISC-V \u6c47\u7f16\u7f16\u5199\u4e00\u4e2a\u795e\u7ecf\u7f51\u7edc\uff0c\u7528\u6765 \u8bc6\u522b MNIST \u624b\u5199\u6570\u5b57\uff0c\u975e\u5e38\u953b\u70bc\u4f60\u5bf9\u6c47\u7f16\u4ee3\u7801\u7684\u7406\u89e3\u548c\u8fd0\u7528\u3002Project3 \u4e2d\u4f60\u4f1a\u7528 Logisim \u8fd9\u4e2a\u6570\u5b57\u7535\u8def\u6a21\u62df\u8f6f\u4ef6\u642d\u5efa\u51fa\u4e00\u4e2a\u4e8c\u7ea7\u6d41\u6c34\u7ebf\u7684 CPU\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c RISC-V \u6c47\u7f16\u4ee3\u7801\u3002Project4 \u4f1a\u8ba9\u4f60\u4f7f\u7528 OpenMP, SIMD \u7b49\u65b9\u6cd5\u5e76\u884c\u4f18\u5316\u77e9\u9635\u8fd0\u7b97\uff0c\u5b9e\u73b0\u4e00\u4e2a\u7b80\u6613\u7684 Numpy\u3002 \u603b\u800c\u8a00\u4e4b\uff0c\u8fd9\u662f\u4e2a\u4eba\u4e0a\u8fc7\u7684\u6700\u597d\u7684\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u7684\u8bfe\u7a0b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs61c.org/su20/ \u8bfe\u7a0b\u89c6\u9891\uff1a B \u7ad9 , Youtube \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a11 \u4e2a Lab\uff0c4 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS61C-summer20 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/","text":"CMU CS15213: CSAPP \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 CMU \u5927\u540d\u9f0e\u9f0e\u7684\u9547\u7cfb\u795e\u8bfe\uff0c\u4ee5\u5176\u5185\u5bb9\u5e9e\u6742\uff0cProject \u5de8\u96be\u800c\u95fb\u540d\u9050\u8fe9\u3002\u8bfe\u7a0b\u5185\u5bb9\u8986\u76d6\u4e86\u6c47\u7f16\u8bed\u8a00\u3001\u4f53\u7cfb\u7ed3\u6784\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f16\u8bd1\u94fe\u63a5\u3001\u5e76\u884c\u3001\u7f51\u7edc\u7b49\uff0c\u4f5c\u4e3a\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u517c\u5177\u6df1\u5ea6\u548c\u5e7f\u5ea6\uff0c\u5982\u679c\u81ea\u5b66\u786e\u5b9e\u9700\u8981\u76f8\u5f53\u7684\u6bc5\u529b\u548c\u4ee3\u7801\u529f\u5e95\u3002 \u8fd9\u95e8\u8bfe\u914d\u5408\u7684\u6559\u6750\u7531 CMU \u8ba1\u7b97\u673a\u7cfb\u4e3b\u4efb Bryant \u6559\u6388\u6267\u7b14\uff0c\u4e5f\u5373\u6240\u8c13\u7684 CSAPP\u3002\u8fd9\u4e5f\u662f\u6211\u7b2c\u4e00\u672c\u8ba4\u8ba4\u771f\u771f\u4e00\u9875\u4e00\u9875\u8bfb\u8fc7\u53bb\u7684\u8ba1\u7b97\u673a\u6559\u6750\uff0c\u867d\u7136\u5f88\u96be\u5543\uff0c\u4f46\u7740\u5b9e\u6536\u83b7\u826f\u591a\u3002 \u5317\u5927\u8d2d\u4e70\u4e86\u8fd9\u95e8\u8bfe\u7684\u7248\u6743\u5e76\u5f00\u8bbe\u4e86 Introduction to Computer System \u8fd9\u95e8\u8bfe\uff0c\u4f46\u5176\u5b9e CSAPP \u6240\u6709\u7684\u8bfe\u7a0b\u8d44\u6e90\u548c\u5b9e\u9a8c\u4ee3\u7801\u90fd\u80fd\u5728\u5b83\u7684\u5b98\u65b9\u4e3b\u9875\u4e0a\u8bbf\u95ee\u5230\uff08\u5177\u4f53\u53c2\u89c1\u4e0b\u65b9\u94fe\u63a5\uff09\u3002 \u8fd9\u95e8\u8bfe\u7531\u4e8e\u8fc7\u4e8e\u51fa\u540d\uff0c\u5168\u4e16\u754c\u7684\u7801\u519c\u4e89\u76f8\u5b66\u4e60\uff0c\u5bfc\u81f4\u5176 Project \u7684\u7b54\u6848\u5728\u7f51\u4e0a\u51e0\u4e4e\u553e\u624b\u53ef\u5f97\u3002\u4f46\u5982\u679c\u4f60\u771f\u7684\u60f3\u953b\u70bc\u81ea\u5df1\u7684\u4ee3\u7801\u80fd\u529b\uff0c\u5e0c\u671b\u4f60\u4e0d\u8981\u501f\u9274\u4efb\u4f55\u7b2c\u4e09\u65b9\u4ee3\u7801\u3002 \u8ba4\u771f\u5b66\u5b8c\u8fd9\u4e00\u95e8\u8bfe\uff0c\u4f60\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u7684\u7406\u89e3\u7edd\u5bf9\u4f1a\u4e0a\u5347\u4e00\u4e2a\u53f0\u9636\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://csapp.cs.cmu.edu/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1iW411d7hd \u8bfe\u7a0b\u6559\u6750\uff1aComputer Systems: A Programmer's Perspective, 3/E \u8bfe\u7a0b\u4f5c\u4e1a\uff1a11 \u4e2a Project\uff0c \u4ee3\u7801\u6846\u67b6\u5168\u90e8\u5f00\u6e90 \u82f1\u8bed\u6709\u56f0\u96be\u7684\u540c\u5b66\u53ef\u4ee5\u53c2\u8003B\u7ad9UP\u4e3b \u4e5d\u66f2\u9611\u5e72 \u5bf9 CSAPP \u7684 \u4e2d\u6587\u8bb2\u89e3 \uff08\u636e\u8bf4CMU\u7684\u4e2d\u56fd\u7559\u5b66\u751f\u4e5f\u5728CMU\u7684\u8bfe\u5802\u4e0a\u770b\u8fd9\u4e2a\u89c6\u9891\u5462\uff09\u3002\u53e6\u5916\u5982\u679c\u5927\u5bb6\u5728\u770b\u5b8c CSAPP \u540e\u5bf9\u4e66\u4e2d\u7684\u7b2c\u4e03\u7ae0\u94fe\u63a5\u6709\u4e00\u5b9a\u7684\u7591\u95ee\uff0c\u63a8\u8350\u9605\u8bfb\u300a\u7a0b\u5e8f\u5458\u7684\u81ea\u6211\u4fee\u517b\u300b\u8fd9\u672c\u4e66\uff0c\u4e66\u7684\u526f\u6807\u9898\u662f\u94fe\u63a5\uff0c\u88c5\u8f7d\u4e0e\u5e93\u3002\u8fd9\u672c\u4e66\u80fd\u591f\u5e2e\u52a9\u6211\u4eec\u5b8c\u5584\u5bf9\u7a0b\u5e8f\u94fe\u63a5\u7684\u7406\u89e3\uff0c\u76f8\u4fe1\u4f60\u5728\u770b\u5b8c\u8fd9\u672c\u4e66\u4ee5\u540e\u53ef\u4ee5\u5bf9\u7a0b\u5e8f\u7684\u94fe\u63a5\uff0cELF \u6587\u4ef6\uff0c\u52a8\u6001\u5e93\u90fd\u5c06\u6709\u4e00\u4e2a\u66f4\u52a0\u6df1\u5165\u7684\u7406\u89e3\u3002\u5341\u5206\u63a8\u8350\u5728\u8bfb\u5b8c CSAPP\uff0c\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u4e00\u5b9a\u7684\u4e86\u89e3\u4ee5\u540e\u4f5c\u4e3a\u8865\u5145\u8d44\u6599\u6765\u9605\u8bfb\u3002","title":"CMU 15-213: CSAPP"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/#cmu-cs15213-csapp","text":"","title":"CMU CS15213: CSAPP"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 CMU \u5927\u540d\u9f0e\u9f0e\u7684\u9547\u7cfb\u795e\u8bfe\uff0c\u4ee5\u5176\u5185\u5bb9\u5e9e\u6742\uff0cProject \u5de8\u96be\u800c\u95fb\u540d\u9050\u8fe9\u3002\u8bfe\u7a0b\u5185\u5bb9\u8986\u76d6\u4e86\u6c47\u7f16\u8bed\u8a00\u3001\u4f53\u7cfb\u7ed3\u6784\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f16\u8bd1\u94fe\u63a5\u3001\u5e76\u884c\u3001\u7f51\u7edc\u7b49\uff0c\u4f5c\u4e3a\u7cfb\u7edf\u5165\u95e8\u8bfe\uff0c\u517c\u5177\u6df1\u5ea6\u548c\u5e7f\u5ea6\uff0c\u5982\u679c\u81ea\u5b66\u786e\u5b9e\u9700\u8981\u76f8\u5f53\u7684\u6bc5\u529b\u548c\u4ee3\u7801\u529f\u5e95\u3002 \u8fd9\u95e8\u8bfe\u914d\u5408\u7684\u6559\u6750\u7531 CMU \u8ba1\u7b97\u673a\u7cfb\u4e3b\u4efb Bryant \u6559\u6388\u6267\u7b14\uff0c\u4e5f\u5373\u6240\u8c13\u7684 CSAPP\u3002\u8fd9\u4e5f\u662f\u6211\u7b2c\u4e00\u672c\u8ba4\u8ba4\u771f\u771f\u4e00\u9875\u4e00\u9875\u8bfb\u8fc7\u53bb\u7684\u8ba1\u7b97\u673a\u6559\u6750\uff0c\u867d\u7136\u5f88\u96be\u5543\uff0c\u4f46\u7740\u5b9e\u6536\u83b7\u826f\u591a\u3002 \u5317\u5927\u8d2d\u4e70\u4e86\u8fd9\u95e8\u8bfe\u7684\u7248\u6743\u5e76\u5f00\u8bbe\u4e86 Introduction to Computer System \u8fd9\u95e8\u8bfe\uff0c\u4f46\u5176\u5b9e CSAPP \u6240\u6709\u7684\u8bfe\u7a0b\u8d44\u6e90\u548c\u5b9e\u9a8c\u4ee3\u7801\u90fd\u80fd\u5728\u5b83\u7684\u5b98\u65b9\u4e3b\u9875\u4e0a\u8bbf\u95ee\u5230\uff08\u5177\u4f53\u53c2\u89c1\u4e0b\u65b9\u94fe\u63a5\uff09\u3002 \u8fd9\u95e8\u8bfe\u7531\u4e8e\u8fc7\u4e8e\u51fa\u540d\uff0c\u5168\u4e16\u754c\u7684\u7801\u519c\u4e89\u76f8\u5b66\u4e60\uff0c\u5bfc\u81f4\u5176 Project \u7684\u7b54\u6848\u5728\u7f51\u4e0a\u51e0\u4e4e\u553e\u624b\u53ef\u5f97\u3002\u4f46\u5982\u679c\u4f60\u771f\u7684\u60f3\u953b\u70bc\u81ea\u5df1\u7684\u4ee3\u7801\u80fd\u529b\uff0c\u5e0c\u671b\u4f60\u4e0d\u8981\u501f\u9274\u4efb\u4f55\u7b2c\u4e09\u65b9\u4ee3\u7801\u3002 \u8ba4\u771f\u5b66\u5b8c\u8fd9\u4e00\u95e8\u8bfe\uff0c\u4f60\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u7684\u7406\u89e3\u7edd\u5bf9\u4f1a\u4e0a\u5347\u4e00\u4e2a\u53f0\u9636\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://csapp.cs.cmu.edu/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1iW411d7hd \u8bfe\u7a0b\u6559\u6750\uff1aComputer Systems: A Programmer's Perspective, 3/E \u8bfe\u7a0b\u4f5c\u4e1a\uff1a11 \u4e2a Project\uff0c \u4ee3\u7801\u6846\u67b6\u5168\u90e8\u5f00\u6e90 \u82f1\u8bed\u6709\u56f0\u96be\u7684\u540c\u5b66\u53ef\u4ee5\u53c2\u8003B\u7ad9UP\u4e3b \u4e5d\u66f2\u9611\u5e72 \u5bf9 CSAPP \u7684 \u4e2d\u6587\u8bb2\u89e3 \uff08\u636e\u8bf4CMU\u7684\u4e2d\u56fd\u7559\u5b66\u751f\u4e5f\u5728CMU\u7684\u8bfe\u5802\u4e0a\u770b\u8fd9\u4e2a\u89c6\u9891\u5462\uff09\u3002\u53e6\u5916\u5982\u679c\u5927\u5bb6\u5728\u770b\u5b8c CSAPP \u540e\u5bf9\u4e66\u4e2d\u7684\u7b2c\u4e03\u7ae0\u94fe\u63a5\u6709\u4e00\u5b9a\u7684\u7591\u95ee\uff0c\u63a8\u8350\u9605\u8bfb\u300a\u7a0b\u5e8f\u5458\u7684\u81ea\u6211\u4fee\u517b\u300b\u8fd9\u672c\u4e66\uff0c\u4e66\u7684\u526f\u6807\u9898\u662f\u94fe\u63a5\uff0c\u88c5\u8f7d\u4e0e\u5e93\u3002\u8fd9\u672c\u4e66\u80fd\u591f\u5e2e\u52a9\u6211\u4eec\u5b8c\u5584\u5bf9\u7a0b\u5e8f\u94fe\u63a5\u7684\u7406\u89e3\uff0c\u76f8\u4fe1\u4f60\u5728\u770b\u5b8c\u8fd9\u672c\u4e66\u4ee5\u540e\u53ef\u4ee5\u5bf9\u7a0b\u5e8f\u7684\u94fe\u63a5\uff0cELF \u6587\u4ef6\uff0c\u52a8\u6001\u5e93\u90fd\u5c06\u6709\u4e00\u4e2a\u66f4\u52a0\u6df1\u5165\u7684\u7406\u89e3\u3002\u5341\u5206\u63a8\u8350\u5728\u8bfb\u5b8c CSAPP\uff0c\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u4e00\u5b9a\u7684\u4e86\u89e3\u4ee5\u540e\u4f5c\u4e3a\u8865\u5145\u8d44\u6599\u6765\u9605\u8bfb\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/","text":"Digital Design and Computer Architecture \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aETH Zurich \u5148\u4fee\u8981\u6c42\uff1aCS50 \u6216\u540c\u9636\u8bfe\u7a0b\uff0c\u6700\u597d\u6709 C \u8bed\u8a00\u57fa\u7840\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aC\uff0cVerilog\uff0cMIPS \u6c47\u7f16\uff0cLC3 \u6c47\u7f16 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u7684\u5927\u725b Onur Mutlu \u6765\u6559\u4f60\u6570\u5b57\u7535\u8def\u548c\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u3002\u8bfe\u7a0b\u5b8c\u5168\u4ece\u8ba1\u7b97\u673a\u8bbe\u8ba1\u7684\u89d2\u5ea6\u51fa\u53d1\uff0c\u4ece\u6676\u4f53\u7ba1\u3001\u903b\u8f91\u95e8\u5f00\u59cb\uff0c\u4e00\u76f4\u8bb2\u89e3\u5230\u5fae\u67b6\u6784\u3001\u7f13\u5b58\u548c\u865a\u62df\u5185\u5b58\uff0c\u8fd8\u4f1a\u4ecb\u7ecd \u5f88\u591a\u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u6700\u65b0\u7684\u7814\u7a76\u8fdb\u5c55\u3002\u8bfe\u7a0b\u5171\u6709 9 \u4e2a lab\uff0c\u4f7f\u7528 Basys 3 FPGA \u5f00\u53d1\u677f\uff08\u53ef\u81ea\u884c\u8d2d\u4e70\uff09\u548c Xilinx \u516c\u53f8\u7684 Vivado \u8f6f\u4ef6 \uff08\u53ef\u5728\u5b98\u7f51\u514d\u8d39\u4e0b\u8f7d\u4f7f\u7528\uff09\u8fdb\u884c\u7535\u8def\u8bbe\u8ba1\uff0c\u4ece\u7ec4\u5408\u7535\u8def \u548c\u65f6\u5e8f\u7535\u8def\u5f00\u59cb\uff0c\u4e00\u76f4\u5230\u6700\u540e\u90e8\u7f72\u4e00\u4e2a\u5b8c\u6574\u7684 CPU\u3002\u8bfe\u7a0b\u8d44\u6599\u9664\u4e86 lab \u7b54\u6848\u548c\u5f53\u671f\u8003\u8bd5\u7b54\u6848\u4e4b\u5916\u5168\u90e8\u5f00\u6e90\uff0c\u5b66\u5b8c\u4e4b\u540e\u4f60\u53ef\u4ee5\u638c\u63e1\u8ba1\u7b97\u673a\u76f8\u5173\u7684\u6570\u5b57\u7535\u8def\uff0cVerilog \u786c\u4ef6\u63cf\u8ff0\u8bed\u8a00\uff0cMIPS \u4e0e C \u4e4b\u95f4\u7684\u8f6c\u6362\u5173\u7cfb\uff0cMIPS \u5355\u5468\u671f\u591a\u5468\u671f\u6d41\u6c34\u7ebf CPU \u7684\u8bbe\u8ba1\u548c\u6027\u80fd\u5206\u6790\uff0c\u7f13\u5b58\uff0c\u865a\u62df\u5185\u5b58\u7b49\u91cd\u8981\u6982\u5ff5\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://safari.ethz.ch/digitaltechnik/spring2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2 \u8bfe\u7a0b\u6559\u67501\uff1aPatt and Patel, Introduction to Computing Systems \u8bfe\u7a0b\u6559\u67502\uff1aHarris and Harris, Digital Design and Computer Architecture (MIPS Edition) \u8bfe\u7a0b\u5b9e\u9a8c\uff1a9 \u4e2a\u5b9e\u9a8c\u4ece\u96f6\u5f00\u59cb\u8bbe\u8ba1 MIPS CPU\uff0c\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"Digital Design and Computer Architecture"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/#digital-design-and-computer-architecture","text":"","title":"Digital Design and Computer Architecture"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aETH Zurich \u5148\u4fee\u8981\u6c42\uff1aCS50 \u6216\u540c\u9636\u8bfe\u7a0b\uff0c\u6700\u597d\u6709 C \u8bed\u8a00\u57fa\u7840\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aC\uff0cVerilog\uff0cMIPS \u6c47\u7f16\uff0cLC3 \u6c47\u7f16 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u7684\u5927\u725b Onur Mutlu \u6765\u6559\u4f60\u6570\u5b57\u7535\u8def\u548c\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\u3002\u8bfe\u7a0b\u5b8c\u5168\u4ece\u8ba1\u7b97\u673a\u8bbe\u8ba1\u7684\u89d2\u5ea6\u51fa\u53d1\uff0c\u4ece\u6676\u4f53\u7ba1\u3001\u903b\u8f91\u95e8\u5f00\u59cb\uff0c\u4e00\u76f4\u8bb2\u89e3\u5230\u5fae\u67b6\u6784\u3001\u7f13\u5b58\u548c\u865a\u62df\u5185\u5b58\uff0c\u8fd8\u4f1a\u4ecb\u7ecd \u5f88\u591a\u4f53\u7cfb\u7ed3\u6784\u9886\u57df\u6700\u65b0\u7684\u7814\u7a76\u8fdb\u5c55\u3002\u8bfe\u7a0b\u5171\u6709 9 \u4e2a lab\uff0c\u4f7f\u7528 Basys 3 FPGA \u5f00\u53d1\u677f\uff08\u53ef\u81ea\u884c\u8d2d\u4e70\uff09\u548c Xilinx \u516c\u53f8\u7684 Vivado \u8f6f\u4ef6 \uff08\u53ef\u5728\u5b98\u7f51\u514d\u8d39\u4e0b\u8f7d\u4f7f\u7528\uff09\u8fdb\u884c\u7535\u8def\u8bbe\u8ba1\uff0c\u4ece\u7ec4\u5408\u7535\u8def \u548c\u65f6\u5e8f\u7535\u8def\u5f00\u59cb\uff0c\u4e00\u76f4\u5230\u6700\u540e\u90e8\u7f72\u4e00\u4e2a\u5b8c\u6574\u7684 CPU\u3002\u8bfe\u7a0b\u8d44\u6599\u9664\u4e86 lab \u7b54\u6848\u548c\u5f53\u671f\u8003\u8bd5\u7b54\u6848\u4e4b\u5916\u5168\u90e8\u5f00\u6e90\uff0c\u5b66\u5b8c\u4e4b\u540e\u4f60\u53ef\u4ee5\u638c\u63e1\u8ba1\u7b97\u673a\u76f8\u5173\u7684\u6570\u5b57\u7535\u8def\uff0cVerilog \u786c\u4ef6\u63cf\u8ff0\u8bed\u8a00\uff0cMIPS \u4e0e C \u4e4b\u95f4\u7684\u8f6c\u6362\u5173\u7cfb\uff0cMIPS \u5355\u5468\u671f\u591a\u5468\u671f\u6d41\u6c34\u7ebf CPU \u7684\u8bbe\u8ba1\u548c\u6027\u80fd\u5206\u6790\uff0c\u7f13\u5b58\uff0c\u865a\u62df\u5185\u5b58\u7b49\u91cd\u8981\u6982\u5ff5\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://safari.ethz.ch/digitaltechnik/spring2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2 \u8bfe\u7a0b\u6559\u67501\uff1aPatt and Patel, Introduction to Computing Systems \u8bfe\u7a0b\u6559\u67502\uff1aHarris and Harris, Digital Design and Computer Architecture (MIPS Edition) \u8bfe\u7a0b\u5b9e\u9a8c\uff1a9 \u4e2a\u5b9e\u9a8c\u4ece\u96f6\u5f00\u59cb\u8bbe\u8ba1 MIPS CPU\uff0c\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/","text":"Coursera: Nand2Tetris \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u5e0c\u4f2f\u6765\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u4efb\u9009\u4e00\u4e2a\u7f16\u7a0b\u8bed\u8a00 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 Coursera \u4e0a\u88ab\u6570\u4e07\u4eba\u8bc4\u4e3a\u6ee1\u5206\uff0c\u5728\u5168\u7403\u56db\u767e\u591a\u6240\u9ad8\u6821\u3001\u9ad8\u4e2d\u88ab\u91c7\u7528\uff0c\u8ba9\u4e00\u4e2a\u5b8c\u5168\u6ca1\u6709\u8ba1\u7b97\u673a\u57fa\u7840\u7684\u4eba\u4ece\u4e0e\u975e\u95e8\u5f00\u59cb\u9020\u4e00\u53f0\u8ba1\u7b97\u673a\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c\u4fc4\u7f57\u65af\u65b9\u5757\u5c0f\u6e38\u620f\u3002 \u542c\u8d77\u6765\u5c31\u5f88\u9177\u5bf9\u4e0d\u5bf9\uff1f\u5b9e\u73b0\u8d77\u6765\u66f4\u9177\uff01\u8fd9\u95e8\u8bfe\u5206\u4e3a\u786c\u4ef6\u548c\u8f6f\u4ef6\u4e24\u4e2a\u90e8\u5206\u3002\u5728\u786c\u4ef6\u90e8\u5206\uff0c\u4f60\u5c06\u8fdb\u5165 01 \u7684\u4e16\u754c\uff0c\u7528\u4e0e\u975e\u95e8\u6784\u9020\u51fa\u903b\u8f91\u7535\u8def\uff0c\u5e76\u9010\u6b65\u642d\u5efa\u51fa\u4e00\u4e2a CPU \u6765\u8fd0\u884c\u4e00\u5957\u8bfe\u7a0b\u4f5c\u8005\u5b9a\u4e49\u7684\u7b80\u6613\u6c47\u7f16\u4ee3\u7801\u3002\u5728\u8f6f\u4ef6\u90e8\u5206\uff0c\u4f60\u5c06\u7f16\u5199\u4e00\u4e2a\u7f16\u8bd1\u5668\uff0c\u5c06\u4f5c\u8005\u5f00\u53d1\u7684\u4e00\u4e2a\u540d\u4e3aJack\u7684\u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u4e3a\u53ef\u4ee5\u8fd0\u884c\u5728\u865a\u62df\u673a\u4e0a\u7684\u5b57\u8282\u7801\uff0c\u7136\u540e\u8fdb\u4e00\u6b65\u7ffb\u8bd1\u4e3a\u6c47\u7f16\u4ee3\u7801\u3002\u4f60\u8fd8\u5c06\u5f00\u53d1\u4e00\u4e2a\u7b80\u6613\u7684 OS\uff0c\u8ba9\u4f60\u7684\u8ba1\u7b97\u673a\u652f\u6301\u8f93\u5165\u8f93\u51fa\u56fe\u5f62\u754c\u9762\u3002\u81f3\u6b64\uff0c\u4f60\u53ef\u4ee5\u7528 Jack \u5f00\u53d1\u4e00\u4e2a\u4fc4\u7f57\u65af\u65b9\u5757\u7684\u5c0f\u6e38\u620f\uff0c\u5c06\u5b83\u7f16\u8bd1\u4e3a\u6c47\u7f16\u4ee3\u7801\uff0c\u8fd0\u884c\u5728\u4f60\u7528\u4e0e\u975e\u95e8\u642d\u5efa\u51fa\u7684 CPU \u4e0a\uff0c\u901a\u8fc7\u4f60\u5f00\u53d1\u7684 OS \u8fdb\u884c\u4ea4\u4e92\u3002\u5b66\u5b8c\u8fd9\u95e8\u8bfe\u7a0b\uff0c\u4f60\u5c06\u5bf9\u6574\u4e2a\u8ba1\u7b97\u673a\u7684\u4f53\u7cfb\u7ed3\u6784\u6709\u4e00\u4e2a\u5168\u5c40\u4e14\u6df1\u523b\u7684\u7406\u89e3\uff0c\u5bf9\u4e8e\u4f60\u540e\u7eed\u8bfe\u7a0b\u7684\u5b66\u4e60\u6709\u7740\u83ab\u5927\u7684\u5e2e\u52a9\u3002 \u4f60\u4e5f\u8bb8\u4f1a\u62c5\u5fc3\u8bfe\u7a0b\u4f1a\u4e0d\u4f1a\u5f88\u96be\uff0c\u4f46\u8fd9\u95e8\u8bfe\u9762\u5411\u7684\u4eba\u7fa4\u662f\u5b8c\u5168\u6ca1\u6709\u8ba1\u7b97\u673a\u57fa\u7840\u7684\u4eba\uff0c\u8bfe\u7a0b\u4f5c\u8005\u7684\u76ee\u6807\u662f\u8ba9\u9ad8\u4e2d\u751f\u90fd\u80fd\u7406\u89e3\u3002\u56e0\u6b64\uff0c\u53ea\u8981\u4f60\u6309\u90e8\u5c31\u73ed\u8ddf\u7740\u8bfe\u7a0b\u89c4\u5212\u8d70\uff0c\u4e00\u4e2a\u6708\u5185\u5b66\u5b8c\u5e94\u8be5\u7ef0\u7ef0\u6709\u4f59\u3002\u9ebb\u96c0\u867d\u5c0f\u4f46\u662f\u4e94\u810f\u4ff1\u5168\uff0c\u8fd9\u95e8\u8bfe\u5f88\u597d\u5730\u63d0\u53d6\u51fa\u4e86\u8ba1\u7b97\u673a\u7684\u672c\u8d28\uff0c\u800c\u4e0d\u8fc7\u591a\u5730\u9677\u4e8e\u73b0\u4ee3\u8ba1\u7b97\u673a\u4e3a\u4e86\u6027\u80fd\u800c\u8bbe\u8ba1\u51fa\u7684\u4f17\u591a\u590d\u6742\u7ec6\u8282\u3002\u8ba9\u5b66\u4e60\u8005\u80fd\u5728\u8f7b\u677e\u6109\u5feb\u7684\u5b66\u4e60\u4f53\u9a8c\u4e2d\u611f\u53d7\u8ba1\u7b97\u673a\u7684\u4f18\u96c5\u4e0e\u795e\u5947\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a Nand2Tetris I , Nand2Tetris II \u8bfe\u7a0b\u89c6\u9891\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a \u8ba1\u7b97\u673a\u7cfb\u7edf\u8981\u7d20\uff1a\u4ece\u96f6\u5f00\u59cb\u6784\u5efa\u73b0\u4ee3\u8ba1\u7b97\u673a \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10 \u4e2a Project \u5e26\u4f60\u9020\u53f0\u8ba1\u7b97\u673a\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/NandToTetris - GitHub \u4e2d\u3002","title":"Coursera: Nand2Tetris"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/#coursera-nand2tetris","text":"","title":"Coursera: Nand2Tetris"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u5e0c\u4f2f\u6765\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u4efb\u9009\u4e00\u4e2a\u7f16\u7a0b\u8bed\u8a00 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 Coursera \u4e0a\u88ab\u6570\u4e07\u4eba\u8bc4\u4e3a\u6ee1\u5206\uff0c\u5728\u5168\u7403\u56db\u767e\u591a\u6240\u9ad8\u6821\u3001\u9ad8\u4e2d\u88ab\u91c7\u7528\uff0c\u8ba9\u4e00\u4e2a\u5b8c\u5168\u6ca1\u6709\u8ba1\u7b97\u673a\u57fa\u7840\u7684\u4eba\u4ece\u4e0e\u975e\u95e8\u5f00\u59cb\u9020\u4e00\u53f0\u8ba1\u7b97\u673a\uff0c\u5e76\u5728\u4e0a\u9762\u8fd0\u884c\u4fc4\u7f57\u65af\u65b9\u5757\u5c0f\u6e38\u620f\u3002 \u542c\u8d77\u6765\u5c31\u5f88\u9177\u5bf9\u4e0d\u5bf9\uff1f\u5b9e\u73b0\u8d77\u6765\u66f4\u9177\uff01\u8fd9\u95e8\u8bfe\u5206\u4e3a\u786c\u4ef6\u548c\u8f6f\u4ef6\u4e24\u4e2a\u90e8\u5206\u3002\u5728\u786c\u4ef6\u90e8\u5206\uff0c\u4f60\u5c06\u8fdb\u5165 01 \u7684\u4e16\u754c\uff0c\u7528\u4e0e\u975e\u95e8\u6784\u9020\u51fa\u903b\u8f91\u7535\u8def\uff0c\u5e76\u9010\u6b65\u642d\u5efa\u51fa\u4e00\u4e2a CPU \u6765\u8fd0\u884c\u4e00\u5957\u8bfe\u7a0b\u4f5c\u8005\u5b9a\u4e49\u7684\u7b80\u6613\u6c47\u7f16\u4ee3\u7801\u3002\u5728\u8f6f\u4ef6\u90e8\u5206\uff0c\u4f60\u5c06\u7f16\u5199\u4e00\u4e2a\u7f16\u8bd1\u5668\uff0c\u5c06\u4f5c\u8005\u5f00\u53d1\u7684\u4e00\u4e2a\u540d\u4e3aJack\u7684\u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u4e3a\u53ef\u4ee5\u8fd0\u884c\u5728\u865a\u62df\u673a\u4e0a\u7684\u5b57\u8282\u7801\uff0c\u7136\u540e\u8fdb\u4e00\u6b65\u7ffb\u8bd1\u4e3a\u6c47\u7f16\u4ee3\u7801\u3002\u4f60\u8fd8\u5c06\u5f00\u53d1\u4e00\u4e2a\u7b80\u6613\u7684 OS\uff0c\u8ba9\u4f60\u7684\u8ba1\u7b97\u673a\u652f\u6301\u8f93\u5165\u8f93\u51fa\u56fe\u5f62\u754c\u9762\u3002\u81f3\u6b64\uff0c\u4f60\u53ef\u4ee5\u7528 Jack \u5f00\u53d1\u4e00\u4e2a\u4fc4\u7f57\u65af\u65b9\u5757\u7684\u5c0f\u6e38\u620f\uff0c\u5c06\u5b83\u7f16\u8bd1\u4e3a\u6c47\u7f16\u4ee3\u7801\uff0c\u8fd0\u884c\u5728\u4f60\u7528\u4e0e\u975e\u95e8\u642d\u5efa\u51fa\u7684 CPU \u4e0a\uff0c\u901a\u8fc7\u4f60\u5f00\u53d1\u7684 OS \u8fdb\u884c\u4ea4\u4e92\u3002\u5b66\u5b8c\u8fd9\u95e8\u8bfe\u7a0b\uff0c\u4f60\u5c06\u5bf9\u6574\u4e2a\u8ba1\u7b97\u673a\u7684\u4f53\u7cfb\u7ed3\u6784\u6709\u4e00\u4e2a\u5168\u5c40\u4e14\u6df1\u523b\u7684\u7406\u89e3\uff0c\u5bf9\u4e8e\u4f60\u540e\u7eed\u8bfe\u7a0b\u7684\u5b66\u4e60\u6709\u7740\u83ab\u5927\u7684\u5e2e\u52a9\u3002 \u4f60\u4e5f\u8bb8\u4f1a\u62c5\u5fc3\u8bfe\u7a0b\u4f1a\u4e0d\u4f1a\u5f88\u96be\uff0c\u4f46\u8fd9\u95e8\u8bfe\u9762\u5411\u7684\u4eba\u7fa4\u662f\u5b8c\u5168\u6ca1\u6709\u8ba1\u7b97\u673a\u57fa\u7840\u7684\u4eba\uff0c\u8bfe\u7a0b\u4f5c\u8005\u7684\u76ee\u6807\u662f\u8ba9\u9ad8\u4e2d\u751f\u90fd\u80fd\u7406\u89e3\u3002\u56e0\u6b64\uff0c\u53ea\u8981\u4f60\u6309\u90e8\u5c31\u73ed\u8ddf\u7740\u8bfe\u7a0b\u89c4\u5212\u8d70\uff0c\u4e00\u4e2a\u6708\u5185\u5b66\u5b8c\u5e94\u8be5\u7ef0\u7ef0\u6709\u4f59\u3002\u9ebb\u96c0\u867d\u5c0f\u4f46\u662f\u4e94\u810f\u4ff1\u5168\uff0c\u8fd9\u95e8\u8bfe\u5f88\u597d\u5730\u63d0\u53d6\u51fa\u4e86\u8ba1\u7b97\u673a\u7684\u672c\u8d28\uff0c\u800c\u4e0d\u8fc7\u591a\u5730\u9677\u4e8e\u73b0\u4ee3\u8ba1\u7b97\u673a\u4e3a\u4e86\u6027\u80fd\u800c\u8bbe\u8ba1\u51fa\u7684\u4f17\u591a\u590d\u6742\u7ec6\u8282\u3002\u8ba9\u5b66\u4e60\u8005\u80fd\u5728\u8f7b\u677e\u6109\u5feb\u7684\u5b66\u4e60\u4f53\u9a8c\u4e2d\u611f\u53d7\u8ba1\u7b97\u673a\u7684\u4f18\u96c5\u4e0e\u795e\u5947\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a Nand2Tetris I , Nand2Tetris II \u8bfe\u7a0b\u89c6\u9891\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a \u8ba1\u7b97\u673a\u7cfb\u7edf\u8981\u7d20\uff1a\u4ece\u96f6\u5f00\u59cb\u6784\u5efa\u73b0\u4ee3\u8ba1\u7b97\u673a \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10 \u4e2a Project \u5e26\u4f60\u9020\u53f0\u8ba1\u7b97\u673a\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/NandToTetris - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/","text":"CMU 15-418/Stanford CS149: Parallel Computing \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u548c Stanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u719f\u6089 C++ \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 Kayvon Fatahalian \u6559\u6388\u6b64\u524d\u5728 CMU \u5f00\u4e86 15-418 \u8fd9\u95e8\u8bfe\uff0c\u540e\u6765\u4ed6\u6210\u4e3a Stanford \u7684\u52a9\u7406\u6559\u6388\u540e\u53c8\u5f00\u4e86\u7c7b\u4f3c\u7684\u8bfe\u7a0b CS149\u3002\u4f46\u603b\u4f53\u6765\u8bf4\uff0c15-418 \u5305\u542b\u7684\u8bfe\u7a0b\u5185\u5bb9\u66f4\u4e30\u5bcc\uff0c\u5e76\u4e14\u6709\u8bfe\u7a0b\u56de\u653e\uff0c\u4f46 CS149 \u7684\u7f16\u7a0b\u4f5c\u4e1a\u66f4 fashion \u4e00\u4e9b\u3002\u6211\u4e2a\u4eba\u662f\u89c2\u770b\u7684 15-418 \u7684\u8bfe\u7a0b\u5f55\u5f71\u4f46\u5b8c\u6210\u7684 CS149 \u7684\u4f5c\u4e1a\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u5e26\u4f60\u6df1\u5165\u7406\u89e3\u73b0\u4ee3\u5e76\u884c\u8ba1\u7b97\u67b6\u6784\u7684\u8bbe\u8ba1\u539f\u5219\u4e0e\u5fc5\u8981\u6743\u8861\uff0c\u5e76\u5b66\u4f1a\u5982\u4f55\u5145\u5206\u5229\u7528\u786c\u4ef6\u8d44\u6e90\u4ee5\u53ca\u8f6f\u4ef6\u7f16\u7a0b\u6846\u67b6\uff08\u4f8b\u5982 CUDA\uff0cMPI\uff0cOpenMP \u7b49\uff09\u7f16\u5199\u9ad8\u6027\u80fd\u7684\u5e76\u884c\u7a0b\u5e8f\u3002\u7531\u4e8e\u5e76\u884c\u8ba1\u7b97\u67b6\u6784\u7684\u590d\u6742\u6027\uff0c\u8fd9\u95e8\u8bfe\u4f1a\u6d89\u53ca\u8bf8\u591a\u9ad8\u7ea7\u4f53\u7cfb\u7ed3\u6784\u4e0e\u7f51\u7edc\u901a\u4fe1\u7684\u5185\u5bb9\uff0c\u77e5\u8bc6\u70b9\u76f8\u5f53\u5e95\u5c42\u4e14\u786c\u6838\u3002\u4e0e\u6b64\u540c\u65f6\uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5219\u662f\u4ece\u8f6f\u4ef6\u7684\u5c42\u9762\u57f9\u517b\u5b66\u751f\u5bf9\u4e0a\u5c42\u62bd\u8c61\u7684\u7406\u89e3\u4e0e\u8fd0\u7528\uff0c\u5177\u4f53\u4f1a\u8ba9\u4f60\u5206\u6790\u5e76\u884c\u7a0b\u5e8f\u7684\u74f6\u9888\u3001\u7f16\u5199\u591a\u7ebf\u7a0b\u540c\u6b65\u4ee3\u7801\u3001\u5b66\u4e60 CUDA \u7f16\u7a0b\u3001OpenMP \u7f16\u7a0b\u4ee5\u53ca\u524d\u6bb5\u65f6\u95f4\u5927\u70ed\u7684 Spark \u6846\u67b6\u7b49\u7b49\u3002\u771f\u6b63\u610f\u4e49\u4e0a\u5c06\u7406\u8bba\u4e0e\u5b9e\u8df5\u5b8c\u7f8e\u5730\u7ed3\u5408\u5728\u4e86\u4e00\u8d77\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a CMU15418 , CS149 \u8bfe\u7a0b\u89c6\u9891\uff1a http://15418.courses.cs.cmu.edu/spring2016/lectures \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://gfxcourses.stanford.edu/cs149/fall21 \uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS149-parallel-computing - GitHub \u4e2d\u3002","title":"CMU 15-418/Stanford CS149: Parallel Computing"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/#cmu-15-418stanford-cs149-parallel-computing","text":"","title":"CMU 15-418/Stanford CS149: Parallel Computing"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u548c Stanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u719f\u6089 C++ \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 Kayvon Fatahalian \u6559\u6388\u6b64\u524d\u5728 CMU \u5f00\u4e86 15-418 \u8fd9\u95e8\u8bfe\uff0c\u540e\u6765\u4ed6\u6210\u4e3a Stanford \u7684\u52a9\u7406\u6559\u6388\u540e\u53c8\u5f00\u4e86\u7c7b\u4f3c\u7684\u8bfe\u7a0b CS149\u3002\u4f46\u603b\u4f53\u6765\u8bf4\uff0c15-418 \u5305\u542b\u7684\u8bfe\u7a0b\u5185\u5bb9\u66f4\u4e30\u5bcc\uff0c\u5e76\u4e14\u6709\u8bfe\u7a0b\u56de\u653e\uff0c\u4f46 CS149 \u7684\u7f16\u7a0b\u4f5c\u4e1a\u66f4 fashion \u4e00\u4e9b\u3002\u6211\u4e2a\u4eba\u662f\u89c2\u770b\u7684 15-418 \u7684\u8bfe\u7a0b\u5f55\u5f71\u4f46\u5b8c\u6210\u7684 CS149 \u7684\u4f5c\u4e1a\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u5e26\u4f60\u6df1\u5165\u7406\u89e3\u73b0\u4ee3\u5e76\u884c\u8ba1\u7b97\u67b6\u6784\u7684\u8bbe\u8ba1\u539f\u5219\u4e0e\u5fc5\u8981\u6743\u8861\uff0c\u5e76\u5b66\u4f1a\u5982\u4f55\u5145\u5206\u5229\u7528\u786c\u4ef6\u8d44\u6e90\u4ee5\u53ca\u8f6f\u4ef6\u7f16\u7a0b\u6846\u67b6\uff08\u4f8b\u5982 CUDA\uff0cMPI\uff0cOpenMP \u7b49\uff09\u7f16\u5199\u9ad8\u6027\u80fd\u7684\u5e76\u884c\u7a0b\u5e8f\u3002\u7531\u4e8e\u5e76\u884c\u8ba1\u7b97\u67b6\u6784\u7684\u590d\u6742\u6027\uff0c\u8fd9\u95e8\u8bfe\u4f1a\u6d89\u53ca\u8bf8\u591a\u9ad8\u7ea7\u4f53\u7cfb\u7ed3\u6784\u4e0e\u7f51\u7edc\u901a\u4fe1\u7684\u5185\u5bb9\uff0c\u77e5\u8bc6\u70b9\u76f8\u5f53\u5e95\u5c42\u4e14\u786c\u6838\u3002\u4e0e\u6b64\u540c\u65f6\uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5219\u662f\u4ece\u8f6f\u4ef6\u7684\u5c42\u9762\u57f9\u517b\u5b66\u751f\u5bf9\u4e0a\u5c42\u62bd\u8c61\u7684\u7406\u89e3\u4e0e\u8fd0\u7528\uff0c\u5177\u4f53\u4f1a\u8ba9\u4f60\u5206\u6790\u5e76\u884c\u7a0b\u5e8f\u7684\u74f6\u9888\u3001\u7f16\u5199\u591a\u7ebf\u7a0b\u540c\u6b65\u4ee3\u7801\u3001\u5b66\u4e60 CUDA \u7f16\u7a0b\u3001OpenMP \u7f16\u7a0b\u4ee5\u53ca\u524d\u6bb5\u65f6\u95f4\u5927\u70ed\u7684 Spark \u6846\u67b6\u7b49\u7b49\u3002\u771f\u6b63\u610f\u4e49\u4e0a\u5c06\u7406\u8bba\u4e0e\u5b9e\u8df5\u5b8c\u7f8e\u5730\u7ed3\u5408\u5728\u4e86\u4e00\u8d77\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a CMU15418 , CS149 \u8bfe\u7a0b\u89c6\u9891\uff1a http://15418.courses.cs.cmu.edu/spring2016/lectures \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://gfxcourses.stanford.edu/cs149/fall21 \uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS149-parallel-computing - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/","text":"MIT6.824: Distributed System \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u5e76\u884c\u7f16\u7a0b \u7f16\u7a0b\u8bed\u8a00\uff1aGo \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a200 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u548c MIT 6.S081 \u4e00\u6837\uff0c\u51fa\u54c1\u81ea MIT \u5927\u540d\u9f0e\u9f0e\u7684 PDOS \u5b9e\u9a8c\u5ba4\uff0c\u6388\u8bfe\u8001\u5e08 Robert Morris \u6559\u6388\u66fe\u662f\u4e00\u4f4d\u9876\u5c16\u9ed1\u5ba2\uff0c\u4e16\u754c\u4e0a\u7b2c\u4e00\u4e2a\u8815\u866b\u75c5\u6bd2 Morris \u75c5\u6bd2\u5c31\u662f\u51fa\u81ea\u4ed6\u4e4b\u624b\u3002 \u8fd9\u95e8\u8bfe\u6bcf\u8282\u8bfe\u90fd\u4f1a\u7cbe\u8bfb\u4e00\u7bc7\u5206\u5e03\u5f0f\u7cfb\u7edf\u9886\u57df\u7684\u7ecf\u5178\u8bba\u6587\uff0c\u5e76\u7531\u6b64\u4f20\u6388\u5206\u5e03\u5f0f\u7cfb\u7edf\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u7684\u91cd\u8981\u539f\u5219\u548c\u5173\u952e\u6280\u672f\u3002\u540c\u65f6\u5176\u8bfe\u7a0b Project \u4e5f\u662f\u4ee5\u5176\u96be\u5ea6\u4e4b\u5927\u800c\u95fb\u540d\u9050\u8fe9\uff0c4 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5faa\u5e8f\u6e10\u8fdb\u5e26\u4f60\u5b9e\u73b0\u4e00\u4e2a\u57fa\u4e8e Raft \u5171\u8bc6\u7b97\u6cd5\u7684 KV-store \u6846\u67b6\uff0c\u8ba9\u4f60\u5728\u75db\u82e6\u7684 debug \u4e2d\u4f53\u4f1a\u5e76\u884c\u4e0e\u5206\u5e03\u5f0f\u5e26\u6765\u7684\u968f\u673a\u6027\u548c\u590d\u6742\u6027\u3002 \u540c\u6837\uff0c\u8fd9\u95e8\u8bfe\u7531\u4e8e\u592a\u8fc7\u51fa\u540d\uff0c\u7f51\u4e0a\u7b54\u6848\u65e0\u6570\uff0c\u5e0c\u671b\u5927\u5bb6\u4e0d\u8981\u53c2\u8003\uff0c\u800c\u662f\u529b\u56fe\u81ea\u4e3b\u5b9e\u73b0\u6574\u4e2a Project\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://pdos.csail.mit.edu/6.824/schedule.html \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0\uff0c\u4ee5\u9605\u8bfb\u8bba\u6587\u4e3a\u4e3b \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a\u975e\u5e38\u8650\u7684 Project\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.824 - GitHub \u4e2d\u3002 @ OneSizeFitsQuorum \u7684 Lab \u6587\u6863 \u8f83\u4e3a\u6e05\u6670\u5730\u4ecb\u7ecd\u4e86\u5b9e\u73b0 lab 1-4 \u548c challenge 1-2 \u65f6\u9700\u8981\u8003\u8651\u7684\u8bb8\u591a\u7ec6\u8282\uff0c\u5728\u9047\u5230\u74f6\u9888\u671f\u65f6\u53ef\u4ee5\u9605\u8bfb\u4e00\u4e0b~~","title":"MIT 6.824: Distributed System"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/#mit6824-distributed-system","text":"","title":"MIT6.824: Distributed System"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u5e76\u884c\u7f16\u7a0b \u7f16\u7a0b\u8bed\u8a00\uff1aGo \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a200 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u548c MIT 6.S081 \u4e00\u6837\uff0c\u51fa\u54c1\u81ea MIT \u5927\u540d\u9f0e\u9f0e\u7684 PDOS \u5b9e\u9a8c\u5ba4\uff0c\u6388\u8bfe\u8001\u5e08 Robert Morris \u6559\u6388\u66fe\u662f\u4e00\u4f4d\u9876\u5c16\u9ed1\u5ba2\uff0c\u4e16\u754c\u4e0a\u7b2c\u4e00\u4e2a\u8815\u866b\u75c5\u6bd2 Morris \u75c5\u6bd2\u5c31\u662f\u51fa\u81ea\u4ed6\u4e4b\u624b\u3002 \u8fd9\u95e8\u8bfe\u6bcf\u8282\u8bfe\u90fd\u4f1a\u7cbe\u8bfb\u4e00\u7bc7\u5206\u5e03\u5f0f\u7cfb\u7edf\u9886\u57df\u7684\u7ecf\u5178\u8bba\u6587\uff0c\u5e76\u7531\u6b64\u4f20\u6388\u5206\u5e03\u5f0f\u7cfb\u7edf\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u7684\u91cd\u8981\u539f\u5219\u548c\u5173\u952e\u6280\u672f\u3002\u540c\u65f6\u5176\u8bfe\u7a0b Project \u4e5f\u662f\u4ee5\u5176\u96be\u5ea6\u4e4b\u5927\u800c\u95fb\u540d\u9050\u8fe9\uff0c4 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5faa\u5e8f\u6e10\u8fdb\u5e26\u4f60\u5b9e\u73b0\u4e00\u4e2a\u57fa\u4e8e Raft \u5171\u8bc6\u7b97\u6cd5\u7684 KV-store \u6846\u67b6\uff0c\u8ba9\u4f60\u5728\u75db\u82e6\u7684 debug \u4e2d\u4f53\u4f1a\u5e76\u884c\u4e0e\u5206\u5e03\u5f0f\u5e26\u6765\u7684\u968f\u673a\u6027\u548c\u590d\u6742\u6027\u3002 \u540c\u6837\uff0c\u8fd9\u95e8\u8bfe\u7531\u4e8e\u592a\u8fc7\u51fa\u540d\uff0c\u7f51\u4e0a\u7b54\u6848\u65e0\u6570\uff0c\u5e0c\u671b\u5927\u5bb6\u4e0d\u8981\u53c2\u8003\uff0c\u800c\u662f\u529b\u56fe\u81ea\u4e3b\u5b9e\u73b0\u6574\u4e2a Project\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://pdos.csail.mit.edu/6.824/schedule.html \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0\uff0c\u4ee5\u9605\u8bfb\u8bba\u6587\u4e3a\u4e3b \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a\u975e\u5e38\u8650\u7684 Project\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.824 - GitHub \u4e2d\u3002 @ OneSizeFitsQuorum \u7684 Lab \u6587\u6863 \u8f83\u4e3a\u6e05\u6670\u5730\u4ecb\u7ecd\u4e86\u5b9e\u73b0 lab 1-4 \u548c challenge 1-2 \u65f6\u9700\u8981\u8003\u8651\u7684\u8bb8\u591a\u7ec6\u8282\uff0c\u5728\u9047\u5230\u74f6\u9888\u671f\u65f6\u53ef\u4ee5\u9605\u8bfb\u4e00\u4e0b~~","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/","text":"CMake \u4e3a\u4ec0\u4e48\u5b66\u4e60 CMake CMake \u662f\u7c7b\u4f3c\u4e8e GNU make \u7684\u8de8\u5e73\u53f0\u81ea\u52a8\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\uff0c\u4f7f\u7528 CMakeLists.txt \u5b9a\u4e49\u6784\u5efa\u89c4\u5219\uff0c\u76f8\u6bd4\u4e8e make \u5b83\u63d0\u4f9b\u4e86\u66f4\u591a\u7684\u529f\u80fd\uff0c\u5728\u5404\u79cd\u8f6f\u4ef6\u6784\u5efa\u4e0a\u5e7f\u6cdb\u4f7f\u7528\u3002 \u5f3a\u70c8\u5efa\u8bae\u5b66\u4e60\u4f7f\u7528 GNU Make \u548c\u719f\u6089 Makefile \u540e\u518d\u5b66\u4e60 CMake \u3002 \u5982\u4f55\u5b66\u4e60 CMake CMakeLists.txt \u6bd4 Makefile \u66f4\u4e3a\u62bd\u8c61\uff0c\u7406\u89e3\u548c\u4f7f\u7528\u96be\u5ea6\u4e5f\u66f4\u5927\u3002\u73b0\u9636\u6bb5\u5f88\u591a IDE (\u5982 Visual Studio, CLion) \u63d0\u4f9b\u4e86\u81ea\u52a8\u751f\u6210 CMakeLists.txt \u7684\u529f\u80fd\uff0c\u4f46\u638c\u63e1 CMakeLists.txt \u7684\u57fa\u672c\u7528\u6cd5\u4ecd\u7136\u5f88\u6709\u5fc5\u8981\u3002\u9664\u4e86 CMake \u5b98\u65b9 Tutorial \u5916\uff0c\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66 IPADS \u7ec4\u65b0\u4eba\u57f9\u8bad\u4e5f\u63d0\u4f9b\u4e86 \u5927\u7ea6\u4e00\u5c0f\u65f6\u7684\u89c6\u9891\u6559\u7a0b \u3002","title":"CMake"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/#cmake","text":"","title":"CMake"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/#cmake_1","text":"CMake \u662f\u7c7b\u4f3c\u4e8e GNU make \u7684\u8de8\u5e73\u53f0\u81ea\u52a8\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\uff0c\u4f7f\u7528 CMakeLists.txt \u5b9a\u4e49\u6784\u5efa\u89c4\u5219\uff0c\u76f8\u6bd4\u4e8e make \u5b83\u63d0\u4f9b\u4e86\u66f4\u591a\u7684\u529f\u80fd\uff0c\u5728\u5404\u79cd\u8f6f\u4ef6\u6784\u5efa\u4e0a\u5e7f\u6cdb\u4f7f\u7528\u3002 \u5f3a\u70c8\u5efa\u8bae\u5b66\u4e60\u4f7f\u7528 GNU Make \u548c\u719f\u6089 Makefile \u540e\u518d\u5b66\u4e60 CMake \u3002","title":"\u4e3a\u4ec0\u4e48\u5b66\u4e60 CMake"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/#cmake_2","text":"CMakeLists.txt \u6bd4 Makefile \u66f4\u4e3a\u62bd\u8c61\uff0c\u7406\u89e3\u548c\u4f7f\u7528\u96be\u5ea6\u4e5f\u66f4\u5927\u3002\u73b0\u9636\u6bb5\u5f88\u591a IDE (\u5982 Visual Studio, CLion) \u63d0\u4f9b\u4e86\u81ea\u52a8\u751f\u6210 CMakeLists.txt \u7684\u529f\u80fd\uff0c\u4f46\u638c\u63e1 CMakeLists.txt \u7684\u57fa\u672c\u7528\u6cd5\u4ecd\u7136\u5f88\u6709\u5fc5\u8981\u3002\u9664\u4e86 CMake \u5b98\u65b9 Tutorial \u5916\uff0c\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66 IPADS \u7ec4\u65b0\u4eba\u57f9\u8bad\u4e5f\u63d0\u4f9b\u4e86 \u5927\u7ea6\u4e00\u5c0f\u65f6\u7684\u89c6\u9891\u6559\u7a0b \u3002","title":"\u5982\u4f55\u5b66\u4e60 CMake"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/","text":"Docker \u4e3a\u4ec0\u4e48\u4f7f\u7528 Docker \u4f7f\u7528\u522b\u4eba\u5199\u597d\u7684\u8f6f\u4ef6/\u5de5\u5177\u6700\u5927\u7684\u969c\u788d\u662f\u4ec0\u4e48\u2014\u2014\u5fc5\u7136\u662f\u914d\u73af\u5883\u3002\u914d\u73af\u5883\u5e26\u6765\u7684\u6298\u78e8\u4f1a\u6781\u5927\u5730\u6d88\u89e3\u4f60\u5bf9\u8f6f\u4ef6\u3001\u7f16\u7a0b\u672c\u8eab\u7684\u5174\u8da3\u3002\u865a\u62df\u673a\u53ef\u4ee5\u89e3\u51b3\u914d\u73af\u5883\u7684\u4e00\u90e8\u5206\u95ee\u9898\uff0c\u4f46\u5b83\u5e9e\u5927\u7b28\u91cd\uff0c\u4e14\u4e3a\u4e86\u67d0\u4e2a\u5e94\u7528\u7684\u73af\u5883\u914d\u7f6e\u597d\u50cf\u4e5f\u4e0d\u503c\u5f97\u6a21\u62df\u4e00\u4e2a\u5168\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u3002 Docker \u7684\u51fa\u73b0\u8ba9\u73af\u5883\u914d\u7f6e\u53d8\u5f97\uff08\u6216\u8bb8\uff09\u4e0d\u518d\u6298\u78e8\u3002\u7b80\u5355\u6765\u8bf4 Docker \u4f7f\u7528\u8f7b\u91cf\u7ea7\u7684\u201c\u5bb9\u5668\u201d\uff08container\uff09\u800c\u4e0d\u662f\u6574\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u53bb\u652f\u6301\u4e00\u4e2a\u5e94\u7528\u7684\u914d\u7f6e\u3002\u5e94\u7528\u81ea\u8eab\u8fde\u540c\u5b83\u7684\u73af\u5883\u914d\u7f6e\u88ab\u6253\u5305\u4e3a\u4e00\u4e2a\u4e2a image \u53ef\u4ee5\u81ea\u7531\u8fd0\u884c\u5728\u4e0d\u540c\u5e73\u53f0\u7684\u4e00\u4e2a\u4e2a container \u4e2d\uff0c\u8fd9\u6781\u5927\u5730\u8282\u7701\u4e86\u6240\u6709\u4eba\u7684\u65f6\u95f4\u6210\u672c\u3002 \u5982\u4f55\u5b66\u4e60 Docker Docker \u5b98\u65b9\u6587\u6863 \u5f53\u7136\u662f\u6700\u597d\u7684\u521d\u5b66\u6559\u6750\uff0c\u4f46\u6700\u597d\u7684\u5bfc\u5e08\u4e00\u5b9a\u662f\u4f60\u81ea\u5df1\u2014\u2014\u5c1d\u8bd5\u53bb\u4f7f\u7528 Docker \u624d\u80fd\u4eab\u53d7\u5b83\u5e26\u6765\u7684\u4fbf\u5229\u3002Docker \u5728\u5de5\u4e1a\u754c\u53d1\u5c55\u8fc5\u731b\u5e76\u5df2\u7ecf\u975e\u5e38\u6210\u719f\uff0c\u4f60\u53ef\u4ee5\u4e0b\u8f7d\u5b83\u7684\u684c\u9762\u7aef\u5e76\u4f7f\u7528\u56fe\u5f62\u754c\u9762\u3002 \u5f53\u7136\uff0c\u5982\u679c\u4f60\u50cf\u6211\u4e00\u6837\uff0c\u662f\u4e00\u4e2a\u75af\u72c2\u7684\u9020\u8f6e\u5b50\u7231\u597d\u8005\uff0c\u90a3\u4e0d\u59a8\u81ea\u5df1\u4eb2\u624b\u5199\u4e00\u4e2a \u8ff7\u4f60 Docker \u6765\u52a0\u6df1\u7406\u89e3\u3002 KodeKloud Docker for the Absolute Beginner \u5168\u9762\u7684\u4ecb\u7ecd\u4e86 Docker \u7684\u57fa\u7840\u529f\u80fd\uff0c\u5e76\u4e14\u6709\u5927\u91cf\u7684\u914d\u5957\u7ec3\u4e60\uff0c\u540c\u65f6\u63d0\u4f9b\u514d\u8d39\u7684\u4e91\u73af\u5883\u6765\u5b8c\u6210\u7ec3\u4e60\u3002\u5176\u4f59\u7684\u4e91\u76f8\u5173\u7684\u8bfe\u7a0b\u5982 Kubernetes \u9700\u8981\u4ed8\u8d39\uff0c\u4f46\u4e2a\u4eba\u5f3a\u70c8\u63a8\u8350\uff1a\u8bb2\u89e3\u975e\u5e38\u4ed4\u7ec6\uff0c\u9002\u5408\u4ece 0 \u5f00\u59cb\u7684\u65b0\u624b\uff1b\u6709\u914d\u5957\u7684 Kubernetes \u7684\u5b9e\u9a8c\u73af\u5883\uff0c\u4e0d\u7528\u88ab\u642d\u5efa\u73af\u5883\u529d\u9000\u3002","title":"Docker"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/#docker","text":"","title":"Docker"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/#docker_1","text":"\u4f7f\u7528\u522b\u4eba\u5199\u597d\u7684\u8f6f\u4ef6/\u5de5\u5177\u6700\u5927\u7684\u969c\u788d\u662f\u4ec0\u4e48\u2014\u2014\u5fc5\u7136\u662f\u914d\u73af\u5883\u3002\u914d\u73af\u5883\u5e26\u6765\u7684\u6298\u78e8\u4f1a\u6781\u5927\u5730\u6d88\u89e3\u4f60\u5bf9\u8f6f\u4ef6\u3001\u7f16\u7a0b\u672c\u8eab\u7684\u5174\u8da3\u3002\u865a\u62df\u673a\u53ef\u4ee5\u89e3\u51b3\u914d\u73af\u5883\u7684\u4e00\u90e8\u5206\u95ee\u9898\uff0c\u4f46\u5b83\u5e9e\u5927\u7b28\u91cd\uff0c\u4e14\u4e3a\u4e86\u67d0\u4e2a\u5e94\u7528\u7684\u73af\u5883\u914d\u7f6e\u597d\u50cf\u4e5f\u4e0d\u503c\u5f97\u6a21\u62df\u4e00\u4e2a\u5168\u65b0\u7684\u64cd\u4f5c\u7cfb\u7edf\u3002 Docker \u7684\u51fa\u73b0\u8ba9\u73af\u5883\u914d\u7f6e\u53d8\u5f97\uff08\u6216\u8bb8\uff09\u4e0d\u518d\u6298\u78e8\u3002\u7b80\u5355\u6765\u8bf4 Docker \u4f7f\u7528\u8f7b\u91cf\u7ea7\u7684\u201c\u5bb9\u5668\u201d\uff08container\uff09\u800c\u4e0d\u662f\u6574\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u53bb\u652f\u6301\u4e00\u4e2a\u5e94\u7528\u7684\u914d\u7f6e\u3002\u5e94\u7528\u81ea\u8eab\u8fde\u540c\u5b83\u7684\u73af\u5883\u914d\u7f6e\u88ab\u6253\u5305\u4e3a\u4e00\u4e2a\u4e2a image \u53ef\u4ee5\u81ea\u7531\u8fd0\u884c\u5728\u4e0d\u540c\u5e73\u53f0\u7684\u4e00\u4e2a\u4e2a container \u4e2d\uff0c\u8fd9\u6781\u5927\u5730\u8282\u7701\u4e86\u6240\u6709\u4eba\u7684\u65f6\u95f4\u6210\u672c\u3002","title":"\u4e3a\u4ec0\u4e48\u4f7f\u7528 Docker"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/#docker_2","text":"Docker \u5b98\u65b9\u6587\u6863 \u5f53\u7136\u662f\u6700\u597d\u7684\u521d\u5b66\u6559\u6750\uff0c\u4f46\u6700\u597d\u7684\u5bfc\u5e08\u4e00\u5b9a\u662f\u4f60\u81ea\u5df1\u2014\u2014\u5c1d\u8bd5\u53bb\u4f7f\u7528 Docker \u624d\u80fd\u4eab\u53d7\u5b83\u5e26\u6765\u7684\u4fbf\u5229\u3002Docker \u5728\u5de5\u4e1a\u754c\u53d1\u5c55\u8fc5\u731b\u5e76\u5df2\u7ecf\u975e\u5e38\u6210\u719f\uff0c\u4f60\u53ef\u4ee5\u4e0b\u8f7d\u5b83\u7684\u684c\u9762\u7aef\u5e76\u4f7f\u7528\u56fe\u5f62\u754c\u9762\u3002 \u5f53\u7136\uff0c\u5982\u679c\u4f60\u50cf\u6211\u4e00\u6837\uff0c\u662f\u4e00\u4e2a\u75af\u72c2\u7684\u9020\u8f6e\u5b50\u7231\u597d\u8005\uff0c\u90a3\u4e0d\u59a8\u81ea\u5df1\u4eb2\u624b\u5199\u4e00\u4e2a \u8ff7\u4f60 Docker \u6765\u52a0\u6df1\u7406\u89e3\u3002 KodeKloud Docker for the Absolute Beginner \u5168\u9762\u7684\u4ecb\u7ecd\u4e86 Docker \u7684\u57fa\u7840\u529f\u80fd\uff0c\u5e76\u4e14\u6709\u5927\u91cf\u7684\u914d\u5957\u7ec3\u4e60\uff0c\u540c\u65f6\u63d0\u4f9b\u514d\u8d39\u7684\u4e91\u73af\u5883\u6765\u5b8c\u6210\u7ec3\u4e60\u3002\u5176\u4f59\u7684\u4e91\u76f8\u5173\u7684\u8bfe\u7a0b\u5982 Kubernetes \u9700\u8981\u4ed8\u8d39\uff0c\u4f46\u4e2a\u4eba\u5f3a\u70c8\u63a8\u8350\uff1a\u8bb2\u89e3\u975e\u5e38\u4ed4\u7ec6\uff0c\u9002\u5408\u4ece 0 \u5f00\u59cb\u7684\u65b0\u624b\uff1b\u6709\u914d\u5957\u7684 Kubernetes \u7684\u5b9e\u9a8c\u73af\u5883\uff0c\u4e0d\u7528\u88ab\u642d\u5efa\u73af\u5883\u529d\u9000\u3002","title":"\u5982\u4f55\u5b66\u4e60 Docker"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/","text":"GNU Make \u4e3a\u4ec0\u4e48\u5b66 GNU Make \u5927\u5bb6\u7b2c\u4e00\u6b21\u5199 hello world \u7a0b\u5e8f\u7684\u65f6\u5019\u4e00\u5b9a\u90fd\u8bb0\u5f97\uff0c\u5728\u7f16\u8f91\u5b8c helloworld.c \u4e4b\u540e\uff0c\u9700\u8981\u7528 gcc \u7f16\u8bd1\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u7136\u540e\u518d\u6267\u884c\uff08\u5982\u679c\u4f60\u4e0d\u7406\u89e3\u524d\u9762\u8fd9\u6bb5\u8bdd\uff0c\u8bf7\u5148\u81ea\u884c\u8c37\u6b4c gcc \u7f16\u8bd1 \u5e76\u7406\u89e3\u76f8\u5173\u5185\u5bb9\uff09\u3002\u4f46\u5982\u679c\u4f60\u7684\u9879\u76ee\u7531\u6210\u767e\u4e0a\u5343\u4e2a C \u6e90\u6587\u4ef6\u7ec4\u6210\uff0c\u5e76\u4e14\u661f\u7f57\u68cb\u5e03\u5728\u5404\u4e2a\u5b50\u76ee\u5f55\u4e0b\uff0c\u4f60\u8be5\u5982\u4f55\u5c06\u5b83\u4eec\u7f16\u8bd1\u94fe\u63a5\u5230\u4e00\u8d77\u5462\uff1f\u5047\u5982\u4f60\u7684\u9879\u76ee\u7f16\u8bd1\u4e00\u6b21\u9700\u8981\u534a\u4e2a\u5c0f\u65f6\uff08\u5927\u578b\u9879\u76ee\u76f8\u5f53\u5e38\u89c1\uff09\uff0c\u800c\u4f60\u53ea\u4fee\u6539\u4e86\u4e00\u4e2a\u5206\u53f7\uff0c\u662f\u4e0d\u662f\u8fd8\u9700\u8981\u518d\u7b49\u534a\u4e2a\u5c0f\u65f6\u5462\uff1f \u8fd9\u65f6\u5019 GNU Make \u5c31\u95ea\u4eae\u767b\u573a\u4e86\uff0c\u5b83\u80fd\u8ba9\u4f60\u5728\u4e00\u4e2a\u811a\u672c\u91cc\uff08\u5373\u6240\u8c13\u7684 Makefile \uff09\u5b9a\u4e49\u6574\u4e2a\u7f16\u8bd1\u6d41\u7a0b\u4ee5\u53ca\u5404\u4e2a\u76ee\u6807\u6587\u4ef6\u4e0e\u6e90\u6587\u4ef6\u4e4b\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u5e76\u4e14\u53ea\u91cd\u65b0\u7f16\u8bd1\u4f60\u7684\u4fee\u6539\u4f1a\u5f71\u54cd\u5230\u7684\u90e8\u5206\uff0c\u4ece\u800c\u964d\u4f4e\u7f16\u8bd1\u7684\u65f6\u95f4\u3002 \u5982\u4f55\u5b66\u4e60 GNU Make \u8fd9\u91cc\u6709\u4e00\u7bc7\u5199\u5f97\u6df1\u5165\u6d45\u51fa\u7684 \u6587\u6863 \u4f9b\u5927\u5bb6\u53c2\u8003\u3002 GNU Make \u638c\u63e1\u8d77\u6765\u76f8\u5bf9\u5bb9\u6613\uff0c\u4f46\u7528\u597d\u5b83\u9700\u8981\u4e0d\u65ad\u7684\u7ec3\u4e60\u3002\u5c06\u5b83\u878d\u5165\u5230\u81ea\u5df1\u7684\u65e5\u5e38\u5f00\u53d1\u4e2d\uff0c\u52e4\u4e8e\u5b66\u4e60\u548c\u6a21\u4eff\u5176\u4ed6\u4f18\u79c0\u5f00\u6e90\u9879\u76ee\u91cc\u7684 Makefile \u7684\u5199\u6cd5\uff0c\u603b\u7ed3\u51fa\u9002\u5408\u81ea\u5df1\u7684 template\uff0c\u4e45\u800c\u4e45\u4e4b\uff0c\u4f60\u5bf9 GNU Make \u7684\u4f7f\u7528\u4f1a\u6108\u52a0\u7eaf\u719f\u3002","title":"GNU Make"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/#gnu-make","text":"","title":"GNU Make"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/#gnu-make_1","text":"\u5927\u5bb6\u7b2c\u4e00\u6b21\u5199 hello world \u7a0b\u5e8f\u7684\u65f6\u5019\u4e00\u5b9a\u90fd\u8bb0\u5f97\uff0c\u5728\u7f16\u8f91\u5b8c helloworld.c \u4e4b\u540e\uff0c\u9700\u8981\u7528 gcc \u7f16\u8bd1\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u7136\u540e\u518d\u6267\u884c\uff08\u5982\u679c\u4f60\u4e0d\u7406\u89e3\u524d\u9762\u8fd9\u6bb5\u8bdd\uff0c\u8bf7\u5148\u81ea\u884c\u8c37\u6b4c gcc \u7f16\u8bd1 \u5e76\u7406\u89e3\u76f8\u5173\u5185\u5bb9\uff09\u3002\u4f46\u5982\u679c\u4f60\u7684\u9879\u76ee\u7531\u6210\u767e\u4e0a\u5343\u4e2a C \u6e90\u6587\u4ef6\u7ec4\u6210\uff0c\u5e76\u4e14\u661f\u7f57\u68cb\u5e03\u5728\u5404\u4e2a\u5b50\u76ee\u5f55\u4e0b\uff0c\u4f60\u8be5\u5982\u4f55\u5c06\u5b83\u4eec\u7f16\u8bd1\u94fe\u63a5\u5230\u4e00\u8d77\u5462\uff1f\u5047\u5982\u4f60\u7684\u9879\u76ee\u7f16\u8bd1\u4e00\u6b21\u9700\u8981\u534a\u4e2a\u5c0f\u65f6\uff08\u5927\u578b\u9879\u76ee\u76f8\u5f53\u5e38\u89c1\uff09\uff0c\u800c\u4f60\u53ea\u4fee\u6539\u4e86\u4e00\u4e2a\u5206\u53f7\uff0c\u662f\u4e0d\u662f\u8fd8\u9700\u8981\u518d\u7b49\u534a\u4e2a\u5c0f\u65f6\u5462\uff1f \u8fd9\u65f6\u5019 GNU Make \u5c31\u95ea\u4eae\u767b\u573a\u4e86\uff0c\u5b83\u80fd\u8ba9\u4f60\u5728\u4e00\u4e2a\u811a\u672c\u91cc\uff08\u5373\u6240\u8c13\u7684 Makefile \uff09\u5b9a\u4e49\u6574\u4e2a\u7f16\u8bd1\u6d41\u7a0b\u4ee5\u53ca\u5404\u4e2a\u76ee\u6807\u6587\u4ef6\u4e0e\u6e90\u6587\u4ef6\u4e4b\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u5e76\u4e14\u53ea\u91cd\u65b0\u7f16\u8bd1\u4f60\u7684\u4fee\u6539\u4f1a\u5f71\u54cd\u5230\u7684\u90e8\u5206\uff0c\u4ece\u800c\u964d\u4f4e\u7f16\u8bd1\u7684\u65f6\u95f4\u3002","title":"\u4e3a\u4ec0\u4e48\u5b66 GNU Make"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/#gnu-make_2","text":"\u8fd9\u91cc\u6709\u4e00\u7bc7\u5199\u5f97\u6df1\u5165\u6d45\u51fa\u7684 \u6587\u6863 \u4f9b\u5927\u5bb6\u53c2\u8003\u3002 GNU Make \u638c\u63e1\u8d77\u6765\u76f8\u5bf9\u5bb9\u6613\uff0c\u4f46\u7528\u597d\u5b83\u9700\u8981\u4e0d\u65ad\u7684\u7ec3\u4e60\u3002\u5c06\u5b83\u878d\u5165\u5230\u81ea\u5df1\u7684\u65e5\u5e38\u5f00\u53d1\u4e2d\uff0c\u52e4\u4e8e\u5b66\u4e60\u548c\u6a21\u4eff\u5176\u4ed6\u4f18\u79c0\u5f00\u6e90\u9879\u76ee\u91cc\u7684 Makefile \u7684\u5199\u6cd5\uff0c\u603b\u7ed3\u51fa\u9002\u5408\u81ea\u5df1\u7684 template\uff0c\u4e45\u800c\u4e45\u4e4b\uff0c\u4f60\u5bf9 GNU Make \u7684\u4f7f\u7528\u4f1a\u6108\u52a0\u7eaf\u719f\u3002","title":"\u5982\u4f55\u5b66\u4e60 GNU Make"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/","text":"Git \u4e3a\u4ec0\u4e48\u4f7f\u7528 Git Git \u662f\u4e00\u6b3e\u5206\u5e03\u5f0f\u7684\u4ee3\u7801\u7248\u672c\u63a7\u5236\u5de5\u5177\uff0cLinux \u4e4b\u7236 Linus \u5acc\u5f03\u5f53\u65f6\u4e3b\u6d41\u7684\u4e2d\u5fc3\u5f0f\u7684\u7248\u672c\u63a7\u5236\u5de5\u5177\u592a\u96be\u7528\u8fd8\u8981\u82b1\u94b1\uff0c\u5c31\u81ea\u5df1\u5f00\u53d1\u51fa\u4e86 Git \u7528\u6765\u7ef4\u62a4 Linux \u7684\u7248\u672c\uff08\u7ed9\u5927\u4f6c\u8dea\u4e86\uff09\u3002 Git \u7684\u8bbe\u8ba1\u975e\u5e38\u4f18\u96c5\uff0c\u4f46\u521d\u5b66\u8005\u901a\u5e38\u56e0\u4e3a\u5f88\u96be\u7406\u89e3\u5176\u5185\u90e8\u903b\u8f91\u56e0\u6b64\u4f1a\u89c9\u5f97\u975e\u5e38\u96be\u7528\u3002\u5bf9 Git \u4e0d\u719f\u6089\u7684\u521d\u5b66\u8005\u5f88\u5bb9\u6613\u51fa\u73b0\u56e0\u4e3a\u8bef\u7528\u547d\u4ee4\u5c06\u4ee3\u7801\u7ed9\u63a7\u5236\u7248\u672c\u63a7\u5236\u6ca1\u4e86\u7684\u72b6\u51b5\uff08\u597d\u5427\u662f\u6211\uff09\u3002 \u4f46\u76f8\u4fe1\u6211\uff0c\u548c Vim \u4e00\u6837\uff0cGit \u662f\u4e00\u6b3e\u4f60\u6700\u7ec8\u638c\u63e1\u4e4b\u540e\u4f1a\u611f\u53f9\u201c\u5b83\u503c\u5f97\uff01\u201d\u7684\u795e\u5668\u3002 \u5982\u4f55\u5b66\u4e60 Git \u548c Vim \u4e0d\u540c\uff0c\u6211\u4e0d\u5efa\u8bae\u521d\u5b66\u8005\u5728\u4e00\u77e5\u534a\u89e3\u7684\u60c5\u51b5\u4e0b\u8d38\u7136\u4f7f\u7528 Git\uff0c\u56e0\u4e3a\u5b83\u7684\u5185\u90e8\u903b\u8f91\u5e76\u4e0d\u80fd\u719f\u80fd\u751f\u5de7\uff0c\u800c\u662f\u9700\u8981\u82b1\u65f6\u95f4\u53bb\u7406\u89e3\u3002\u6211\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a \u9605\u8bfb\u8fd9\u7bc7 Git tutorial \uff0c\u89c6\u9891\u7684\u8bdd\u53ef\u4ee5\u770b\u8fd9\u4e2a \u5c1a\u7845\u8c37Git\u6559\u7a0b \u9605\u8bfb\u8fd9\u672c\u5f00\u6e90\u4e66\u7c4d Pro Git \u7684 Chapter1 - Chapter5\uff0c\u662f\u7684\u6ca1\u9519\uff0c\u5b66 Git \u9700\u8981\u8bfb\u4e00\u672c\u4e66\uff08\u6342\u8138\uff09\u3002 \u6b64\u65f6\u4f60\u5df2\u7ecf\u638c\u63e1\u4e86 Git \u7684\u539f\u7406\u548c\u7edd\u5927\u90e8\u5206\u7528\u6cd5\uff0c\u63a5\u4e0b\u6765\u5c31\u53ef\u4ee5\u5728\u5b9e\u8df5\u4e2d\u53cd\u590d\u5de9\u56fa Git \u7684\u547d\u4ee4\u4e86\u3002\u4f46\u7528\u597d\u5b83\u540c\u6837\u662f\u4e00\u95e8\u54f2\u5b66\uff0c\u6211\u4e2a\u4eba\u89c9\u5f97\u8fd9\u7bc7 \u5982\u4f55\u5199\u597d Commit Message \u7684\u535a\u5ba2\u975e\u5e38\u503c\u5f97\u4e00\u8bfb\u3002 \u597d\u7684\u6b64\u65f6\u4f60\u5df2\u7ecf\u7231\u4e0a\u4e86 Git\uff0c\u4f60\u5df2\u7ecf\u4e0d\u6ee1\u8db3\u4e8e\u5b66\u4f1a\u5b83\u4e86\uff0c\u4f60\u60f3\u81ea\u5df1\u5b9e\u73b0\u4e00\u4e2a Git\uff01\u5de7\u4e86\uff0c\u6211\u5f53\u5e74\u4e5f\u6709\u8fd9\u6837\u7684\u60f3\u6cd5\uff0c \u8fd9\u7bc7 tutorial \u53ef\u4ee5\u6ee1\u8db3\u4f60\uff01 \u4ec0\u4e48\uff1f\u5149\u5b9e\u73b0\u4e00\u4e2a Git \u65e0\u6cd5\u6ee1\u8db3\u4f60\uff1f\u5c0f\u4f19\u5b50/\u5c0f\u4ed9\u5973\u6709\u524d\u9014\uff0c\u5de7\u7684\u662f\u6211\u4e5f\u559c\u6b22\u9020\u8f6e\u5b50\uff0c\u8fd9\u4e24\u4e2a GitHub \u9879\u76ee build-your-own-x \u548c project-based-learning \u6536\u5f55\u4e86\u4f60\u80fd\u60f3\u5230\u7684\u5404\u79cd\u9020\u8f6e\u5b50\u6559\u7a0b\uff0c\u6bd4\u5982\uff1a\u81ea\u5df1\u9020\u4e2a\u7f16\u8f91\u5668\u3001\u81ea\u5df1\u5199\u4e2a\u865a\u62df\u673a\u3001\u81ea\u5df1\u5199\u4e2a docker\u3001\u81ea\u5df1\u5199\u4e2a TCP \u7b49\u7b49\u7b49\u7b49\u3002","title":"Git"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/#git","text":"","title":"Git"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/#git_1","text":"Git \u662f\u4e00\u6b3e\u5206\u5e03\u5f0f\u7684\u4ee3\u7801\u7248\u672c\u63a7\u5236\u5de5\u5177\uff0cLinux \u4e4b\u7236 Linus \u5acc\u5f03\u5f53\u65f6\u4e3b\u6d41\u7684\u4e2d\u5fc3\u5f0f\u7684\u7248\u672c\u63a7\u5236\u5de5\u5177\u592a\u96be\u7528\u8fd8\u8981\u82b1\u94b1\uff0c\u5c31\u81ea\u5df1\u5f00\u53d1\u51fa\u4e86 Git \u7528\u6765\u7ef4\u62a4 Linux \u7684\u7248\u672c\uff08\u7ed9\u5927\u4f6c\u8dea\u4e86\uff09\u3002 Git \u7684\u8bbe\u8ba1\u975e\u5e38\u4f18\u96c5\uff0c\u4f46\u521d\u5b66\u8005\u901a\u5e38\u56e0\u4e3a\u5f88\u96be\u7406\u89e3\u5176\u5185\u90e8\u903b\u8f91\u56e0\u6b64\u4f1a\u89c9\u5f97\u975e\u5e38\u96be\u7528\u3002\u5bf9 Git \u4e0d\u719f\u6089\u7684\u521d\u5b66\u8005\u5f88\u5bb9\u6613\u51fa\u73b0\u56e0\u4e3a\u8bef\u7528\u547d\u4ee4\u5c06\u4ee3\u7801\u7ed9\u63a7\u5236\u7248\u672c\u63a7\u5236\u6ca1\u4e86\u7684\u72b6\u51b5\uff08\u597d\u5427\u662f\u6211\uff09\u3002 \u4f46\u76f8\u4fe1\u6211\uff0c\u548c Vim \u4e00\u6837\uff0cGit \u662f\u4e00\u6b3e\u4f60\u6700\u7ec8\u638c\u63e1\u4e4b\u540e\u4f1a\u611f\u53f9\u201c\u5b83\u503c\u5f97\uff01\u201d\u7684\u795e\u5668\u3002","title":"\u4e3a\u4ec0\u4e48\u4f7f\u7528 Git"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/#git_2","text":"\u548c Vim \u4e0d\u540c\uff0c\u6211\u4e0d\u5efa\u8bae\u521d\u5b66\u8005\u5728\u4e00\u77e5\u534a\u89e3\u7684\u60c5\u51b5\u4e0b\u8d38\u7136\u4f7f\u7528 Git\uff0c\u56e0\u4e3a\u5b83\u7684\u5185\u90e8\u903b\u8f91\u5e76\u4e0d\u80fd\u719f\u80fd\u751f\u5de7\uff0c\u800c\u662f\u9700\u8981\u82b1\u65f6\u95f4\u53bb\u7406\u89e3\u3002\u6211\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a \u9605\u8bfb\u8fd9\u7bc7 Git tutorial \uff0c\u89c6\u9891\u7684\u8bdd\u53ef\u4ee5\u770b\u8fd9\u4e2a \u5c1a\u7845\u8c37Git\u6559\u7a0b \u9605\u8bfb\u8fd9\u672c\u5f00\u6e90\u4e66\u7c4d Pro Git \u7684 Chapter1 - Chapter5\uff0c\u662f\u7684\u6ca1\u9519\uff0c\u5b66 Git \u9700\u8981\u8bfb\u4e00\u672c\u4e66\uff08\u6342\u8138\uff09\u3002 \u6b64\u65f6\u4f60\u5df2\u7ecf\u638c\u63e1\u4e86 Git \u7684\u539f\u7406\u548c\u7edd\u5927\u90e8\u5206\u7528\u6cd5\uff0c\u63a5\u4e0b\u6765\u5c31\u53ef\u4ee5\u5728\u5b9e\u8df5\u4e2d\u53cd\u590d\u5de9\u56fa Git \u7684\u547d\u4ee4\u4e86\u3002\u4f46\u7528\u597d\u5b83\u540c\u6837\u662f\u4e00\u95e8\u54f2\u5b66\uff0c\u6211\u4e2a\u4eba\u89c9\u5f97\u8fd9\u7bc7 \u5982\u4f55\u5199\u597d Commit Message \u7684\u535a\u5ba2\u975e\u5e38\u503c\u5f97\u4e00\u8bfb\u3002 \u597d\u7684\u6b64\u65f6\u4f60\u5df2\u7ecf\u7231\u4e0a\u4e86 Git\uff0c\u4f60\u5df2\u7ecf\u4e0d\u6ee1\u8db3\u4e8e\u5b66\u4f1a\u5b83\u4e86\uff0c\u4f60\u60f3\u81ea\u5df1\u5b9e\u73b0\u4e00\u4e2a Git\uff01\u5de7\u4e86\uff0c\u6211\u5f53\u5e74\u4e5f\u6709\u8fd9\u6837\u7684\u60f3\u6cd5\uff0c \u8fd9\u7bc7 tutorial \u53ef\u4ee5\u6ee1\u8db3\u4f60\uff01 \u4ec0\u4e48\uff1f\u5149\u5b9e\u73b0\u4e00\u4e2a Git \u65e0\u6cd5\u6ee1\u8db3\u4f60\uff1f\u5c0f\u4f19\u5b50/\u5c0f\u4ed9\u5973\u6709\u524d\u9014\uff0c\u5de7\u7684\u662f\u6211\u4e5f\u559c\u6b22\u9020\u8f6e\u5b50\uff0c\u8fd9\u4e24\u4e2a GitHub \u9879\u76ee build-your-own-x \u548c project-based-learning \u6536\u5f55\u4e86\u4f60\u80fd\u60f3\u5230\u7684\u5404\u79cd\u9020\u8f6e\u5b50\u6559\u7a0b\uff0c\u6bd4\u5982\uff1a\u81ea\u5df1\u9020\u4e2a\u7f16\u8f91\u5668\u3001\u81ea\u5df1\u5199\u4e2a\u865a\u62df\u673a\u3001\u81ea\u5df1\u5199\u4e2a docker\u3001\u81ea\u5df1\u5199\u4e2a TCP \u7b49\u7b49\u7b49\u7b49\u3002","title":"\u5982\u4f55\u5b66\u4e60 Git"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/","text":"GitHub GitHub \u662f\u4ec0\u4e48 \u4ece\u529f\u80fd\u4e0a\u6765\u8bf4\uff0cGitHub \u662f\u4e00\u4e2a\u5728\u7ebf\u4ee3\u7801\u6258\u7ba1\u5e73\u53f0\u3002\u4f60\u53ef\u4ee5\u5c06\u4f60\u7684\u672c\u5730 Git \u4ed3\u5e93\u6258\u7ba1\u5230 GitHub \u4e0a\uff0c\u4f9b\u591a\u4eba\u540c\u65f6\u5f00\u53d1\u6d4f\u89c8\u3002\u4f46\u73b0\u5982\u4eca GitHub \u7684\u610f\u4e49\u5df2\u8fdc\u4e0d\u6b62\u5982\u6b64\uff0c\u5b83\u5df2\u7ecf\u6f14\u53d8\u4e3a\u4e00\u4e2a\u975e\u5e38\u6d3b\u8dc3\u4e14\u8d44\u6e90\u6781\u4e3a\u4e30\u5bcc\u7684\u5f00\u6e90\u4ea4\u6d41\u793e\u533a\u3002\u5168\u4e16\u754c\u7684\u8f6f\u4ef6\u5f00\u53d1\u8005\u5728 GitHub \u4e0a\u5206\u4eab\u5404\u5f0f\u5404\u6837\u79cd\u7c7b\u7e41\u591a\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002\u5927\u5230\u5de5\u4e1a\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6 PyTorch, TensorFlow\uff0c\u5c0f\u5230\u51e0\u5341\u884c\u7684\u5b9e\u7528\u811a\u672c\uff0c\u65e2\u6709\u786c\u6838\u7684\u77e5\u8bc6\u5206\u4eab\uff0c\u4e5f\u6709\u4fdd\u59c6\u7ea7\u7684\u6559\u7a0b\u6307\u5bfc\uff0c\u751a\u81f3\u5f88\u591a\u6280\u672f\u4e66\u7c4d\u4e5f\u5728 GitHub\u4e0a\u5f00\u6e90\uff08\u4f8b\u5982\u8bf8\u4f4d\u6b63\u5728\u770b\u7684\u8fd9\u672c\u2014\u2014\u5982\u679c\u6211\u539a\u7740\u8138\u76ae\u52c9\u5f3a\u79f0\u4e4b\u4e3a\u4e66\u7684\u8bdd\uff09\u3002\u95f2\u6765\u65e0\u4e8b\u901b\u901b GitHub \u5df2\u7ecf\u6210\u4e3a\u4e86\u6211\u65e5\u5e38\u751f\u6d3b\u7684\u4e00\u90e8\u5206\u3002 \u5728 GitHub \u91cc\uff0c\u661f\u661f\u662f\u5bf9\u4e00\u4e2a\u9879\u76ee\u81f3\u9ad8\u65e0\u4e0a\u7684\u80af\u5b9a\uff0c\u5982\u679c\u4f60\u89c9\u5f97\u8fd9\u672c\u4e66\u5bf9\u4f60\u6709\u7528\u7684\u8bdd\uff0c\u6b22\u8fce\u901a\u8fc7\u53f3\u4e0a\u89d2\u7684\u94fe\u63a5\u8fdb\u5165\u4ed3\u5e93\u4e3b\u9875\u732e\u51fa\u4f60\u5b9d\u8d35\u7684\u661f\u661f\u2728\u3002 \u5982\u4f55\u4f7f\u7528 GitHub \u5982\u679c\u4f60\u8fd8\u4ece\u672a\u5728 GitHub \u4e0a\u5efa\u7acb\u8fc7\u81ea\u5df1\u7684\u8fdc\u7a0b\u4ed3\u5e93\uff0c\u4e5f\u6ca1\u6709\u514b\u9686\u8fc7\u522b\u4eba\u7684\u4ee3\u7801\uff0c\u90a3\u4e48\u6211\u5efa\u8bae\u4f60\u4ece GitHub\u7684\u5b98\u65b9\u6559\u7a0b \u5f00\u59cb\u81ea\u5df1\u7684\u5f00\u6e90\u4e4b\u65c5\u3002 \u5982\u679c\u4f60\u60f3\u65f6\u523b\u5173\u6ce8 GitHub \u4e0a\u4e00\u4e9b\u6709\u8da3\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u90a3\u4e48\u6211\u5411\u4f60\u91cd\u78c5\u63a8\u8350 HelloGitHub \u8fd9\u4e2a\u7f51\u7ad9\u4ee5\u53ca\u5b83\u7684\u540c\u540d\u5fae\u4fe1\u516c\u4f17\u53f7\u3002\u5b83\u4f1a\u5b9a\u671f\u6536\u5f55 GitHub \u4e0a\u8fd1\u671f\u5f00\u59cb\u6d41\u884c\u7684\u6216\u8005\u975e\u5e38\u6709\u8da3\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u8ba9\u4f60\u6709\u673a\u4f1a\u7b2c\u4e00\u65f6\u95f4\u63a5\u89e6\u5404\u7c7b\u4f18\u8d28\u8d44\u6e90\u3002 GitHub \u4e4b\u6240\u4ee5\u6210\u529f\uff0c\u6211\u60f3\u662f\u5f97\u76ca\u4e8e\u201c\u6211\u4e3a\u4eba\u4eba\uff0c\u4eba\u4eba\u4e3a\u6211\u201d\u7684\u5f00\u6e90\u7cbe\u795e\uff0c\u5f97\u76ca\u4e8e\u77e5\u8bc6\u5206\u4eab\u7684\u5feb\u4e50\u3002\u5982\u679c\u4f60\u4e5f\u60f3\u6210\u4e3a\u4e0b\u4e00\u4e2a\u4e07\u4eba\u656c\u4ef0\u7684\u5f00\u6e90\u5927\u4f6c\uff0c\u6216\u8005\u4e0b\u4e00\u4e2a star \u7834\u4e07\u7684\u9879\u76ee\u4f5c\u8005\u3002\u90a3\u5c31\u628a\u4f60\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7075\u611f\u4e00\u73b0\u7684 idea \u5316\u4f5c\u4ee3\u7801\uff0c\u5c55\u793a\u5728 GitHub \u4e0a\u5427\uff5e \u4e0d\u8fc7\u9700\u8981\u63d0\u9192\u7684\u662f\uff0c\u5f00\u6e90\u793e\u533a\u4e0d\u662f\u6cd5\u5916\u4e4b\u5730\uff0c\u5f88\u591a\u5f00\u6e90\u8f6f\u4ef6\u5e76\u4e0d\u662f\u53ef\u4ee5\u968f\u610f\u590d\u5236\u5206\u53d1\u751a\u81f3\u8d29\u5356\u7684\uff0c\u4e86\u89e3\u5404\u7c7b \u5f00\u6e90\u534f\u8bae \u5e76\u9075\u5b88\uff0c\u4e0d\u4ec5\u662f\u6cd5\u5f8b\u7684\u8981\u6c42\uff0c\u66f4\u662f\u6bcf\u4e2a\u5f00\u6e90\u793e\u533a\u6210\u5458\u7684\u8d23\u4efb\u3002","title":"GitHub"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/#github","text":"","title":"GitHub"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/#github_1","text":"\u4ece\u529f\u80fd\u4e0a\u6765\u8bf4\uff0cGitHub \u662f\u4e00\u4e2a\u5728\u7ebf\u4ee3\u7801\u6258\u7ba1\u5e73\u53f0\u3002\u4f60\u53ef\u4ee5\u5c06\u4f60\u7684\u672c\u5730 Git \u4ed3\u5e93\u6258\u7ba1\u5230 GitHub \u4e0a\uff0c\u4f9b\u591a\u4eba\u540c\u65f6\u5f00\u53d1\u6d4f\u89c8\u3002\u4f46\u73b0\u5982\u4eca GitHub \u7684\u610f\u4e49\u5df2\u8fdc\u4e0d\u6b62\u5982\u6b64\uff0c\u5b83\u5df2\u7ecf\u6f14\u53d8\u4e3a\u4e00\u4e2a\u975e\u5e38\u6d3b\u8dc3\u4e14\u8d44\u6e90\u6781\u4e3a\u4e30\u5bcc\u7684\u5f00\u6e90\u4ea4\u6d41\u793e\u533a\u3002\u5168\u4e16\u754c\u7684\u8f6f\u4ef6\u5f00\u53d1\u8005\u5728 GitHub \u4e0a\u5206\u4eab\u5404\u5f0f\u5404\u6837\u79cd\u7c7b\u7e41\u591a\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002\u5927\u5230\u5de5\u4e1a\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6 PyTorch, TensorFlow\uff0c\u5c0f\u5230\u51e0\u5341\u884c\u7684\u5b9e\u7528\u811a\u672c\uff0c\u65e2\u6709\u786c\u6838\u7684\u77e5\u8bc6\u5206\u4eab\uff0c\u4e5f\u6709\u4fdd\u59c6\u7ea7\u7684\u6559\u7a0b\u6307\u5bfc\uff0c\u751a\u81f3\u5f88\u591a\u6280\u672f\u4e66\u7c4d\u4e5f\u5728 GitHub\u4e0a\u5f00\u6e90\uff08\u4f8b\u5982\u8bf8\u4f4d\u6b63\u5728\u770b\u7684\u8fd9\u672c\u2014\u2014\u5982\u679c\u6211\u539a\u7740\u8138\u76ae\u52c9\u5f3a\u79f0\u4e4b\u4e3a\u4e66\u7684\u8bdd\uff09\u3002\u95f2\u6765\u65e0\u4e8b\u901b\u901b GitHub \u5df2\u7ecf\u6210\u4e3a\u4e86\u6211\u65e5\u5e38\u751f\u6d3b\u7684\u4e00\u90e8\u5206\u3002 \u5728 GitHub \u91cc\uff0c\u661f\u661f\u662f\u5bf9\u4e00\u4e2a\u9879\u76ee\u81f3\u9ad8\u65e0\u4e0a\u7684\u80af\u5b9a\uff0c\u5982\u679c\u4f60\u89c9\u5f97\u8fd9\u672c\u4e66\u5bf9\u4f60\u6709\u7528\u7684\u8bdd\uff0c\u6b22\u8fce\u901a\u8fc7\u53f3\u4e0a\u89d2\u7684\u94fe\u63a5\u8fdb\u5165\u4ed3\u5e93\u4e3b\u9875\u732e\u51fa\u4f60\u5b9d\u8d35\u7684\u661f\u661f\u2728\u3002","title":"GitHub \u662f\u4ec0\u4e48"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/#github_2","text":"\u5982\u679c\u4f60\u8fd8\u4ece\u672a\u5728 GitHub \u4e0a\u5efa\u7acb\u8fc7\u81ea\u5df1\u7684\u8fdc\u7a0b\u4ed3\u5e93\uff0c\u4e5f\u6ca1\u6709\u514b\u9686\u8fc7\u522b\u4eba\u7684\u4ee3\u7801\uff0c\u90a3\u4e48\u6211\u5efa\u8bae\u4f60\u4ece GitHub\u7684\u5b98\u65b9\u6559\u7a0b \u5f00\u59cb\u81ea\u5df1\u7684\u5f00\u6e90\u4e4b\u65c5\u3002 \u5982\u679c\u4f60\u60f3\u65f6\u523b\u5173\u6ce8 GitHub \u4e0a\u4e00\u4e9b\u6709\u8da3\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u90a3\u4e48\u6211\u5411\u4f60\u91cd\u78c5\u63a8\u8350 HelloGitHub \u8fd9\u4e2a\u7f51\u7ad9\u4ee5\u53ca\u5b83\u7684\u540c\u540d\u5fae\u4fe1\u516c\u4f17\u53f7\u3002\u5b83\u4f1a\u5b9a\u671f\u6536\u5f55 GitHub \u4e0a\u8fd1\u671f\u5f00\u59cb\u6d41\u884c\u7684\u6216\u8005\u975e\u5e38\u6709\u8da3\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u8ba9\u4f60\u6709\u673a\u4f1a\u7b2c\u4e00\u65f6\u95f4\u63a5\u89e6\u5404\u7c7b\u4f18\u8d28\u8d44\u6e90\u3002 GitHub \u4e4b\u6240\u4ee5\u6210\u529f\uff0c\u6211\u60f3\u662f\u5f97\u76ca\u4e8e\u201c\u6211\u4e3a\u4eba\u4eba\uff0c\u4eba\u4eba\u4e3a\u6211\u201d\u7684\u5f00\u6e90\u7cbe\u795e\uff0c\u5f97\u76ca\u4e8e\u77e5\u8bc6\u5206\u4eab\u7684\u5feb\u4e50\u3002\u5982\u679c\u4f60\u4e5f\u60f3\u6210\u4e3a\u4e0b\u4e00\u4e2a\u4e07\u4eba\u656c\u4ef0\u7684\u5f00\u6e90\u5927\u4f6c\uff0c\u6216\u8005\u4e0b\u4e00\u4e2a star \u7834\u4e07\u7684\u9879\u76ee\u4f5c\u8005\u3002\u90a3\u5c31\u628a\u4f60\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7075\u611f\u4e00\u73b0\u7684 idea \u5316\u4f5c\u4ee3\u7801\uff0c\u5c55\u793a\u5728 GitHub \u4e0a\u5427\uff5e \u4e0d\u8fc7\u9700\u8981\u63d0\u9192\u7684\u662f\uff0c\u5f00\u6e90\u793e\u533a\u4e0d\u662f\u6cd5\u5916\u4e4b\u5730\uff0c\u5f88\u591a\u5f00\u6e90\u8f6f\u4ef6\u5e76\u4e0d\u662f\u53ef\u4ee5\u968f\u610f\u590d\u5236\u5206\u53d1\u751a\u81f3\u8d29\u5356\u7684\uff0c\u4e86\u89e3\u5404\u7c7b \u5f00\u6e90\u534f\u8bae \u5e76\u9075\u5b88\uff0c\u4e0d\u4ec5\u662f\u6cd5\u5f8b\u7684\u8981\u6c42\uff0c\u66f4\u662f\u6bcf\u4e2a\u5f00\u6e90\u793e\u533a\u6210\u5458\u7684\u8d23\u4efb\u3002","title":"\u5982\u4f55\u4f7f\u7528 GitHub"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/","text":"LaTeX \u4e3a\u4ec0\u4e48\u5b66 LaTeX \u5982\u679c\u4f60\u9700\u8981\u5199\u8bba\u6587\uff0c\u90a3\u4e48\u8bf7\u76f4\u63a5\u8df3\u5230\u4e0b\u4e00\u8282\uff0c\u56e0\u4e3a\u4f60\u4e0d\u5b66\u4e5f\u5f97\u5b66\u3002 LaTeX \u662f\u4e00\u79cd\u57fa\u4e8e TeX \u7684\u6392\u7248\u7cfb\u7edf\uff0c\u7531\u56fe\u7075\u5956\u5f97\u4e3b Lamport \u5f00\u53d1\uff0c\u800c Tex \u5219\u662f\u7531 Knuth \u6700\u521d\u5f00\u53d1\uff0c\u8fd9\u4e24\u4f4d\u90fd\u662f\u8ba1\u7b97\u673a\u754c\u7684\u5de8\u64d8\u3002\u5f53\u7136\u5f00\u53d1\u8005\u5f3a\u5e76\u4e0d\u662f\u6211\u4eec\u5b66\u4e60 LaTeX \u7684\u7406\u7531\uff0cLaTeX \u548c\u5e38\u89c1\u7684\u6240\u89c1\u5373\u6240\u5f97\u7684 Word \u6587\u6863\u6700\u5927\u7684\u533a\u522b\u5c31\u662f\u7528\u6237\u53ea\u9700\u8981\u5173\u6ce8\u5199\u4f5c\u7684\u5185\u5bb9\uff0c\u800c\u6392\u7248\u5219\u5b8c\u5168\u4ea4\u7ed9\u8f6f\u4ef6\u81ea\u52a8\u5b8c\u6210\u3002\u8fd9\u8ba9\u6ca1\u6709\u4efb\u4f55\u6392\u7248\u7ecf\u9a8c\u7684\u666e\u901a\u4eba\u5f97\u4ee5\u5199\u51fa\u6392\u7248\u975e\u5e38\u4e13\u4e1a\u7684\u8bba\u6587\u6216\u6587\u7ae0\u3002 Berkeley\u8ba1\u7b97\u673a\u7cfb\u6559\u6388 Christos Papadimitriou \u66fe\u8bf4\u8fc7\u4e00\u53e5\u534a\u5f00\u73a9\u7b11\u7684\u8bdd\uff1a Every time I read a LaTeX document, I think, wow, this must be correct! \u5982\u4f55\u5b66\u4e60 LaTeX \u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a LaTeX \u7684\u73af\u5883\u914d\u7f6e\u662f\u4e2a\u6bd4\u8f83\u5934\u75bc\u7684\u95ee\u9898\u3002\u5982\u679c\u4f60\u672c\u5730\u914d\u7f6e LaTeX \u73af\u5883\u51fa\u73b0\u4e86\u95ee\u9898\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528 Overleaf \u8fd9\u4e2a\u5728\u7ebf LaTeX \u7f16\u8f91\u7f51\u7ad9\u3002\u7ad9\u5185\u4e0d\u4ec5\u6709\u5404\u79cd\u5404\u6837\u7684 LaTeX \u6a21\u7248\u4f9b\u4f60\u9009\u62e9\uff0c\u8fd8\u514d\u53bb\u4e86\u73af\u5883\u914d\u7f6e\u7684\u96be\u9898\u3002 \u9605\u8bfb\u4e0b\u9762\u4e09\u7bc7 Tutorial: Part-1 , Part-2 , Part-3 \u3002 \u5b66\u4e60 LaTeX \u6700\u597d\u7684\u65b9\u5f0f\u5f53\u7136\u662f\u5199\u8bba\u6587\uff0c\u4e0d\u8fc7\u4ece\u4e00\u95e8\u6570\u5b66\u8bfe\u5165\u624b\u7528 LaTeX \u5199\u4f5c\u4e1a\u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u9009\u62e9\u3002","title":"LaTeX"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/#latex","text":"","title":"LaTeX"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/#latex_1","text":"\u5982\u679c\u4f60\u9700\u8981\u5199\u8bba\u6587\uff0c\u90a3\u4e48\u8bf7\u76f4\u63a5\u8df3\u5230\u4e0b\u4e00\u8282\uff0c\u56e0\u4e3a\u4f60\u4e0d\u5b66\u4e5f\u5f97\u5b66\u3002 LaTeX \u662f\u4e00\u79cd\u57fa\u4e8e TeX \u7684\u6392\u7248\u7cfb\u7edf\uff0c\u7531\u56fe\u7075\u5956\u5f97\u4e3b Lamport \u5f00\u53d1\uff0c\u800c Tex \u5219\u662f\u7531 Knuth \u6700\u521d\u5f00\u53d1\uff0c\u8fd9\u4e24\u4f4d\u90fd\u662f\u8ba1\u7b97\u673a\u754c\u7684\u5de8\u64d8\u3002\u5f53\u7136\u5f00\u53d1\u8005\u5f3a\u5e76\u4e0d\u662f\u6211\u4eec\u5b66\u4e60 LaTeX \u7684\u7406\u7531\uff0cLaTeX \u548c\u5e38\u89c1\u7684\u6240\u89c1\u5373\u6240\u5f97\u7684 Word \u6587\u6863\u6700\u5927\u7684\u533a\u522b\u5c31\u662f\u7528\u6237\u53ea\u9700\u8981\u5173\u6ce8\u5199\u4f5c\u7684\u5185\u5bb9\uff0c\u800c\u6392\u7248\u5219\u5b8c\u5168\u4ea4\u7ed9\u8f6f\u4ef6\u81ea\u52a8\u5b8c\u6210\u3002\u8fd9\u8ba9\u6ca1\u6709\u4efb\u4f55\u6392\u7248\u7ecf\u9a8c\u7684\u666e\u901a\u4eba\u5f97\u4ee5\u5199\u51fa\u6392\u7248\u975e\u5e38\u4e13\u4e1a\u7684\u8bba\u6587\u6216\u6587\u7ae0\u3002 Berkeley\u8ba1\u7b97\u673a\u7cfb\u6559\u6388 Christos Papadimitriou \u66fe\u8bf4\u8fc7\u4e00\u53e5\u534a\u5f00\u73a9\u7b11\u7684\u8bdd\uff1a Every time I read a LaTeX document, I think, wow, this must be correct!","title":"\u4e3a\u4ec0\u4e48\u5b66 LaTeX"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/#latex_2","text":"\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a LaTeX \u7684\u73af\u5883\u914d\u7f6e\u662f\u4e2a\u6bd4\u8f83\u5934\u75bc\u7684\u95ee\u9898\u3002\u5982\u679c\u4f60\u672c\u5730\u914d\u7f6e LaTeX \u73af\u5883\u51fa\u73b0\u4e86\u95ee\u9898\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528 Overleaf \u8fd9\u4e2a\u5728\u7ebf LaTeX \u7f16\u8f91\u7f51\u7ad9\u3002\u7ad9\u5185\u4e0d\u4ec5\u6709\u5404\u79cd\u5404\u6837\u7684 LaTeX \u6a21\u7248\u4f9b\u4f60\u9009\u62e9\uff0c\u8fd8\u514d\u53bb\u4e86\u73af\u5883\u914d\u7f6e\u7684\u96be\u9898\u3002 \u9605\u8bfb\u4e0b\u9762\u4e09\u7bc7 Tutorial: Part-1 , Part-2 , Part-3 \u3002 \u5b66\u4e60 LaTeX \u6700\u597d\u7684\u65b9\u5f0f\u5f53\u7136\u662f\u5199\u8bba\u6587\uff0c\u4e0d\u8fc7\u4ece\u4e00\u95e8\u6570\u5b66\u8bfe\u5165\u624b\u7528 LaTeX \u5199\u4f5c\u4e1a\u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u9009\u62e9\u3002","title":"\u5982\u4f55\u5b66\u4e60 LaTeX"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/","text":"Vim \u4e3a\u4ec0\u4e48\u5b66\u4e60 Vim \u5728\u6211\u770b\u6765 Vim \u7f16\u8f91\u5668\u6709\u5982\u4e0b\u7684\u597d\u5904\uff1a \u8ba9\u4f60\u7684\u6574\u4e2a\u5f00\u53d1\u8fc7\u7a0b\u624b\u6307\u4e0d\u9700\u8981\u79bb\u5f00\u952e\u76d8\uff0c\u800c\u4e14\u5149\u6807\u7684\u79fb\u52a8\u4e0d\u9700\u8981\u65b9\u5411\u952e\u4f7f\u5f97\u4f60\u7684\u624b\u6307\u4e00\u76f4\u5904\u5728\u6253\u5b57\u7684\u6700\u4f73\u4f4d\u7f6e\u3002 \u65b9\u4fbf\u7684\u6587\u4ef6\u5207\u6362\u4ee5\u53ca\u9762\u677f\u63a7\u5236\u53ef\u4ee5\u8ba9\u4f60\u540c\u65f6\u5f00\u53d1\u591a\u4efd\u6587\u4ef6\u751a\u81f3\u540c\u4e00\u4e2a\u6587\u4ef6\u7684\u4e0d\u540c\u4f4d\u7f6e\u3002 Vim \u7684\u5b8f\u64cd\u4f5c\u53ef\u4ee5\u6279\u91cf\u5316\u5904\u7406\u91cd\u590d\u64cd\u4f5c\uff08\u4f8b\u5982\u591a\u884c tab\uff0c\u6279\u91cf\u52a0\u53cc\u5f15\u53f7\u7b49\u7b49\uff09 Vim \u662f\u5f88\u591a\u670d\u52a1\u5668\u81ea\u5e26\u7684\u547d\u4ee4\u884c\u7f16\u8f91\u5668\uff0c\u5f53\u4f60\u901a\u8fc7 ssh \u8fde\u63a5\u8fdc\u7a0b\u670d\u52a1\u5668\u4e4b\u540e\uff0c\u7531\u4e8e\u6ca1\u6709\u56fe\u5f62\u754c\u9762\uff0c\u53ea\u80fd\u5728\u547d\u4ee4\u884c\u91cc\u8fdb\u884c\u5f00\u53d1\uff08\u5f53\u7136\u73b0\u5728\u5f88\u591a IDE \u5982 VS Code \u63d0\u4f9b\u4e86 ssh \u63d2\u4ef6\u53ef\u4ee5\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff09\u3002 \u5f02\u5e38\u4e30\u5bcc\u7684\u63d2\u4ef6\u751f\u6001\uff0c\u8ba9\u4f60\u62e5\u6709\u4e16\u754c\u4e0a\u6700\u82b1\u91cc\u80e1\u54e8\u7684\u547d\u4ee4\u884c\u7f16\u8f91\u5668\u3002 \u5982\u4f55\u5b66\u4e60 Vim \u4e0d\u5e78\u7684\u662f Vim \u7684\u5b66\u4e60\u66f2\u7ebf\u786e\u5b9e\u76f8\u5f53\u9661\u5ced\uff0c\u6211\u82b1\u4e86\u597d\u51e0\u4e2a\u661f\u671f\u624d\u6162\u6162\u9002\u5e94\u4e86\u7528 Vim \u8fdb\u884c\u5f00\u53d1\u7684\u8fc7\u7a0b\u3002\u6700\u5f00\u59cb\u4f60\u4f1a\u89c9\u5f97\u975e\u5e38\u4e0d\u9002\u5e94\uff0c\u4f46\u4e00\u65e6\u71ac\u8fc7\u4e86\u521d\u59cb\u9636\u6bb5\uff0c\u76f8\u4fe1\u6211\uff0c\u4f60\u4f1a\u7231\u4e0a Vim\u3002 Vim \u7684\u5b66\u4e60\u8d44\u6599\u6d69\u5982\u70df\u6d77\uff0c\u4f46\u638c\u63e1\u5b83\u6700\u597d\u7684\u65b9\u5f0f\u8fd8\u662f\u5c06\u5b83\u7528\u5728\u65e5\u5e38\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u800c\u4e0d\u662f\u4e00\u4e0a\u6765\u5c31\u53bb\u5b66\u5404\u79cd\u82b1\u91cc\u80e1\u54e8\u7684\u9ad8\u7ea7 Vim \u6280\u5de7\u3002\u4e2a\u4eba\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a \u5148\u9605\u8bfb \u8fd9\u7bc7 tutorial \uff0c\u638c\u63e1\u57fa\u672c\u7684 Vim \u6982\u5ff5\u548c\u4f7f\u7528\u65b9\u5f0f\u3002 \u7528 Vim \u81ea\u5e26\u7684 vimtutor \u8fdb\u884c\u7ec3\u4e60\uff0c\u5b89\u88c5\u5b8c Vim \u4e4b\u540e\u76f4\u63a5\u5728\u547d\u4ee4\u884c\u91cc\u8f93\u5165 vimtutor \u5373\u53ef\u8fdb\u5165\u7ec3\u4e60\u7a0b\u5e8f\u3002 \u6700\u540e\u5c31\u662f\u5f3a\u8feb\u81ea\u5df1\u4f7f\u7528 Vim \u8fdb\u884c\u5f00\u53d1\uff0cIDE \u91cc\u53ef\u4ee5\u5b89\u88c5 Vim \u63d2\u4ef6\u3002 \u7b49\u4f60\u5b8c\u5168\u9002\u5e94 Vim \u4e4b\u540e\u65b0\u7684\u4e16\u754c\u4fbf\u5411\u4f60\u655e\u5f00\u4e86\u5927\u95e8\uff0c\u4f60\u53ef\u4ee5\u6309\u9700\u914d\u7f6e\u81ea\u5df1\u7684 Vim\uff08\u4fee\u6539 .vimrc \u6587\u4ef6\uff09\uff0c\u7f51\u4e0a\u6709\u6570\u4e0d\u80dc\u6570\u7684\u8d44\u6e90\u53ef\u4ee5\u501f\u9274\u3002 \u63a8\u8350\u53c2\u8003\u8d44\u6599 Neil, Drew. Practical Vim: Edit Text at the Speed of Thought. N.p., Pragmatic Bookshelf, 2015. Neil, Drew. Modern Vim: Craft Your Development Environment with Vim 8 and Neovim. United States, Pragmatic Bookshelf.","title":"Vim"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/#vim","text":"","title":"Vim"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/#vim_1","text":"\u5728\u6211\u770b\u6765 Vim \u7f16\u8f91\u5668\u6709\u5982\u4e0b\u7684\u597d\u5904\uff1a \u8ba9\u4f60\u7684\u6574\u4e2a\u5f00\u53d1\u8fc7\u7a0b\u624b\u6307\u4e0d\u9700\u8981\u79bb\u5f00\u952e\u76d8\uff0c\u800c\u4e14\u5149\u6807\u7684\u79fb\u52a8\u4e0d\u9700\u8981\u65b9\u5411\u952e\u4f7f\u5f97\u4f60\u7684\u624b\u6307\u4e00\u76f4\u5904\u5728\u6253\u5b57\u7684\u6700\u4f73\u4f4d\u7f6e\u3002 \u65b9\u4fbf\u7684\u6587\u4ef6\u5207\u6362\u4ee5\u53ca\u9762\u677f\u63a7\u5236\u53ef\u4ee5\u8ba9\u4f60\u540c\u65f6\u5f00\u53d1\u591a\u4efd\u6587\u4ef6\u751a\u81f3\u540c\u4e00\u4e2a\u6587\u4ef6\u7684\u4e0d\u540c\u4f4d\u7f6e\u3002 Vim \u7684\u5b8f\u64cd\u4f5c\u53ef\u4ee5\u6279\u91cf\u5316\u5904\u7406\u91cd\u590d\u64cd\u4f5c\uff08\u4f8b\u5982\u591a\u884c tab\uff0c\u6279\u91cf\u52a0\u53cc\u5f15\u53f7\u7b49\u7b49\uff09 Vim \u662f\u5f88\u591a\u670d\u52a1\u5668\u81ea\u5e26\u7684\u547d\u4ee4\u884c\u7f16\u8f91\u5668\uff0c\u5f53\u4f60\u901a\u8fc7 ssh \u8fde\u63a5\u8fdc\u7a0b\u670d\u52a1\u5668\u4e4b\u540e\uff0c\u7531\u4e8e\u6ca1\u6709\u56fe\u5f62\u754c\u9762\uff0c\u53ea\u80fd\u5728\u547d\u4ee4\u884c\u91cc\u8fdb\u884c\u5f00\u53d1\uff08\u5f53\u7136\u73b0\u5728\u5f88\u591a IDE \u5982 VS Code \u63d0\u4f9b\u4e86 ssh \u63d2\u4ef6\u53ef\u4ee5\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff09\u3002 \u5f02\u5e38\u4e30\u5bcc\u7684\u63d2\u4ef6\u751f\u6001\uff0c\u8ba9\u4f60\u62e5\u6709\u4e16\u754c\u4e0a\u6700\u82b1\u91cc\u80e1\u54e8\u7684\u547d\u4ee4\u884c\u7f16\u8f91\u5668\u3002","title":"\u4e3a\u4ec0\u4e48\u5b66\u4e60 Vim"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/#vim_2","text":"\u4e0d\u5e78\u7684\u662f Vim \u7684\u5b66\u4e60\u66f2\u7ebf\u786e\u5b9e\u76f8\u5f53\u9661\u5ced\uff0c\u6211\u82b1\u4e86\u597d\u51e0\u4e2a\u661f\u671f\u624d\u6162\u6162\u9002\u5e94\u4e86\u7528 Vim \u8fdb\u884c\u5f00\u53d1\u7684\u8fc7\u7a0b\u3002\u6700\u5f00\u59cb\u4f60\u4f1a\u89c9\u5f97\u975e\u5e38\u4e0d\u9002\u5e94\uff0c\u4f46\u4e00\u65e6\u71ac\u8fc7\u4e86\u521d\u59cb\u9636\u6bb5\uff0c\u76f8\u4fe1\u6211\uff0c\u4f60\u4f1a\u7231\u4e0a Vim\u3002 Vim \u7684\u5b66\u4e60\u8d44\u6599\u6d69\u5982\u70df\u6d77\uff0c\u4f46\u638c\u63e1\u5b83\u6700\u597d\u7684\u65b9\u5f0f\u8fd8\u662f\u5c06\u5b83\u7528\u5728\u65e5\u5e38\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u800c\u4e0d\u662f\u4e00\u4e0a\u6765\u5c31\u53bb\u5b66\u5404\u79cd\u82b1\u91cc\u80e1\u54e8\u7684\u9ad8\u7ea7 Vim \u6280\u5de7\u3002\u4e2a\u4eba\u63a8\u8350\u7684\u5b66\u4e60\u8def\u7ebf\u5982\u4e0b\uff1a \u5148\u9605\u8bfb \u8fd9\u7bc7 tutorial \uff0c\u638c\u63e1\u57fa\u672c\u7684 Vim \u6982\u5ff5\u548c\u4f7f\u7528\u65b9\u5f0f\u3002 \u7528 Vim \u81ea\u5e26\u7684 vimtutor \u8fdb\u884c\u7ec3\u4e60\uff0c\u5b89\u88c5\u5b8c Vim \u4e4b\u540e\u76f4\u63a5\u5728\u547d\u4ee4\u884c\u91cc\u8f93\u5165 vimtutor \u5373\u53ef\u8fdb\u5165\u7ec3\u4e60\u7a0b\u5e8f\u3002 \u6700\u540e\u5c31\u662f\u5f3a\u8feb\u81ea\u5df1\u4f7f\u7528 Vim \u8fdb\u884c\u5f00\u53d1\uff0cIDE \u91cc\u53ef\u4ee5\u5b89\u88c5 Vim \u63d2\u4ef6\u3002 \u7b49\u4f60\u5b8c\u5168\u9002\u5e94 Vim \u4e4b\u540e\u65b0\u7684\u4e16\u754c\u4fbf\u5411\u4f60\u655e\u5f00\u4e86\u5927\u95e8\uff0c\u4f60\u53ef\u4ee5\u6309\u9700\u914d\u7f6e\u81ea\u5df1\u7684 Vim\uff08\u4fee\u6539 .vimrc \u6587\u4ef6\uff09\uff0c\u7f51\u4e0a\u6709\u6570\u4e0d\u80dc\u6570\u7684\u8d44\u6e90\u53ef\u4ee5\u501f\u9274\u3002","title":"\u5982\u4f55\u5b66\u4e60 Vim"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/#_1","text":"Neil, Drew. Practical Vim: Edit Text at the Speed of Thought. N.p., Pragmatic Bookshelf, 2015. Neil, Drew. Modern Vim: Craft Your Development Environment with Vim 8 and Neovim. United States, Pragmatic Bookshelf.","title":"\u63a8\u8350\u53c2\u8003\u8d44\u6599"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/","text":"\u6bd5\u4e1a\u8bba\u6587 \u4e3a\u4ec0\u4e48\u5199\u8fd9\u4efd\u6559\u7a0b 2022\u5e74\uff0c\u6211\u672c\u79d1\u6bd5\u4e1a\u4e86\u3002\u5728\u5f00\u59cb\u52a8\u624b\u5199\u6bd5\u4e1a\u8bba\u6587\u7684\u65f6\u5019\uff0c\u6211\u5c34\u5c2c\u5730\u53d1\u73b0\uff0c\u6211\u5bf9 Word \u7684\u638c\u63e1\u7a0b\u5ea6\u4ec5\u9650\u4e8e\u8c03\u8282\u5b57\u4f53\u3001\u4fdd\u5b58\u5bfc\u51fa\u8fd9\u4e9b\u50bb\u74dc\u529f\u80fd\u3002\u66fe\u60f3\u8f6c\u6218 Latex\uff0c\u4f46\u8bba\u6587\u7684\u6bb5\u843d\u683c\u5f0f\u8981\u6c42\u8c03\u6574\u8d77\u6765\u8fd8\u662f\u7528 Word \u66f4\u4e3a\u65b9\u4fbf\uff0c\u7ecf\u8fc7\u4e00\u756a\u75db\u82e6\u7f20\u6597\u4e4b\u540e\uff0c\u603b\u7b97\u662f\u6709\u60ca\u65e0\u9669\u5730\u5b8c\u6210\u4e86\u8bba\u6587\u7684\u5199\u4f5c\u548c\u7b54\u8fa9\u3002\u4e3a\u4e86\u4e0d\u8ba9\u540e\u6765\u8005\u91cd\u8e48\u8986\u8f99\uff0c\u9042\u628a\u76f8\u5173\u8d44\u6e90\u6574\u7406\u6210\u4e00\u4efd\u5f00\u7bb1\u5373\u7528\u7684\u6587\u6863\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002 \u5982\u4f55\u7528 Word \u5199\u6bd5\u4e1a\u8bba\u6587 \u6b63\u5982\u5c06\u5927\u8c61\u88c5\u8fdb\u51b0\u7bb1\u9700\u8981\u4e09\u6b65\uff0c\u7528 Word \u5199\u6bd5\u4e1a\u8bba\u6587\u4e5f\u53ea\u9700\u8981\u7b80\u5355\u4e09\u6b65\uff1a \u786e\u5b9a\u8bba\u6587\u7684\u683c\u5f0f\u8981\u6c42\uff1a\u901a\u5e38\u5b66\u9662\u90fd\u4f1a\u4e0b\u53d1\u6bd5\u4e1a\u8bba\u6587\u7684\u683c\u5f0f\u8981\u6c42\uff08\u5404\u7ea7\u6807\u9898\u7684\u5b57\u4f53\u5b57\u53f7\u3001\u56fe\u4f8b\u548c\u5f15\u7528\u7684\u683c\u5f0f\u7b49\u7b49\uff09\uff0c\u5982\u679c\u66f4\u4e3a\u8d34\u5fc3\u7684\u8bdd\u751a\u81f3\u4f1a\u76f4\u63a5\u7ed9\u51fa\u8bba\u6587\u6a21\u7248\uff08\u5982\u662f\u6b64\u60c5\u51b5\u8bf7\u76f4\u63a5\u8df3\u8f6c\u5230\u4e0b\u4e00\u6b65\uff09\u3002\u5f88\u4e0d\u5e78\u7684\u662f\uff0c\u6211\u7684\u5b66\u9662\u5e76\u6ca1\u6709\u4e0b\u53d1\u6807\u51c6\u7684\u8bba\u6587\u683c\u5f0f\u8981\u6c42\uff0c\u8fd8\u63d0\u4f9b\u4e86\u4e00\u4efd\u683c\u5f0f\u6df7\u4e71\u51e0\u4e4e\u6beb\u65e0\u7528\u5904\u7684\u8bba\u6587\u6a21\u7248\u8188\u5e94\u6211\uff0c\u88ab\u903c\u65e0\u5948\u4e4b\u4e0b\u6211\u627e\u5230\u4e86\u5317\u4eac\u5927\u5b66\u7814\u7a76\u751f\u7684 \u8bba\u6587\u683c\u5f0f\u8981\u6c42 \uff0c\u5e76\u6309\u7167\u5176\u8981\u6c42\u5236\u4f5c\u4e86 \u4e00\u4efd\u6a21\u7248 \uff0c\u5927\u5bb6\u9700\u8981\u7684\u8bdd\u81ea\u53d6\uff0c\u672c\u4eba\u4e0d\u627f\u62c5\u65e0\u6cd5\u6bd5\u4e1a\u7b49\u4efb\u4f55\u8d23\u4efb\u3002 \u5b66\u4e60 Word \u6392\u7248\uff1a\u5230\u8fbe\u8fd9\u4e00\u6b65\u7684\u7ae5\u978b\u5206\u4e3a\u4e24\u7c7b\uff0c\u4e00\u662f\u5df2\u7ecf\u62e5\u6709\u4e86\u5b66\u9662\u63d0\u4f9b\u7684\u6807\u51c6\u6a21\u7248\uff0c\u4e8c\u662f\u53ea\u6709\u4e00\u4efd\u865a\u65e0\u7f25\u7f08\u7684\u683c\u5f0f\u8981\u6c42\u3002\u90a3\u73b0\u5728\u5f53\u52a1\u4e4b\u6025\u5c31\u662f\u5b66\u4e60\u57fa\u7840\u7684 Word \u6392\u7248\u6280\u672f\uff0c\u5bf9\u4e8e\u524d\u8005\u53ef\u4ee5\u5b66\u4f1a\u4f7f\u7528\u6a21\u7248\uff0c\u5bf9\u4e8e\u540e\u8005\u5219\u53ef\u4ee5\u5b66\u4f1a\u5236\u4f5c\u6a21\u7248\u3002\u6b64\u65f6\u5207\u8bb0\u4e0d\u8981\u96c4\u5fc3\u52c3\u52c3\u5730\u9009\u62e9\u4e00\u4e2a\u5341\u51e0\u4e2a\u5c0f\u65f6\u7684 Word \u6559\u5b66\u89c6\u9891\u5f00\u59cb\u5934\u60ac\u6881\u9525\u523a\u80a1\uff0c\u56e0\u4e3a\u751f\u4ea7\u4e00\u4efd\u5e94\u4ed8\u6bd5\u4e1a\u7684\u5b66\u672f\u5783\u573e\u53ea\u8981\u5b66\u534a\u5c0f\u65f6\u80fd\u4e0a\u624b\u5c31\u591f\u4e86\u3002\u6211\u5f53\u65f6\u770b\u7684 \u4e00\u4e2a B \u7ad9\u7684\u6559\u5b66\u89c6\u9891 \uff0c\u77ed\u5c0f\u7cbe\u608d\u975e\u5e38\u5b9e\u7528\uff0c\u5168\u957f\u534a\u5c0f\u65f6\u6781\u901f\u5165\u95e8\u3002 \u751f\u4ea7\u5b66\u672f\u5783\u573e\uff1a\u6700\u5bb9\u6613\u7684\u4e00\u6b65\uff0c\u5927\u5bb6\u516b\u4ed9\u8fc7\u6d77\uff0c\u5404\u663e\u795e\u901a\u5427\uff0c\u795d\u5927\u5bb6\u6bd5\u4e1a\u987a\u5229\uff5e\uff5e","title":"\u6bd5\u4e1a\u8bba\u6587"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/#_1","text":"","title":"\u6bd5\u4e1a\u8bba\u6587"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/#_2","text":"2022\u5e74\uff0c\u6211\u672c\u79d1\u6bd5\u4e1a\u4e86\u3002\u5728\u5f00\u59cb\u52a8\u624b\u5199\u6bd5\u4e1a\u8bba\u6587\u7684\u65f6\u5019\uff0c\u6211\u5c34\u5c2c\u5730\u53d1\u73b0\uff0c\u6211\u5bf9 Word \u7684\u638c\u63e1\u7a0b\u5ea6\u4ec5\u9650\u4e8e\u8c03\u8282\u5b57\u4f53\u3001\u4fdd\u5b58\u5bfc\u51fa\u8fd9\u4e9b\u50bb\u74dc\u529f\u80fd\u3002\u66fe\u60f3\u8f6c\u6218 Latex\uff0c\u4f46\u8bba\u6587\u7684\u6bb5\u843d\u683c\u5f0f\u8981\u6c42\u8c03\u6574\u8d77\u6765\u8fd8\u662f\u7528 Word \u66f4\u4e3a\u65b9\u4fbf\uff0c\u7ecf\u8fc7\u4e00\u756a\u75db\u82e6\u7f20\u6597\u4e4b\u540e\uff0c\u603b\u7b97\u662f\u6709\u60ca\u65e0\u9669\u5730\u5b8c\u6210\u4e86\u8bba\u6587\u7684\u5199\u4f5c\u548c\u7b54\u8fa9\u3002\u4e3a\u4e86\u4e0d\u8ba9\u540e\u6765\u8005\u91cd\u8e48\u8986\u8f99\uff0c\u9042\u628a\u76f8\u5173\u8d44\u6e90\u6574\u7406\u6210\u4e00\u4efd\u5f00\u7bb1\u5373\u7528\u7684\u6587\u6863\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002","title":"\u4e3a\u4ec0\u4e48\u5199\u8fd9\u4efd\u6559\u7a0b"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/#word","text":"\u6b63\u5982\u5c06\u5927\u8c61\u88c5\u8fdb\u51b0\u7bb1\u9700\u8981\u4e09\u6b65\uff0c\u7528 Word \u5199\u6bd5\u4e1a\u8bba\u6587\u4e5f\u53ea\u9700\u8981\u7b80\u5355\u4e09\u6b65\uff1a \u786e\u5b9a\u8bba\u6587\u7684\u683c\u5f0f\u8981\u6c42\uff1a\u901a\u5e38\u5b66\u9662\u90fd\u4f1a\u4e0b\u53d1\u6bd5\u4e1a\u8bba\u6587\u7684\u683c\u5f0f\u8981\u6c42\uff08\u5404\u7ea7\u6807\u9898\u7684\u5b57\u4f53\u5b57\u53f7\u3001\u56fe\u4f8b\u548c\u5f15\u7528\u7684\u683c\u5f0f\u7b49\u7b49\uff09\uff0c\u5982\u679c\u66f4\u4e3a\u8d34\u5fc3\u7684\u8bdd\u751a\u81f3\u4f1a\u76f4\u63a5\u7ed9\u51fa\u8bba\u6587\u6a21\u7248\uff08\u5982\u662f\u6b64\u60c5\u51b5\u8bf7\u76f4\u63a5\u8df3\u8f6c\u5230\u4e0b\u4e00\u6b65\uff09\u3002\u5f88\u4e0d\u5e78\u7684\u662f\uff0c\u6211\u7684\u5b66\u9662\u5e76\u6ca1\u6709\u4e0b\u53d1\u6807\u51c6\u7684\u8bba\u6587\u683c\u5f0f\u8981\u6c42\uff0c\u8fd8\u63d0\u4f9b\u4e86\u4e00\u4efd\u683c\u5f0f\u6df7\u4e71\u51e0\u4e4e\u6beb\u65e0\u7528\u5904\u7684\u8bba\u6587\u6a21\u7248\u8188\u5e94\u6211\uff0c\u88ab\u903c\u65e0\u5948\u4e4b\u4e0b\u6211\u627e\u5230\u4e86\u5317\u4eac\u5927\u5b66\u7814\u7a76\u751f\u7684 \u8bba\u6587\u683c\u5f0f\u8981\u6c42 \uff0c\u5e76\u6309\u7167\u5176\u8981\u6c42\u5236\u4f5c\u4e86 \u4e00\u4efd\u6a21\u7248 \uff0c\u5927\u5bb6\u9700\u8981\u7684\u8bdd\u81ea\u53d6\uff0c\u672c\u4eba\u4e0d\u627f\u62c5\u65e0\u6cd5\u6bd5\u4e1a\u7b49\u4efb\u4f55\u8d23\u4efb\u3002 \u5b66\u4e60 Word \u6392\u7248\uff1a\u5230\u8fbe\u8fd9\u4e00\u6b65\u7684\u7ae5\u978b\u5206\u4e3a\u4e24\u7c7b\uff0c\u4e00\u662f\u5df2\u7ecf\u62e5\u6709\u4e86\u5b66\u9662\u63d0\u4f9b\u7684\u6807\u51c6\u6a21\u7248\uff0c\u4e8c\u662f\u53ea\u6709\u4e00\u4efd\u865a\u65e0\u7f25\u7f08\u7684\u683c\u5f0f\u8981\u6c42\u3002\u90a3\u73b0\u5728\u5f53\u52a1\u4e4b\u6025\u5c31\u662f\u5b66\u4e60\u57fa\u7840\u7684 Word \u6392\u7248\u6280\u672f\uff0c\u5bf9\u4e8e\u524d\u8005\u53ef\u4ee5\u5b66\u4f1a\u4f7f\u7528\u6a21\u7248\uff0c\u5bf9\u4e8e\u540e\u8005\u5219\u53ef\u4ee5\u5b66\u4f1a\u5236\u4f5c\u6a21\u7248\u3002\u6b64\u65f6\u5207\u8bb0\u4e0d\u8981\u96c4\u5fc3\u52c3\u52c3\u5730\u9009\u62e9\u4e00\u4e2a\u5341\u51e0\u4e2a\u5c0f\u65f6\u7684 Word \u6559\u5b66\u89c6\u9891\u5f00\u59cb\u5934\u60ac\u6881\u9525\u523a\u80a1\uff0c\u56e0\u4e3a\u751f\u4ea7\u4e00\u4efd\u5e94\u4ed8\u6bd5\u4e1a\u7684\u5b66\u672f\u5783\u573e\u53ea\u8981\u5b66\u534a\u5c0f\u65f6\u80fd\u4e0a\u624b\u5c31\u591f\u4e86\u3002\u6211\u5f53\u65f6\u770b\u7684 \u4e00\u4e2a B \u7ad9\u7684\u6559\u5b66\u89c6\u9891 \uff0c\u77ed\u5c0f\u7cbe\u608d\u975e\u5e38\u5b9e\u7528\uff0c\u5168\u957f\u534a\u5c0f\u65f6\u6781\u901f\u5165\u95e8\u3002 \u751f\u4ea7\u5b66\u672f\u5783\u573e\uff1a\u6700\u5bb9\u6613\u7684\u4e00\u6b65\uff0c\u5927\u5bb6\u516b\u4ed9\u8fc7\u6d77\uff0c\u5404\u663e\u795e\u901a\u5427\uff0c\u795d\u5927\u5bb6\u6bd5\u4e1a\u987a\u5229\uff5e\uff5e","title":"\u5982\u4f55\u7528 Word \u5199\u6bd5\u4e1a\u8bba\u6587"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/","text":"\u5b9e\u7528\u5de5\u5177\u7bb1 \u4e0b\u8f7d\u5de5\u5177 Libgen : PDF\u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9\u3002 z-epub : ePub\u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9\u3002 bitdownloader : \u6cb9\u7ba1\u89c6\u9891\u4e0b\u8f7d\u5668\u3002 zlibrary : \u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9(\u53ef\u80fd\u9700\u8981\u7ffb\u5899)\u3002 \u8bbe\u8ba1\u5de5\u5177 excalidraw : \u4e00\u6b3e\u624b\u7ed8\u98ce\u683c\u7684\u7ed8\u56fe\u5de5\u5177\uff0c\u975e\u5e38\u9002\u5408\u7ed8\u5236\u8bfe\u7a0b\u62a5\u544a\u6216\u8005PPT\u5185\u7684\u793a\u610f\u56fe\u3002 origamiway : \u624b\u628a\u624b\u6559\u4f60\u600e\u4e48\u6298\u7eb8\u3002 thingiverse : \u56ca\u62ec\u5404\u7c7b 2D/3D \u8bbe\u8ba1\u8d44\u6e90\uff0c\u5176 STL \u6587\u4ef6\u4e0b\u8f7d\u53ef\u76f4\u63a5 3D \u6253\u5370\u3002 iconfont : \u56fd\u5185\u6700\u5927\u7684\u56fe\u6807\u548c\u63d2\u753b\u8d44\u6e90\u5e93\uff0c\u53ef\u7528\u4e8e\u5f00\u53d1\u6216\u7ed8\u5236\u7cfb\u7edf\u67b6\u6784\u56fe\u3002 turbosquid : \u53ef\u4ee5\u8d2d\u4e70\u5404\u5f0f\u5404\u6837\u7684\u6a21\u578b\u3002 \u7f16\u7a0b\u76f8\u5173 sqlfiddle : \u4e00\u4e2a\u7b80\u6613\u7684\u5728\u7ebf SQL Playground\u3002 godbolt : \u975e\u5e38\u65b9\u4fbf\u7684\u7f16\u8bd1\u5668\u63a2\u7d22\u5de5\u5177\u3002\u4f60\u53ef\u4ee5\u5199\u4e00\u6bb5 C/C++ \u4ee3\u7801\uff0c\u9009\u62e9\u4e00\u6b3e\u7f16\u8bd1\u5668\uff0c\u7136\u540e\u4fbf\u53ef\u4ee5\u89c2\u5bdf\u751f\u6210\u7684\u5177\u4f53\u6c47\u7f16\u4ee3\u7801\u3002 explainshell : \u4f60\u662f\u5426\u66fe\u4e3a\u4e00\u6bb5 shell \u4ee3\u7801\u7684\u5177\u4f53\u542b\u4e49\u611f\u5230\u56f0\u6270\uff1fmanpage \u770b\u534a\u5929\u8fd8\u662f\u4e0d\u660e\u6240\u4ee5\uff1f\u8bd5\u8bd5\u8fd9\u4e2a\u7f51\u7ad9\uff01 regex101 : \u6b63\u5219\u8868\u8fbe\u5f0f\u8c03\u8bd5\u7f51\u7ad9\uff0c\u652f\u6301\u5404\u79cd\u7f16\u7a0b\u8bed\u8a00\u7684\u5339\u914d\u6807\u51c6\u3002 typingtom : \u9488\u5bf9\u7a0b\u5e8f\u5458\u7684\u6253\u5b57\u7ec3\u4e60/\u6d4b\u901f\u7f51\u7ad9\u3002 \u5b66\u4e60\u7f51\u7ad9 HFS : \u5404\u7c7b\u8f6f\u4ef6\u6559\u7a0b\u3002 os-wiki : \u64cd\u4f5c\u7cfb\u7edf\u6280\u672f\u8d44\u6e90\u767e\u79d1\u5168\u4e66\u3002 Shadertoy : \u7f16\u5199\u5404\u5f0f\u5404\u6837\u7684 shader\u3002 \u6742\u9879 tophub : \u65b0\u95fb\u70ed\u699c\u5408\u96c6\uff08\u7efc\u5408\u4e86\u77e5\u4e4e\u3001\u5fae\u535a\u3001\u767e\u5ea6\u3001\u5fae\u4fe1\u7b49\uff09\u3002 speedtest : \u5728\u7ebf\u7f51\u7edc\u6d4b\u901f\u7f51\u7ad9\u3002 public-apis : \u516c\u5171 API \u5408\u96c6\u5217\u8868\u3002","title":"\u5b9e\u7528\u5de5\u5177\u7bb1"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_1","text":"","title":"\u5b9e\u7528\u5de5\u5177\u7bb1"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_2","text":"Libgen : PDF\u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9\u3002 z-epub : ePub\u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9\u3002 bitdownloader : \u6cb9\u7ba1\u89c6\u9891\u4e0b\u8f7d\u5668\u3002 zlibrary : \u7535\u5b50\u4e66\u4e0b\u8f7d\u7f51\u7ad9(\u53ef\u80fd\u9700\u8981\u7ffb\u5899)\u3002","title":"\u4e0b\u8f7d\u5de5\u5177"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_3","text":"excalidraw : \u4e00\u6b3e\u624b\u7ed8\u98ce\u683c\u7684\u7ed8\u56fe\u5de5\u5177\uff0c\u975e\u5e38\u9002\u5408\u7ed8\u5236\u8bfe\u7a0b\u62a5\u544a\u6216\u8005PPT\u5185\u7684\u793a\u610f\u56fe\u3002 origamiway : \u624b\u628a\u624b\u6559\u4f60\u600e\u4e48\u6298\u7eb8\u3002 thingiverse : \u56ca\u62ec\u5404\u7c7b 2D/3D \u8bbe\u8ba1\u8d44\u6e90\uff0c\u5176 STL \u6587\u4ef6\u4e0b\u8f7d\u53ef\u76f4\u63a5 3D \u6253\u5370\u3002 iconfont : \u56fd\u5185\u6700\u5927\u7684\u56fe\u6807\u548c\u63d2\u753b\u8d44\u6e90\u5e93\uff0c\u53ef\u7528\u4e8e\u5f00\u53d1\u6216\u7ed8\u5236\u7cfb\u7edf\u67b6\u6784\u56fe\u3002 turbosquid : \u53ef\u4ee5\u8d2d\u4e70\u5404\u5f0f\u5404\u6837\u7684\u6a21\u578b\u3002","title":"\u8bbe\u8ba1\u5de5\u5177"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_4","text":"sqlfiddle : \u4e00\u4e2a\u7b80\u6613\u7684\u5728\u7ebf SQL Playground\u3002 godbolt : \u975e\u5e38\u65b9\u4fbf\u7684\u7f16\u8bd1\u5668\u63a2\u7d22\u5de5\u5177\u3002\u4f60\u53ef\u4ee5\u5199\u4e00\u6bb5 C/C++ \u4ee3\u7801\uff0c\u9009\u62e9\u4e00\u6b3e\u7f16\u8bd1\u5668\uff0c\u7136\u540e\u4fbf\u53ef\u4ee5\u89c2\u5bdf\u751f\u6210\u7684\u5177\u4f53\u6c47\u7f16\u4ee3\u7801\u3002 explainshell : \u4f60\u662f\u5426\u66fe\u4e3a\u4e00\u6bb5 shell \u4ee3\u7801\u7684\u5177\u4f53\u542b\u4e49\u611f\u5230\u56f0\u6270\uff1fmanpage \u770b\u534a\u5929\u8fd8\u662f\u4e0d\u660e\u6240\u4ee5\uff1f\u8bd5\u8bd5\u8fd9\u4e2a\u7f51\u7ad9\uff01 regex101 : \u6b63\u5219\u8868\u8fbe\u5f0f\u8c03\u8bd5\u7f51\u7ad9\uff0c\u652f\u6301\u5404\u79cd\u7f16\u7a0b\u8bed\u8a00\u7684\u5339\u914d\u6807\u51c6\u3002 typingtom : \u9488\u5bf9\u7a0b\u5e8f\u5458\u7684\u6253\u5b57\u7ec3\u4e60/\u6d4b\u901f\u7f51\u7ad9\u3002","title":"\u7f16\u7a0b\u76f8\u5173"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_5","text":"HFS : \u5404\u7c7b\u8f6f\u4ef6\u6559\u7a0b\u3002 os-wiki : \u64cd\u4f5c\u7cfb\u7edf\u6280\u672f\u8d44\u6e90\u767e\u79d1\u5168\u4e66\u3002 Shadertoy : \u7f16\u5199\u5404\u5f0f\u5404\u6837\u7684 shader\u3002","title":"\u5b66\u4e60\u7f51\u7ad9"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/#_6","text":"tophub : \u65b0\u95fb\u70ed\u699c\u5408\u96c6\uff08\u7efc\u5408\u4e86\u77e5\u4e4e\u3001\u5fae\u535a\u3001\u767e\u5ea6\u3001\u5fae\u4fe1\u7b49\uff09\u3002 speedtest : \u5728\u7ebf\u7f51\u7edc\u6d4b\u901f\u7f51\u7ad9\u3002 public-apis : \u516c\u5171 API \u5408\u96c6\u5217\u8868\u3002","title":"\u6742\u9879"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E7%BF%BB%E5%A2%99/","text":"\u7ffb\u5899 \u6b64\u94fe\u63a5 \u51fa\u73b0\u5728\u8fd9\u91cc\u7eaf\u5c5e\u4e8c\u8fdb\u5236 bit \u7684\u968f\u610f\u7ec4\u5408\uff0c\u4e0e\u672c\u4eba\u6beb\u65e0\u5173\u7cfb\u3002","title":"\u7ffb\u5899"},{"location":"%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E7%BF%BB%E5%A2%99/#_1","text":"\u6b64\u94fe\u63a5 \u51fa\u73b0\u5728\u8fd9\u91cc\u7eaf\u5c5e\u4e8c\u8fdb\u5236 bit \u7684\u968f\u610f\u7ec4\u5408\uff0c\u4e0e\u672c\u4eba\u6beb\u65e0\u5173\u7cfb\u3002","title":"\u7ffb\u5899"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/","text":"CS162: Operating System \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aC, x86\u6c47\u7f16 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a200 \u5c0f\u65f6+\uff0c\u4e0a\u4e0d\u5c01\u9876 \u8fd9\u95e8\u8bfe\u8ba9\u6211\u8bb0\u5fc6\u72b9\u65b0\u7684\u6709\u4e24\u4e2a\u90e8\u5206\uff1a \u9996\u5148\u662f\u6559\u6750\uff0c\u8fd9\u672c\u4e66\u7528\u7684\u6559\u6750 Operating Systems: Principles and Practice (2nd Edition) \u4e00\u5171\u56db\u5377\uff0c\u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u5f88\u597d\u5730\u5f25\u8865\u4e86 MIT6.S081 \u5728\u7406\u8bba\u77e5\u8bc6\u4e0a\u7684\u4e9b\u8bb8\u7a7a\u767d\uff0c\u975e\u5e38\u5efa\u8bae\u5927\u5bb6\u9605\u8bfb\u3002\u76f8\u5173\u8d44\u6e90\u4f1a\u5206\u4eab\u5728\u672c\u4e66\u7684\u7ecf\u5178\u4e66\u7c4d\u63a8\u8350\u6a21\u5757\u3002 \u5176\u6b21\u662f\u8fd9\u95e8\u8bfe\u7684 Project \u2014\u2014 Pintos\u3002Pintos \u662f\u7531 Ben Pfaff \u7b49\u4eba\u5728 x86 \u5e73\u53f0\u4e0a\u7f16\u5199\u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf\uff0cBen Pfaff \u751a\u81f3\u4e13\u95e8\u53d1\u4e86\u7bc7 paper \u6765\u9610\u8ff0 Pintos \u7684\u8bbe\u8ba1\u601d\u60f3\u3002 \u548c MIT \u7684 xv6 \u5c0f\u800c\u7cbe\u7684 lab \u8bbe\u8ba1\u7406\u5ff5\u4e0d\u540c\uff0cPintos \u66f4\u6ce8\u91cd\u7cfb\u7edf\u7684 Design and Implementation\u3002Pintos \u672c\u8eab\u4ec5\u4e00\u4e07\u884c\u5de6\u53f3\uff0c\u53ea\u63d0\u4f9b\u4e86\u64cd\u4f5c\u7cfb\u7edf\u6700\u57fa\u672c\u7684\u529f\u80fd\u3002\u800c 4 \u4e2aProject\uff0c\u5c31\u662f\u8ba9\u4f60\u5728\u8fd9\u4e2a\u6781\u4e3a\u7cbe\u7b80\u7684\u64cd\u4f5c\u7cfb\u7edf\u4e4b\u4e0a\uff0c\u5206\u522b\u4e3a\u5176\u589e\u52a0\u7ebf\u7a0b\u8c03\u5ea6\u673a\u5236 (Project1)\uff0c\u7cfb\u7edf\u8c03\u7528 (Project2)\uff0c\u865a\u62df\u5185\u5b58 (Project3) \u4ee5\u53ca\u6587\u4ef6\u7cfb\u7edf (Project4)\u3002\u6240\u6709\u7684 Project \u90fd\u7ed9\u5b66\u751f\u7559\u6709\u5f88\u5927\u7684\u8bbe\u8ba1\u7a7a\u95f4\uff0c\u603b\u4ee3\u7801\u91cf\u5728 2000 \u884c\u5de6\u53f3\u3002\u6839\u636e Stanford \u5b66\u751f \u81ea\u5df1\u7684\u53cd\u9988 \uff0c\u5728 3-4 \u4eba\u7ec4\u961f\u7684\u60c5\u51b5\u4e0b\uff0c\u540e\u4e24\u4e2a Project \u7684\u4eba\u5747\u8017\u65f6\u4e5f\u5728 40 \u4e2a\u5c0f\u65f6\u4ee5\u4e0a\u3002 \u867d\u7136\u96be\u5ea6\u5f88\u5927\uff0c\u4f46 Stanford, Berkeley, JHU \u7b49\u591a\u6240\u7f8e\u56fd\u9876\u5c16\u540d\u6821\u7684\u64cd\u7edf\u8bfe\u7a0b\u5747\u91c7\u7528\u4e86 Pintos\u3002\u5982\u679c\u4f60\u771f\u7684\u5bf9\u64cd\u4f5c\u7cfb\u7edf\u5f88\u611f\u5174\u8da3\uff0cPintos \u4f1a\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u7f16\u5199\u548c debug \u5e95\u5c42\u7cfb\u7edf\u4ee3\u7801\u7684\u80fd\u529b\u3002\u5728\u672c\u79d1\u9636\u6bb5\uff0c\u80fd\u81ea\u5df1\u8bbe\u8ba1\u3001\u5b9e\u73b0\u5e76 debug \u4e00\u4e2a\u5927\u578b\u7cfb\u7edf\uff0c\u662f\u4e00\u6bb5\u975e\u5e38\u73cd\u8d35\u7684\u7ecf\u5386\u3002 \u5317\u5927 2022 \u5e74\u6625\u5b63\u5b66\u671f\u7684\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9a8c\u73ed\u4e5f\u5c06\u4f1a\u9996\u6b21\u5f15\u5165 Pintos \u4f5c\u4e3a\u8bfe\u7a0b Project\u3002\u6211\u548c\u8be5\u8bfe\u7a0b\u7684 \u53e6\u4e00\u4f4d\u52a9\u6559 \u6574\u7406\u5e76\u5b8c\u5584\u4e86 Pintos \u7684 \u5b9e\u9a8c\u6587\u6863 \uff0c\u5e76\u5229\u7528 Docker \u914d\u7f6e\u4e86\u8de8\u5e73\u53f0\u7684\u5b9e\u9a8c\u73af\u5883\uff0c\u60f3\u81ea\u5b66\u7684\u540c\u5b66\u53ef\u4ee5\u6309\u6587\u6863\u81ea\u884c\u5b66\u4e60\u3002\u5728\u6bd5\u4e1a\u524d\u7684\u6700\u540e\u4e00\u4e2a\u5b66\u671f\uff0c\u5e0c\u671b\u80fd\u7528\u8fd9\u6837\u7684\u5c1d\u8bd5\uff0c\u8ba9\u66f4\u591a\u4eba\u7231\u4e0a\u7cfb\u7edf\u9886\u57df\uff0c\u4e3a\u56fd\u5185\u7684\u7cfb\u7edf\u7814\u7a76\u6dfb\u7816\u52a0\u74e6\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs162.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=YfHY0pvpRkk \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a Operating Systems: Principles and Practice (2nd Edition) \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs162.org/ \uff0c6 \u4e2a Homework, 3 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b \u7531\u4e8e\u5317\u5927\u7684\u64cd\u7edf\u5b9e\u9a8c\u73ed\u91c7\u7528\u4e86\u8be5\u8bfe\u7a0b\u7684 Project\uff0c\u4e3a\u4e86\u9632\u6b62\u4ee3\u7801\u6284\u88ad\uff0c\u6211\u7684\u4ee3\u7801\u5b9e\u73b0\u6ca1\u6709\u5f00\u6e90\u3002","title":"UCB CS162: Operating System"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/#cs162-operating-system","text":"","title":"CS162: Operating System"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aC, x86\u6c47\u7f16 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a200 \u5c0f\u65f6+\uff0c\u4e0a\u4e0d\u5c01\u9876 \u8fd9\u95e8\u8bfe\u8ba9\u6211\u8bb0\u5fc6\u72b9\u65b0\u7684\u6709\u4e24\u4e2a\u90e8\u5206\uff1a \u9996\u5148\u662f\u6559\u6750\uff0c\u8fd9\u672c\u4e66\u7528\u7684\u6559\u6750 Operating Systems: Principles and Practice (2nd Edition) \u4e00\u5171\u56db\u5377\uff0c\u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u5f88\u597d\u5730\u5f25\u8865\u4e86 MIT6.S081 \u5728\u7406\u8bba\u77e5\u8bc6\u4e0a\u7684\u4e9b\u8bb8\u7a7a\u767d\uff0c\u975e\u5e38\u5efa\u8bae\u5927\u5bb6\u9605\u8bfb\u3002\u76f8\u5173\u8d44\u6e90\u4f1a\u5206\u4eab\u5728\u672c\u4e66\u7684\u7ecf\u5178\u4e66\u7c4d\u63a8\u8350\u6a21\u5757\u3002 \u5176\u6b21\u662f\u8fd9\u95e8\u8bfe\u7684 Project \u2014\u2014 Pintos\u3002Pintos \u662f\u7531 Ben Pfaff \u7b49\u4eba\u5728 x86 \u5e73\u53f0\u4e0a\u7f16\u5199\u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf\uff0cBen Pfaff \u751a\u81f3\u4e13\u95e8\u53d1\u4e86\u7bc7 paper \u6765\u9610\u8ff0 Pintos \u7684\u8bbe\u8ba1\u601d\u60f3\u3002 \u548c MIT \u7684 xv6 \u5c0f\u800c\u7cbe\u7684 lab \u8bbe\u8ba1\u7406\u5ff5\u4e0d\u540c\uff0cPintos \u66f4\u6ce8\u91cd\u7cfb\u7edf\u7684 Design and Implementation\u3002Pintos \u672c\u8eab\u4ec5\u4e00\u4e07\u884c\u5de6\u53f3\uff0c\u53ea\u63d0\u4f9b\u4e86\u64cd\u4f5c\u7cfb\u7edf\u6700\u57fa\u672c\u7684\u529f\u80fd\u3002\u800c 4 \u4e2aProject\uff0c\u5c31\u662f\u8ba9\u4f60\u5728\u8fd9\u4e2a\u6781\u4e3a\u7cbe\u7b80\u7684\u64cd\u4f5c\u7cfb\u7edf\u4e4b\u4e0a\uff0c\u5206\u522b\u4e3a\u5176\u589e\u52a0\u7ebf\u7a0b\u8c03\u5ea6\u673a\u5236 (Project1)\uff0c\u7cfb\u7edf\u8c03\u7528 (Project2)\uff0c\u865a\u62df\u5185\u5b58 (Project3) \u4ee5\u53ca\u6587\u4ef6\u7cfb\u7edf (Project4)\u3002\u6240\u6709\u7684 Project \u90fd\u7ed9\u5b66\u751f\u7559\u6709\u5f88\u5927\u7684\u8bbe\u8ba1\u7a7a\u95f4\uff0c\u603b\u4ee3\u7801\u91cf\u5728 2000 \u884c\u5de6\u53f3\u3002\u6839\u636e Stanford \u5b66\u751f \u81ea\u5df1\u7684\u53cd\u9988 \uff0c\u5728 3-4 \u4eba\u7ec4\u961f\u7684\u60c5\u51b5\u4e0b\uff0c\u540e\u4e24\u4e2a Project \u7684\u4eba\u5747\u8017\u65f6\u4e5f\u5728 40 \u4e2a\u5c0f\u65f6\u4ee5\u4e0a\u3002 \u867d\u7136\u96be\u5ea6\u5f88\u5927\uff0c\u4f46 Stanford, Berkeley, JHU \u7b49\u591a\u6240\u7f8e\u56fd\u9876\u5c16\u540d\u6821\u7684\u64cd\u7edf\u8bfe\u7a0b\u5747\u91c7\u7528\u4e86 Pintos\u3002\u5982\u679c\u4f60\u771f\u7684\u5bf9\u64cd\u4f5c\u7cfb\u7edf\u5f88\u611f\u5174\u8da3\uff0cPintos \u4f1a\u6781\u5927\u5730\u63d0\u9ad8\u4f60\u7f16\u5199\u548c debug \u5e95\u5c42\u7cfb\u7edf\u4ee3\u7801\u7684\u80fd\u529b\u3002\u5728\u672c\u79d1\u9636\u6bb5\uff0c\u80fd\u81ea\u5df1\u8bbe\u8ba1\u3001\u5b9e\u73b0\u5e76 debug \u4e00\u4e2a\u5927\u578b\u7cfb\u7edf\uff0c\u662f\u4e00\u6bb5\u975e\u5e38\u73cd\u8d35\u7684\u7ecf\u5386\u3002 \u5317\u5927 2022 \u5e74\u6625\u5b63\u5b66\u671f\u7684\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9a8c\u73ed\u4e5f\u5c06\u4f1a\u9996\u6b21\u5f15\u5165 Pintos \u4f5c\u4e3a\u8bfe\u7a0b Project\u3002\u6211\u548c\u8be5\u8bfe\u7a0b\u7684 \u53e6\u4e00\u4f4d\u52a9\u6559 \u6574\u7406\u5e76\u5b8c\u5584\u4e86 Pintos \u7684 \u5b9e\u9a8c\u6587\u6863 \uff0c\u5e76\u5229\u7528 Docker \u914d\u7f6e\u4e86\u8de8\u5e73\u53f0\u7684\u5b9e\u9a8c\u73af\u5883\uff0c\u60f3\u81ea\u5b66\u7684\u540c\u5b66\u53ef\u4ee5\u6309\u6587\u6863\u81ea\u884c\u5b66\u4e60\u3002\u5728\u6bd5\u4e1a\u524d\u7684\u6700\u540e\u4e00\u4e2a\u5b66\u671f\uff0c\u5e0c\u671b\u80fd\u7528\u8fd9\u6837\u7684\u5c1d\u8bd5\uff0c\u8ba9\u66f4\u591a\u4eba\u7231\u4e0a\u7cfb\u7edf\u9886\u57df\uff0c\u4e3a\u56fd\u5185\u7684\u7cfb\u7edf\u7814\u7a76\u6dfb\u7816\u52a0\u74e6\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs162.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=YfHY0pvpRkk \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a Operating Systems: Principles and Practice (2nd Edition) \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs162.org/ \uff0c6 \u4e2a Homework, 3 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/#_3","text":"\u7531\u4e8e\u5317\u5927\u7684\u64cd\u7edf\u5b9e\u9a8c\u73ed\u91c7\u7528\u4e86\u8be5\u8bfe\u7a0b\u7684 Project\uff0c\u4e3a\u4e86\u9632\u6b62\u4ee3\u7801\u6284\u88ad\uff0c\u6211\u7684\u4ee3\u7801\u5b9e\u73b0\u6ca1\u6709\u5f00\u6e90\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/","text":"MIT 6.S081: Operating System Engineering \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u9ebb\u7701\u7406\u5de5\u5b66\u9662 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784 + \u624e\u5b9e\u7684 C \u8bed\u8a00\u529f\u5e95 + RISC-V \u6c47\u7f16\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aC, RISC-V \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u5927\u540d\u9f0e\u9f0e\u7684 PDOS \u5b9e\u9a8c\u5ba4\u5f00\u8bbe\u7684\u9762\u5411MIT\u672c\u79d1\u751f\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u3002\u5f00\u8bbe\u8fd9\u95e8\u8bfe\u7684\u6559\u6388\u4e4b\u4e00 \u2014\u2014 Robert Morris \u6559\u6388\u66fe\u662f\u4e00\u4f4d\u9876\u5c16\u9ed1\u5ba2\uff0c\u4e16\u754c\u4e0a\u7b2c\u4e00\u4e2a\u8815\u866b\u75c5\u6bd2 Morris \u5c31\u662f\u51fa\u81ea\u4ed6\u4e4b\u624b\u3002 \u8fd9\u95e8\u8bfe\u7684\u524d\u8eab\u662f MIT \u8457\u540d\u7684\u8bfe\u7a0b 6.828\uff0cMIT \u7684\u51e0\u4f4d\u6559\u6388\u4e3a\u4e86\u8fd9\u95e8\u8bfe\u66fe\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a\u57fa\u4e8e x86 \u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf JOS\uff0c\u88ab\u4f17\u591a\u540d\u6821\u4f5c\u4e3a\u81ea\u5df1\u7684\u64cd\u7edf\u8bfe\u7a0b\u5b9e\u9a8c\u3002\u4f46\u968f\u7740 RISC-V \u7684\u6a2a\u7a7a\u51fa\u4e16\uff0c\u8fd9\u51e0\u4f4d\u6559\u6388\u53c8\u57fa\u4e8e RISC-V \u5f00\u53d1\u4e86\u4e00\u4e2a\u65b0\u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf xv6\uff0c\u5e76\u5f00\u8bbe\u4e86 MIT6.S081 \u8fd9\u95e8\u8bfe\u3002\u7531\u4e8e RISC-V \u8f7b\u4fbf\u6613\u5b66\u7684\u7279\u70b9\uff0c\u5b66\u751f\u4e0d\u9700\u8981\u50cf\u6b64\u524d JOS \u4e00\u6837\u7ea0\u7ed3\u4e8e\u4f17\u591a x86 \u201c\u7279\u6709\u7684\u201d\u4e3a\u4e86\u517c\u5bb9\u800c\u9057\u7559\u4e0b\u6765\u7684\u590d\u6742\u673a\u5236\uff0c\u800c\u53ef\u4ee5\u4e13\u6ce8\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u5c42\u9762\u7684\u5f00\u53d1\u3002 \u8fd9\u51e0\u4f4d\u6559\u6388\u8fd8\u4e13\u95e8\u5199\u4e86\u4e00\u672c \u6559\u7a0b \uff0c\u8be6\u7ec6\u8bb2\u89e3\u4e86 xv6 \u7684\u8bbe\u8ba1\u601d\u60f3\u548c\u5b9e\u73b0\u7ec6\u8282\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bb2\u6388\u4e5f\u5f88\u6709\u610f\u601d\uff0c\u8001\u5e08\u4f1a\u5e26\u7740\u5b66\u751f\u4f9d\u7167 xv6 \u7684\u6e90\u4ee3\u7801\u53bb\u7406\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u4f17\u591a\u673a\u5236\u548c\u8bbe\u8ba1\u7ec6\u8282\uff0c\u800c\u4e0d\u662f\u505c\u7559\u4e8e\u7406\u8bba\u77e5\u8bc6\u3002\u6bcf\u5468\u90fd\u4f1a\u6709\u4e00\u4e2a lab\uff0c\u8ba9\u4f60\u5728 xv6 \u4e0a\u589e\u52a0\u4e00\u4e9b\u65b0\u7684\u673a\u5236\u548c\u7279\u6027\uff0c\u975e\u5e38\u6ce8\u91cd\u5b66\u751f\u52a8\u624b\u80fd\u529b\u7684\u57f9\u517b\u3002\u6574\u4e2a\u5b66\u671f\u4e00\u5171\u6709 11 \u4e2a lab\uff0c\u8ba9\u4f60\u5168\u65b9\u4f4d\u5730\u6df1\u523b\u7406\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u6bcf\u4e2a\u90e8\u5206\uff0c\u975e\u5e38\u6709\u6210\u5c31\u611f\u3002\u800c\u4e14\u6240\u6709\u7684lab\u90fd\u6709\u7740\u975e\u5e38\u5b8c\u5584\u7684\u6d4b\u8bd5\u6846\u67b6\uff0c\u6709\u7684\u6d4b\u8bd5\u4ee3\u7801\u751a\u81f3\u4e0a\u5343\u884c\uff0c\u8ba9\u4eba\u4e0d\u5f97\u4e0d\u4f69\u670d MIT \u7684\u51e0\u4f4d\u6559\u6388\u4e3a\u4e86\u6559\u597d\u8fd9\u95e8\u8bfe\u6240\u4ed8\u51fa\u7684\u5fc3\u8840\u3002 \u8fd9\u95e8\u8bfe\u7684\u540e\u534a\u7a0b\u4f1a\u8bb2\u6388\u64cd\u4f5c\u7cfb\u7edf\u9886\u57df\u7684\u591a\u7bc7\u7ecf\u5178\u8bba\u6587\uff0c\u6d89\u53ca\u6587\u4ef6\u7cfb\u7edf\u3001\u7cfb\u7edf\u5b89\u5168\u3001\u7f51\u7edc\u3001\u865a\u62df\u5316\u7b49\u7b49\u591a\u4e2a\u4e3b\u9898\uff0c\u8ba9\u4f60\u6709\u673a\u4f1a\u63a5\u89e6\u5230\u5b66\u754c\u6700\u524d\u6cbf\u7684\u7814\u7a76\u65b9\u5411\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://pdos.csail.mit.edu/6.828/2021/schedule.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=L6YqHxYHa7A \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u89c6\u9891\u7ffb\u8bd1\u6587\u6863\uff1a https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/ \u8bfe\u7a0b\u6559\u6750\uff1a https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://pdos.csail.mit.edu/6.828/2021/schedule.html \uff0c11\u4e2alab\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 xv6 \u8865\u5145\u8d44\u6e90 xv6 \u64cd\u4f5c\u7cfb\u7edf\u7684\u6df1\u5165\u8bb2\u89e3 xv6 \u4e2d\u6587\u6587\u6863 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.S081-2020fall - GitHub \u4e2d\u3002 @ KuangjuX \u7f16\u5199\u4e86 MIT 6.S081 \u7684 lab \u7684 \u9898\u89e3 \uff0c\u91cc\u9762\u6709\u8be6\u7ec6\u7684\u89e3\u6cd5\u548c\u8865\u5145\u77e5\u8bc6\u3002\u53e6\u5916\uff0c@ KuangjuX \u8fd8\u4f7f\u7528 Rust \u8bed\u8a00\u91cd\u65b0\u5b9e\u73b0\u4e86 xv6-riscv \u64cd\u4f5c\u7cfb\u7edf\uff1a xv6-rust \uff0c\u91cc\u9762\u5bf9\u4e8e xv6-riscv \u6709\u66f4\u4e3a\u8be6\u7ec6\u7684\u601d\u8003\u548c\u8ba8\u8bba\uff0c\u611f\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u4e00\u4e0b\u54e6\u3002 \u4e00\u4e9b\u53ef\u4ee5\u53c2\u8003\u7684\u535a\u5ba2 doraemonzzz Xiao Fan (\u6a0a\u6f47) Miigon's blog Zhou Fang Yichun's Blog \u89e3\u6790Ta PKUFlyingPig \u661f\u9065\u89c1","title":"MIT 6.S081: Operating System Engineering"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#mit-6s081-operating-system-engineering","text":"","title":"MIT 6.S081: Operating System Engineering"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u9ebb\u7701\u7406\u5de5\u5b66\u9662 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784 + \u624e\u5b9e\u7684 C \u8bed\u8a00\u529f\u5e95 + RISC-V \u6c47\u7f16\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aC, RISC-V \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u5927\u540d\u9f0e\u9f0e\u7684 PDOS \u5b9e\u9a8c\u5ba4\u5f00\u8bbe\u7684\u9762\u5411MIT\u672c\u79d1\u751f\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u3002\u5f00\u8bbe\u8fd9\u95e8\u8bfe\u7684\u6559\u6388\u4e4b\u4e00 \u2014\u2014 Robert Morris \u6559\u6388\u66fe\u662f\u4e00\u4f4d\u9876\u5c16\u9ed1\u5ba2\uff0c\u4e16\u754c\u4e0a\u7b2c\u4e00\u4e2a\u8815\u866b\u75c5\u6bd2 Morris \u5c31\u662f\u51fa\u81ea\u4ed6\u4e4b\u624b\u3002 \u8fd9\u95e8\u8bfe\u7684\u524d\u8eab\u662f MIT \u8457\u540d\u7684\u8bfe\u7a0b 6.828\uff0cMIT \u7684\u51e0\u4f4d\u6559\u6388\u4e3a\u4e86\u8fd9\u95e8\u8bfe\u66fe\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a\u57fa\u4e8e x86 \u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf JOS\uff0c\u88ab\u4f17\u591a\u540d\u6821\u4f5c\u4e3a\u81ea\u5df1\u7684\u64cd\u7edf\u8bfe\u7a0b\u5b9e\u9a8c\u3002\u4f46\u968f\u7740 RISC-V \u7684\u6a2a\u7a7a\u51fa\u4e16\uff0c\u8fd9\u51e0\u4f4d\u6559\u6388\u53c8\u57fa\u4e8e RISC-V \u5f00\u53d1\u4e86\u4e00\u4e2a\u65b0\u7684\u6559\u5b66\u7528\u64cd\u4f5c\u7cfb\u7edf xv6\uff0c\u5e76\u5f00\u8bbe\u4e86 MIT6.S081 \u8fd9\u95e8\u8bfe\u3002\u7531\u4e8e RISC-V \u8f7b\u4fbf\u6613\u5b66\u7684\u7279\u70b9\uff0c\u5b66\u751f\u4e0d\u9700\u8981\u50cf\u6b64\u524d JOS \u4e00\u6837\u7ea0\u7ed3\u4e8e\u4f17\u591a x86 \u201c\u7279\u6709\u7684\u201d\u4e3a\u4e86\u517c\u5bb9\u800c\u9057\u7559\u4e0b\u6765\u7684\u590d\u6742\u673a\u5236\uff0c\u800c\u53ef\u4ee5\u4e13\u6ce8\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u5c42\u9762\u7684\u5f00\u53d1\u3002 \u8fd9\u51e0\u4f4d\u6559\u6388\u8fd8\u4e13\u95e8\u5199\u4e86\u4e00\u672c \u6559\u7a0b \uff0c\u8be6\u7ec6\u8bb2\u89e3\u4e86 xv6 \u7684\u8bbe\u8ba1\u601d\u60f3\u548c\u5b9e\u73b0\u7ec6\u8282\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bb2\u6388\u4e5f\u5f88\u6709\u610f\u601d\uff0c\u8001\u5e08\u4f1a\u5e26\u7740\u5b66\u751f\u4f9d\u7167 xv6 \u7684\u6e90\u4ee3\u7801\u53bb\u7406\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u4f17\u591a\u673a\u5236\u548c\u8bbe\u8ba1\u7ec6\u8282\uff0c\u800c\u4e0d\u662f\u505c\u7559\u4e8e\u7406\u8bba\u77e5\u8bc6\u3002\u6bcf\u5468\u90fd\u4f1a\u6709\u4e00\u4e2a lab\uff0c\u8ba9\u4f60\u5728 xv6 \u4e0a\u589e\u52a0\u4e00\u4e9b\u65b0\u7684\u673a\u5236\u548c\u7279\u6027\uff0c\u975e\u5e38\u6ce8\u91cd\u5b66\u751f\u52a8\u624b\u80fd\u529b\u7684\u57f9\u517b\u3002\u6574\u4e2a\u5b66\u671f\u4e00\u5171\u6709 11 \u4e2a lab\uff0c\u8ba9\u4f60\u5168\u65b9\u4f4d\u5730\u6df1\u523b\u7406\u89e3\u64cd\u4f5c\u7cfb\u7edf\u7684\u6bcf\u4e2a\u90e8\u5206\uff0c\u975e\u5e38\u6709\u6210\u5c31\u611f\u3002\u800c\u4e14\u6240\u6709\u7684lab\u90fd\u6709\u7740\u975e\u5e38\u5b8c\u5584\u7684\u6d4b\u8bd5\u6846\u67b6\uff0c\u6709\u7684\u6d4b\u8bd5\u4ee3\u7801\u751a\u81f3\u4e0a\u5343\u884c\uff0c\u8ba9\u4eba\u4e0d\u5f97\u4e0d\u4f69\u670d MIT \u7684\u51e0\u4f4d\u6559\u6388\u4e3a\u4e86\u6559\u597d\u8fd9\u95e8\u8bfe\u6240\u4ed8\u51fa\u7684\u5fc3\u8840\u3002 \u8fd9\u95e8\u8bfe\u7684\u540e\u534a\u7a0b\u4f1a\u8bb2\u6388\u64cd\u4f5c\u7cfb\u7edf\u9886\u57df\u7684\u591a\u7bc7\u7ecf\u5178\u8bba\u6587\uff0c\u6d89\u53ca\u6587\u4ef6\u7cfb\u7edf\u3001\u7cfb\u7edf\u5b89\u5168\u3001\u7f51\u7edc\u3001\u865a\u62df\u5316\u7b49\u7b49\u591a\u4e2a\u4e3b\u9898\uff0c\u8ba9\u4f60\u6709\u673a\u4f1a\u63a5\u89e6\u5230\u5b66\u754c\u6700\u524d\u6cbf\u7684\u7814\u7a76\u65b9\u5411\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://pdos.csail.mit.edu/6.828/2021/schedule.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=L6YqHxYHa7A \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u89c6\u9891\u7ffb\u8bd1\u6587\u6863\uff1a https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/ \u8bfe\u7a0b\u6559\u6750\uff1a https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://pdos.csail.mit.edu/6.828/2021/schedule.html \uff0c11\u4e2alab\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#xv6","text":"xv6 \u64cd\u4f5c\u7cfb\u7edf\u7684\u6df1\u5165\u8bb2\u89e3 xv6 \u4e2d\u6587\u6587\u6863","title":"xv6 \u8865\u5145\u8d44\u6e90"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.S081-2020fall - GitHub \u4e2d\u3002 @ KuangjuX \u7f16\u5199\u4e86 MIT 6.S081 \u7684 lab \u7684 \u9898\u89e3 \uff0c\u91cc\u9762\u6709\u8be6\u7ec6\u7684\u89e3\u6cd5\u548c\u8865\u5145\u77e5\u8bc6\u3002\u53e6\u5916\uff0c@ KuangjuX \u8fd8\u4f7f\u7528 Rust \u8bed\u8a00\u91cd\u65b0\u5b9e\u73b0\u4e86 xv6-riscv \u64cd\u4f5c\u7cfb\u7edf\uff1a xv6-rust \uff0c\u91cc\u9762\u5bf9\u4e8e xv6-riscv \u6709\u66f4\u4e3a\u8be6\u7ec6\u7684\u601d\u8003\u548c\u8ba8\u8bba\uff0c\u611f\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u4e00\u4e0b\u54e6\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/#_4","text":"doraemonzzz Xiao Fan (\u6a0a\u6f47) Miigon's blog Zhou Fang Yichun's Blog \u89e3\u6790Ta PKUFlyingPig \u661f\u9065\u89c1","title":"\u4e00\u4e9b\u53ef\u4ee5\u53c2\u8003\u7684\u535a\u5ba2"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/","text":"NJU OS: Operating System Design and Implementation \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u5357\u4eac\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784 + \u624e\u5b9e\u7684 C \u8bed\u8a00\u529f\u5e95 \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bed\u8a00 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u4e4b\u524d\u4e00\u76f4\u542c\u8bf4\u5357\u5927\u7684\u848b\u708e\u5ca9\u8001\u5e08\u5f00\u8bbe\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u8bb2\u5f97\u5f88\u597d\uff0c\u4e45\u95fb\u4e0d\u5982\u4e00\u89c1\uff0c\u8fd9\u5b66\u671f\u6709\u5e78\u5728 B \u7ad9\u89c2\u770b\u4e86\u848b\u8001\u5e08\u7684\u8bfe\u7a0b\u89c6\u9891\uff0c\u786e\u5b9e\u6536\u83b7\u826f\u591a\u3002\u848b\u8001\u5e08\u4f5c\u4e3a\u975e\u5e38\u5e74\u8f7b\u7684\u8001\u5e08\uff0c\u6709\u7740\u4e30\u5bcc\u7684\u4e00\u7ebf\u4ee3\u7801\u7684\u7ecf\u9a8c\uff0c\u56e0\u6b64\u8bfe\u7a0b\u8bb2\u6388\u6709\u7740\u6ee1\u6ee1\u7684 Hacker \u98ce\u683c\uff0c\u8bfe\u4e0a\u7ecf\u5e38\u201c\u4e00\u8a00\u4e0d\u5408\u201d\u5c31\u5728\u547d\u4ee4\u884c\u91cc\u5f00\u59cb\u5199\u4ee3\u7801\uff0c\u5f88\u591a\u91cd\u8981\u77e5\u8bc6\u70b9\u4e5f\u90fd\u914d\u6709\u751f\u52a8\u76f4\u767d\u7684\u4ee3\u7801\u793a\u4f8b\u3002\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\u7684\u5c31\u662f\u8001\u5e08\u4e3a\u4e86\u8ba9\u5b66\u751f\u66f4\u597d\u5730\u7406\u89e3\u52a8\u6001\u94fe\u63a5\u5e93\u7684\u8bbe\u8ba1\u601d\u60f3\uff0c\u751a\u81f3\u4e13\u95e8\u5b9e\u73b0\u4e86\u4e00\u4e2a\u8ff7\u4f60\u7684\u53ef\u6267\u884c\u6587\u4ef6\u4e0e\u4e00\u7cfb\u5217\u7684\u4e8c\u8fdb\u5236\u5de5\u5177\uff0c\u8ba9\u5f88\u591a\u56f0\u6270\u6211\u591a\u5e74\u7684\u95ee\u9898\u90fd\u5f97\u5230\u4e86\u89e3\u7b54\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bb2\u6388\u601d\u8def\u4e5f\u975e\u5e38\u6709\u8da3\uff0c\u848b\u8001\u5e08\u5148\u4ece\u201c\u7a0b\u5e8f\u5c31\u662f\u72b6\u6001\u673a\u201d\u8fd9\u4e00\u89c6\u89d2\u5165\u624b\uff0c\u4e3a\u201c\u4e07\u6076\u4e4b\u6e90\u201d\u5e76\u53d1\u7a0b\u5e8f\u5efa\u7acb\u4e86\u72b6\u6001\u673a\u7684\u8f6c\u5316\u6a21\u578b\uff0c\u5e76\u5728\u6b64\u57fa\u7840\u4e0a\u8bb2\u6388\u4e86\u5e76\u53d1\u63a7\u5236\u7684\u5e38\u89c1\u624b\u6bb5\u4ee5\u53ca\u5e76\u53d1bug\u7684\u5e94\u5bf9\u65b9\u6cd5\u3002\u63a5\u7740\u848b\u8001\u5e08\u5c06\u64cd\u4f5c\u7cfb\u7edf\u770b\u4f5c\u4e00\u7cfb\u5217\u5bf9\u8c61\uff08\u8fdb\u7a0b/\u7ebf\u7a0b\u3001\u5730\u5740\u7a7a\u95f4\u3001\u6587\u4ef6\u3001\u8bbe\u5907\u7b49\u7b49\uff09\u4ee5\u53ca\u64cd\u4f5c\u5b83\u4eec\u7684 API \uff08\u7cfb\u7edf\u8c03\u7528\uff09\u5e76\u7ed3\u5408\u4e30\u5bcc\u7684\u5b9e\u9645\u4f8b\u5b50\u4ecb\u7ecd\u4e86\u64cd\u4f5c\u7cfb\u7edf\u662f\u5982\u4f55\u5229\u7528\u8fd9\u7cfb\u5217\u5bf9\u8c61\u865a\u62df\u5316\u786c\u4ef6\u8d44\u6e90\u5e76\u7ed9\u5e94\u7528\u8f6f\u4ef6\u63d0\u4f9b\u5404\u7c7b\u670d\u52a1\u7684\u3002\u6700\u540e\u7684\u53ef\u6301\u4e45\u5316\u90e8\u5206\uff0c\u848b\u8001\u5e08\u4ece 1-bit \u7684\u5b58\u50a8\u4ecb\u8d28\u8bb2\u8d77\uff0c\u4e00\u6b65\u6b65\u6784\u5efa\u8d77\u5404\u7c7b\u5b58\u50a8\u8bbe\u5907\uff0c\u5e76\u901a\u8fc7\u8bbe\u5907\u9a71\u52a8\u62bd\u8c61\u51fa\u4e00\u7ec4\u63a5\u53e3\u6765\u65b9\u4fbf\u5730\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u6587\u4ef6\u7cfb\u7edf\u3002\u6211\u4e4b\u524d\u867d\u7136\u4e0a\u8fc7\u8bb8\u591a\u95e8\u64cd\u4f5c\u7cfb\u7edf\u7684\u8bfe\u7a0b\uff0c\u4f46\u8fd9\u79cd\u8bb2\u6cd5\u786e\u5b9e\u72ec\u6b64\u4e00\u5bb6\uff0c\u8ba9\u6211\u6536\u83b7\u4e86\u5f88\u591a\u72ec\u5230\u7684\u89c6\u89d2\u6765\u770b\u5f85\u7cfb\u7edf\u8f6f\u4ef6\u3002 \u8fd9\u95e8\u8bfe\u9664\u4e86\u5728\u7406\u8bba\u77e5\u8bc6\u7684\u8bb2\u6388\u90e8\u5206\u5f88\u6709\u65b0\u610f\u5916\uff0c\u6ce8\u91cd\u5b9e\u8df5\u4e5f\u662f\u848b\u8001\u5e08\u7684\u4e00\u5927\u7279\u70b9\u3002\u5728\u8bfe\u5802\u548c\u7f16\u7a0b\u4f5c\u4e1a\u91cc\uff0c\u848b\u8001\u5e08\u4f1a\u6709\u610f\u65e0\u610f\u5730\u57f9\u517b\u5927\u5bb6\u9605\u8bfb\u6e90\u7801\u3001\u67e5\u9605\u624b\u518c\u7684\u80fd\u529b\uff0c\u8fd9\u4e5f\u662f\u8ba1\u7b97\u673a\u4ece\u4e1a\u8005\u5fc5\u5907\u7684\u6280\u80fd\u3002\u5728\u5b8c\u6210\u7b2c\u4e94\u4e2a MiniLab \u671f\u95f4\uff0c\u6211\u7b2c\u4e00\u6b21\u4ed4\u4ed4\u7ec6\u7ec6\u9605\u8bfb\u4e86\u5fae\u8f6f\u7684 FAT \u6587\u4ef6\u7cfb\u7edf\u624b\u518c\uff0c\u6536\u83b7\u4e86\u4e00\u6b21\u975e\u5e38\u6709\u4ef7\u503c\u7684\u7ecf\u5386\u3002 \u7f16\u7a0b\u4f5c\u4e1a\u5171\u7531 5\u4e2a MiniLab \u548c 4\u4e2a OSLab \u7ec4\u6210\u3002\u7f8e\u4e2d\u4e0d\u8db3\u7684\u662f\u4f5c\u4e1a\u7684\u8bc4\u6d4b\u673a\u662f\u4e0d\u5bf9\u6821\u5916\u5f00\u653e\u7684\uff0c\u4e0d\u8fc7\u5728\u90ae\u4ef6\u201c\u9a9a\u6270\u201d\u540e\u848b\u8001\u5e08\u8fd8\u662f\u975e\u5e38\u6177\u6168\u5730\u8ba9\u6211\u6210\u529f\u8e6d\u8bfe\u3002\u7531\u4e8e\u8bfe\u4f59\u65f6\u95f4\u6709\u9650\u6211\u53ea\u5b8c\u6210\u4e86 5\u4e2a MiniLab\uff0c\u603b\u4f53\u4f53\u9a8c\u975e\u5e38\u68d2\u3002\u5c24\u5176\u662f\u7b2c\u4e8c\u4e2a\u534f\u7a0b\u5b9e\u9a8c\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\uff0c\u5728\u4e0d\u5230\u767e\u884c\u7684\u5c0f\u5b9e\u9a8c\u91cc\u6df1\u523b\u4f53\u9a8c\u4e86\u4e0a\u4e0b\u6587\u5207\u6362\u7684\u7f8e\u5999\u4e0e\u201c\u53ef\u6015\u201d\u3002\u53e6\u5916\u5176\u5b9e\u51e0\u4e2a MiniLab \u90fd\u80fd\u975e\u5e38\u65b9\u4fbf\u5730\u8fdb\u884c\u672c\u5730\u6d4b\u8bd5\uff0c\u5c31\u7b97\u6ca1\u6709\u8bc4\u6d4b\u673a\u4e5f\u4e0d\u5f71\u54cd\u81ea\u5b66\uff0c\u56e0\u6b64\u5e0c\u671b\u5927\u5bb6\u4e0d\u8981\u805a\u4f17\u201c\u9a9a\u6270\u201d\u8001\u5e08\u4ee5\u56fe\u8e6d\u8bfe\u3002 \u6700\u540e\u518d\u6b21\u611f\u8c22\u848b\u8001\u5e08\u8bbe\u8ba1\u5e76\u5f00\u653e\u4e86\u8fd9\u6837\u4e00\u95e8\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\uff0c\u8fd9\u4e5f\u662f\u672c\u4e66\u6536\u5f55\u7684\u7b2c\u4e00\u95e8\u56fd\u5185\u9ad8\u6821\u81ea\u4e3b\u5f00\u8bbe\u7684\u8ba1\u7b97\u673a\u8bfe\u7a0b\u3002\u6b63\u662f\u6709\u848b\u8001\u5e08\u8fd9\u4e9b\u5e74\u8f7b\u7684\u65b0\u751f\u4ee3\u6559\u5e08\u5728\u7e41\u91cd\u7684 Tenure \u8003\u6838\u4e4b\u4f59\u7684\u7528\u7231\u53d1\u7535\uff0c\u624d\u8ba9\u65e0\u6570\u5b66\u5b50\u6536\u83b7\u4e86\u96be\u5fd8\u7684\u672c\u79d1\u751f\u6daf\u3002\u4e5f\u671f\u5f85\u56fd\u5185\u80fd\u6709\u66f4\u591a\u8fd9\u6837\u7684\u826f\u5fc3\u597d\u8bfe\uff0c\u6211\u4e5f\u4f1a\u7b2c\u4e00\u65f6\u95f4\u6536\u5f55\u8fdb\u672c\u4e66\u4e2d\u8ba9\u66f4\u591a\u4eba\u53d7\u76ca\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://jyywiki.cn/OS/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://space.bilibili.com/202224425/channel/collectiondetail?sid=192498 \u8bfe\u7a0b\u6559\u6750\uff1a http://pages.cs.wisc.edu/~remzi/OSTEP/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://jyywiki.cn/OS/2022/ \u8d44\u6e90\u6c47\u603b \u6309\u848b\u8001\u5e08\u7684\u8981\u6c42\uff0c\u6211\u7684\u4f5c\u4e1a\u5b9e\u73b0\u6ca1\u6709\u5f00\u6e90\u3002","title":"NJU OS: Operating System Design and Implementation"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/#nju-os-operating-system-design-and-implementation","text":"","title":"NJU OS: Operating System Design and Implementation"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u5357\u4eac\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u4f53\u7cfb\u7ed3\u6784 + \u624e\u5b9e\u7684 C \u8bed\u8a00\u529f\u5e95 \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bed\u8a00 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u4e4b\u524d\u4e00\u76f4\u542c\u8bf4\u5357\u5927\u7684\u848b\u708e\u5ca9\u8001\u5e08\u5f00\u8bbe\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u8bb2\u5f97\u5f88\u597d\uff0c\u4e45\u95fb\u4e0d\u5982\u4e00\u89c1\uff0c\u8fd9\u5b66\u671f\u6709\u5e78\u5728 B \u7ad9\u89c2\u770b\u4e86\u848b\u8001\u5e08\u7684\u8bfe\u7a0b\u89c6\u9891\uff0c\u786e\u5b9e\u6536\u83b7\u826f\u591a\u3002\u848b\u8001\u5e08\u4f5c\u4e3a\u975e\u5e38\u5e74\u8f7b\u7684\u8001\u5e08\uff0c\u6709\u7740\u4e30\u5bcc\u7684\u4e00\u7ebf\u4ee3\u7801\u7684\u7ecf\u9a8c\uff0c\u56e0\u6b64\u8bfe\u7a0b\u8bb2\u6388\u6709\u7740\u6ee1\u6ee1\u7684 Hacker \u98ce\u683c\uff0c\u8bfe\u4e0a\u7ecf\u5e38\u201c\u4e00\u8a00\u4e0d\u5408\u201d\u5c31\u5728\u547d\u4ee4\u884c\u91cc\u5f00\u59cb\u5199\u4ee3\u7801\uff0c\u5f88\u591a\u91cd\u8981\u77e5\u8bc6\u70b9\u4e5f\u90fd\u914d\u6709\u751f\u52a8\u76f4\u767d\u7684\u4ee3\u7801\u793a\u4f8b\u3002\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\u7684\u5c31\u662f\u8001\u5e08\u4e3a\u4e86\u8ba9\u5b66\u751f\u66f4\u597d\u5730\u7406\u89e3\u52a8\u6001\u94fe\u63a5\u5e93\u7684\u8bbe\u8ba1\u601d\u60f3\uff0c\u751a\u81f3\u4e13\u95e8\u5b9e\u73b0\u4e86\u4e00\u4e2a\u8ff7\u4f60\u7684\u53ef\u6267\u884c\u6587\u4ef6\u4e0e\u4e00\u7cfb\u5217\u7684\u4e8c\u8fdb\u5236\u5de5\u5177\uff0c\u8ba9\u5f88\u591a\u56f0\u6270\u6211\u591a\u5e74\u7684\u95ee\u9898\u90fd\u5f97\u5230\u4e86\u89e3\u7b54\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bb2\u6388\u601d\u8def\u4e5f\u975e\u5e38\u6709\u8da3\uff0c\u848b\u8001\u5e08\u5148\u4ece\u201c\u7a0b\u5e8f\u5c31\u662f\u72b6\u6001\u673a\u201d\u8fd9\u4e00\u89c6\u89d2\u5165\u624b\uff0c\u4e3a\u201c\u4e07\u6076\u4e4b\u6e90\u201d\u5e76\u53d1\u7a0b\u5e8f\u5efa\u7acb\u4e86\u72b6\u6001\u673a\u7684\u8f6c\u5316\u6a21\u578b\uff0c\u5e76\u5728\u6b64\u57fa\u7840\u4e0a\u8bb2\u6388\u4e86\u5e76\u53d1\u63a7\u5236\u7684\u5e38\u89c1\u624b\u6bb5\u4ee5\u53ca\u5e76\u53d1bug\u7684\u5e94\u5bf9\u65b9\u6cd5\u3002\u63a5\u7740\u848b\u8001\u5e08\u5c06\u64cd\u4f5c\u7cfb\u7edf\u770b\u4f5c\u4e00\u7cfb\u5217\u5bf9\u8c61\uff08\u8fdb\u7a0b/\u7ebf\u7a0b\u3001\u5730\u5740\u7a7a\u95f4\u3001\u6587\u4ef6\u3001\u8bbe\u5907\u7b49\u7b49\uff09\u4ee5\u53ca\u64cd\u4f5c\u5b83\u4eec\u7684 API \uff08\u7cfb\u7edf\u8c03\u7528\uff09\u5e76\u7ed3\u5408\u4e30\u5bcc\u7684\u5b9e\u9645\u4f8b\u5b50\u4ecb\u7ecd\u4e86\u64cd\u4f5c\u7cfb\u7edf\u662f\u5982\u4f55\u5229\u7528\u8fd9\u7cfb\u5217\u5bf9\u8c61\u865a\u62df\u5316\u786c\u4ef6\u8d44\u6e90\u5e76\u7ed9\u5e94\u7528\u8f6f\u4ef6\u63d0\u4f9b\u5404\u7c7b\u670d\u52a1\u7684\u3002\u6700\u540e\u7684\u53ef\u6301\u4e45\u5316\u90e8\u5206\uff0c\u848b\u8001\u5e08\u4ece 1-bit \u7684\u5b58\u50a8\u4ecb\u8d28\u8bb2\u8d77\uff0c\u4e00\u6b65\u6b65\u6784\u5efa\u8d77\u5404\u7c7b\u5b58\u50a8\u8bbe\u5907\uff0c\u5e76\u901a\u8fc7\u8bbe\u5907\u9a71\u52a8\u62bd\u8c61\u51fa\u4e00\u7ec4\u63a5\u53e3\u6765\u65b9\u4fbf\u5730\u8bbe\u8ba1\u4e0e\u5b9e\u73b0\u6587\u4ef6\u7cfb\u7edf\u3002\u6211\u4e4b\u524d\u867d\u7136\u4e0a\u8fc7\u8bb8\u591a\u95e8\u64cd\u4f5c\u7cfb\u7edf\u7684\u8bfe\u7a0b\uff0c\u4f46\u8fd9\u79cd\u8bb2\u6cd5\u786e\u5b9e\u72ec\u6b64\u4e00\u5bb6\uff0c\u8ba9\u6211\u6536\u83b7\u4e86\u5f88\u591a\u72ec\u5230\u7684\u89c6\u89d2\u6765\u770b\u5f85\u7cfb\u7edf\u8f6f\u4ef6\u3002 \u8fd9\u95e8\u8bfe\u9664\u4e86\u5728\u7406\u8bba\u77e5\u8bc6\u7684\u8bb2\u6388\u90e8\u5206\u5f88\u6709\u65b0\u610f\u5916\uff0c\u6ce8\u91cd\u5b9e\u8df5\u4e5f\u662f\u848b\u8001\u5e08\u7684\u4e00\u5927\u7279\u70b9\u3002\u5728\u8bfe\u5802\u548c\u7f16\u7a0b\u4f5c\u4e1a\u91cc\uff0c\u848b\u8001\u5e08\u4f1a\u6709\u610f\u65e0\u610f\u5730\u57f9\u517b\u5927\u5bb6\u9605\u8bfb\u6e90\u7801\u3001\u67e5\u9605\u624b\u518c\u7684\u80fd\u529b\uff0c\u8fd9\u4e5f\u662f\u8ba1\u7b97\u673a\u4ece\u4e1a\u8005\u5fc5\u5907\u7684\u6280\u80fd\u3002\u5728\u5b8c\u6210\u7b2c\u4e94\u4e2a MiniLab \u671f\u95f4\uff0c\u6211\u7b2c\u4e00\u6b21\u4ed4\u4ed4\u7ec6\u7ec6\u9605\u8bfb\u4e86\u5fae\u8f6f\u7684 FAT \u6587\u4ef6\u7cfb\u7edf\u624b\u518c\uff0c\u6536\u83b7\u4e86\u4e00\u6b21\u975e\u5e38\u6709\u4ef7\u503c\u7684\u7ecf\u5386\u3002 \u7f16\u7a0b\u4f5c\u4e1a\u5171\u7531 5\u4e2a MiniLab \u548c 4\u4e2a OSLab \u7ec4\u6210\u3002\u7f8e\u4e2d\u4e0d\u8db3\u7684\u662f\u4f5c\u4e1a\u7684\u8bc4\u6d4b\u673a\u662f\u4e0d\u5bf9\u6821\u5916\u5f00\u653e\u7684\uff0c\u4e0d\u8fc7\u5728\u90ae\u4ef6\u201c\u9a9a\u6270\u201d\u540e\u848b\u8001\u5e08\u8fd8\u662f\u975e\u5e38\u6177\u6168\u5730\u8ba9\u6211\u6210\u529f\u8e6d\u8bfe\u3002\u7531\u4e8e\u8bfe\u4f59\u65f6\u95f4\u6709\u9650\u6211\u53ea\u5b8c\u6210\u4e86 5\u4e2a MiniLab\uff0c\u603b\u4f53\u4f53\u9a8c\u975e\u5e38\u68d2\u3002\u5c24\u5176\u662f\u7b2c\u4e8c\u4e2a\u534f\u7a0b\u5b9e\u9a8c\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\uff0c\u5728\u4e0d\u5230\u767e\u884c\u7684\u5c0f\u5b9e\u9a8c\u91cc\u6df1\u523b\u4f53\u9a8c\u4e86\u4e0a\u4e0b\u6587\u5207\u6362\u7684\u7f8e\u5999\u4e0e\u201c\u53ef\u6015\u201d\u3002\u53e6\u5916\u5176\u5b9e\u51e0\u4e2a MiniLab \u90fd\u80fd\u975e\u5e38\u65b9\u4fbf\u5730\u8fdb\u884c\u672c\u5730\u6d4b\u8bd5\uff0c\u5c31\u7b97\u6ca1\u6709\u8bc4\u6d4b\u673a\u4e5f\u4e0d\u5f71\u54cd\u81ea\u5b66\uff0c\u56e0\u6b64\u5e0c\u671b\u5927\u5bb6\u4e0d\u8981\u805a\u4f17\u201c\u9a9a\u6270\u201d\u8001\u5e08\u4ee5\u56fe\u8e6d\u8bfe\u3002 \u6700\u540e\u518d\u6b21\u611f\u8c22\u848b\u8001\u5e08\u8bbe\u8ba1\u5e76\u5f00\u653e\u4e86\u8fd9\u6837\u4e00\u95e8\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\uff0c\u8fd9\u4e5f\u662f\u672c\u4e66\u6536\u5f55\u7684\u7b2c\u4e00\u95e8\u56fd\u5185\u9ad8\u6821\u81ea\u4e3b\u5f00\u8bbe\u7684\u8ba1\u7b97\u673a\u8bfe\u7a0b\u3002\u6b63\u662f\u6709\u848b\u8001\u5e08\u8fd9\u4e9b\u5e74\u8f7b\u7684\u65b0\u751f\u4ee3\u6559\u5e08\u5728\u7e41\u91cd\u7684 Tenure \u8003\u6838\u4e4b\u4f59\u7684\u7528\u7231\u53d1\u7535\uff0c\u624d\u8ba9\u65e0\u6570\u5b66\u5b50\u6536\u83b7\u4e86\u96be\u5fd8\u7684\u672c\u79d1\u751f\u6daf\u3002\u4e5f\u671f\u5f85\u56fd\u5185\u80fd\u6709\u66f4\u591a\u8fd9\u6837\u7684\u826f\u5fc3\u597d\u8bfe\uff0c\u6211\u4e5f\u4f1a\u7b2c\u4e00\u65f6\u95f4\u6536\u5f55\u8fdb\u672c\u4e66\u4e2d\u8ba9\u66f4\u591a\u4eba\u53d7\u76ca\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://jyywiki.cn/OS/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://space.bilibili.com/202224425/channel/collectiondetail?sid=192498 \u8bfe\u7a0b\u6559\u6750\uff1a http://pages.cs.wisc.edu/~remzi/OSTEP/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://jyywiki.cn/OS/2022/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/#_3","text":"\u6309\u848b\u8001\u5e08\u7684\u8981\u6c42\uff0c\u6211\u7684\u4f5c\u4e1a\u5b9e\u73b0\u6ca1\u6709\u5f00\u6e90\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/","text":"MIT18.06: Linear Algebra \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u82f1\u6587 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 \u6570\u5b66\u5927\u725b Gilbert Strang \u8001\u5148\u751f\u5e74\u903e\u53e4\u7a00\u4ecd\u575a\u6301\u6388\u8bfe\uff0c\u5176\u7ecf\u5178\u6559\u6750 Introduction to Linear Algebra \u5df2\u88ab\u6e05\u534e\u91c7\u7528\u4e3a\u5b98\u65b9\u6559\u6750\u3002\u6211\u5f53\u65f6\u770b\u5b8c\u76d7\u7248 PDF \u4e4b\u540e\u6df1\u611f\u6127\u759a\uff0c\u542b\u6cea\u82b1\u4e86\u4e24\u767e\u591a\u4e70\u4e86\u4e00\u672c\u82f1\u6587\u6b63\u7248\u6536\u85cf\u3002\u4e0b\u9762\u9644\u4e0a\u6b64\u4e66\u5c01\u9762\uff0c\u5982\u679c\u4f60\u80fd\u5b8c\u5168\u7406\u89e3\u5c01\u9762\u56fe\u7684\u6570\u5b66\u542b\u4e49\uff0c\u90a3\u4f60\u5bf9\u7ebf\u6027\u4ee3\u6570\u7684\u7406\u89e3\u4e00\u5b9a\u4f1a\u8fbe\u5230\u65b0\u7684\u9ad8\u5ea6\u3002 \u914d\u5408\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \u7684 \u7ebf\u6027\u4ee3\u6570\u7684\u672c\u8d28 \u7cfb\u5217\u89c6\u9891\u98df\u7528\u66f4\u4f73\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/syllabus/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1aIntroduction to Linear Algebra. Gilbert Strang \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"MIT18.06: Linear Algebra"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/#mit1806-linear-algebra","text":"","title":"MIT18.06: Linear Algebra"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u82f1\u6587 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 \u6570\u5b66\u5927\u725b Gilbert Strang \u8001\u5148\u751f\u5e74\u903e\u53e4\u7a00\u4ecd\u575a\u6301\u6388\u8bfe\uff0c\u5176\u7ecf\u5178\u6559\u6750 Introduction to Linear Algebra \u5df2\u88ab\u6e05\u534e\u91c7\u7528\u4e3a\u5b98\u65b9\u6559\u6750\u3002\u6211\u5f53\u65f6\u770b\u5b8c\u76d7\u7248 PDF \u4e4b\u540e\u6df1\u611f\u6127\u759a\uff0c\u542b\u6cea\u82b1\u4e86\u4e24\u767e\u591a\u4e70\u4e86\u4e00\u672c\u82f1\u6587\u6b63\u7248\u6536\u85cf\u3002\u4e0b\u9762\u9644\u4e0a\u6b64\u4e66\u5c01\u9762\uff0c\u5982\u679c\u4f60\u80fd\u5b8c\u5168\u7406\u89e3\u5c01\u9762\u56fe\u7684\u6570\u5b66\u542b\u4e49\uff0c\u90a3\u4f60\u5bf9\u7ebf\u6027\u4ee3\u6570\u7684\u7406\u89e3\u4e00\u5b9a\u4f1a\u8fbe\u5230\u65b0\u7684\u9ad8\u5ea6\u3002 \u914d\u5408\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \u7684 \u7ebf\u6027\u4ee3\u6570\u7684\u672c\u8d28 \u7cfb\u5217\u89c6\u9891\u98df\u7528\u66f4\u4f73\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/syllabus/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1aIntroduction to Linear Algebra. Gilbert Strang \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/","text":"MIT Calculus Course \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u82f1\u8bed \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 MIT \u7684\u5fae\u79ef\u5206\u8bfe\u7531 MIT18.01: Single variable calculus \u548c MIT18.02: Multi variable calculus \u4e24\u95e8\u8bfe\u7ec4\u6210\u3002\u5bf9\u81ea\u5df1\u6570\u5b66\u57fa\u7840\u6bd4\u8f83\u81ea\u4fe1\u7684\u540c\u5b66\u53ef\u4ee5\u53ea\u770b\u8bfe\u7a0b notes\uff0c\u5199\u5f97\u975e\u5e38\u6d45\u663e\u751f\u52a8\u5e76\u4e14\u6293\u4f4f\u672c\u8d28\uff0c\u8ba9\u4f60\u4e0d\u518d\u75b2\u4e8e\u505a\u9898\u800c\u662f\u80fd\u591f\u771f\u6b63\u7aa5\u89c1\u5fae\u79ef\u5206\u7684\u672c\u8d28\u9b45\u529b\u3002 \u914d\u5408\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \u7684 \u5fae\u79ef\u5206\u7684\u672c\u8d28 \u7cfb\u5217\u89c6\u9891\u98df\u7528\u66f4\u4f73\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a 18.01 , 18.02 \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e66\u9762\u4f5c\u4e1a\u53ca\u7b54\u6848\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"MIT18.01/18.02: Calculus"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/#mit-calculus-course","text":"","title":"MIT Calculus Course"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u82f1\u8bed \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a\u56e0\u4eba\u800c\u5f02 MIT \u7684\u5fae\u79ef\u5206\u8bfe\u7531 MIT18.01: Single variable calculus \u548c MIT18.02: Multi variable calculus \u4e24\u95e8\u8bfe\u7ec4\u6210\u3002\u5bf9\u81ea\u5df1\u6570\u5b66\u57fa\u7840\u6bd4\u8f83\u81ea\u4fe1\u7684\u540c\u5b66\u53ef\u4ee5\u53ea\u770b\u8bfe\u7a0b notes\uff0c\u5199\u5f97\u975e\u5e38\u6d45\u663e\u751f\u52a8\u5e76\u4e14\u6293\u4f4f\u672c\u8d28\uff0c\u8ba9\u4f60\u4e0d\u518d\u75b2\u4e8e\u505a\u9898\u800c\u662f\u80fd\u591f\u771f\u6b63\u7aa5\u89c1\u5fae\u79ef\u5206\u7684\u672c\u8d28\u9b45\u529b\u3002 \u914d\u5408\u6cb9\u7ba1\u6570\u5b66\u7f51\u7ea2 3Blue1Brown \u7684 \u5fae\u79ef\u5206\u7684\u672c\u8d28 \u7cfb\u5217\u89c6\u9891\u98df\u7528\u66f4\u4f73\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a 18.01 , 18.02 \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e66\u9762\u4f5c\u4e1a\u53ca\u7b54\u6848\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/","text":"MIT6.050J: Information theory and Entropy \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 MIT \u9762\u5411\u5927\u4e00\u65b0\u751f\u7684\u4fe1\u606f\u8bba\u5165\u95e8\u8bfe\u7a0b\uff0cPenfield \u6559\u6388\u4e13\u95e8\u4e3a\u8fd9\u95e8\u8bfe\u5199\u4e86\u4e00\u672c \u6559\u6750 \u4f5c\u4e3a\u8bfe\u7a0b notes\uff0c\u5185\u5bb9\u6df1\u5165\u6d45\u51fa\uff0c\u751f\u52a8\u6709\u8da3\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/index.htm \u8bfe\u7a0b\u6559\u6750\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/syllabus/MIT6_050JS08_textbook.pdf \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u5305\u542b\u4e66\u9762\u4f5c\u4e1a\u4e0e Matlab \u7f16\u7a0b\u4f5c\u4e1a\u3002","title":"MIT6.050J: Information theory and Entropy"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/#mit6050j-information-theory-and-entropy","text":"","title":"MIT6.050J: Information theory and Entropy"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 MIT \u9762\u5411\u5927\u4e00\u65b0\u751f\u7684\u4fe1\u606f\u8bba\u5165\u95e8\u8bfe\u7a0b\uff0cPenfield \u6559\u6388\u4e13\u95e8\u4e3a\u8fd9\u95e8\u8bfe\u5199\u4e86\u4e00\u672c \u6559\u6750 \u4f5c\u4e3a\u8bfe\u7a0b notes\uff0c\u5185\u5bb9\u6df1\u5165\u6d45\u51fa\uff0c\u751f\u52a8\u6709\u8da3\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/index.htm \u8bfe\u7a0b\u6559\u6750\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-050j-information-and-entropy-spring-2008/syllabus/MIT6_050JS08_textbook.pdf \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u5305\u542b\u4e66\u9762\u4f5c\u4e1a\u4e0e Matlab \u7f16\u7a0b\u4f5c\u4e1a\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/","text":"MIT 6.042J: Mathematics for Computer Science \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra \u7f16\u7a0b\u8bed\u8a00\uff1aPython preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 MIT \u7684\u79bb\u6563\u6570\u5b66\u4ee5\u53ca\u6982\u7387\u7efc\u5408\u8bfe\u7a0b\uff0c\u5bfc\u5e08\u662f\u5927\u540d\u9f0e\u9f0e\u7684 Tom Leighton ( Akamai \u7684\u8054\u5408\u521b\u59cb\u4eba\u4e4b\u4e00)\u3002\u5b66\u5b8c\u4e4b\u540e\u5bf9\u4e8e\u540e\u7eed\u7684\u7b97\u6cd5\u5b66\u4e60\u5927\u6709\u88e8\u76ca\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1L741147VX \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/assignments/","title":"MIT 6.042J: Mathematics for Computer Science"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/#mit-6042j-mathematics-for-computer-science","text":"","title":"MIT 6.042J: Mathematics for Computer Science"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra \u7f16\u7a0b\u8bed\u8a00\uff1aPython preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 MIT \u7684\u79bb\u6563\u6570\u5b66\u4ee5\u53ca\u6982\u7387\u7efc\u5408\u8bfe\u7a0b\uff0c\u5bfc\u5e08\u662f\u5927\u540d\u9f0e\u9f0e\u7684 Tom Leighton ( Akamai \u7684\u8054\u5408\u521b\u59cb\u4eba\u4e4b\u4e00)\u3002\u5b66\u5b8c\u4e4b\u540e\u5bf9\u4e8e\u540e\u7eed\u7684\u7b97\u6cd5\u5b66\u4e60\u5927\u6709\u88e8\u76ca\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1L741147VX \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/assignments/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/","text":"UCB CS126 : Probability theory \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS70\u3001\u5fae\u79ef\u5206\u3001\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u6982\u7387\u8bba\u8fdb\u9636\u8bfe\u7a0b\uff0c\u6d89\u53ca\u5230\u7edf\u8ba1\u5b66\u3001\u968f\u673a\u8fc7\u7a0b\u7b49\u7406\u8bba\u76f8\u5bf9\u6df1\u5165\u7684\u5185\u5bb9\uff0c\u9700\u8981\u76f8\u5f53\u7684\u6570\u5b66\u57fa\u7840\uff0c\u6211\u5728\u4e0a\u8fd9\u95e8\u8bfe\u7684\u65f6\u5019\u4e5f\u611f\u5230\u6709\u4e9b\u5403\u529b\uff0c\u4e0d\u8fc7\u575a\u6301\u4e0b\u6765\u4e00\u5b9a\u4f1a\u8ba9\u4f60\u5bf9\u6982\u7387\u8bba\u7684\u638c\u63e1\u8fbe\u5230\u4e00\u4e2a\u65b0\u7684\u9ad8\u5ea6\u3002 \u540c\u65f6\u8fd9\u95e8\u8bfe\u975e\u5e38\u5f3a\u8c03\u7406\u8bba\u4e0e\u5b9e\u8df5\u7684\u7ed3\u5408\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u8005 Jean Walrand \u6559\u6388\u4e13\u95e8\u5199\u4e86\u4e00\u672c\u914d\u5957\u7684\u6559\u6750 Probability in Electrical Engineering and Computer Science \uff0c\u4e66\u4e2d\u6bcf\u4e2a\u7ae0\u8282\u90fd\u4f1a\u4ee5\u4e00\u4e2a\u5177\u4f53\u7684\u7b97\u6cd5\u5b9e\u8df5\u4f5c\u4e3a\u4f8b\u5b50\u6765\u5c55\u793a\u7406\u8bba\u5728\u5b9e\u9645\u5f53\u4e2d\u7684\u8fd0\u7528\uff0c\u4f8b\u5982 PageRank, Route Planing, Speech Recognition \u7b49\u7b49\uff0c\u5e76\u4e14\u5168\u4e66\u5f00\u6e90\uff0c\u53ef\u4ee5\u514d\u8d39\u4e0b\u8f7d PDF \u6216\u8005 Epub \u7248\u3002 \u8fd9\u8fd8\u4e0d\u7b97\u5b8c\uff0cJean Walrand \u8fd8\u4e3a\u6574\u672c\u4e66\u91cc\u7684\u4f8b\u5b50\u8bbe\u8ba1\u4e86\u914d\u5957\u7684 Python \u5b9e\u73b0\uff0c\u4ee5 Jupyter Notebook \u7684\u5f62\u5f0f\u5728\u7ebf\u53d1\u5e03\uff0c\u8bfb\u8005\u53ef\u4ee5\u5728\u7ebf\u4fee\u6539\u3001\u8c03\u8bd5\u548c\u8fd0\u884c\u3002 \u4e0e\u6b64\u540c\u65f6\uff0c\u8fd9\u95e8\u8bfe\u9664\u4e86\u7406\u8bba\u4f5c\u4e1a\u4e4b\u5916\uff0c\u8fd8\u6709 9 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u4f1a\u8ba9\u4f60\u7528\u6982\u7387\u8bba\u7684\u77e5\u8bc6\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~ee126/fa20/content.html \u8bfe\u7a0b\u6559\u6750\uff1a PDF , Epub , Jupyter Notebook \u8bfe\u7a0b\u4f5c\u4e1a\uff1a14 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 9 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/EECS126 - GitHub \u4e2d\u3002","title":"UCB CS126: probability theory"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/#ucb-cs126-probability-theory","text":"","title":"UCB CS126 : Probability theory"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS70\u3001\u5fae\u79ef\u5206\u3001\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u6982\u7387\u8bba\u8fdb\u9636\u8bfe\u7a0b\uff0c\u6d89\u53ca\u5230\u7edf\u8ba1\u5b66\u3001\u968f\u673a\u8fc7\u7a0b\u7b49\u7406\u8bba\u76f8\u5bf9\u6df1\u5165\u7684\u5185\u5bb9\uff0c\u9700\u8981\u76f8\u5f53\u7684\u6570\u5b66\u57fa\u7840\uff0c\u6211\u5728\u4e0a\u8fd9\u95e8\u8bfe\u7684\u65f6\u5019\u4e5f\u611f\u5230\u6709\u4e9b\u5403\u529b\uff0c\u4e0d\u8fc7\u575a\u6301\u4e0b\u6765\u4e00\u5b9a\u4f1a\u8ba9\u4f60\u5bf9\u6982\u7387\u8bba\u7684\u638c\u63e1\u8fbe\u5230\u4e00\u4e2a\u65b0\u7684\u9ad8\u5ea6\u3002 \u540c\u65f6\u8fd9\u95e8\u8bfe\u975e\u5e38\u5f3a\u8c03\u7406\u8bba\u4e0e\u5b9e\u8df5\u7684\u7ed3\u5408\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u8005 Jean Walrand \u6559\u6388\u4e13\u95e8\u5199\u4e86\u4e00\u672c\u914d\u5957\u7684\u6559\u6750 Probability in Electrical Engineering and Computer Science \uff0c\u4e66\u4e2d\u6bcf\u4e2a\u7ae0\u8282\u90fd\u4f1a\u4ee5\u4e00\u4e2a\u5177\u4f53\u7684\u7b97\u6cd5\u5b9e\u8df5\u4f5c\u4e3a\u4f8b\u5b50\u6765\u5c55\u793a\u7406\u8bba\u5728\u5b9e\u9645\u5f53\u4e2d\u7684\u8fd0\u7528\uff0c\u4f8b\u5982 PageRank, Route Planing, Speech Recognition \u7b49\u7b49\uff0c\u5e76\u4e14\u5168\u4e66\u5f00\u6e90\uff0c\u53ef\u4ee5\u514d\u8d39\u4e0b\u8f7d PDF \u6216\u8005 Epub \u7248\u3002 \u8fd9\u8fd8\u4e0d\u7b97\u5b8c\uff0cJean Walrand \u8fd8\u4e3a\u6574\u672c\u4e66\u91cc\u7684\u4f8b\u5b50\u8bbe\u8ba1\u4e86\u914d\u5957\u7684 Python \u5b9e\u73b0\uff0c\u4ee5 Jupyter Notebook \u7684\u5f62\u5f0f\u5728\u7ebf\u53d1\u5e03\uff0c\u8bfb\u8005\u53ef\u4ee5\u5728\u7ebf\u4fee\u6539\u3001\u8c03\u8bd5\u548c\u8fd0\u884c\u3002 \u4e0e\u6b64\u540c\u65f6\uff0c\u8fd9\u95e8\u8bfe\u9664\u4e86\u7406\u8bba\u4f5c\u4e1a\u4e4b\u5916\uff0c\u8fd8\u6709 9 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u4f1a\u8ba9\u4f60\u7528\u6982\u7387\u8bba\u7684\u77e5\u8bc6\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~ee126/fa20/content.html \u8bfe\u7a0b\u6559\u6750\uff1a PDF , Epub , Jupyter Notebook \u8bfe\u7a0b\u4f5c\u4e1a\uff1a14 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 9 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u5177\u4f53\u8981\u6c42\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/EECS126 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/","text":"UCB CS70 : discrete Math and probability theory \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u79bb\u6563\u6570\u5b66\u5165\u95e8\u8bfe\u7a0b\uff0c\u4e2a\u4eba\u89c9\u5f97\u8fd9\u95e8\u8bfe\u6700\u5927\u7684\u4eae\u70b9\u5728\u4e8e\u5e76\u4e0d\u662f\u5355\u7eaf\u7684\u7406\u8bba\u77e5\u8bc6\u7684\u8bb2\u6388\uff0c\u800c\u662f\u5728\u6bcf\u4e2a\u6a21\u5757\u90fd\u4f1a\u4ecb\u7ecd\u7406\u8bba\u77e5\u8bc6\u5728\u5b9e\u9645\u7b97\u6cd5\u4e2d\u7684\u8fd0\u7528\uff0c\u8ba9\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\u5728\u592f\u5b9e\u7406\u8bba\u57fa\u7840\u7684\u540c\u65f6\uff0c\u8df3\u8131\u51fa\u51b0\u51b7\u5f62\u5f0f\u5316\u7684\u6570\u5b66\u7b26\u53f7\uff0c\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u611f\u53d7\u548c\u4f53\u4f1a\u7406\u8bba\u7684\u672c\u8d28\u3002 \u5177\u4f53\u7684\u7406\u8bba\u4e0e\u7b97\u6cd5\u7684\u5bf9\u5e94\u5173\u7cfb\u5217\u4e3e\u5982\u4e0b\uff1a \u903b\u8f91\u8bc1\u660e\uff1a\u7a33\u5b9a\u5339\u914d\u7b97\u6cd5 \u56fe\u8bba\uff1a\u7f51\u7edc\u62d3\u6251\u8bbe\u8ba1 \u57fa\u7840\u6570\u8bba\uff1aRSA \u7b97\u6cd5 \u591a\u9879\u5f0f\u73af\uff1a\u7ea0\u9519\u7801\u8bbe\u8ba1 \u6982\u7387\u8bba\uff1a\u54c8\u5e0c\u8868\u8bbe\u8ba1\u3001\u8d1f\u8f7d\u5747\u8861\u7b49\u7b49 \u8bfe\u7a0b notes \u4e5f\u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u516c\u5f0f\u63a8\u5bfc\u4e0e\u5b9e\u9645\u4f8b\u5b50\u661f\u7f57\u68cb\u5e03\uff0c\u9605\u8bfb\u4f53\u9a8c\u5f88\u597d\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.eecs70.org/ \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b Schedule \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS70 - GitHub \u4e2d\u3002","title":"UCB CS70: discrete Math and probability theory"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/#ucb-cs70-discrete-math-and-probability-theory","text":"","title":"UCB CS70 : discrete Math and probability theory"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u79bb\u6563\u6570\u5b66\u5165\u95e8\u8bfe\u7a0b\uff0c\u4e2a\u4eba\u89c9\u5f97\u8fd9\u95e8\u8bfe\u6700\u5927\u7684\u4eae\u70b9\u5728\u4e8e\u5e76\u4e0d\u662f\u5355\u7eaf\u7684\u7406\u8bba\u77e5\u8bc6\u7684\u8bb2\u6388\uff0c\u800c\u662f\u5728\u6bcf\u4e2a\u6a21\u5757\u90fd\u4f1a\u4ecb\u7ecd\u7406\u8bba\u77e5\u8bc6\u5728\u5b9e\u9645\u7b97\u6cd5\u4e2d\u7684\u8fd0\u7528\uff0c\u8ba9\u8ba1\u7b97\u673a\u7cfb\u7684\u5b66\u751f\u5728\u592f\u5b9e\u7406\u8bba\u57fa\u7840\u7684\u540c\u65f6\uff0c\u8df3\u8131\u51fa\u51b0\u51b7\u5f62\u5f0f\u5316\u7684\u6570\u5b66\u7b26\u53f7\uff0c\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u611f\u53d7\u548c\u4f53\u4f1a\u7406\u8bba\u7684\u672c\u8d28\u3002 \u5177\u4f53\u7684\u7406\u8bba\u4e0e\u7b97\u6cd5\u7684\u5bf9\u5e94\u5173\u7cfb\u5217\u4e3e\u5982\u4e0b\uff1a \u903b\u8f91\u8bc1\u660e\uff1a\u7a33\u5b9a\u5339\u914d\u7b97\u6cd5 \u56fe\u8bba\uff1a\u7f51\u7edc\u62d3\u6251\u8bbe\u8ba1 \u57fa\u7840\u6570\u8bba\uff1aRSA \u7b97\u6cd5 \u591a\u9879\u5f0f\u73af\uff1a\u7ea0\u9519\u7801\u8bbe\u8ba1 \u6982\u7387\u8bba\uff1a\u54c8\u5e0c\u8868\u8bbe\u8ba1\u3001\u8d1f\u8f7d\u5747\u8861\u7b49\u7b49 \u8bfe\u7a0b notes \u4e5f\u5199\u5f97\u975e\u5e38\u6df1\u5165\u6d45\u51fa\uff0c\u516c\u5f0f\u63a8\u5bfc\u4e0e\u5b9e\u9645\u4f8b\u5b50\u661f\u7f57\u68cb\u5e03\uff0c\u9605\u8bfb\u4f53\u9a8c\u5f88\u597d\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.eecs70.org/ \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b Schedule","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS70 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/","text":"The Information Theory, Patter Recognition, and Neural Networks \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCambridge \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra, Probabilities and Statistics \u7f16\u7a0b\u8bed\u8a00\uff1aAnything would be OK, Python preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30-50 \u5c0f\u65f6 \u5251\u6865\u5927\u5b66 Sir David MacKay \u6559\u6388\u7684\u4fe1\u606f\u8bba\u8bfe\u7a0b\u3002\u6559\u6388\u662f\u4e00\u4f4d\u5341\u5206\u7cbe\u901a\u4fe1\u606f\u8bba\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u5b66\u8005\uff0c\u8bfe\u7a0b\u5bf9\u5e94\u6559\u6750\u4e5f\u662f\u4fe1\u606f\u8bba\u9886\u57df\u7684\u4e00\u90e8\u7ecf\u5178\u8457\u4f5c\u3002\u53ef\u60dc\u5929\u5992\u82f1\u624d... \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.inference.org.uk/mackay/itila/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1rs411T71e \u8bfe\u7a0b\u6559\u6750\uff1aInformation Theory, Inference, and Learning Algorithms \u5728\u8bfe\u7a0b\u7f51\u7ad9\u53ef\u4ee5\u4e0b\u8f7d\u5230\u514d\u8d39\u7684\u7535\u5b50\u7248 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5728\u6bcf\u4e00\u8282\u8bfe\u89c6\u9891\u7684\u6700\u540e\u4f1a\u7559\u6559\u6750\u4e0a\u7684\u8bfe\u540e\u4e60\u9898 R.I.P Prof. David MacKay","title":"The Information Theory, Patter Recognition, and Neural Networks"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/#the-information-theory-patter-recognition-and-neural-networks","text":"","title":"The Information Theory, Patter Recognition, and Neural Networks"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCambridge \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra, Probabilities and Statistics \u7f16\u7a0b\u8bed\u8a00\uff1aAnything would be OK, Python preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30-50 \u5c0f\u65f6 \u5251\u6865\u5927\u5b66 Sir David MacKay \u6559\u6388\u7684\u4fe1\u606f\u8bba\u8bfe\u7a0b\u3002\u6559\u6388\u662f\u4e00\u4f4d\u5341\u5206\u7cbe\u901a\u4fe1\u606f\u8bba\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u5b66\u8005\uff0c\u8bfe\u7a0b\u5bf9\u5e94\u6559\u6750\u4e5f\u662f\u4fe1\u606f\u8bba\u9886\u57df\u7684\u4e00\u90e8\u7ecf\u5178\u8457\u4f5c\u3002\u53ef\u60dc\u5929\u5992\u82f1\u624d...","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.inference.org.uk/mackay/itila/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1rs411T71e \u8bfe\u7a0b\u6559\u6750\uff1aInformation Theory, Inference, and Learning Algorithms \u5728\u8bfe\u7a0b\u7f51\u7ad9\u53ef\u4ee5\u4e0b\u8f7d\u5230\u514d\u8d39\u7684\u7535\u5b50\u7248 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5728\u6bcf\u4e00\u8282\u8bfe\u89c6\u9891\u7684\u6700\u540e\u4f1a\u7559\u6559\u6750\u4e0a\u7684\u8bfe\u540e\u4e60\u9898","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/#rip-prof-david-mackay","text":"","title":"R.I.P Prof. David MacKay"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/","text":"Stanford EE364A: Convex Optimization \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aPython\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u6982\u7387\u8bba\uff0c\u6570\u503c\u5206\u6790 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 Stephen Boyd \u6559\u6388\u662f\u51f8\u4f18\u5316\u9886\u57df\u7684\u5927\u725b\uff0c\u5176\u7f16\u5199\u7684 Convex Optimization \u8fd9\u672c\u6559\u6750\u88ab\u4f17\u591a\u540d\u6821\u91c7\u7528\u3002\u53e6\u5916\u5176\u7814\u7a76\u56e2\u961f\u8fd8\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a\u7528\u4e8e\u6c42\u89e3\u5e38\u89c1\u51f8\u4f18\u5316\u95ee\u9898\u7684\u7f16\u7a0b\u6846\u67b6\uff0c\u652f\u6301 Python, Julia \u7b49\u4e3b\u6d41\u7f16\u7a0b\u8bed\u8a00\uff0c\u5176\u8bfe\u7a0b\u4f5c\u4e1a\u4e5f\u662f\u91c7\u7528\u8fd9\u4e2a\u7f16\u7a0b\u6846\u67b6\u53bb\u89e3\u51b3\u5b9e\u9645\u751f\u6d3b\u5f53\u4e2d\u7684\u51f8\u4f18\u5316\u95ee\u9898\u3002 \u5728\u5b9e\u9645\u8fd0\u7528\u5f53\u4e2d\uff0c\u4f60\u4f1a\u6df1\u523b\u4f53\u4f1a\u5230\u5bf9\u4e8e\u540c\u4e00\u4e2a\u95ee\u9898\uff0c\u5efa\u6a21\u8fc7\u7a0b\u4e2d\u4e00\u4e2a\u7ec6\u5c0f\u7684\u6539\u53d8\uff0c\u5176\u65b9\u7a0b\u7684\u6c42\u89e3\u96be\u5ea6\u4f1a\u6709\u5929\u58e4\u4e4b\u522b\uff0c\u5982\u4f55\u8ba9\u4f60\u5efa\u6a21\u7684\u65b9\u7a0b\u662f\u201c\u51f8\u201d\u7684\uff0c\u662f\u4e00\u95e8\u827a\u672f\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://stanford.edu/class/ee364a/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1aD4y1Q7aW \u8bfe\u7a0b\u6559\u6750\uff1a Convex Optimization \u8bfe\u7a0b\u4f5c\u4e1a\uff1a9 \u4e2a Python \u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Standford_CVX101 - GitHub \u4e2d\u3002","title":"Standford EE364A: Convex Optimization"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/#stanford-ee364a-convex-optimization","text":"","title":"Stanford EE364A: Convex Optimization"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aPython\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u6982\u7387\u8bba\uff0c\u6570\u503c\u5206\u6790 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 Stephen Boyd \u6559\u6388\u662f\u51f8\u4f18\u5316\u9886\u57df\u7684\u5927\u725b\uff0c\u5176\u7f16\u5199\u7684 Convex Optimization \u8fd9\u672c\u6559\u6750\u88ab\u4f17\u591a\u540d\u6821\u91c7\u7528\u3002\u53e6\u5916\u5176\u7814\u7a76\u56e2\u961f\u8fd8\u4e13\u95e8\u5f00\u53d1\u4e86\u4e00\u4e2a\u7528\u4e8e\u6c42\u89e3\u5e38\u89c1\u51f8\u4f18\u5316\u95ee\u9898\u7684\u7f16\u7a0b\u6846\u67b6\uff0c\u652f\u6301 Python, Julia \u7b49\u4e3b\u6d41\u7f16\u7a0b\u8bed\u8a00\uff0c\u5176\u8bfe\u7a0b\u4f5c\u4e1a\u4e5f\u662f\u91c7\u7528\u8fd9\u4e2a\u7f16\u7a0b\u6846\u67b6\u53bb\u89e3\u51b3\u5b9e\u9645\u751f\u6d3b\u5f53\u4e2d\u7684\u51f8\u4f18\u5316\u95ee\u9898\u3002 \u5728\u5b9e\u9645\u8fd0\u7528\u5f53\u4e2d\uff0c\u4f60\u4f1a\u6df1\u523b\u4f53\u4f1a\u5230\u5bf9\u4e8e\u540c\u4e00\u4e2a\u95ee\u9898\uff0c\u5efa\u6a21\u8fc7\u7a0b\u4e2d\u4e00\u4e2a\u7ec6\u5c0f\u7684\u6539\u53d8\uff0c\u5176\u65b9\u7a0b\u7684\u6c42\u89e3\u96be\u5ea6\u4f1a\u6709\u5929\u58e4\u4e4b\u522b\uff0c\u5982\u4f55\u8ba9\u4f60\u5efa\u6a21\u7684\u65b9\u7a0b\u662f\u201c\u51f8\u201d\u7684\uff0c\u662f\u4e00\u95e8\u827a\u672f\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://stanford.edu/class/ee364a/index.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1aD4y1Q7aW \u8bfe\u7a0b\u6559\u6750\uff1a Convex Optimization \u8bfe\u7a0b\u4f5c\u4e1a\uff1a9 \u4e2a Python \u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Standford_CVX101 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/","text":"MIT18.330 : Introduction to numerical analysis \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u6982\u7387\u8bba \u7f16\u7a0b\u8bed\u8a00\uff1aJulia \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u8ba1\u7b97\u673a\u5f3a\u5927\u7684\u8ba1\u7b97\u80fd\u529b\u5e2e\u52a9\u4eba\u4eec\u5728\u79d1\u5b66\u9886\u57df\u4e0d\u65ad\u7a81\u7834\u8fb9\u754c\uff0c\u4e0d\u8fc7\u8ba1\u7b97\u673a\u7684\u79bb\u6563\u672c\u8d28\u548c\u8fd9\u4e2a\u8fde\u7eed\u7684\u4e16\u754c\u6709\u7740\u5929\u7136\u9e3f\u6c9f\uff0c\u800c\u5982\u4f55\u7528\u79bb\u6563\u7684\u8868\u793a\u53bb\u4f30\u8ba1\u548c\u903c\u8fd1\u90a3\u4e9b\u6570\u5b66\u4e0a\u8fde\u7eed\u7684\u6982\u5ff5\uff0c\u5219\u662f\u6570\u503c\u5206\u6790\u7684\u91cd\u8981\u4e3b\u9898\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u5728\u6d6e\u70b9\u8868\u793a\u3001\u65b9\u7a0b\u6c42\u89e3\u3001\u7ebf\u6027\u4ee3\u6570\u3001\u5fae\u79ef\u5206\u3001\u7ebf\u6027\u4ee3\u6570\u3001\u5fae\u5206\u65b9\u7a0b\u7b49\u9886\u57df\u63a2\u8ba8\u5404\u7c7b\u6570\u503c\u5206\u6790\u65b9\u6cd5\uff0c\u8ba9\u4f60\u5728 Julia \u7684\u7f16\u7a0b\u5b9e\u8df5\u4e2d\u53cd\u590d\u4f53\u609f\uff081\uff09\u5982\u4f55\u5efa\u7acb\u4f30\u8ba1\uff082\uff09\u5982\u4f55\u4f30\u8ba1\u8bef\u5dee\uff083\uff09\u5982\u4f55\u7528\u7b97\u6cd5\u5b9e\u73b0\u4f30\u8ba1 \u8fd9\u4e00\u7cfb\u5217\u6b65\u9aa4\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bbe\u8ba1\u8005\u8fd8\u7f16\u5199\u4e86\u914d\u5957\u7684\u5f00\u6e90\u6559\u6750\uff08\u53c2\u89c1\u4e0b\u65b9\u94fe\u63a5\uff09\uff0c\u91cc\u9762\u6709\u4e30\u5bcc\u7684 Julia \u5b9e\u4f8b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://github.com/mitmath/18330 \u8bfe\u7a0b\u6559\u6750\uff1a https://fncbook.github.io/fnc/frontmatter.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10 \u4e2a Julia \u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT18.330 - GitHub \u4e2d\u3002","title":"MIT18.330: Introduction to numerical analysis"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/#mit18330-introduction-to-numerical-analysis","text":"","title":"MIT18.330 : Introduction to numerical analysis"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u6982\u7387\u8bba \u7f16\u7a0b\u8bed\u8a00\uff1aJulia \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u8ba1\u7b97\u673a\u5f3a\u5927\u7684\u8ba1\u7b97\u80fd\u529b\u5e2e\u52a9\u4eba\u4eec\u5728\u79d1\u5b66\u9886\u57df\u4e0d\u65ad\u7a81\u7834\u8fb9\u754c\uff0c\u4e0d\u8fc7\u8ba1\u7b97\u673a\u7684\u79bb\u6563\u672c\u8d28\u548c\u8fd9\u4e2a\u8fde\u7eed\u7684\u4e16\u754c\u6709\u7740\u5929\u7136\u9e3f\u6c9f\uff0c\u800c\u5982\u4f55\u7528\u79bb\u6563\u7684\u8868\u793a\u53bb\u4f30\u8ba1\u548c\u903c\u8fd1\u90a3\u4e9b\u6570\u5b66\u4e0a\u8fde\u7eed\u7684\u6982\u5ff5\uff0c\u5219\u662f\u6570\u503c\u5206\u6790\u7684\u91cd\u8981\u4e3b\u9898\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u5728\u6d6e\u70b9\u8868\u793a\u3001\u65b9\u7a0b\u6c42\u89e3\u3001\u7ebf\u6027\u4ee3\u6570\u3001\u5fae\u79ef\u5206\u3001\u7ebf\u6027\u4ee3\u6570\u3001\u5fae\u5206\u65b9\u7a0b\u7b49\u9886\u57df\u63a2\u8ba8\u5404\u7c7b\u6570\u503c\u5206\u6790\u65b9\u6cd5\uff0c\u8ba9\u4f60\u5728 Julia \u7684\u7f16\u7a0b\u5b9e\u8df5\u4e2d\u53cd\u590d\u4f53\u609f\uff081\uff09\u5982\u4f55\u5efa\u7acb\u4f30\u8ba1\uff082\uff09\u5982\u4f55\u4f30\u8ba1\u8bef\u5dee\uff083\uff09\u5982\u4f55\u7528\u7b97\u6cd5\u5b9e\u73b0\u4f30\u8ba1 \u8fd9\u4e00\u7cfb\u5217\u6b65\u9aa4\u3002 \u8fd9\u95e8\u8bfe\u7684\u8bbe\u8ba1\u8005\u8fd8\u7f16\u5199\u4e86\u914d\u5957\u7684\u5f00\u6e90\u6559\u6750\uff08\u53c2\u89c1\u4e0b\u65b9\u94fe\u63a5\uff09\uff0c\u91cc\u9762\u6709\u4e30\u5bcc\u7684 Julia \u5b9e\u4f8b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://github.com/mitmath/18330 \u8bfe\u7a0b\u6559\u6750\uff1a https://fncbook.github.io/fnc/frontmatter.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10 \u4e2a Julia \u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT18.330 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/","text":"CMU 15-445: Database Systems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aC++\uff0c\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f5c\u4e3a CMU \u6570\u636e\u5e93\u7684\u5165\u95e8\u8bfe\uff0c\u8fd9\u95e8\u8bfe\u7531\u6570\u636e\u5e93\u9886\u57df\u7684\u5927\u725b Andy Pavlo \u8bb2\u6388\uff08\u201c\u8fd9\u4e2a\u4e16\u754c\u4e0a\u6211\u53ea\u5728\u4e4e\u4e24\u4ef6\u4e8b\uff0c\u4e00\u662f\u6211\u7684\u8001\u5a46\uff0c\u4e8c\u5c31\u662f\u6570\u636e\u5e93\u201d\uff09\u300215-445 \u4f1a\u81ea\u5e95\u5411\u4e0a\u5730\u6559\u4f60\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u57fa\u672c\u7ec4\u6210\u90e8\u5206\uff1a\u5b58\u50a8\u3001\u7d22\u5f15\u3001\u67e5\u8be2\uff0c\u4ee5\u53ca\u5e76\u53d1\u4e8b\u52a1\u63a7\u5236\u3002 \u8fd9\u95e8\u8bfe\u7684\u4eae\u70b9\u5728\u4e8e CMU db \u4e13\u95e8\u4e3a\u6b64\u8bfe\u5f00\u53d1\u4e86\u4e00\u4e2a\u6559\u5b66\u7528\u7684\u5173\u7cfb\u578b\u6570\u636e\u5e93 bustub \uff0c\u5e76\u8981\u6c42\u4f60\u5bf9\u8fd9\u4e2a\u6570\u636e\u5e93\u7684\u7ec4\u6210\u90e8\u5206\u8fdb\u884c\u4fee\u6539\uff0c\u5b9e\u73b0\u4e0a\u8ff0\u90e8\u4ef6\u7684\u529f\u80fd\u3002\u6b64\u5916 bustub \u4f5c\u4e3a\u4e00\u4e2a C++ \u7f16\u5199\u7684\u4e2d\u5c0f\u578b\u9879\u76ee\u6db5\u76d6\u4e86\u7a0b\u5e8f\u6784\u5efa\u3001\u4ee3\u7801\u89c4\u8303\u3001\u5355\u5143\u6d4b\u8bd5\u7b49\u4f17\u591a\u8981\u6c42\uff0c\u53ef\u4ee5\u4f5c\u4e3a\u4e00\u4e2a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\u5b66\u4e60\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a Fall2019 , Fall2020 , Fall2021 \u8bfe\u7a0b\u89c6\u9891\uff1a\u8bfe\u7a0b\u7f51\u7ad9\u514d\u8d39\u89c2\u770b \u8bfe\u7a0b\u6559\u6750\uff1aDatabase System Concepts \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a Project \u5728 Fall2019 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a\u54c8\u5e0c\u7d22\u5f15\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u65e5\u5fd7\u4e0e\u6062\u590d\u3002 \u5728 Fall2020 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a B \u6811\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u5e76\u53d1\u63a7\u5236\u3002 \u5728 Fall2021 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a\u7f13\u5b58\u6c60\u7ba1\u7406\uff0c\u7b2c\u4e09\u4e2a Project \u662f\u505a\u54c8\u5e0c\u7d22\u5f15\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u5e76\u53d1\u63a7\u5236\u3002 \u5982\u679c\u5927\u5bb6\u6709\u7cbe\u529b\u7684\u8bdd\u53ef\u4ee5\u90fd\u53bb\u5c1d\u8bd5\u4e00\u4e0b\uff0c\u6216\u8005\u5728\u5bf9\u4e66\u4e2d\u5185\u5bb9\u7406\u89e3\u4e0d\u662f\u5f88\u900f\u5f7b\u7684\u65f6\u5019\uff0c\u5c1d\u8bd5\u7528\u4ee3\u7801\u5199\u4e00\u4e2a\u4f1a\u52a0\u6df1\u4f60\u7684\u7406\u89e3\u3002 \u8d44\u6e90\u6c47\u603b @ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: db - GitHub \u4e2d\u3002 \u7531\u4e8e Andy \u7684\u8981\u6c42\uff0c\u4ed3\u5e93\u4e2d\u6ca1\u6709 Project \u7684\u5b9e\u73b0\uff0c\u53ea\u6709 Homework \u7684 Solution\u3002\u7279\u522b\u7684\uff0c\u5bf9\u4e8e Homework1\uff0c@ysj1173886760 \u8fd8\u5199\u4e86\u4e00\u4e2a Shell \u811a\u672c\u6765\u5e2e\u5927\u5bb6\u6267\u884c\u81ea\u52a8\u5224\u5206\u3002 \u53e6\u5916\u5728\u8bfe\u7a0b\u7ed3\u675f\u540e\uff0c\u63a8\u8350\u9605\u8bfb\u4e00\u7bc7\u8bba\u6587 Architecture Of a Database System \uff0c\u5bf9\u5e94\u7684\u4e2d\u6587\u7248\u4e5f\u5728\u4e0a\u8ff0\u4ed3\u5e93\u4e2d\u3002\u8bba\u6587\u91cc\u7efc\u8ff0\u4e86\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u6574\u4f53\u67b6\u6784\uff0c\u8ba9\u5927\u5bb6\u53ef\u4ee5\u5bf9\u6570\u636e\u5e93\u6709\u4e00\u4e2a\u66f4\u52a0\u5168\u9762\u7684\u89c6\u91ce\u3002 \u540e\u7eed\u8bfe\u7a0b CMU15-721 \u4e3b\u8981\u8bb2\u4e3b\u5b58\u6570\u636e\u5e93\u6709\u5173\u7684\u5185\u5bb9\uff0c\u6bcf\u8282\u8bfe\u90fd\u6709\u5bf9\u5e94\u7684 paper \u8981\u8bfb\uff0c\u63a8\u8350\u7ed9\u5e0c\u671b\u8fdb\u9636\u6570\u636e\u5e93\u7684\u5c0f\u4f19\u4f34\u3002@ysj1173886760 \u76ee\u524d\u4e5f\u5728\u8ddf\u8fdb\u8fd9\u95e8\u8bfe\uff0c\u5b8c\u6210\u540e\u4f1a\u5728\u8fd9\u91cc\u63d0 PR \u4ee5\u63d0\u4f9b\u8fdb\u9636\u7684\u6307\u5bfc\u3002","title":"CMU 15-445: Database Systems"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#cmu-15-445-database-systems","text":"","title":"CMU 15-445: Database Systems"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aC++\uff0c\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f5c\u4e3a CMU \u6570\u636e\u5e93\u7684\u5165\u95e8\u8bfe\uff0c\u8fd9\u95e8\u8bfe\u7531\u6570\u636e\u5e93\u9886\u57df\u7684\u5927\u725b Andy Pavlo \u8bb2\u6388\uff08\u201c\u8fd9\u4e2a\u4e16\u754c\u4e0a\u6211\u53ea\u5728\u4e4e\u4e24\u4ef6\u4e8b\uff0c\u4e00\u662f\u6211\u7684\u8001\u5a46\uff0c\u4e8c\u5c31\u662f\u6570\u636e\u5e93\u201d\uff09\u300215-445 \u4f1a\u81ea\u5e95\u5411\u4e0a\u5730\u6559\u4f60\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u57fa\u672c\u7ec4\u6210\u90e8\u5206\uff1a\u5b58\u50a8\u3001\u7d22\u5f15\u3001\u67e5\u8be2\uff0c\u4ee5\u53ca\u5e76\u53d1\u4e8b\u52a1\u63a7\u5236\u3002 \u8fd9\u95e8\u8bfe\u7684\u4eae\u70b9\u5728\u4e8e CMU db \u4e13\u95e8\u4e3a\u6b64\u8bfe\u5f00\u53d1\u4e86\u4e00\u4e2a\u6559\u5b66\u7528\u7684\u5173\u7cfb\u578b\u6570\u636e\u5e93 bustub \uff0c\u5e76\u8981\u6c42\u4f60\u5bf9\u8fd9\u4e2a\u6570\u636e\u5e93\u7684\u7ec4\u6210\u90e8\u5206\u8fdb\u884c\u4fee\u6539\uff0c\u5b9e\u73b0\u4e0a\u8ff0\u90e8\u4ef6\u7684\u529f\u80fd\u3002\u6b64\u5916 bustub \u4f5c\u4e3a\u4e00\u4e2a C++ \u7f16\u5199\u7684\u4e2d\u5c0f\u578b\u9879\u76ee\u6db5\u76d6\u4e86\u7a0b\u5e8f\u6784\u5efa\u3001\u4ee3\u7801\u89c4\u8303\u3001\u5355\u5143\u6d4b\u8bd5\u7b49\u4f17\u591a\u8981\u6c42\uff0c\u53ef\u4ee5\u4f5c\u4e3a\u4e00\u4e2a\u4f18\u79c0\u7684\u5f00\u6e90\u9879\u76ee\u5b66\u4e60\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a Fall2019 , Fall2020 , Fall2021 \u8bfe\u7a0b\u89c6\u9891\uff1a\u8bfe\u7a0b\u7f51\u7ad9\u514d\u8d39\u89c2\u770b \u8bfe\u7a0b\u6559\u6750\uff1aDatabase System Concepts \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a Project \u5728 Fall2019 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a\u54c8\u5e0c\u7d22\u5f15\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u65e5\u5fd7\u4e0e\u6062\u590d\u3002 \u5728 Fall2020 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a B \u6811\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u5e76\u53d1\u63a7\u5236\u3002 \u5728 Fall2021 \u4e2d\uff0c\u7b2c\u4e8c\u4e2a Project \u662f\u505a\u7f13\u5b58\u6c60\u7ba1\u7406\uff0c\u7b2c\u4e09\u4e2a Project \u662f\u505a\u54c8\u5e0c\u7d22\u5f15\uff0c\u7b2c\u56db\u4e2a Project \u662f\u505a\u5e76\u53d1\u63a7\u5236\u3002 \u5982\u679c\u5927\u5bb6\u6709\u7cbe\u529b\u7684\u8bdd\u53ef\u4ee5\u90fd\u53bb\u5c1d\u8bd5\u4e00\u4e0b\uff0c\u6216\u8005\u5728\u5bf9\u4e66\u4e2d\u5185\u5bb9\u7406\u89e3\u4e0d\u662f\u5f88\u900f\u5f7b\u7684\u65f6\u5019\uff0c\u5c1d\u8bd5\u7528\u4ee3\u7801\u5199\u4e00\u4e2a\u4f1a\u52a0\u6df1\u4f60\u7684\u7406\u89e3\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#_3","text":"@ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: db - GitHub \u4e2d\u3002 \u7531\u4e8e Andy \u7684\u8981\u6c42\uff0c\u4ed3\u5e93\u4e2d\u6ca1\u6709 Project \u7684\u5b9e\u73b0\uff0c\u53ea\u6709 Homework \u7684 Solution\u3002\u7279\u522b\u7684\uff0c\u5bf9\u4e8e Homework1\uff0c@ysj1173886760 \u8fd8\u5199\u4e86\u4e00\u4e2a Shell \u811a\u672c\u6765\u5e2e\u5927\u5bb6\u6267\u884c\u81ea\u52a8\u5224\u5206\u3002 \u53e6\u5916\u5728\u8bfe\u7a0b\u7ed3\u675f\u540e\uff0c\u63a8\u8350\u9605\u8bfb\u4e00\u7bc7\u8bba\u6587 Architecture Of a Database System \uff0c\u5bf9\u5e94\u7684\u4e2d\u6587\u7248\u4e5f\u5728\u4e0a\u8ff0\u4ed3\u5e93\u4e2d\u3002\u8bba\u6587\u91cc\u7efc\u8ff0\u4e86\u6570\u636e\u5e93\u7cfb\u7edf\u7684\u6574\u4f53\u67b6\u6784\uff0c\u8ba9\u5927\u5bb6\u53ef\u4ee5\u5bf9\u6570\u636e\u5e93\u6709\u4e00\u4e2a\u66f4\u52a0\u5168\u9762\u7684\u89c6\u91ce\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/#_4","text":"CMU15-721 \u4e3b\u8981\u8bb2\u4e3b\u5b58\u6570\u636e\u5e93\u6709\u5173\u7684\u5185\u5bb9\uff0c\u6bcf\u8282\u8bfe\u90fd\u6709\u5bf9\u5e94\u7684 paper \u8981\u8bfb\uff0c\u63a8\u8350\u7ed9\u5e0c\u671b\u8fdb\u9636\u6570\u636e\u5e93\u7684\u5c0f\u4f19\u4f34\u3002@ysj1173886760 \u76ee\u524d\u4e5f\u5728\u8ddf\u8fdb\u8fd9\u95e8\u8bfe\uff0c\u5b8c\u6210\u540e\u4f1a\u5728\u8fd9\u91cc\u63d0 PR \u4ee5\u63d0\u4f9b\u8fdb\u9636\u7684\u6307\u5bfc\u3002","title":"\u540e\u7eed\u8bfe\u7a0b"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/","text":"Caltech CS 122: Database System Implementation \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCaltech \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u52a0\u5dde\u7406\u5de5\u7684\u8fd9\u95e8\u8bfe\uff0c\u4e0d\u540c\u4e8e\u6ca1\u6709\u63d0\u4f9b SQL \u5c42\u529f\u80fd\u7684 CMU15-445 \u8bfe\u7a0b\u3002CS122 \u8bfe\u7a0b Lab \u7684\u4fa7\u91cd\u70b9\u5728\u4e8e SQL \u5c42\u7684\u76f8\u5173\u5b9e\u73b0\uff0c\u6d89\u53ca\u67e5\u8be2\u4f18\u5316\u5668\u7684\u5404\u4e2a\u6a21\u5757\uff0c\u6bd4\u5982SQL\u7684\u89e3\u6790\uff0cTranslate\uff0c\u5982\u4f55\u5b9e\u73b0 Join\uff0c\u7edf\u8ba1\u4fe1\u606f\u4ee5\u53ca\u4ee3\u4ef7\u4f30\u8ba1\uff0c\u5b50\u67e5\u8be2\u5b9e\u73b0\uff0cAgg\uff0cGroup By \u7684\u5b9e\u73b0\u7b49\u3002\u9664\u6b64\u4e4b\u5916\uff0c\u8fd8\u6709 B+\u6811\uff0cWAL \u76f8\u5173\u5b9e\u9a8c\u3002\u672c\u95e8\u8bfe\u7a0b\u9002\u5408\u5728\u5b66\u5b8c CMU15-445 \u8bfe\u7a0b\u4e4b\u540e\uff0c\u5bf9\u67e5\u8be2\u4f18\u5316\u76f8\u5173\u5185\u5bb9\u6709\u5174\u8da3\u7684\u540c\u5b66\u3002 \u4e0b\u9762\u4ecb\u7ecd\u4e00\u4e0b\u8fd9\u95e8\u8bfe\u7684\u524d 3 \u4e2a Assignment \u4e5f\u5c31\u662f\u5b9e\u9a8c Lab \u6240\u8981\u5b9e\u73b0\u7684\u529f\u80fd\uff1a Assignment1 \u4e3a NanoDB \u63d0\u4f9b delete\uff0cupdate \u8bed\u53e5\u7684\u652f\u6301\u3002 \u4e3a Buffer Pool Manager \u6dfb\u52a0\u5408\u9002\u7684 pin/unpin \u4ee3\u7801\u3002 \u63d0\u5347 insert \u8bed\u53e5\u7684\u6027\u80fd\uff0c \u540c\u65f6\u4e0d\u4f7f\u6570\u636e\u5e93\u6587\u4ef6\u5927\u5c0f\u8fc7\u5206\u81a8\u80c0\u3002 Assignment2 \u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u8ba1\u5212\u751f\u6210\u5668\uff0c\u5c06\u5404\u79cd\u5df2\u7ecf Parser \u8fc7\u7684 SQL \u8bed\u53e5\u8f6c\u5316\u4e3a\u53ef\u6267\u884c\u7684\u6267\u884c\u8ba1\u5212\u3002 \u4f7f\u7528 nested-loop join \u7b97\u6cd5\uff0c\u5b9e\u73b0\u652f\u6301 inner- and outer-join \u7684 Join \u8ba1\u5212\u8282\u70b9\u3002 \u6dfb\u52a0\u4e00\u4e9b\u5355\u5143\u6d4b\u8bd5\uff0c \u4fdd\u8bc1 inner- and outer-join \u529f\u80fd\u5b9e\u73b0\u6b63\u786e\u3002 Assignment3 \u5b8c\u6210\u6536\u96c6\u8868\u7684\u7edf\u8ba1\u4fe1\u606f\u3002 \u5b8c\u6210\u5404\u79cd\u8ba1\u5212\u8282\u70b9\u7684\u8ba1\u5212\u6210\u672c\u8ba1\u7b97\u3002 \u8ba1\u7b97\u53ef\u51fa\u73b0\u5728\u6267\u884c\u8ba1\u5212\u4e2d\u7684\u5404\u79cd\u8c13\u8bcd\u7684\u9009\u62e9\u6027\u3002 \u6839\u636e\u8c13\u8bcd\u66f4\u65b0\u8ba1\u5212\u8282\u70b9\u8f93\u51fa\u7684\u5143\u7ec4\u7edf\u8ba1\u4fe1\u606f\u3002 \u5269\u4f59 Assignment \u548c Challenges \u53ef\u4ee5\u67e5\u770b\u8bfe\u7a0b\u4ecb\u7ecd\uff0c\u63a8\u8350\u4f7f\u7528 IDEA \u6253\u5f00\u5de5\u7a0b\uff0cMaven \u6784\u5efa\uff0c\u6ce8\u610f\u65e5\u5fd7\u76f8\u5173\u914d\u7f6e\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://courses.cms.caltech.edu/cs122/ \u8bfe\u7a0b\u4ee3\u7801\uff1a https://gitlab.caltech.edu/cs122-19wi \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a7 Assignments + 2 Challenges","title":"Caltech CS122: Database System Implementation"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#caltech-cs-122-database-system-implementation","text":"","title":"Caltech CS 122: Database System Implementation"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCaltech \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u52a0\u5dde\u7406\u5de5\u7684\u8fd9\u95e8\u8bfe\uff0c\u4e0d\u540c\u4e8e\u6ca1\u6709\u63d0\u4f9b SQL \u5c42\u529f\u80fd\u7684 CMU15-445 \u8bfe\u7a0b\u3002CS122 \u8bfe\u7a0b Lab \u7684\u4fa7\u91cd\u70b9\u5728\u4e8e SQL \u5c42\u7684\u76f8\u5173\u5b9e\u73b0\uff0c\u6d89\u53ca\u67e5\u8be2\u4f18\u5316\u5668\u7684\u5404\u4e2a\u6a21\u5757\uff0c\u6bd4\u5982SQL\u7684\u89e3\u6790\uff0cTranslate\uff0c\u5982\u4f55\u5b9e\u73b0 Join\uff0c\u7edf\u8ba1\u4fe1\u606f\u4ee5\u53ca\u4ee3\u4ef7\u4f30\u8ba1\uff0c\u5b50\u67e5\u8be2\u5b9e\u73b0\uff0cAgg\uff0cGroup By \u7684\u5b9e\u73b0\u7b49\u3002\u9664\u6b64\u4e4b\u5916\uff0c\u8fd8\u6709 B+\u6811\uff0cWAL \u76f8\u5173\u5b9e\u9a8c\u3002\u672c\u95e8\u8bfe\u7a0b\u9002\u5408\u5728\u5b66\u5b8c CMU15-445 \u8bfe\u7a0b\u4e4b\u540e\uff0c\u5bf9\u67e5\u8be2\u4f18\u5316\u76f8\u5173\u5185\u5bb9\u6709\u5174\u8da3\u7684\u540c\u5b66\u3002 \u4e0b\u9762\u4ecb\u7ecd\u4e00\u4e0b\u8fd9\u95e8\u8bfe\u7684\u524d 3 \u4e2a Assignment \u4e5f\u5c31\u662f\u5b9e\u9a8c Lab \u6240\u8981\u5b9e\u73b0\u7684\u529f\u80fd\uff1a","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#assignment1","text":"\u4e3a NanoDB \u63d0\u4f9b delete\uff0cupdate \u8bed\u53e5\u7684\u652f\u6301\u3002 \u4e3a Buffer Pool Manager \u6dfb\u52a0\u5408\u9002\u7684 pin/unpin \u4ee3\u7801\u3002 \u63d0\u5347 insert \u8bed\u53e5\u7684\u6027\u80fd\uff0c \u540c\u65f6\u4e0d\u4f7f\u6570\u636e\u5e93\u6587\u4ef6\u5927\u5c0f\u8fc7\u5206\u81a8\u80c0\u3002","title":"Assignment1"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#assignment2","text":"\u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u8ba1\u5212\u751f\u6210\u5668\uff0c\u5c06\u5404\u79cd\u5df2\u7ecf Parser \u8fc7\u7684 SQL \u8bed\u53e5\u8f6c\u5316\u4e3a\u53ef\u6267\u884c\u7684\u6267\u884c\u8ba1\u5212\u3002 \u4f7f\u7528 nested-loop join \u7b97\u6cd5\uff0c\u5b9e\u73b0\u652f\u6301 inner- and outer-join \u7684 Join \u8ba1\u5212\u8282\u70b9\u3002 \u6dfb\u52a0\u4e00\u4e9b\u5355\u5143\u6d4b\u8bd5\uff0c \u4fdd\u8bc1 inner- and outer-join \u529f\u80fd\u5b9e\u73b0\u6b63\u786e\u3002","title":"Assignment2"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#assignment3","text":"\u5b8c\u6210\u6536\u96c6\u8868\u7684\u7edf\u8ba1\u4fe1\u606f\u3002 \u5b8c\u6210\u5404\u79cd\u8ba1\u5212\u8282\u70b9\u7684\u8ba1\u5212\u6210\u672c\u8ba1\u7b97\u3002 \u8ba1\u7b97\u53ef\u51fa\u73b0\u5728\u6267\u884c\u8ba1\u5212\u4e2d\u7684\u5404\u79cd\u8c13\u8bcd\u7684\u9009\u62e9\u6027\u3002 \u6839\u636e\u8c13\u8bcd\u66f4\u65b0\u8ba1\u5212\u8282\u70b9\u8f93\u51fa\u7684\u5143\u7ec4\u7edf\u8ba1\u4fe1\u606f\u3002 \u5269\u4f59 Assignment \u548c Challenges \u53ef\u4ee5\u67e5\u770b\u8bfe\u7a0b\u4ecb\u7ecd\uff0c\u63a8\u8350\u4f7f\u7528 IDEA \u6253\u5f00\u5de5\u7a0b\uff0cMaven \u6784\u5efa\uff0c\u6ce8\u610f\u65e5\u5fd7\u76f8\u5173\u914d\u7f6e\u3002","title":"Assignment3"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://courses.cms.caltech.edu/cs122/ \u8bfe\u7a0b\u4ee3\u7801\uff1a https://gitlab.caltech.edu/cs122-19wi \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a7 Assignments + 2 Challenges","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/","text":"UCB CS186: Introduction to Database System \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u5982\u4f55\u7f16\u5199 SQL \u67e5\u8be2\uff1fSQL \u547d\u4ee4\u662f\u5982\u4f55\u88ab\u4e00\u6b65\u6b65\u62c6\u89e3\u3001\u4f18\u5316\u3001\u8f6c\u53d8\u4e3a\u4e00\u4e2a\u4e2a\u78c1\u76d8\u67e5\u8be2\u6307\u4ee4\u7684\uff1f\u5982\u4f55\u5b9e\u73b0\u9ad8\u5e76\u53d1\u7684\u6570\u636e\u5e93\uff1f\u5982\u4f55\u5b9e\u73b0\u6570\u636e\u5e93\u7684\u6545\u969c\u6062\u590d\uff1f\u4ec0\u4e48\u53c8\u662f\u975e\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff1f\u8fd9\u95e8\u8bfe\u4f1a\u5e26\u4f60\u6df1\u5165\u7406\u89e3\u5173\u7cfb\u578b\u6570\u636e\u5e93\u7684\u5185\u90e8\u7ec6\u8282\uff0c\u5e76\u5728\u638c\u63e1\u7406\u8bba\u77e5\u8bc6\u4e4b\u540e\uff0c\u52a8\u624b\u7528 Java \u5b9e\u73b0\u4e00\u4e2a\u652f\u6301 SQL \u5e76\u53d1\u67e5\u8be2\u3001B+ \u6811 Index \u548c\u6545\u969c\u6062\u590d\u7684\u5173\u7cfb\u578b\u6570\u636e\u5e93\u3002 \u4ece\u5b9e\u7528\u89d2\u5ea6\u6765\u8bf4\uff0c\u8fd9\u95e8\u8bfe\u8fd8\u4f1a\u5728\u7f16\u7a0b\u4f5c\u4e1a\u4e2d\u953b\u70bc\u4f60\u7f16\u5199 SQL \u67e5\u8be2\u4ee5\u53ca NoSQL \u67e5\u8be2\u7684\u80fd\u529b\uff0c\u5bf9\u4e8e\u6784\u5efa\u4e00\u4e9b\u5168\u6808\u7684\u5de5\u7a0b\u9879\u76ee\u5f88\u6709\u5e2e\u52a9\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs186berkeley.net/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV13a411c7Qo \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a6 \u4e2a Project \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS186 - GitHub \u4e2d\u3002","title":"UCB CS186: Introduction to Database System"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/#ucb-cs186-introduction-to-database-system","text":"","title":"UCB CS186: Introduction to Database System"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u5982\u4f55\u7f16\u5199 SQL \u67e5\u8be2\uff1fSQL \u547d\u4ee4\u662f\u5982\u4f55\u88ab\u4e00\u6b65\u6b65\u62c6\u89e3\u3001\u4f18\u5316\u3001\u8f6c\u53d8\u4e3a\u4e00\u4e2a\u4e2a\u78c1\u76d8\u67e5\u8be2\u6307\u4ee4\u7684\uff1f\u5982\u4f55\u5b9e\u73b0\u9ad8\u5e76\u53d1\u7684\u6570\u636e\u5e93\uff1f\u5982\u4f55\u5b9e\u73b0\u6570\u636e\u5e93\u7684\u6545\u969c\u6062\u590d\uff1f\u4ec0\u4e48\u53c8\u662f\u975e\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff1f\u8fd9\u95e8\u8bfe\u4f1a\u5e26\u4f60\u6df1\u5165\u7406\u89e3\u5173\u7cfb\u578b\u6570\u636e\u5e93\u7684\u5185\u90e8\u7ec6\u8282\uff0c\u5e76\u5728\u638c\u63e1\u7406\u8bba\u77e5\u8bc6\u4e4b\u540e\uff0c\u52a8\u624b\u7528 Java \u5b9e\u73b0\u4e00\u4e2a\u652f\u6301 SQL \u5e76\u53d1\u67e5\u8be2\u3001B+ \u6811 Index \u548c\u6545\u969c\u6062\u590d\u7684\u5173\u7cfb\u578b\u6570\u636e\u5e93\u3002 \u4ece\u5b9e\u7528\u89d2\u5ea6\u6765\u8bf4\uff0c\u8fd9\u95e8\u8bfe\u8fd8\u4f1a\u5728\u7f16\u7a0b\u4f5c\u4e1a\u4e2d\u953b\u70bc\u4f60\u7f16\u5199 SQL \u67e5\u8be2\u4ee5\u53ca NoSQL \u67e5\u8be2\u7684\u80fd\u529b\uff0c\u5bf9\u4e8e\u6784\u5efa\u4e00\u4e9b\u5168\u6808\u7684\u5de5\u7a0b\u9879\u76ee\u5f88\u6709\u5e2e\u52a9\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs186berkeley.net/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV13a411c7Qo \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a6 \u4e2a Project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS186 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/","text":"UCB Data100: Principles and Techniques of Data Science \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A\uff0c\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u6570\u636e\u79d1\u5b66\u5165\u95e8\u8bfe\u7a0b\uff0c\u5185\u5bb9\u76f8\u5bf9\u57fa\u7840\uff0c\u8986\u76d6\u4e86\u6570\u636e\u6e05\u6d17\u3001\u7279\u5f81\u63d0\u53d6\u3001\u6570\u636e\u53ef\u89c6\u5316\u4ee5\u53ca\u673a\u5668\u5b66\u4e60\u548c\u63a8\u7406\u7684\u57fa\u7840\u5185\u5bb9\uff0c\u4e5f\u4f1a\u8bb2\u6388 Pandas, Numpy, Matplotlib \u7b49\u6570\u636e\u79d1\u5b66\u5e38\u7528\u5de5\u5177\u3002\u5176\u4e30\u5bcc\u6709\u8da3\u7684\u7f16\u7a0b\u4f5c\u4e1a\u4e5f\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u4eae\u70b9\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ds100.org/fa21/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://www.textbook.ds100.org/intro.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"UCB Data100: Principles and Techniques of Data Science"},{"location":"%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/#ucb-data100-principles-and-techniques-of-data-science","text":"","title":"UCB Data100: Principles and Techniques of Data Science"},{"location":"%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A\uff0c\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u6570\u636e\u79d1\u5b66\u5165\u95e8\u8bfe\u7a0b\uff0c\u5185\u5bb9\u76f8\u5bf9\u57fa\u7840\uff0c\u8986\u76d6\u4e86\u6570\u636e\u6e05\u6d17\u3001\u7279\u5f81\u63d0\u53d6\u3001\u6570\u636e\u53ef\u89c6\u5316\u4ee5\u53ca\u673a\u5668\u5b66\u4e60\u548c\u63a8\u7406\u7684\u57fa\u7840\u5185\u5bb9\uff0c\u4e5f\u4f1a\u8bb2\u6388 Pandas, Numpy, Matplotlib \u7b49\u6570\u636e\u79d1\u5b66\u5e38\u7528\u5de5\u5177\u3002\u5176\u4e30\u5bcc\u6709\u8da3\u7684\u7f16\u7a0b\u4f5c\u4e1a\u4e5f\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u4eae\u70b9\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ds100.org/fa21/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://www.textbook.ds100.org/intro.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/","text":"Coursera: Algorithms I & II \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aPrinceton \u5148\u4fee\u8981\u6c42\uff1aCS61A \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u8fd9\u662f Coursera \u4e0a\u8bc4\u5206\u6700\u9ad8\u7684\u7b97\u6cd5\u8bfe\u7a0b\u3002Robert Sedgewick \u6559\u6388\u6709\u4e00\u79cd\u9b54\u529b\uff0c\u53ef\u4ee5\u5c06\u65e0\u8bba\u591a\u4e48\u590d\u6742\u7684\u7b97\u6cd5\u8bb2\u5f97\u6781\u4e3a\u751f\u52a8\u6d45\u663e\u3002\u5b9e\u4e0d\u76f8\u7792\uff0c\u56f0\u6270\u6211\u591a\u5e74\u7684 KMP \u4ee5\u53ca\u7f51\u7edc\u6d41\u7b97\u6cd5\u90fd\u662f\u5728\u8fd9\u95e8\u8bfe\u4e0a\u8ba9\u6211\u8305\u585e\u987f\u5f00\u7684\uff0c\u65f6\u9694\u4e24\u5e74\u6211\u751a\u81f3\u8fd8\u80fd\u5199\u51fa\u8fd9\u4e24\u4e2a\u7b97\u6cd5\u7684\u63a8\u5bfc\u4e0e\u8bc1\u660e\u3002 \u4f60\u662f\u5426\u89c9\u5f97\u7b97\u6cd5\u5b66\u4e86\u5c31\u5fd8\u5462\uff1f\u6211\u89c9\u5f97\u8ba9\u4f60\u5b8c\u5168\u638c\u63e1\u4e00\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u5728\u4e8e\u7406\u89e3\u4e09\u70b9\uff1a \u4e3a\u4ec0\u4e48\u8fd9\u4e48\u505a\uff1f\uff08\u6b63\u786e\u6027\u63a8\u5bfc\uff0c\u6291\u6216\u662f\u6574\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u672c\u8d28\uff09 \u5982\u4f55\u5b9e\u73b0\u5b83\uff1f\uff08\u5149\u5b66\u4e0d\u7528\u5047\u628a\u5f0f\uff09 \u7528\u5b83\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff08\u5b66\u4ee5\u81f4\u7528\u624d\u662f\u771f\u672c\u4e8b\uff09 \u8fd9\u95e8\u8bfe\u7684\u6784\u6210\u5c31\u975e\u5e38\u597d\u5730\u5951\u5408\u4e86\u4e0a\u8ff0\u4e09\u4e2a\u6b65\u9aa4\u3002\u89c2\u770b\u8bfe\u7a0b\u89c6\u9891\u5e76\u4e14\u9605\u8bfb\u6559\u6388\u7684 \u5f00\u6e90\u8bfe\u672c \u6709\u52a9\u4e8e\u4f60\u7406\u89e3\u7b97\u6cd5\u7684\u672c\u8d28\uff0c\u8ba9\u4f60\u4e5f\u53ef\u4ee5\u7528\u975e\u5e38 \u751f\u52a8\u6d45\u663e\u7684\u8bdd\u8bed\u5411\u522b\u4eba\u8bb2\u8ff0\u4e3a\u4ec0\u4e48\u8fd9\u4e2a\u7b97\u6cd5\u5f97\u957f\u8fd9\u4e2a\u6837\u5b50\u3002 \u5728\u7406\u89e3\u7b97\u6cd5\u4e4b\u540e\uff0c\u4f60\u53ef\u4ee5\u9605\u8bfb\u6559\u6388\u5bf9\u4e8e\u8bfe\u7a0b\u4e2d\u8bb2\u6388\u7684\u6240\u6709\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u7684 \u4ee3\u7801\u5b9e\u73b0 \u3002 \u6ce8\u610f\uff0c\u8fd9\u4e9b\u5b9e\u73b0\u53ef\u4e0d\u662f demo \u6027\u8d28\u7684\uff0c\u800c\u662f\u5de5\u4e1a\u7ea7\u7684\u9ad8\u6548\u5b9e\u73b0\uff0c\u4ece\u6ce8\u91ca\u5230\u53d8\u91cf\u547d\u540d\u90fd\u975e\u5e38\u4e25\u8c28\uff0c\u6a21\u5757\u5316\u4e5f\u505a\u5f97\u76f8\u5f53\u597d\uff0c\u662f\u8d28\u91cf\u5f88\u9ad8\u7684\u4ee3\u7801\u3002\u6211\u4ece\u8fd9\u4e9b\u4ee3\u7801\u4e2d\u6536\u83b7\u826f\u591a\u3002 \u6700\u540e\uff0c\u5c31\u662f\u8fd9\u95e8\u8bfe\u6700\u6fc0\u52a8\u4eba\u5fc3\u7684\u90e8\u5206\u4e86\uff0c10 \u4e2a\u9ad8\u8d28\u91cf\u7684 Project\uff0c\u5e76\u4e14\u5168\u90fd\u6709\u5b9e\u9645\u95ee\u9898\u7684\u80cc\u666f\u63cf\u8ff0\uff0c\u4e30\u5bcc\u7684\u6d4b\u8bd5\u6837\u4f8b\uff0c\u81ea\u52a8\u7684\u8bc4\u5206\u7cfb\u7edf\uff08\u4ee3\u7801\u98ce\u683c\u4e5f\u662f\u8bc4\u5206\u7684\u4e00\u73af\uff09\u3002\u8ba9\u4f60\u5728\u5b9e\u9645\u751f\u6d3b\u4e2d \u9886\u7565\u7b97\u6cd5\u7684\u9b45\u529b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a Algorithm I , Algorithm II \u8bfe\u7a0b\u89c6\u9891\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://algs4.cs.princeton.edu/home/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10\u4e2aProject\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Princeton-Algorithm - GitHub \u4e2d\u3002","title":"Coursera: Algorithms I & II"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/#coursera-algorithms-i-ii","text":"","title":"Coursera: Algorithms I & II"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aPrinceton \u5148\u4fee\u8981\u6c42\uff1aCS61A \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u8fd9\u662f Coursera \u4e0a\u8bc4\u5206\u6700\u9ad8\u7684\u7b97\u6cd5\u8bfe\u7a0b\u3002Robert Sedgewick \u6559\u6388\u6709\u4e00\u79cd\u9b54\u529b\uff0c\u53ef\u4ee5\u5c06\u65e0\u8bba\u591a\u4e48\u590d\u6742\u7684\u7b97\u6cd5\u8bb2\u5f97\u6781\u4e3a\u751f\u52a8\u6d45\u663e\u3002\u5b9e\u4e0d\u76f8\u7792\uff0c\u56f0\u6270\u6211\u591a\u5e74\u7684 KMP \u4ee5\u53ca\u7f51\u7edc\u6d41\u7b97\u6cd5\u90fd\u662f\u5728\u8fd9\u95e8\u8bfe\u4e0a\u8ba9\u6211\u8305\u585e\u987f\u5f00\u7684\uff0c\u65f6\u9694\u4e24\u5e74\u6211\u751a\u81f3\u8fd8\u80fd\u5199\u51fa\u8fd9\u4e24\u4e2a\u7b97\u6cd5\u7684\u63a8\u5bfc\u4e0e\u8bc1\u660e\u3002 \u4f60\u662f\u5426\u89c9\u5f97\u7b97\u6cd5\u5b66\u4e86\u5c31\u5fd8\u5462\uff1f\u6211\u89c9\u5f97\u8ba9\u4f60\u5b8c\u5168\u638c\u63e1\u4e00\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u5728\u4e8e\u7406\u89e3\u4e09\u70b9\uff1a \u4e3a\u4ec0\u4e48\u8fd9\u4e48\u505a\uff1f\uff08\u6b63\u786e\u6027\u63a8\u5bfc\uff0c\u6291\u6216\u662f\u6574\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u672c\u8d28\uff09 \u5982\u4f55\u5b9e\u73b0\u5b83\uff1f\uff08\u5149\u5b66\u4e0d\u7528\u5047\u628a\u5f0f\uff09 \u7528\u5b83\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff08\u5b66\u4ee5\u81f4\u7528\u624d\u662f\u771f\u672c\u4e8b\uff09 \u8fd9\u95e8\u8bfe\u7684\u6784\u6210\u5c31\u975e\u5e38\u597d\u5730\u5951\u5408\u4e86\u4e0a\u8ff0\u4e09\u4e2a\u6b65\u9aa4\u3002\u89c2\u770b\u8bfe\u7a0b\u89c6\u9891\u5e76\u4e14\u9605\u8bfb\u6559\u6388\u7684 \u5f00\u6e90\u8bfe\u672c \u6709\u52a9\u4e8e\u4f60\u7406\u89e3\u7b97\u6cd5\u7684\u672c\u8d28\uff0c\u8ba9\u4f60\u4e5f\u53ef\u4ee5\u7528\u975e\u5e38 \u751f\u52a8\u6d45\u663e\u7684\u8bdd\u8bed\u5411\u522b\u4eba\u8bb2\u8ff0\u4e3a\u4ec0\u4e48\u8fd9\u4e2a\u7b97\u6cd5\u5f97\u957f\u8fd9\u4e2a\u6837\u5b50\u3002 \u5728\u7406\u89e3\u7b97\u6cd5\u4e4b\u540e\uff0c\u4f60\u53ef\u4ee5\u9605\u8bfb\u6559\u6388\u5bf9\u4e8e\u8bfe\u7a0b\u4e2d\u8bb2\u6388\u7684\u6240\u6709\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u7684 \u4ee3\u7801\u5b9e\u73b0 \u3002 \u6ce8\u610f\uff0c\u8fd9\u4e9b\u5b9e\u73b0\u53ef\u4e0d\u662f demo \u6027\u8d28\u7684\uff0c\u800c\u662f\u5de5\u4e1a\u7ea7\u7684\u9ad8\u6548\u5b9e\u73b0\uff0c\u4ece\u6ce8\u91ca\u5230\u53d8\u91cf\u547d\u540d\u90fd\u975e\u5e38\u4e25\u8c28\uff0c\u6a21\u5757\u5316\u4e5f\u505a\u5f97\u76f8\u5f53\u597d\uff0c\u662f\u8d28\u91cf\u5f88\u9ad8\u7684\u4ee3\u7801\u3002\u6211\u4ece\u8fd9\u4e9b\u4ee3\u7801\u4e2d\u6536\u83b7\u826f\u591a\u3002 \u6700\u540e\uff0c\u5c31\u662f\u8fd9\u95e8\u8bfe\u6700\u6fc0\u52a8\u4eba\u5fc3\u7684\u90e8\u5206\u4e86\uff0c10 \u4e2a\u9ad8\u8d28\u91cf\u7684 Project\uff0c\u5e76\u4e14\u5168\u90fd\u6709\u5b9e\u9645\u95ee\u9898\u7684\u80cc\u666f\u63cf\u8ff0\uff0c\u4e30\u5bcc\u7684\u6d4b\u8bd5\u6837\u4f8b\uff0c\u81ea\u52a8\u7684\u8bc4\u5206\u7cfb\u7edf\uff08\u4ee3\u7801\u98ce\u683c\u4e5f\u662f\u8bc4\u5206\u7684\u4e00\u73af\uff09\u3002\u8ba9\u4f60\u5728\u5b9e\u9645\u751f\u6d3b\u4e2d \u9886\u7565\u7b97\u6cd5\u7684\u9b45\u529b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a Algorithm I , Algorithm II \u8bfe\u7a0b\u89c6\u9891\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://algs4.cs.princeton.edu/home/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a10\u4e2aProject\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Princeton-Algorithm - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/","text":"CS170: Efficient Algorithms and Intractable Problems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61B, CS70 \u7f16\u7a0b\u8bed\u8a00\uff1aLaTeX \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u7b97\u6cd5\u8bbe\u8ba1\u8bfe\uff0c\u66f4\u6ce8\u91cd\u7b97\u6cd5\u7684\u7406\u8bba\u57fa\u7840\u4e0e\u590d\u6742\u5ea6\u5206\u6790\u3002\u8bfe\u7a0b\u5185\u5bb9\u6db5\u76d6\u4e86\u5206\u6cbb\u3001\u56fe\u7b97\u6cd5\u3001\u6700\u77ed\u8def\u3001\u751f\u6210\u6811\u3001\u8d2a\u5fc3\u3001\u52a8\u89c4\u3001\u5e76\u67e5\u96c6\u3001\u7ebf\u6027\u89c4\u5212\u3001\u7f51\u7edc\u6d41\u3001NP \u95ee\u9898\u3001\u968f\u673a\u7b97\u6cd5\u3001\u54c8\u5e0c\u7b97\u6cd5\u7b49\u7b49\u3002 \u8fd9\u95e8\u8bfe\u7684\u6559\u6750\u5199\u7684\u5f88\u597d\uff0c\u8bc1\u660e\u6d45\u663e\u6613\u61c2\uff0c\u975e\u5e38\u9002\u5408\u4f5c\u4e3a\u5de5\u5177\u4e66\u67e5\u9605\u3002\u53e6\u5916\uff0c\u8fd9\u95e8\u8bfe\u53ea\u6709\u4e66\u9762\u4f5c\u4e1a\uff0c\u5e76\u4e14\u63a8\u8350\u7528 LaTeX \u7f16\u5199\uff0c\u5927\u5bb6\u53ef\u4ee5\u501f\u6b64\u673a\u4f1a\u953b\u70bc\u81ea\u5df1\u7684 LaTeX \u6280\u5de7\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs170.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1BU4y1b7RK \u8bfe\u7a0b\u6559\u6750\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a13 \u6b21\u4e66\u9762\u4f5c\u4e1a\uff0c\u7528 LaTeX \u7f16\u5199 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS170 - GitHub \u4e2d\u3002","title":"UCB CS170: Efficient Algorithms and Intractable Problems"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/#cs170-efficient-algorithms-and-intractable-problems","text":"","title":"CS170: Efficient Algorithms and Intractable Problems"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61B, CS70 \u7f16\u7a0b\u8bed\u8a00\uff1aLaTeX \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u7b97\u6cd5\u8bbe\u8ba1\u8bfe\uff0c\u66f4\u6ce8\u91cd\u7b97\u6cd5\u7684\u7406\u8bba\u57fa\u7840\u4e0e\u590d\u6742\u5ea6\u5206\u6790\u3002\u8bfe\u7a0b\u5185\u5bb9\u6db5\u76d6\u4e86\u5206\u6cbb\u3001\u56fe\u7b97\u6cd5\u3001\u6700\u77ed\u8def\u3001\u751f\u6210\u6811\u3001\u8d2a\u5fc3\u3001\u52a8\u89c4\u3001\u5e76\u67e5\u96c6\u3001\u7ebf\u6027\u89c4\u5212\u3001\u7f51\u7edc\u6d41\u3001NP \u95ee\u9898\u3001\u968f\u673a\u7b97\u6cd5\u3001\u54c8\u5e0c\u7b97\u6cd5\u7b49\u7b49\u3002 \u8fd9\u95e8\u8bfe\u7684\u6559\u6750\u5199\u7684\u5f88\u597d\uff0c\u8bc1\u660e\u6d45\u663e\u6613\u61c2\uff0c\u975e\u5e38\u9002\u5408\u4f5c\u4e3a\u5de5\u5177\u4e66\u67e5\u9605\u3002\u53e6\u5916\uff0c\u8fd9\u95e8\u8bfe\u53ea\u6709\u4e66\u9762\u4f5c\u4e1a\uff0c\u5e76\u4e14\u63a8\u8350\u7528 LaTeX \u7f16\u5199\uff0c\u5927\u5bb6\u53ef\u4ee5\u501f\u6b64\u673a\u4f1a\u953b\u70bc\u81ea\u5df1\u7684 LaTeX \u6280\u5de7\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs170.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1BU4y1b7RK \u8bfe\u7a0b\u6559\u6750\uff1a\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a13 \u6b21\u4e66\u9762\u4f5c\u4e1a\uff0c\u7528 LaTeX \u7f16\u5199","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS170 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/","text":"CS61B: Data Structures and Algorithms \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u7b2c\u4e8c\u95e8\u8bfe\u7a0b\uff0c\u6ce8\u91cd\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u7684\u8bbe\u8ba1\uff0c\u540c\u65f6\u8ba9\u5b66\u751f\u6709\u673a\u4f1a\u63a5\u89e6\u4e0a\u5343\u884c\u7684\u5de5\u7a0b\u4ee3\u7801\uff0c\u901a\u8fc7 Java \u521d\u6b65\u9886\u4f1a\u8f6f\u4ef6\u5de5\u7a0b\u7684\u601d\u60f3\u3002 \u6211\u4e0a\u7684\u662f 2018 \u5e74\u6625\u5b63\u5b66\u671f\u7684\u7248\u672c\uff0c\u8be5\u8bfe\u7684\u5f00\u8bfe\u8001\u5e08 Josh Hug \u6559\u6388\u6177\u6168\u5730\u5c06 autograder \u5f00\u6e90\u4e86\uff0c\u5927\u5bb6\u53ef\u4ee5\u901a\u8fc7\u7f51\u7ad9\u516c\u5f00\u7684\u9080\u8bf7\u7801\u5728 gradescope \u514d\u8d39\u52a0\u5165\u8bfe\u7a0b\uff0c\u4ece\u800c\u65b9\u4fbf\u5730\u6d4b\u8bc4\u81ea\u5df1\u7684\u4ee3\u7801\u3002 \u8fd9\u95e8\u8bfe\u6240\u6709\u7684\u7f16\u7a0b\u4f5c\u4e1a\u90fd\u662f\u4f7f\u7528 Java \u5b8c\u6210\u7684\u3002\u6ca1\u6709 Java \u57fa\u7840\u7684\u540c\u5b66\u4e5f\u4e0d\u7528\u62c5\u5fc3\uff0c\u8bfe\u7a0b\u4f1a\u6709\u4fdd\u59c6\u7ea7\u7684\u6559\u7a0b\uff0c\u4ece IDEA\uff08\u4e00\u6b3e\u4e3b\u6d41\u7684 Java \u7f16\u7a0b\u73af\u5883\uff09\u7684\u914d\u7f6e\u8bb2\u8d77\uff0c\u628a Java \u7684\u6838\u5fc3\u8bed\u6cd5\u4e0e\u7279\u6027\u4e8b\u65e0\u5de8\u7ec6\u5730\u8bb2\u6388\uff0c\u5927\u5bb6\u5b8c\u5168\u4e0d\u7528\u62c5\u5fc3\u8ddf\u4e0d\u4e0a\u7684\u95ee\u9898\u3002 \u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u8d28\u91cf\u4e5f\u662f\u7edd\u7edd\u5b50\u300214 \u4e2a lab \u4f1a\u8ba9\u4f60\u81ea\u5df1\u5b9e\u73b0\u8bfe\u4e0a\u6240\u8bb2\u7684\u7edd\u5927\u90e8\u5206\u6570\u636e\u7ed3\u6784\uff0c10 \u4e2a Homework \u4f1a\u8ba9\u4f60\u8fd0\u7528\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff0c \u53e6\u5916\u8fd8\u6709 3 \u4e2a Project \u66f4\u662f\u8ba9\u4f60\u6709\u673a\u4f1a\u63a5\u89e6\u4e0a\u5343\u884c\u7684\u5de5\u7a0b\u4ee3\u7801\uff0c\u5728\u5b9e\u6218\u4e2d\u78e8\u7ec3\u81ea\u5df1\u7684 Java \u80fd\u529b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://sp18.datastructur.es/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://sp18.datastructur.es/ \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u6bcf\u5e74\u7565\u6709\u4e0d\u540c\uff0c18 \u5e74\u6625\u5b63\u5b66\u671f\u6709 14 \u4e2a Lab\uff0c10 \u4e2a Homework\u4ee5\u53ca 3 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS61B - GitHub \u4e2d\u3002","title":"UCB CS61B: Data Structures and Algorithms"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/#cs61b-data-structures-and-algorithms","text":"","title":"CS61B: Data Structures and Algorithms"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u7b2c\u4e8c\u95e8\u8bfe\u7a0b\uff0c\u6ce8\u91cd\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u7684\u8bbe\u8ba1\uff0c\u540c\u65f6\u8ba9\u5b66\u751f\u6709\u673a\u4f1a\u63a5\u89e6\u4e0a\u5343\u884c\u7684\u5de5\u7a0b\u4ee3\u7801\uff0c\u901a\u8fc7 Java \u521d\u6b65\u9886\u4f1a\u8f6f\u4ef6\u5de5\u7a0b\u7684\u601d\u60f3\u3002 \u6211\u4e0a\u7684\u662f 2018 \u5e74\u6625\u5b63\u5b66\u671f\u7684\u7248\u672c\uff0c\u8be5\u8bfe\u7684\u5f00\u8bfe\u8001\u5e08 Josh Hug \u6559\u6388\u6177\u6168\u5730\u5c06 autograder \u5f00\u6e90\u4e86\uff0c\u5927\u5bb6\u53ef\u4ee5\u901a\u8fc7\u7f51\u7ad9\u516c\u5f00\u7684\u9080\u8bf7\u7801\u5728 gradescope \u514d\u8d39\u52a0\u5165\u8bfe\u7a0b\uff0c\u4ece\u800c\u65b9\u4fbf\u5730\u6d4b\u8bc4\u81ea\u5df1\u7684\u4ee3\u7801\u3002 \u8fd9\u95e8\u8bfe\u6240\u6709\u7684\u7f16\u7a0b\u4f5c\u4e1a\u90fd\u662f\u4f7f\u7528 Java \u5b8c\u6210\u7684\u3002\u6ca1\u6709 Java \u57fa\u7840\u7684\u540c\u5b66\u4e5f\u4e0d\u7528\u62c5\u5fc3\uff0c\u8bfe\u7a0b\u4f1a\u6709\u4fdd\u59c6\u7ea7\u7684\u6559\u7a0b\uff0c\u4ece IDEA\uff08\u4e00\u6b3e\u4e3b\u6d41\u7684 Java \u7f16\u7a0b\u73af\u5883\uff09\u7684\u914d\u7f6e\u8bb2\u8d77\uff0c\u628a Java \u7684\u6838\u5fc3\u8bed\u6cd5\u4e0e\u7279\u6027\u4e8b\u65e0\u5de8\u7ec6\u5730\u8bb2\u6388\uff0c\u5927\u5bb6\u5b8c\u5168\u4e0d\u7528\u62c5\u5fc3\u8ddf\u4e0d\u4e0a\u7684\u95ee\u9898\u3002 \u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u8d28\u91cf\u4e5f\u662f\u7edd\u7edd\u5b50\u300214 \u4e2a lab \u4f1a\u8ba9\u4f60\u81ea\u5df1\u5b9e\u73b0\u8bfe\u4e0a\u6240\u8bb2\u7684\u7edd\u5927\u90e8\u5206\u6570\u636e\u7ed3\u6784\uff0c10 \u4e2a Homework \u4f1a\u8ba9\u4f60\u8fd0\u7528\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff0c \u53e6\u5916\u8fd8\u6709 3 \u4e2a Project \u66f4\u662f\u8ba9\u4f60\u6709\u673a\u4f1a\u63a5\u89e6\u4e0a\u5343\u884c\u7684\u5de5\u7a0b\u4ee3\u7801\uff0c\u5728\u5b9e\u6218\u4e2d\u78e8\u7ec3\u81ea\u5df1\u7684 Java \u80fd\u529b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://sp18.datastructur.es/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://sp18.datastructur.es/ \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u6bcf\u5e74\u7565\u6709\u4e0d\u540c\uff0c18 \u5e74\u6625\u5b63\u5b66\u671f\u6709 14 \u4e2a Lab\uff0c10 \u4e2a Homework\u4ee5\u53ca 3 \u4e2a Project\uff0c\u5177\u4f53\u8981\u6c42\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS61B - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/","text":"CS189: Introduction to Machine Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS188, CS70 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u6211\u6ca1\u6709\u7cfb\u7edf\u4e0a\u8fc7\uff0c\u53ea\u662f\u628a\u5b83\u7684\u8bfe\u7a0b notes \u4f5c\u4e3a\u5de5\u5177\u4e66\u67e5\u9605\u3002\u4e0d\u8fc7\u4ece\u8bfe\u7a0b\u7f51\u7ad9\u4e0a\u6765\u770b\uff0c\u5b83\u6bd4 CS229 \u597d\u7684\u662f\u5f00\u6e90\u4e86\u6240\u6709 homework \u7684\u4ee3\u7801\u4ee5\u53ca gradescope \u7684 autograder\u3002\u540c\u6837\uff0c\u8fd9\u95e8\u8bfe\u8bb2\u5f97\u76f8\u5f53\u7406\u8bba\u4e14\u6df1\u5165\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.eecs189.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PLOOm2AoWIPEyZazQVnIcaK2KnezpGZV-X \u8bfe\u7a0b\u6559\u6750\uff1a https://www.eecs189.org/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://www.eecs189.org/","title":"UCB CS189: Introduction to Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/#cs189-introduction-to-machine-learning","text":"","title":"CS189: Introduction to Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS188, CS70 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u6211\u6ca1\u6709\u7cfb\u7edf\u4e0a\u8fc7\uff0c\u53ea\u662f\u628a\u5b83\u7684\u8bfe\u7a0b notes \u4f5c\u4e3a\u5de5\u5177\u4e66\u67e5\u9605\u3002\u4e0d\u8fc7\u4ece\u8bfe\u7a0b\u7f51\u7ad9\u4e0a\u6765\u770b\uff0c\u5b83\u6bd4 CS229 \u597d\u7684\u662f\u5f00\u6e90\u4e86\u6240\u6709 homework \u7684\u4ee3\u7801\u4ee5\u53ca gradescope \u7684 autograder\u3002\u540c\u6837\uff0c\u8fd9\u95e8\u8bfe\u8bb2\u5f97\u76f8\u5f53\u7406\u8bba\u4e14\u6df1\u5165\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.eecs189.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PLOOm2AoWIPEyZazQVnIcaK2KnezpGZV-X \u8bfe\u7a0b\u6559\u6750\uff1a https://www.eecs189.org/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://www.eecs189.org/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/","text":"CS229: Machine Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u9ad8\u6570\uff0c\u6982\u7387\u8bba\uff0cPython\uff0c\u9700\u8981\u8f83\u6df1\u539a\u7684\u6570\u5b66\u529f\u5e95 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u540c\u6837\u662f\u5434\u6069\u8fbe\u8bb2\u6388\uff0c\u4f46\u662f\u8fd9\u662f\u4e00\u95e8\u7814\u7a76\u751f\u8bfe\u7a0b\uff0c\u6240\u4ee5\u66f4\u504f\u91cd\u6570\u5b66\u7406\u8bba\uff0c\u4e0d\u6ee1\u8db3\u4e8e\u8c03\u5305\u800c\u60f3\u6df1\u5165\u7406\u89e3\u7b97\u6cd5\u672c\u8d28\uff0c\u6216\u8005\u6709\u5fd7\u4e8e\u4ece\u4e8b\u673a\u5668\u5b66\u4e60\u7406\u8bba\u7814\u7a76\u7684\u540c\u5b66\u53ef\u4ee5\u5b66\u4e60\u8fd9\u95e8\u8bfe\u7a0b\u3002\u8bfe\u7a0b\u7f51\u7ad9\u4e0a\u63d0\u4f9b\u4e86\u6240\u6709\u7684\u8bfe\u7a0b notes\uff0c\u5199\u5f97\u975e\u5e38\u4e13\u4e1a\u4e14\u7406\u8bba\uff0c\u9700\u8981\u4e00\u5b9a\u7684\u6570\u5b66\u529f\u5e95\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://cs229.stanford.edu/syllabus.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1JE411w7Ub \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0\uff0c\u8bfe\u7a0b notes \u5199\u5f97\u975e\u5e38\u597d \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e0d\u5bf9\u516c\u4f17\u5f00\u653e \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS229 - GitHub \u4e2d\u3002","title":"Stanford CS229: Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/#cs229-machine-learning","text":"","title":"CS229: Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u9ad8\u6570\uff0c\u6982\u7387\u8bba\uff0cPython\uff0c\u9700\u8981\u8f83\u6df1\u539a\u7684\u6570\u5b66\u529f\u5e95 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u540c\u6837\u662f\u5434\u6069\u8fbe\u8bb2\u6388\uff0c\u4f46\u662f\u8fd9\u662f\u4e00\u95e8\u7814\u7a76\u751f\u8bfe\u7a0b\uff0c\u6240\u4ee5\u66f4\u504f\u91cd\u6570\u5b66\u7406\u8bba\uff0c\u4e0d\u6ee1\u8db3\u4e8e\u8c03\u5305\u800c\u60f3\u6df1\u5165\u7406\u89e3\u7b97\u6cd5\u672c\u8d28\uff0c\u6216\u8005\u6709\u5fd7\u4e8e\u4ece\u4e8b\u673a\u5668\u5b66\u4e60\u7406\u8bba\u7814\u7a76\u7684\u540c\u5b66\u53ef\u4ee5\u5b66\u4e60\u8fd9\u95e8\u8bfe\u7a0b\u3002\u8bfe\u7a0b\u7f51\u7ad9\u4e0a\u63d0\u4f9b\u4e86\u6240\u6709\u7684\u8bfe\u7a0b notes\uff0c\u5199\u5f97\u975e\u5e38\u4e13\u4e1a\u4e14\u7406\u8bba\uff0c\u9700\u8981\u4e00\u5b9a\u7684\u6570\u5b66\u529f\u5e95\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://cs229.stanford.edu/syllabus.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1JE411w7Ub \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0\uff0c\u8bfe\u7a0b notes \u5199\u5f97\u975e\u5e38\u597d \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e0d\u5bf9\u516c\u4f17\u5f00\u653e","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS229 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/","text":"Coursera: Machine Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aAI \u5165\u95e8 + \u719f\u7ec3\u4f7f\u7528 Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8bf4\u8d77\u5434\u6069\u8fbe\uff0c\u5728 AI \u5c4a\u5e94\u8be5\u65e0\u4eba\u4e0d\u6653\u3002\u4ed6\u662f\u8457\u540d\u5728\u7ebf\u6559\u80b2\u5e73\u53f0 Coursera \u7684\u521b\u59cb\u4eba\u4e4b\u4e00\uff0c\u540c\u65f6\u4e5f\u662f Stanford \u7684\u7f51\u7ea2\u6559\u6388\u3002\u8fd9\u95e8\u673a\u5668\u5b66\u4e60\u5165\u95e8\u8bfe\u5e94\u8be5\u7b97\u5f97\u4e0a\u662f\u4ed6\u7684\u6210\u540d\u4f5c\u4e4b\u4e00\uff08\u53e6\u4e00\u4e2a\u662f\u6df1\u5ea6\u5b66\u4e60\u8bfe\u7a0b\uff09\uff0c\u5728 Coursera \u4e0a\u62e5\u6709\u6570\u5341\u4e07\u7684\u5b66\u4e60\u8005\uff08\u6ce8\u610f\u8fd9\u662f\u82b1\u94b1\u4e70\u4e86\u8bc1\u4e66\u7684\u4eba\uff0c\u4e00\u4e2a\u8bc1\u4e66\u51e0\u767e\u5200\uff09\uff0c\u767d\u5ad6\u5b66\u4e60\u8005\u6570\u91cf\u5e94\u8be5\u662f\u53e6\u4e00\u4e2a\u6570\u91cf\u7ea7\u4e86\u3002 \u8fd9\u95e8\u8bfe\u5bf9\u65b0\u624b\u6781\u5176\u53cb\u597d\uff0c\u5434\u6069\u8fbe\u62e5\u6709\u628a\u673a\u5668\u5b66\u4e60\u8bb2\u6210 1+1=2 \u4e00\u6837\u76f4\u767d\u7684\u80fd\u529b\u3002\u4f60\u5c06\u4f1a\u5b66\u4e60\u5230\u7ebf\u6027\u56de\u5f52\u3001\u903b\u8f91\u56de\u5f52\u3001\u652f\u6301\u5411\u91cf\u673a\u3001\u65e0\u76d1\u7763\u5b66\u4e60\u3001\u964d\u7ef4\u3001\u5f02\u5e38\u68c0\u6d4b\u548c\u63a8\u8350\u7cfb\u7edf\u7b49\u7b49\u77e5\u8bc6\uff0c\u5e76\u4e14\u5728\u7f16\u7a0b\u5b9e\u8df5\u4e2d\u592f\u5b9e\u81ea\u5df1\u7684\u7406\u89e3\u3002\u4f5c\u4e1a\u8d28\u91cf\u81ea\u7136\u4e0d\u5fc5\u591a\u8a00\uff0c\u4fdd\u59c6\u7ea7\u4ee3\u7801\u6846\u67b6\uff0c\u4f5c\u4e1a\u80cc\u666f\u4e5f\u591a\u53d6\u81ea\u751f\u6d3b\uff0c\u8ba9\u4eba\u5b66\u4ee5\u81f4\u7528\u3002 \u5f53\u7136\uff0c\u8fd9\u95e8\u8bfe\u4f5c\u4e3a\u4e00\u4e2a\u516c\u5f00\u6155\u8bfe\uff0c\u96be\u5ea6\u4e0a\u523b\u610f\u653e\u4f4e\u4e86\u4e9b\uff0c\u5f88\u591a\u6570\u5b66\u63a8\u5bfc\u5927\u591a\u4e00\u5e26\u800c\u8fc7\uff0c\u5982\u679c\u4f60\u6709\u5fd7\u4e8e\u4ece\u4e8b\u673a\u5668\u5b66\u4e60\u7406\u8bba\u7814\u7a76\uff0c\u60f3\u8981\u6df1\u7a76\u8fd9\u4e9b\u7b97\u6cd5\u80cc\u540e\u7684\u6570\u5b66\u7406\u8bba\uff0c\u53ef\u4ee5\u53c2\u8003 CS229 \u548c CS189 \u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/learn/machine-learning \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8d44\u6e90\u6c47\u603b \u5f53\u65f6\u91cd\u88c5\u7cfb\u7edf\u8bef\u5220\u4e86\u6587\u4ef6\uff0c\u6211\u7684\u4ee3\u7801\u5b9e\u73b0\u6d88\u5931\u5728\u4e86\u78c1\u76d8\u7684 01 \u4e32\u4e2d\u3002\u4e0d\u8fc7\u8fd9\u95e8\u8bfe\u7531\u4e8e\u592a\u8fc7\u51fa\u540d\uff0c\u7f51\u4e0a\u60f3\u641c\u4e0d\u5230\u7b54\u6848\u90fd\u96be\uff0c\u76f8\u5173\u8bfe\u7a0b\u8d44\u6599 Coursera \u4e0a\u4e5f\u4e00\u5e94\u4ff1\u5168\u3002","title":"Coursera: Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/#coursera-machine-learning","text":"","title":"Coursera: Machine Learning"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aAI \u5165\u95e8 + \u719f\u7ec3\u4f7f\u7528 Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8bf4\u8d77\u5434\u6069\u8fbe\uff0c\u5728 AI \u5c4a\u5e94\u8be5\u65e0\u4eba\u4e0d\u6653\u3002\u4ed6\u662f\u8457\u540d\u5728\u7ebf\u6559\u80b2\u5e73\u53f0 Coursera \u7684\u521b\u59cb\u4eba\u4e4b\u4e00\uff0c\u540c\u65f6\u4e5f\u662f Stanford \u7684\u7f51\u7ea2\u6559\u6388\u3002\u8fd9\u95e8\u673a\u5668\u5b66\u4e60\u5165\u95e8\u8bfe\u5e94\u8be5\u7b97\u5f97\u4e0a\u662f\u4ed6\u7684\u6210\u540d\u4f5c\u4e4b\u4e00\uff08\u53e6\u4e00\u4e2a\u662f\u6df1\u5ea6\u5b66\u4e60\u8bfe\u7a0b\uff09\uff0c\u5728 Coursera \u4e0a\u62e5\u6709\u6570\u5341\u4e07\u7684\u5b66\u4e60\u8005\uff08\u6ce8\u610f\u8fd9\u662f\u82b1\u94b1\u4e70\u4e86\u8bc1\u4e66\u7684\u4eba\uff0c\u4e00\u4e2a\u8bc1\u4e66\u51e0\u767e\u5200\uff09\uff0c\u767d\u5ad6\u5b66\u4e60\u8005\u6570\u91cf\u5e94\u8be5\u662f\u53e6\u4e00\u4e2a\u6570\u91cf\u7ea7\u4e86\u3002 \u8fd9\u95e8\u8bfe\u5bf9\u65b0\u624b\u6781\u5176\u53cb\u597d\uff0c\u5434\u6069\u8fbe\u62e5\u6709\u628a\u673a\u5668\u5b66\u4e60\u8bb2\u6210 1+1=2 \u4e00\u6837\u76f4\u767d\u7684\u80fd\u529b\u3002\u4f60\u5c06\u4f1a\u5b66\u4e60\u5230\u7ebf\u6027\u56de\u5f52\u3001\u903b\u8f91\u56de\u5f52\u3001\u652f\u6301\u5411\u91cf\u673a\u3001\u65e0\u76d1\u7763\u5b66\u4e60\u3001\u964d\u7ef4\u3001\u5f02\u5e38\u68c0\u6d4b\u548c\u63a8\u8350\u7cfb\u7edf\u7b49\u7b49\u77e5\u8bc6\uff0c\u5e76\u4e14\u5728\u7f16\u7a0b\u5b9e\u8df5\u4e2d\u592f\u5b9e\u81ea\u5df1\u7684\u7406\u89e3\u3002\u4f5c\u4e1a\u8d28\u91cf\u81ea\u7136\u4e0d\u5fc5\u591a\u8a00\uff0c\u4fdd\u59c6\u7ea7\u4ee3\u7801\u6846\u67b6\uff0c\u4f5c\u4e1a\u80cc\u666f\u4e5f\u591a\u53d6\u81ea\u751f\u6d3b\uff0c\u8ba9\u4eba\u5b66\u4ee5\u81f4\u7528\u3002 \u5f53\u7136\uff0c\u8fd9\u95e8\u8bfe\u4f5c\u4e3a\u4e00\u4e2a\u516c\u5f00\u6155\u8bfe\uff0c\u96be\u5ea6\u4e0a\u523b\u610f\u653e\u4f4e\u4e86\u4e9b\uff0c\u5f88\u591a\u6570\u5b66\u63a8\u5bfc\u5927\u591a\u4e00\u5e26\u800c\u8fc7\uff0c\u5982\u679c\u4f60\u6709\u5fd7\u4e8e\u4ece\u4e8b\u673a\u5668\u5b66\u4e60\u7406\u8bba\u7814\u7a76\uff0c\u60f3\u8981\u6df1\u7a76\u8fd9\u4e9b\u7b97\u6cd5\u80cc\u540e\u7684\u6570\u5b66\u7406\u8bba\uff0c\u53ef\u4ee5\u53c2\u8003 CS229 \u548c CS189 \u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/learn/machine-learning \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/#_3","text":"\u5f53\u65f6\u91cd\u88c5\u7cfb\u7edf\u8bef\u5220\u4e86\u6587\u4ef6\uff0c\u6211\u7684\u4ee3\u7801\u5b9e\u73b0\u6d88\u5931\u5728\u4e86\u78c1\u76d8\u7684 01 \u4e32\u4e2d\u3002\u4e0d\u8fc7\u8fd9\u95e8\u8bfe\u7531\u4e8e\u592a\u8fc7\u51fa\u540d\uff0c\u7f51\u4e0a\u60f3\u641c\u4e0d\u5230\u7b54\u6848\u90fd\u96be\uff0c\u76f8\u5173\u8bfe\u7a0b\u8d44\u6599 Coursera \u4e0a\u4e5f\u4e00\u5e94\u4ff1\u5168\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/","text":"CMU 10-414/714: Deep Learning Systems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1a\u7cfb\u7edf\u5165\u95e8(eg.15-213)\u3001\u6df1\u5ea6\u5b66\u4e60\u5165\u95e8\u3001\u57fa\u672c\u7684\u6570\u5b66\u77e5\u8bc6 \u7f16\u7a0b\u8bed\u8a00\uff1aN/A\uff08\u636e\u8bfe\u7a0b\u4e3b\u9875\uff0c\u8981\u6c42\u719f\u6089Python\u3001C/C++\uff09 \u8bfe\u7a0b\u96be\u5ea6\uff1aN/A \u9884\u8ba1\u5b66\u65f6\uff1aN/A \u8fd9\u662f CMU 2022\u5e74\u79cb\u5b63\u5b66\u671f\u5f00\u8bbe\u7684\u4e00\u95e8\u65b0\u8bfe\uff0c\u805a\u7126\u4e8e\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u8bfe\u7a0b Project \u4f1a\u5b9e\u73b0\u4e00\u4e2a\u8ff7\u4f60\u7684\u7c7b\u4f3c\u4e8e Pytorch \u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\u8bfe\u7a0b\u514d\u8d39\u63d0\u4f9b\u4e86\u9762\u5411\u975e CMU \u5b66\u751f\u7684\u5728\u7ebf\u7248\u672c\uff0c9\u670813\u65e5\u6b63\u5f0f\u6388\u8bfe\uff0c\u4f5c\u8005\u6301\u7eed\u8ddf\u8fdb\u4e2d\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://dlsyscourse.org \u8bfe\u7a0b\u89c6\u9891\uff1aN/A \u8bfe\u7a0b\u6559\u6750\uff1aN/A \u8bfe\u7a0b\u4f5c\u4e1a\uff1aTBA \u8d44\u6e90\u6c47\u603b TBA","title":"CMU 10-414/714: Deep Learning Systems"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/#cmu-10-414714-deep-learning-systems","text":"","title":"CMU 10-414/714: Deep Learning Systems"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1a\u7cfb\u7edf\u5165\u95e8(eg.15-213)\u3001\u6df1\u5ea6\u5b66\u4e60\u5165\u95e8\u3001\u57fa\u672c\u7684\u6570\u5b66\u77e5\u8bc6 \u7f16\u7a0b\u8bed\u8a00\uff1aN/A\uff08\u636e\u8bfe\u7a0b\u4e3b\u9875\uff0c\u8981\u6c42\u719f\u6089Python\u3001C/C++\uff09 \u8bfe\u7a0b\u96be\u5ea6\uff1aN/A \u9884\u8ba1\u5b66\u65f6\uff1aN/A \u8fd9\u662f CMU 2022\u5e74\u79cb\u5b63\u5b66\u671f\u5f00\u8bbe\u7684\u4e00\u95e8\u65b0\u8bfe\uff0c\u805a\u7126\u4e8e\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u8bfe\u7a0b Project \u4f1a\u5b9e\u73b0\u4e00\u4e2a\u8ff7\u4f60\u7684\u7c7b\u4f3c\u4e8e Pytorch \u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\u8bfe\u7a0b\u514d\u8d39\u63d0\u4f9b\u4e86\u9762\u5411\u975e CMU \u5b66\u751f\u7684\u5728\u7ebf\u7248\u672c\uff0c9\u670813\u65e5\u6b63\u5f0f\u6388\u8bfe\uff0c\u4f5c\u8005\u6301\u7eed\u8ddf\u8fdb\u4e2d\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://dlsyscourse.org \u8bfe\u7a0b\u89c6\u9891\uff1aN/A \u8bfe\u7a0b\u6559\u6750\uff1aN/A \u8bfe\u7a0b\u4f5c\u4e1a\uff1aTBA","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/#_3","text":"TBA","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/","text":"Machine Learning Compilation \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aBilibili \u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60/\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30\u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u662f\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u9886\u57df\u7684\u9876\u5c16\u5b66\u8005\u9648\u5929\u5947\u57282022\u5e74\u6691\u671f\u5f00\u8bbe\u7684\u4e00\u95e8\u5728\u7ebf\u8bfe\u7a0b\u3002\u5176\u5b9e\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u65e0\u8bba\u5728\u5de5\u4e1a\u754c\u8fd8\u662f\u5b66\u672f\u754c\u4ecd\u7136\u662f\u4e00\u4e2a\u975e\u5e38\u524d\u6cbf\u4e14\u5feb\u901f\u66f4\u8fed\u7684\u9886\u57df\uff0c\u56fd\u5185\u5916\u6b64\u524d\u8fd8\u6ca1\u6709\u4e3a\u8fd9\u4e2a\u65b9\u5411\u4e13\u95e8\u5f00\u8bbe\u7684\u76f8\u5173\u8bfe\u7a0b\u3002\u56e0\u6b64\u5982\u679c\u5bf9\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u611f\u5174\u8da3\u60f3\u6709\u4e2a\u5168\u8c8c\u6027\u7684\u611f\u77e5\u7684\u8bdd\uff0c\u53ef\u4ee5\u5b66\u4e60\u4e00\u4e0b\u8fd9\u95e8\u8bfe\u3002 \u672c\u8bfe\u7a0b\u4e3b\u8981\u4ee5 Apache TVM \u8fd9\u4e00\u4e3b\u6d41\u7684\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u6846\u67b6\u4e3a\u4f8b\uff08\u9648\u5929\u5947\u662f\u8fd9\u4e2a\u6846\u67b6\u7684\u521b\u59cb\u4eba\u4e4b\u4e00\uff09\uff0c\u805a\u7126\u4e8e\u5982\u4f55\u5c06\u5f00\u53d1\u6a21\u5f0f\u4e0b\uff08\u5982 Tensorflow, Pytorch, Jax\uff09\u7684\u5404\u7c7b\u673a\u5668\u5b66\u4e60\u6a21\u578b\uff0c\u901a\u8fc7\u4e00\u5957\u666e\u9002\u7684\u62bd\u8c61\u548c\u4f18\u5316\u7b97\u6cd5\uff0c\u53d8\u6362\u4e3a\u62e5\u6709\u66f4\u9ad8\u6027\u80fd\u5e76\u4e14\u9002\u914d\u5404\u7c7b\u5e95\u5c42\u786c\u4ef6\u7684\u90e8\u7f72\u6a21\u5f0f\u3002\u8bfe\u7a0b\u8bb2\u6388\u7684\u77e5\u8bc6\u70b9\u90fd\u662f\u76f8\u5bf9 High-Level \u7684\u5b8f\u89c2\u6982\u5ff5\uff0c\u540c\u65f6\u6bcf\u8282\u8bfe\u90fd\u4f1a\u6709\u4e00\u4e2a\u914d\u5957\u7684 Jupyter Notebook \u6765\u901a\u8fc7\u5177\u4f53\u7684\u4ee3\u7801\u8bb2\u89e3\u77e5\u8bc6\u70b9\uff0c\u56e0\u6b64\u5982\u679c\u4ece\u4e8b TVM \u76f8\u5173\u7684\u7f16\u7a0b\u5f00\u53d1\u7684\u8bdd\uff0c\u8fd9\u95e8\u8bfe\u6709\u4e30\u5bcc\u4e14\u89c4\u8303\u7684\u4ee3\u7801\u793a\u4f8b\u4ee5\u4f9b\u53c2\u8003\u3002 \u6240\u6709\u7684\u8bfe\u7a0b\u8d44\u6e90\u5168\u90e8\u5f00\u6e90\u5e76\u4e14\u6709\u4e2d\u6587\u548c\u82f1\u6587\u4e24\u4e2a\u7248\u672c\uff0cB\u7ad9\u548c\u6cb9\u7ba1\u5206\u522b\u6709\u4e2d\u6587\u548c\u82f1\u6587\u7684\u8bfe\u7a0b\u5f55\u5f71\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://mlc.ai/summer22-zh/ \u8bfe\u7a0b\u89c6\u9891\uff1a Bilibili \u8bfe\u7a0b\u7b14\u8bb0\uff1a https://mlc.ai/zh/index.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://github.com/mlc-ai/notebooks/blob/main/assignment","title":"Machine Learning Compilation"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/#machine-learning-compilation","text":"","title":"Machine Learning Compilation"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aBilibili \u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60/\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30\u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u662f\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u9886\u57df\u7684\u9876\u5c16\u5b66\u8005\u9648\u5929\u5947\u57282022\u5e74\u6691\u671f\u5f00\u8bbe\u7684\u4e00\u95e8\u5728\u7ebf\u8bfe\u7a0b\u3002\u5176\u5b9e\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u65e0\u8bba\u5728\u5de5\u4e1a\u754c\u8fd8\u662f\u5b66\u672f\u754c\u4ecd\u7136\u662f\u4e00\u4e2a\u975e\u5e38\u524d\u6cbf\u4e14\u5feb\u901f\u66f4\u8fed\u7684\u9886\u57df\uff0c\u56fd\u5185\u5916\u6b64\u524d\u8fd8\u6ca1\u6709\u4e3a\u8fd9\u4e2a\u65b9\u5411\u4e13\u95e8\u5f00\u8bbe\u7684\u76f8\u5173\u8bfe\u7a0b\u3002\u56e0\u6b64\u5982\u679c\u5bf9\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u611f\u5174\u8da3\u60f3\u6709\u4e2a\u5168\u8c8c\u6027\u7684\u611f\u77e5\u7684\u8bdd\uff0c\u53ef\u4ee5\u5b66\u4e60\u4e00\u4e0b\u8fd9\u95e8\u8bfe\u3002 \u672c\u8bfe\u7a0b\u4e3b\u8981\u4ee5 Apache TVM \u8fd9\u4e00\u4e3b\u6d41\u7684\u673a\u5668\u5b66\u4e60\u7f16\u8bd1\u6846\u67b6\u4e3a\u4f8b\uff08\u9648\u5929\u5947\u662f\u8fd9\u4e2a\u6846\u67b6\u7684\u521b\u59cb\u4eba\u4e4b\u4e00\uff09\uff0c\u805a\u7126\u4e8e\u5982\u4f55\u5c06\u5f00\u53d1\u6a21\u5f0f\u4e0b\uff08\u5982 Tensorflow, Pytorch, Jax\uff09\u7684\u5404\u7c7b\u673a\u5668\u5b66\u4e60\u6a21\u578b\uff0c\u901a\u8fc7\u4e00\u5957\u666e\u9002\u7684\u62bd\u8c61\u548c\u4f18\u5316\u7b97\u6cd5\uff0c\u53d8\u6362\u4e3a\u62e5\u6709\u66f4\u9ad8\u6027\u80fd\u5e76\u4e14\u9002\u914d\u5404\u7c7b\u5e95\u5c42\u786c\u4ef6\u7684\u90e8\u7f72\u6a21\u5f0f\u3002\u8bfe\u7a0b\u8bb2\u6388\u7684\u77e5\u8bc6\u70b9\u90fd\u662f\u76f8\u5bf9 High-Level \u7684\u5b8f\u89c2\u6982\u5ff5\uff0c\u540c\u65f6\u6bcf\u8282\u8bfe\u90fd\u4f1a\u6709\u4e00\u4e2a\u914d\u5957\u7684 Jupyter Notebook \u6765\u901a\u8fc7\u5177\u4f53\u7684\u4ee3\u7801\u8bb2\u89e3\u77e5\u8bc6\u70b9\uff0c\u56e0\u6b64\u5982\u679c\u4ece\u4e8b TVM \u76f8\u5173\u7684\u7f16\u7a0b\u5f00\u53d1\u7684\u8bdd\uff0c\u8fd9\u95e8\u8bfe\u6709\u4e30\u5bcc\u4e14\u89c4\u8303\u7684\u4ee3\u7801\u793a\u4f8b\u4ee5\u4f9b\u53c2\u8003\u3002 \u6240\u6709\u7684\u8bfe\u7a0b\u8d44\u6e90\u5168\u90e8\u5f00\u6e90\u5e76\u4e14\u6709\u4e2d\u6587\u548c\u82f1\u6587\u4e24\u4e2a\u7248\u672c\uff0cB\u7ad9\u548c\u6cb9\u7ba1\u5206\u522b\u6709\u4e2d\u6587\u548c\u82f1\u6587\u7684\u8bfe\u7a0b\u5f55\u5f71\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://mlc.ai/summer22-zh/ \u8bfe\u7a0b\u89c6\u9891\uff1a Bilibili \u8bfe\u7a0b\u7b14\u8bb0\uff1a https://mlc.ai/zh/index.html \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://github.com/mlc-ai/notebooks/blob/main/assignment","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CMU10-708/","text":"CMU 10-708: Probabilistic Graphical Models \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Reinforcement Learning \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://sailinglab.github.io/pgm-spring-2019/ \u8fd9\u4e2a\u7f51\u7ad9\u5305\u542b\u4e86\u6240\u6709\u7684\u8d44\u6e90\uff1aslides, nots, video, homework, project \u8fd9\u95e8\u8bfe\u7a0b\u662f CMU \u7684\u56fe\u6a21\u578b\u57fa\u7840 + \u8fdb\u9636\u8bfe\uff0c\u6388\u8bfe\u8001\u5e08\u4e3a Eric P. Xing\uff0c\u6db5\u76d6\u4e86\u56fe\u6a21\u578b\u57fa\u7840\uff0c\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u7ed3\u5408\uff0c\u5728\u5f3a\u5316\u5b66\u4e60\u4e2d\u7684\u5e94\u7528\uff0c\u4ee5\u53ca\u975e\u53c2\u6570\u65b9\u6cd5\u3002\u76f8\u5f53\u786c\u6838","title":"CMU 10-708: Probabilistic Graphical Models"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CMU10-708/#cmu-10-708-probabilistic-graphical-models","text":"","title":"CMU 10-708: Probabilistic Graphical Models"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CMU10-708/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aCMU \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Reinforcement Learning \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://sailinglab.github.io/pgm-spring-2019/ \u8fd9\u4e2a\u7f51\u7ad9\u5305\u542b\u4e86\u6240\u6709\u7684\u8d44\u6e90\uff1aslides, nots, video, homework, project \u8fd9\u95e8\u8bfe\u7a0b\u662f CMU \u7684\u56fe\u6a21\u578b\u57fa\u7840 + \u8fdb\u9636\u8bfe\uff0c\u6388\u8bfe\u8001\u5e08\u4e3a Eric P. Xing\uff0c\u6db5\u76d6\u4e86\u56fe\u6a21\u578b\u57fa\u7840\uff0c\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u7ed3\u5408\uff0c\u5728\u5f3a\u5316\u5b66\u4e60\u4e2d\u7684\u5e94\u7528\uff0c\u4ee5\u53ca\u975e\u53c2\u6570\u65b9\u6cd5\u3002\u76f8\u5f53\u786c\u6838","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CS229M/","text":"STATS214 / CS229M: Machine Learning Theory \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Statistics \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/stats214/ \u7ecf\u5178\u5b66\u4e60\u7406\u8bba + \u6700\u65b0\u6df1\u5ea6\u5b66\u4e60\u7406\u8bba\uff0c\u975e\u5e38\u786c\u6838\u3002\u6388\u8bfe\u8001\u5e08\u4e4b\u524d\u662f Percy Liang\uff0c\u73b0\u5728\u662f Tengyu Ma","title":"Stanford STATS214 / CS229M: Machine Learning Theory"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CS229M/#stats214-cs229m-machine-learning-theory","text":"","title":"STATS214 / CS229M: Machine Learning Theory"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CS229M/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Statistics \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/stats214/ \u7ecf\u5178\u5b66\u4e60\u7406\u8bba + \u6700\u65b0\u6df1\u5ea6\u5b66\u4e60\u7406\u8bba\uff0c\u975e\u5e38\u786c\u6838\u3002\u6388\u8bfe\u8001\u5e08\u4e4b\u524d\u662f Percy Liang\uff0c\u73b0\u5728\u662f Tengyu Ma","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STA4273/","text":"STA 4273 Winter 2021: Minimizing Expectations \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aU Toronto \u5148\u4fee\u8981\u6c42\uff1aBayesian Inference, Reinforcement Learning \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.cs.toronto.edu/~cmaddis/courses/sta4273_w21/ \u8fd9\u662f\u4e00\u95e8\u8f83\u4e3a\u8fdb\u9636\u7684 Ph.D. \u7814\u7a76\u8bfe\u7a0b\uff0c\u6838\u5fc3\u5185\u5bb9\u662f inference \u548c control \u4e4b\u95f4\u7684\u5173\u7cfb\u3002\u6388\u8bfe\u8001\u5e08\u4e3a Chris Maddison (AlphaGo founding member, NeurIPS 14 best paper)","title":"U Toronto STA 4273 Winter 2021: Minimizing Expectations"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STA4273/#sta-4273-winter-2021-minimizing-expectations","text":"","title":"STA 4273 Winter 2021: Minimizing Expectations"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STA4273/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aU Toronto \u5148\u4fee\u8981\u6c42\uff1aBayesian Inference, Reinforcement Learning \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.cs.toronto.edu/~cmaddis/courses/sta4273_w21/ \u8fd9\u662f\u4e00\u95e8\u8f83\u4e3a\u8fdb\u9636\u7684 Ph.D. \u7814\u7a76\u8bfe\u7a0b\uff0c\u6838\u5fc3\u5185\u5bb9\u662f inference \u548c control \u4e4b\u95f4\u7684\u5173\u7cfb\u3002\u6388\u8bfe\u8001\u5e08\u4e3a Chris Maddison (AlphaGo founding member, NeurIPS 14 best paper)","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STAT8201/","text":"Columbia STAT 8201: Deep Generative Models \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aColumbia University \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Graphical Models \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://stat.columbia.edu/~cunningham/teaching/GR8201/ \u8fd9\u95e8\u8bfe\u662f\u4e00\u95e8 PhD \u8ba8\u8bba\u73ed\uff0c\u6bcf\u5468\u7684\u5185\u5bb9\u662f\u5c55\u793a + \u8ba8\u8bba\u8bba\u6587\uff0c\u6388\u8bfe\u8001\u5e08\u662f John Cunningham\u3002Deep Generative Models \uff08\u6df1\u5ea6\u751f\u6210\u6a21\u578b\uff09 \u662f\u56fe\u6a21\u578b\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u7ed3\u5408\uff0c\u4e5f\u662f\u73b0\u4ee3\u673a\u5668\u5b66\u4e60\u6700\u91cd\u8981\u7684\u65b9\u5411\u4e4b\u4e00","title":"Columbia STAT 8201: Deep Generative Models"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STAT8201/#columbia-stat-8201-deep-generative-models","text":"","title":"Columbia STAT 8201: Deep Generative Models"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STAT8201/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aColumbia University \u5148\u4fee\u8981\u6c42\uff1aMachine Learning, Deep Learning, Graphical Models \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://stat.columbia.edu/~cunningham/teaching/GR8201/ \u8fd9\u95e8\u8bfe\u662f\u4e00\u95e8 PhD \u8ba8\u8bba\u73ed\uff0c\u6bcf\u5468\u7684\u5185\u5bb9\u662f\u5c55\u793a + \u8ba8\u8bba\u8bba\u6587\uff0c\u6388\u8bfe\u8001\u5e08\u662f John Cunningham\u3002Deep Generative Models \uff08\u6df1\u5ea6\u751f\u6210\u6a21\u578b\uff09 \u662f\u56fe\u6a21\u578b\u4e0e\u795e\u7ecf\u7f51\u7edc\u7684\u7ed3\u5408\uff0c\u4e5f\u662f\u73b0\u4ee3\u673a\u5668\u5b66\u4e60\u6700\u91cd\u8981\u7684\u65b9\u5411\u4e4b\u4e00","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/","text":"\u673a\u5668\u5b66\u4e60\u8fdb\u9636 \u6b64\u8def\u7ebf\u56fe\u9002\u7528\u4e8e\u5df2\u7ecf\u5b66\u8fc7\u4e86\u57fa\u7840\u673a\u5668\u5b66\u4e60 (ML, NLP, CV, RL) \u7684\u540c\u5b66 (\u9ad8\u5e74\u7ea7\u672c\u79d1\u751f\u6216\u4f4e\u5e74\u7ea7\u7814\u7a76\u751f)\uff0c\u5df2\u7ecf\u53d1\u8868\u8fc7\u81f3\u5c11\u4e00\u7bc7\u9876\u4f1a\u8bba\u6587 (NeurIPS, ICML, ICLR, ACL, EMNLP, NAACL, CVPR, ICCV) \u60f3\u8981\u8d70\u673a\u5668\u5b66\u4e60\u79d1\u7814\u8def\u7ebf\u7684\u9009\u624b\u3002 \u6b64\u8def\u7ebf\u7684\u76ee\u6807\u662f\u4e3a\u8bfb\u61c2\u4e0e\u53d1\u8868\u673a\u5668\u5b66\u4e60\u9876\u4f1a\u8bba\u6587\u6253\u4e0b\u7406\u8bba\u57fa\u7840\uff0c\u7279\u522b\u662f Probabilistic Methods \u8fd9\u4e2a track \u4e0b\u7684\u6587\u7ae0 \u673a\u5668\u5b66\u4e60\u8fdb\u9636\u53ef\u80fd\u5b58\u5728\u591a\u79cd\u4e0d\u540c\u7684\u5b66\u4e60\u8def\u7ebf\uff0c\u6b64\u8def\u7ebf\u53ea\u80fd\u4ee3\u8868\u4f5c\u8005 Yao Fu \u6240\u7406\u89e3\u7684\u6700\u4f73\u8def\u5f84\uff0c\u4fa7\u91cd\u4e8e\u8d1d\u53f6\u65af\u5b66\u6d3e\u4e0b\u7684\u6982\u7387\u5efa\u6a21\u65b9\u6cd5\uff0c\u4e5f\u4f1a\u6d89\u53ca\u5230\u5404\u9879\u76f8\u5173\u5b66\u79d1\u7684\u4ea4\u53c9\u77e5\u8bc6\u3002 \u5fc5\u8bfb\u6559\u6750 PRML: Pattern Recognition and Machine Learning. Christopher Bishop \u7ecf\u5178\u8d1d\u53f6\u65af\u5b66\u6d3e\u6559\u6750 AoS: All of Statistics. Larry Wasserman \u7ecf\u5178\u9891\u7387\u5b66\u6d3e\u6559\u6750 \u6240\u4ee5\u8fd9\u4e24\u672c\u4e66\u521a\u597d\u76f8\u8f85\u76f8\u6210 \u5b57\u5178 MLAPP: Machine Learning: A Probabilistic Perspective. Kevin Murphy Convex Optimization. Stephen Boyd and Lieven Vandenberghe \u8fdb\u9636\u4e66\u7c4d W&J: Graphical Models, Exponential Families, and Variational Inference. Martin Wainwright and Michael Jordan Theory of Point Estimation. E. L. Lehmann and George Casella \u5982\u4f55\u9605\u8bfb Guidelines \u5fc5\u8bfb\u6559\u6750\u5c31\u662f\u4e00\u5b9a\u8981\u8bfb\u7684\u6559\u6750 \u5b57\u5178\u7684\u610f\u601d\u662f\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u4e0d\u7ba1\u5b83\uff0c\u4f46\u5f53\u9047\u5230\u4e86\u4e0d\u61c2\u7684\u6982\u5ff5\u7684\u65f6\u5019\uff0c\u5c31\u53bb\u5b57\u5178\u91cc\u9762\u67e5\uff08\u800c\u4e0d\u662f\u7ef4\u57fa\u767e\u79d1\uff09 \u8fdb\u9636\u4e66\u7c4d\u5148\u4e0d\u8bfb\uff0c\u5148\u8bfb\u5b8c\u5fc5\u8bfb\u4e66\u7c4d\u3002\u5fc5\u8bfb\u4e66\u7c4d\u4e00\u822c\u90fd\u662f\u8981\u524d\u524d\u540e\u540e\u53cd\u590d\u770b\u8fc7 N \u904d\u624d\u7b97\u8bfb\u5b8c \u8bfb\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6700\u91cd\u8981\u7684\u8bfb\u6cd5\u5c31\u662f\u5bf9\u6bd4\u9605\u8bfb (contrastive-comparative reading)\uff1a\u540c\u65f6\u6253\u5f00\u4e24\u672c\u4e66\u8bb2\u540c\u4e00\u4e3b\u9898\u7684\u7ae0\u8282\uff0c\u7136\u540e\u5bf9\u6bd4\u76f8\u540c\u70b9\u548c\u4e0d\u540c\u70b9\u548c\u8054\u7cfb \u8bfb\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5c3d\u91cf\u53bb\u56de\u60f3\u4e4b\u524d\u8bfb\u8fc7\u7684\u8bba\u6587\uff0c\u6bd4\u8f83\u8bba\u6587\u548c\u6559\u6750\u7684\u76f8\u540c\u70b9\u4e0e\u4e0d\u540c\u70b9 \u57fa\u7840\u8def\u5f84 \u5148\u8bfb AoS \u7b2c\u516d\u7ae0: Models, Statistical Inference and Learning\uff0c\u8fd9\u4e00\u90e8\u5206\u662f\u6700\u57fa\u7840\u7684\u79d1\u666e \u7136\u540e\u8bfb PRML \u7b2c 10, 11 \u7ae0 \u7b2c 10 \u7ae0\u7684\u5185\u5bb9\u662f Variational Inference, \u7b2c 11 \u7ae0\u7684\u5185\u5bb9\u662f MCMC, \u8fd9\u4e24\u79cd\u65b9\u6cd5\u662f\u8d1d\u53f6\u65af\u63a8\u65ad\u7684\u4e24\u6761\u6700\u4e3b\u8981\u8def\u7ebf \u5982\u679c\u5728\u8bfb PRML \u7684\u8fc7\u7a0b\u4e2d\u53d1\u73b0\u6709\u4efb\u4f55\u4e0d\u61c2\u7684\u540d\u8bcd\uff0c\u5c31\u53bb\u7ffb\u524d\u9762\u7684\u7ae0\u8282\u3002\u5f88\u5927\u6982\u7387\u80fd\u591f\u5728\u7b2c 3\uff0c4 \u7ae0\u627e\u5230\u76f8\u5bf9\u5e94\u7684\u5b9a\u4e49\uff1b\u5982\u679c\u627e\u4e0d\u5230\u6216\u8005\u4e0d\u591f\u8be6\u7ec6\uff0c\u5c31\u53bb\u67e5 MLAPP AoS \u7b2c 8 \u7ae0 (Parametric Inference) \u548c\u7b2c 11 \u7ae0 (Bayesian Inference) \u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u53c2\u8003\u3002\u6700\u597d\u7684\u65b9\u6cd5\u662f\u591a\u672c\u4e66\u5bf9\u6bd4\u9605\u8bfb\uff0c\u6d41\u7a0b\u5982\u4e0b \u5047\u8bbe\u6211\u5728\u8bfb PRML \u7b2c 10 \u7ae0\u7684\u65f6\u5019\u53d1\u73b0\u4e86\u4e00\u4e2a\u4e0d\u61c2\u7684\u8bcd\uff1aposterior inference \u4e8e\u662f\u6211\u5f80\u524d\u7ffb\uff0c\u7ffb\u5230\u4e86\u7b2c 3 \u7ae0 (Linear Model for Regression)\uff0c\u770b\u5230\u4e86\u6700\u7b80\u5355\u7684 posterior \u7136\u540e\u6211\u63a5\u7740\u7ffb AoS\uff0c\u7ffb\u5230\u4e86\u7b2c 11 \u7ae0\uff0c\u4e5f\u6709\u5bf9 posterior \u7684\u63cf\u8ff0 \u7136\u540e\u6211\u5bf9\u6bd4 PRML \u7b2c 10 \u7ae0\uff0c\u7b2c 3 \u7ae0\uff0cAoS \u7b2c 11 \u7ae0\uff0c\u4e09\u5904\u4e0d\u540c\u5730\u65b9\u5bf9 posterior \u7684\u89e3\u8bfb\uff0c\u6bd4\u8f83\u5176\u76f8\u540c\u70b9\u548c\u4e0d\u540c\u70b9\u548c\u8054\u7cfb \u8bfb\u5b8c PRML \u7b2c 10 \u548c 11 \u7ae0\u4e4b\u540e\uff0c\u63a5\u7740\u8bfb AoS \u7b2c 24 \u7ae0 (Simulation Methods)\uff0c\u7136\u540e\u628a\u5b83\u548c PRML \u7b2c 11 \u7ae0\u5bf9\u6bd4\u9605\u8bfb -- \u8fd9\u4fe9\u90fd\u662f\u8bb2 MCMC \u5982\u679c\u5230\u6b64\u5904\u53d1\u73b0\u8fd8\u6709\u57fa\u7840\u6982\u5ff5\u8bfb\u4e0d\u61c2\uff0c\u5c31\u56de\u5230 PRML \u7b2c 3 \u7ae0\uff0c\u628a\u5b83\u548c AoS \u7b2c 11 \u7ae0\u5bf9\u6bd4\u9605\u8bfb Again\uff0c\u5bf9\u6bd4\u9605\u8bfb\u975e\u5e38\u91cd\u8981\uff0c\u4e00\u5b9a\u8981\u628a\u4e0d\u540c\u672c\u4e66\u7684\u7c7b\u4f3c\u5185\u5bb9\u540c\u65f6\u6446\u5728\u9762\u524d\u76f8\u4e92\u5bf9\u6bd4\uff0c\u8fd9\u6837\u53ef\u4ee5\u663e\u8457\u589e\u5f3a\u8bb0\u5fc6 \u7136\u540e\u8bfb PRML \u7b2c 13 \u7ae0\uff08\u8df3\u8fc7\u7b2c 12 \u7ae0\uff09\uff0c\u8fd9\u4e00\u7ae0\u53ef\u4ee5\u548c MLAPP \u7684\u7b2c 17, 18 \u7ae0\u5bf9\u6bd4\u9605\u8bfb MLAPP \u7b2c 17 \u7ae0\u662f PRML \u7b2c 13.2 \u7ae0\u7684\u8be6\u7ec6\u7248\uff0c\u4e3b\u8981\u8bb2 HMM MLAPP \u7b2c 18 \u7ae0\u662f PRML \u7b2c 13.3 \u7ae0\u7684\u8be6\u7ec6\u7248\uff0c\u4e3b\u8981\u8bb2 LDS \u8bfb\u5b8c PRML \u7b2c 13 \u7ae0\u4e4b\u540e\uff0c\u518d\u53bb\u8bfb PRML \u7b2c 8 \u7ae0 (Graphical Models) -- \u6b64\u65f6\u8fd9\u90e8\u5206\u5e94\u8be5\u4f1a\u8bfb\u5f97\u5f88\u8f7b\u677e \u4ee5\u4e0a\u7684\u5185\u5bb9\u53ef\u4ee5\u8fdb\u4e00\u6b65\u5bf9\u7167 CMU 10-708 PGM \u8bfe\u7a0b\u6750\u6599 \u5230\u76ee\u524d\u4e3a\u6b62\uff0c\u5e94\u8be5\u80fd\u591f\u638c\u63e1 \u6982\u7387\u6a21\u578b\u7684\u57fa\u7840\u5b9a\u4e49 \u7cbe\u51c6\u63a8\u65ad - Sum-Product \u8fd1\u4f3c\u63a8\u65ad - MCMC \u8fd1\u4f3c\u63a8\u65ad - VI \u7136\u540e\u5c31\u53ef\u4ee5\u53bb\u505a\u66f4\u8fdb\u9636\u7684\u5185\u5bb9","title":"\u8fdb\u9636\u8def\u7ebf\u56fe"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_1","text":"\u6b64\u8def\u7ebf\u56fe\u9002\u7528\u4e8e\u5df2\u7ecf\u5b66\u8fc7\u4e86\u57fa\u7840\u673a\u5668\u5b66\u4e60 (ML, NLP, CV, RL) \u7684\u540c\u5b66 (\u9ad8\u5e74\u7ea7\u672c\u79d1\u751f\u6216\u4f4e\u5e74\u7ea7\u7814\u7a76\u751f)\uff0c\u5df2\u7ecf\u53d1\u8868\u8fc7\u81f3\u5c11\u4e00\u7bc7\u9876\u4f1a\u8bba\u6587 (NeurIPS, ICML, ICLR, ACL, EMNLP, NAACL, CVPR, ICCV) \u60f3\u8981\u8d70\u673a\u5668\u5b66\u4e60\u79d1\u7814\u8def\u7ebf\u7684\u9009\u624b\u3002 \u6b64\u8def\u7ebf\u7684\u76ee\u6807\u662f\u4e3a\u8bfb\u61c2\u4e0e\u53d1\u8868\u673a\u5668\u5b66\u4e60\u9876\u4f1a\u8bba\u6587\u6253\u4e0b\u7406\u8bba\u57fa\u7840\uff0c\u7279\u522b\u662f Probabilistic Methods \u8fd9\u4e2a track \u4e0b\u7684\u6587\u7ae0 \u673a\u5668\u5b66\u4e60\u8fdb\u9636\u53ef\u80fd\u5b58\u5728\u591a\u79cd\u4e0d\u540c\u7684\u5b66\u4e60\u8def\u7ebf\uff0c\u6b64\u8def\u7ebf\u53ea\u80fd\u4ee3\u8868\u4f5c\u8005 Yao Fu \u6240\u7406\u89e3\u7684\u6700\u4f73\u8def\u5f84\uff0c\u4fa7\u91cd\u4e8e\u8d1d\u53f6\u65af\u5b66\u6d3e\u4e0b\u7684\u6982\u7387\u5efa\u6a21\u65b9\u6cd5\uff0c\u4e5f\u4f1a\u6d89\u53ca\u5230\u5404\u9879\u76f8\u5173\u5b66\u79d1\u7684\u4ea4\u53c9\u77e5\u8bc6\u3002","title":"\u673a\u5668\u5b66\u4e60\u8fdb\u9636"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_2","text":"PRML: Pattern Recognition and Machine Learning. Christopher Bishop \u7ecf\u5178\u8d1d\u53f6\u65af\u5b66\u6d3e\u6559\u6750 AoS: All of Statistics. Larry Wasserman \u7ecf\u5178\u9891\u7387\u5b66\u6d3e\u6559\u6750 \u6240\u4ee5\u8fd9\u4e24\u672c\u4e66\u521a\u597d\u76f8\u8f85\u76f8\u6210","title":"\u5fc5\u8bfb\u6559\u6750"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_3","text":"MLAPP: Machine Learning: A Probabilistic Perspective. Kevin Murphy Convex Optimization. Stephen Boyd and Lieven Vandenberghe","title":"\u5b57\u5178"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_4","text":"W&J: Graphical Models, Exponential Families, and Variational Inference. Martin Wainwright and Michael Jordan Theory of Point Estimation. E. L. Lehmann and George Casella","title":"\u8fdb\u9636\u4e66\u7c4d"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_5","text":"","title":"\u5982\u4f55\u9605\u8bfb"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#guidelines","text":"\u5fc5\u8bfb\u6559\u6750\u5c31\u662f\u4e00\u5b9a\u8981\u8bfb\u7684\u6559\u6750 \u5b57\u5178\u7684\u610f\u601d\u662f\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u4e0d\u7ba1\u5b83\uff0c\u4f46\u5f53\u9047\u5230\u4e86\u4e0d\u61c2\u7684\u6982\u5ff5\u7684\u65f6\u5019\uff0c\u5c31\u53bb\u5b57\u5178\u91cc\u9762\u67e5\uff08\u800c\u4e0d\u662f\u7ef4\u57fa\u767e\u79d1\uff09 \u8fdb\u9636\u4e66\u7c4d\u5148\u4e0d\u8bfb\uff0c\u5148\u8bfb\u5b8c\u5fc5\u8bfb\u4e66\u7c4d\u3002\u5fc5\u8bfb\u4e66\u7c4d\u4e00\u822c\u90fd\u662f\u8981\u524d\u524d\u540e\u540e\u53cd\u590d\u770b\u8fc7 N \u904d\u624d\u7b97\u8bfb\u5b8c \u8bfb\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6700\u91cd\u8981\u7684\u8bfb\u6cd5\u5c31\u662f\u5bf9\u6bd4\u9605\u8bfb (contrastive-comparative reading)\uff1a\u540c\u65f6\u6253\u5f00\u4e24\u672c\u4e66\u8bb2\u540c\u4e00\u4e3b\u9898\u7684\u7ae0\u8282\uff0c\u7136\u540e\u5bf9\u6bd4\u76f8\u540c\u70b9\u548c\u4e0d\u540c\u70b9\u548c\u8054\u7cfb \u8bfb\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5c3d\u91cf\u53bb\u56de\u60f3\u4e4b\u524d\u8bfb\u8fc7\u7684\u8bba\u6587\uff0c\u6bd4\u8f83\u8bba\u6587\u548c\u6559\u6750\u7684\u76f8\u540c\u70b9\u4e0e\u4e0d\u540c\u70b9","title":"Guidelines"},{"location":"%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/#_6","text":"\u5148\u8bfb AoS \u7b2c\u516d\u7ae0: Models, Statistical Inference and Learning\uff0c\u8fd9\u4e00\u90e8\u5206\u662f\u6700\u57fa\u7840\u7684\u79d1\u666e \u7136\u540e\u8bfb PRML \u7b2c 10, 11 \u7ae0 \u7b2c 10 \u7ae0\u7684\u5185\u5bb9\u662f Variational Inference, \u7b2c 11 \u7ae0\u7684\u5185\u5bb9\u662f MCMC, \u8fd9\u4e24\u79cd\u65b9\u6cd5\u662f\u8d1d\u53f6\u65af\u63a8\u65ad\u7684\u4e24\u6761\u6700\u4e3b\u8981\u8def\u7ebf \u5982\u679c\u5728\u8bfb PRML \u7684\u8fc7\u7a0b\u4e2d\u53d1\u73b0\u6709\u4efb\u4f55\u4e0d\u61c2\u7684\u540d\u8bcd\uff0c\u5c31\u53bb\u7ffb\u524d\u9762\u7684\u7ae0\u8282\u3002\u5f88\u5927\u6982\u7387\u80fd\u591f\u5728\u7b2c 3\uff0c4 \u7ae0\u627e\u5230\u76f8\u5bf9\u5e94\u7684\u5b9a\u4e49\uff1b\u5982\u679c\u627e\u4e0d\u5230\u6216\u8005\u4e0d\u591f\u8be6\u7ec6\uff0c\u5c31\u53bb\u67e5 MLAPP AoS \u7b2c 8 \u7ae0 (Parametric Inference) \u548c\u7b2c 11 \u7ae0 (Bayesian Inference) \u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u53c2\u8003\u3002\u6700\u597d\u7684\u65b9\u6cd5\u662f\u591a\u672c\u4e66\u5bf9\u6bd4\u9605\u8bfb\uff0c\u6d41\u7a0b\u5982\u4e0b \u5047\u8bbe\u6211\u5728\u8bfb PRML \u7b2c 10 \u7ae0\u7684\u65f6\u5019\u53d1\u73b0\u4e86\u4e00\u4e2a\u4e0d\u61c2\u7684\u8bcd\uff1aposterior inference \u4e8e\u662f\u6211\u5f80\u524d\u7ffb\uff0c\u7ffb\u5230\u4e86\u7b2c 3 \u7ae0 (Linear Model for Regression)\uff0c\u770b\u5230\u4e86\u6700\u7b80\u5355\u7684 posterior \u7136\u540e\u6211\u63a5\u7740\u7ffb AoS\uff0c\u7ffb\u5230\u4e86\u7b2c 11 \u7ae0\uff0c\u4e5f\u6709\u5bf9 posterior \u7684\u63cf\u8ff0 \u7136\u540e\u6211\u5bf9\u6bd4 PRML \u7b2c 10 \u7ae0\uff0c\u7b2c 3 \u7ae0\uff0cAoS \u7b2c 11 \u7ae0\uff0c\u4e09\u5904\u4e0d\u540c\u5730\u65b9\u5bf9 posterior \u7684\u89e3\u8bfb\uff0c\u6bd4\u8f83\u5176\u76f8\u540c\u70b9\u548c\u4e0d\u540c\u70b9\u548c\u8054\u7cfb \u8bfb\u5b8c PRML \u7b2c 10 \u548c 11 \u7ae0\u4e4b\u540e\uff0c\u63a5\u7740\u8bfb AoS \u7b2c 24 \u7ae0 (Simulation Methods)\uff0c\u7136\u540e\u628a\u5b83\u548c PRML \u7b2c 11 \u7ae0\u5bf9\u6bd4\u9605\u8bfb -- \u8fd9\u4fe9\u90fd\u662f\u8bb2 MCMC \u5982\u679c\u5230\u6b64\u5904\u53d1\u73b0\u8fd8\u6709\u57fa\u7840\u6982\u5ff5\u8bfb\u4e0d\u61c2\uff0c\u5c31\u56de\u5230 PRML \u7b2c 3 \u7ae0\uff0c\u628a\u5b83\u548c AoS \u7b2c 11 \u7ae0\u5bf9\u6bd4\u9605\u8bfb Again\uff0c\u5bf9\u6bd4\u9605\u8bfb\u975e\u5e38\u91cd\u8981\uff0c\u4e00\u5b9a\u8981\u628a\u4e0d\u540c\u672c\u4e66\u7684\u7c7b\u4f3c\u5185\u5bb9\u540c\u65f6\u6446\u5728\u9762\u524d\u76f8\u4e92\u5bf9\u6bd4\uff0c\u8fd9\u6837\u53ef\u4ee5\u663e\u8457\u589e\u5f3a\u8bb0\u5fc6 \u7136\u540e\u8bfb PRML \u7b2c 13 \u7ae0\uff08\u8df3\u8fc7\u7b2c 12 \u7ae0\uff09\uff0c\u8fd9\u4e00\u7ae0\u53ef\u4ee5\u548c MLAPP \u7684\u7b2c 17, 18 \u7ae0\u5bf9\u6bd4\u9605\u8bfb MLAPP \u7b2c 17 \u7ae0\u662f PRML \u7b2c 13.2 \u7ae0\u7684\u8be6\u7ec6\u7248\uff0c\u4e3b\u8981\u8bb2 HMM MLAPP \u7b2c 18 \u7ae0\u662f PRML \u7b2c 13.3 \u7ae0\u7684\u8be6\u7ec6\u7248\uff0c\u4e3b\u8981\u8bb2 LDS \u8bfb\u5b8c PRML \u7b2c 13 \u7ae0\u4e4b\u540e\uff0c\u518d\u53bb\u8bfb PRML \u7b2c 8 \u7ae0 (Graphical Models) -- \u6b64\u65f6\u8fd9\u90e8\u5206\u5e94\u8be5\u4f1a\u8bfb\u5f97\u5f88\u8f7b\u677e \u4ee5\u4e0a\u7684\u5185\u5bb9\u53ef\u4ee5\u8fdb\u4e00\u6b65\u5bf9\u7167 CMU 10-708 PGM \u8bfe\u7a0b\u6750\u6599 \u5230\u76ee\u524d\u4e3a\u6b62\uff0c\u5e94\u8be5\u80fd\u591f\u638c\u63e1 \u6982\u7387\u6a21\u578b\u7684\u57fa\u7840\u5b9a\u4e49 \u7cbe\u51c6\u63a8\u65ad - Sum-Product \u8fd1\u4f3c\u63a8\u65ad - MCMC \u8fd1\u4f3c\u63a8\u65ad - VI \u7136\u540e\u5c31\u53ef\u4ee5\u53bb\u505a\u66f4\u8fdb\u9636\u7684\u5185\u5bb9","title":"\u57fa\u7840\u8def\u5f84"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/","text":"CS224n: Natural Language Processing \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684 NLP \u5165\u95e8\u8bfe\u7a0b\uff0c\u7531\u81ea\u7136\u8bed\u8a00\u5904\u7406\u9886\u57df\u7684\u5de8\u4f6c Chris Manning \u9886\u8854\u6559\u6388\uff08word2vec \u7b97\u6cd5\u7684\u5f00\u521b\u8005\uff09\u3002\u5185\u5bb9\u8986\u76d6\u4e86\u8bcd\u5411\u91cf\u3001RNN\u3001LSTM\u3001Seq2Seq \u6a21\u578b\u3001\u673a\u5668\u7ffb\u8bd1\u3001\u6ce8\u610f\u529b\u673a\u5236\u3001Transformer \u7b49\u7b49 NLP \u9886\u57df\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\u3002 5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u96be\u5ea6\u5faa\u5e8f\u6e10\u8fdb\uff0c\u5206\u522b\u662f\u8bcd\u5411\u91cf\u3001word2vec \u7b97\u6cd5\u3001Dependency parsing\u3001\u673a\u5668\u7ffb\u8bd1\u4ee5\u53ca Transformer \u7684 fine-tune\u3002 \u6700\u7ec8\u7684\u5927\u4f5c\u4e1a\u662f\u5728 Stanford \u8457\u540d\u7684 SQuAD \u6570\u636e\u96c6\u4e0a\u8bad\u7ec3 QA \u6a21\u578b\uff0c\u6709\u5b66\u751f\u7684\u5927\u4f5c\u4e1a\u751a\u81f3\u76f4\u63a5\u53d1\u8868\u4e86\u9876\u4f1a\u8bba\u6587\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs224n/index.html \u8bfe\u7a0b\u89c6\u9891\uff1aB \u7ad9\u641c\u7d22 CS224n \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://web.stanford.edu/class/cs224n/index.html \uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a + 1 \u4e2a Final Project \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS224n - GitHub \u4e2d\u3002","title":"Stanford CS224n: Natural Language Processing"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/#cs224n-natural-language-processing","text":"","title":"CS224n: Natural Language Processing"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684 NLP \u5165\u95e8\u8bfe\u7a0b\uff0c\u7531\u81ea\u7136\u8bed\u8a00\u5904\u7406\u9886\u57df\u7684\u5de8\u4f6c Chris Manning \u9886\u8854\u6559\u6388\uff08word2vec \u7b97\u6cd5\u7684\u5f00\u521b\u8005\uff09\u3002\u5185\u5bb9\u8986\u76d6\u4e86\u8bcd\u5411\u91cf\u3001RNN\u3001LSTM\u3001Seq2Seq \u6a21\u578b\u3001\u673a\u5668\u7ffb\u8bd1\u3001\u6ce8\u610f\u529b\u673a\u5236\u3001Transformer \u7b49\u7b49 NLP \u9886\u57df\u7684\u6838\u5fc3\u77e5\u8bc6\u70b9\u3002 5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u96be\u5ea6\u5faa\u5e8f\u6e10\u8fdb\uff0c\u5206\u522b\u662f\u8bcd\u5411\u91cf\u3001word2vec \u7b97\u6cd5\u3001Dependency parsing\u3001\u673a\u5668\u7ffb\u8bd1\u4ee5\u53ca Transformer \u7684 fine-tune\u3002 \u6700\u7ec8\u7684\u5927\u4f5c\u4e1a\u662f\u5728 Stanford \u8457\u540d\u7684 SQuAD \u6570\u636e\u96c6\u4e0a\u8bad\u7ec3 QA \u6a21\u578b\uff0c\u6709\u5b66\u751f\u7684\u5927\u4f5c\u4e1a\u751a\u81f3\u76f4\u63a5\u53d1\u8868\u4e86\u9876\u4f1a\u8bba\u6587\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs224n/index.html \u8bfe\u7a0b\u89c6\u9891\uff1aB \u7ad9\u641c\u7d22 CS224n \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://web.stanford.edu/class/cs224n/index.html \uff0c5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a + 1 \u4e2a Final Project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS224n - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/","text":"CS224w: Machine Learning with Graphs \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython, LaTeX \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684\u56fe\u795e\u7ecf\u7f51\u7edc\u5165\u95e8\u8bfe\uff0c\u8fd9\u95e8\u8bfe\u6211\u6ca1\u6709\u4e0a\u8fc7\uff0c\u4f46\u4f17\u591a\u505a GNN \u7684\u670b\u53cb\u90fd\u5411\u6211\u529b\u8350\u8fc7\u8fd9\u95e8\u8bfe\uff0c\u60f3\u5fc5 Stanford \u7684\u8bfe\u8d28\u91cf\u8fd8\u662f\u4e00\u5982\u65e2\u5f80\u5730\u6709\u4fdd\u8bc1\u7684\u3002\u53e6\u5916\u5c31\u662f\u8fd9\u95e8\u8bfe\u7684\u6388\u8bfe\u8001\u5e08\u975e\u5e38\u5e74\u8f7b\u5e05\u6c14:) \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs224w/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=JAB_plj2rbA \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://web.stanford.edu/class/cs224w/ \uff0c6 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c3 \u4e2a LaTeX \u4e66\u9762\u4f5c\u4e1a","title":"Stanford CS224w: Machine Learning with Graphs"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/#cs224w-machine-learning-with-graphs","text":"","title":"CS224w: Machine Learning with Graphs"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6df1\u5ea6\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython, LaTeX \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684\u56fe\u795e\u7ecf\u7f51\u7edc\u5165\u95e8\u8bfe\uff0c\u8fd9\u95e8\u8bfe\u6211\u6ca1\u6709\u4e0a\u8fc7\uff0c\u4f46\u4f17\u591a\u505a GNN \u7684\u670b\u53cb\u90fd\u5411\u6211\u529b\u8350\u8fc7\u8fd9\u95e8\u8bfe\uff0c\u60f3\u5fc5 Stanford \u7684\u8bfe\u8d28\u91cf\u8fd8\u662f\u4e00\u5982\u65e2\u5f80\u5730\u6709\u4fdd\u8bc1\u7684\u3002\u53e6\u5916\u5c31\u662f\u8fd9\u95e8\u8bfe\u7684\u6388\u8bfe\u8001\u5e08\u975e\u5e38\u5e74\u8f7b\u5e05\u6c14:)","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs224w/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=JAB_plj2rbA \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://web.stanford.edu/class/cs224w/ \uff0c6 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\uff0c3 \u4e2a LaTeX \u4e66\u9762\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/","text":"Coursera: Deep Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u5434\u6069\u8fbe\u5728 Coursera \u5f00\u8bbe\u7684\u53e6\u4e00\u95e8\u7f51\u7ea2\u8bfe\u7a0b\uff0c\u5b66\u4e60\u8005\u65e0\u6570\uff0c\u582a\u79f0\u5723\u7ecf\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u5165\u95e8\u8bfe\u3002\u6df1\u5165\u6d45\u51fa\u7684\u8bb2\u89e3\uff0c\u773c\u82b1\u7f2d\u4e71\u7684 Project\u3002\u4ece\u6700\u57fa\u7840\u7684\u795e\u7ecf\u7f51\u7edc\uff0c\u5230 CNN, RNN\uff0c\u518d\u5230\u6700\u8fd1\u5927\u70ed\u7684 Transformer\u3002\u5b66\u5b8c\u8fd9\u95e8\u8bfe\uff0c\u4f60\u5c06\u521d\u6b65\u638c\u63e1\u6df1\u5ea6\u5b66\u4e60\u9886\u57df\u5fc5\u5907\u7684\u77e5\u8bc6\u548c\u6280\u80fd\uff0c\u5e76\u4e14\u53ef\u4ee5\u5728 Kaggle \u4e2d\u53c2\u52a0\u81ea\u5df1\u611f\u5174\u8da3\u7684\u6bd4\u8d5b\uff0c\u5728\u5b9e\u8df5\u4e2d\u953b\u70bc\u81ea\u5df1\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/specializations/deep-learning \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.coursera.org/specializations/deep-learning \uff0cB\u7ad9\u6709\u642c\u8fd0 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://www.coursera.org/specializations/deep-learning","title":"Coursera: Deep Learning"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/#coursera-deep-learning","text":"","title":"Coursera: Deep Learning"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60\u57fa\u7840 + Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u5434\u6069\u8fbe\u5728 Coursera \u5f00\u8bbe\u7684\u53e6\u4e00\u95e8\u7f51\u7ea2\u8bfe\u7a0b\uff0c\u5b66\u4e60\u8005\u65e0\u6570\uff0c\u582a\u79f0\u5723\u7ecf\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u5165\u95e8\u8bfe\u3002\u6df1\u5165\u6d45\u51fa\u7684\u8bb2\u89e3\uff0c\u773c\u82b1\u7f2d\u4e71\u7684 Project\u3002\u4ece\u6700\u57fa\u7840\u7684\u795e\u7ecf\u7f51\u7edc\uff0c\u5230 CNN, RNN\uff0c\u518d\u5230\u6700\u8fd1\u5927\u70ed\u7684 Transformer\u3002\u5b66\u5b8c\u8fd9\u95e8\u8bfe\uff0c\u4f60\u5c06\u521d\u6b65\u638c\u63e1\u6df1\u5ea6\u5b66\u4e60\u9886\u57df\u5fc5\u5907\u7684\u77e5\u8bc6\u548c\u6280\u80fd\uff0c\u5e76\u4e14\u53ef\u4ee5\u5728 Kaggle \u4e2d\u53c2\u52a0\u81ea\u5df1\u611f\u5174\u8da3\u7684\u6bd4\u8d5b\uff0c\u5728\u5b9e\u8df5\u4e2d\u953b\u70bc\u81ea\u5df1\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/specializations/deep-learning \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.coursera.org/specializations/deep-learning \uff0cB\u7ad9\u6709\u642c\u8fd0 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://www.coursera.org/specializations/deep-learning","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/","text":"CS231n: CNN for Visual Recognition \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684 CV \u5165\u95e8\u8bfe\uff0c\u7531\u8ba1\u7b97\u673a\u9886\u57df\u7684\u5de8\u4f6c\u674e\u98de\u98de\u9662\u58eb\u9886\u8854\u6559\u6388\uff08CV \u9886\u57df\u5212\u65f6\u4ee3\u7684\u8457\u540d\u6570\u636e\u96c6 ImageNet \u7684\u7814\u7a76\u56e2\u961f\uff09\uff0c\u4f46\u5176\u5185\u5bb9\u76f8\u5bf9\u57fa\u7840\u4e14\u53cb\u597d\uff0c\u5982\u679c\u4e0a\u8fc7 CS230 \u7684\u8bdd\u53ef\u4ee5\u76f4\u63a5\u4e0a\u624b Project \u4f5c\u4e3a\u7ec3\u4e60\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://cs231n.stanford.edu/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1nJ411z7fe \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://cs231n.stanford.edu/schedule.html \uff0c3\u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"Stanford CS231n: CNN for Visual Recognition"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/#cs231n-cnn-for-visual-recognition","text":"","title":"CS231n: CNN for Visual Recognition"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u673a\u5668\u5b66\u4e60\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 Stanford \u7684 CV \u5165\u95e8\u8bfe\uff0c\u7531\u8ba1\u7b97\u673a\u9886\u57df\u7684\u5de8\u4f6c\u674e\u98de\u98de\u9662\u58eb\u9886\u8854\u6559\u6388\uff08CV \u9886\u57df\u5212\u65f6\u4ee3\u7684\u8457\u540d\u6570\u636e\u96c6 ImageNet \u7684\u7814\u7a76\u56e2\u961f\uff09\uff0c\u4f46\u5176\u5185\u5bb9\u76f8\u5bf9\u57fa\u7840\u4e14\u53cb\u597d\uff0c\u5982\u679c\u4e0a\u8fc7 CS230 \u7684\u8bdd\u53ef\u4ee5\u76f4\u63a5\u4e0a\u624b Project \u4f5c\u4e3a\u7ec3\u4e60\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://cs231n.stanford.edu/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1nJ411z7fe \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://cs231n.stanford.edu/schedule.html \uff0c3\u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/","text":"CS285: Deep Reinforcement Learning \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS188, CS189 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u5f3a\u5316\u5b66\u4e60\u7814\u7a76\u751f\u8bfe\u7a0b\uff0c\u6240\u6709\u8bfe\u7a0b\u5f55\u5f71\u3001slides\u3001\u4f5c\u4e1a\u4ee3\u7801\u5747\u5728\u7f51\u7ad9\u5f00\u6e90\u3002\u5728\u6211\u7684\u6536\u85cf\u5939\u91cc\u5403\u7070\u5f88\u4e45\u4e86\uff0c\u4e00\u76f4\u60f3\u627e\u673a\u4f1a\u5b66\u4e60\u4e00\u4e0b\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://rail.eecs.berkeley.edu/deeprlcourse/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://youtube.com/playlist?list=PL_iWQOsE6TfXxKgI1GgyV1B_Xa0DxE5eH \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://rail.eecs.berkeley.edu/deeprlcourse/ \uff0c5\u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"UCB CS285: Deep Reinforcement Learning"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/#cs285-deep-reinforcement-learning","text":"","title":"CS285: Deep Reinforcement Learning"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS188, CS189 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u5f3a\u5316\u5b66\u4e60\u7814\u7a76\u751f\u8bfe\u7a0b\uff0c\u6240\u6709\u8bfe\u7a0b\u5f55\u5f71\u3001slides\u3001\u4f5c\u4e1a\u4ee3\u7801\u5747\u5728\u7f51\u7ad9\u5f00\u6e90\u3002\u5728\u6211\u7684\u6536\u85cf\u5939\u91cc\u5403\u7070\u5f88\u4e45\u4e86\uff0c\u4e00\u76f4\u60f3\u627e\u673a\u4f1a\u5b66\u4e60\u4e00\u4e0b\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://rail.eecs.berkeley.edu/deeprlcourse/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://youtube.com/playlist?list=PL_iWQOsE6TfXxKgI1GgyV1B_Xa0DxE5eH \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a http://rail.eecs.berkeley.edu/deeprlcourse/ \uff0c5\u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/","text":"\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u570b\u7acb\u53f0\u7063\u5927\u5b78 \u5148\u4fee\u8981\u6c42\uff1a\u719f\u7ec3\u638c\u63e1 Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u674e\u5b8f\u6bc5\u8001\u5e08\u662f\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\u7684\u6559\u6388\uff0c\u5176\u98ce\u8da3\u5e7d\u9ed8\u7684\u6388\u8bfe\u98ce\u683c\u6df1\u53d7\u5927\u5bb6\u559c\u7231\uff0c\u5e76\u4e14\u5c24\u5176\u559c\u6b22\u5728 PPT \u4e2d\u63d2\u5165\u5b9d\u53ef\u68a6\u7b49\u52a8\u6f2b\u5143\u7d20\uff0c\u662f\u4e2a\u975e\u5e38\u53ef\u7231\u7684\u8001\u5e08\u3002 \u8fd9\u95e8\u8bfe\u6302\u7740\u673a\u5668\u5b66\u4e60\u7684\u724c\u5b50\uff0c\u4f46\u5176\u8bfe\u7a0b\u5185\u5bb9\u4e4b\u5e7f\u5b9e\u5728\u4ee4\u4eba\u548b\u820c\uff0c\u5176\u4f5c\u4e1a\u4e00\u5171\u5305\u542b 15 \u4e2a lab\uff0c\u5206\u522b\u662f Regression\u3001Classification\u3001CNN\u3001Self-Attention\u3001Transformer\u3001GAN\u3001BERT\u3001Anomaly Detection\u3001Explainable AI\u3001Attack\u3001Adaptation\u3001 RL\u3001Compression\u3001Life-Long Learning \u4ee5\u53ca Meta Learning\u3002\u53ef\u8c13\u662f\u5305\u7f57\u4e07\u8c61\uff0c\u80fd\u8ba9\u5b66\u751f\u5bf9\u4e8e\u6df1\u5ea6\u5b66\u4e60\u7684\u7edd\u5927\u591a\u6570\u9886\u57df\u90fd\u6709\u4e00\u5b9a\u4e86\u89e3\uff0c\u4ece\u800c\u53ef\u4ee5\u8fdb\u4e00\u6b65\u9009\u62e9\u60f3\u8981\u6df1\u5165\u7684\u65b9\u5411\u8fdb\u884c\u5b66\u4e60\u3002 \u5927\u5bb6\u4e5f\u5927\u53ef\u4e0d\u5fc5\u62c5\u5fc3\u4f5c\u4e1a\u7684\u96be\u5ea6\uff0c\u56e0\u4e3a\u6240\u6709\u4f5c\u4e1a\u90fd\u4f1a\u63d0\u4f9b\u52a9\u6559\u7684\u793a\u4f8b\u4ee3\u7801\uff0c\u5e2e\u4f60\u5b8c\u6210\u6570\u636e\u5904\u7406\u3001\u6a21\u578b\u642d\u5efa\u7b49\uff0c\u4f60\u53ea\u9700\u8981\u5728\u5176\u57fa\u7840\u4e0a\u8fdb\u884c\u9002\u91cf\u7684\u4fee\u6539\u5373\u53ef\u3002\u8fd9\u4e5f\u662f\u4e00\u4e2a\u5b66\u4e60\u522b\u4eba\u4f18\u8d28\u4ee3\u7801\u7684\u6781\u597d\u673a\u4f1a\uff0c\u5927\u5bb6\u9700\u8981\u6c34\u8bfe\u7a0b\u5927\u4f5c\u4e1a\u7684\u8bdd\uff0c\u8fd9\u91cc\u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u8d44\u6599\u6765\u6e90\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \uff0c15 \u4e2a lab\uff0c\u51e0\u4e4e\u8986\u76d6\u4e86\u4e3b\u6d41\u6df1\u5ea6\u5b66\u4e60\u7684\u6240\u6709\u9886\u57df","title":"\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/#_1","text":"","title":"\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\uff1a\u674e\u5b8f\u6bc5\u673a\u5668\u5b66\u4e60"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/#_2","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u570b\u7acb\u53f0\u7063\u5927\u5b78 \u5148\u4fee\u8981\u6c42\uff1a\u719f\u7ec3\u638c\u63e1 Python \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u674e\u5b8f\u6bc5\u8001\u5e08\u662f\u56fd\u7acb\u53f0\u6e7e\u5927\u5b66\u7684\u6559\u6388\uff0c\u5176\u98ce\u8da3\u5e7d\u9ed8\u7684\u6388\u8bfe\u98ce\u683c\u6df1\u53d7\u5927\u5bb6\u559c\u7231\uff0c\u5e76\u4e14\u5c24\u5176\u559c\u6b22\u5728 PPT \u4e2d\u63d2\u5165\u5b9d\u53ef\u68a6\u7b49\u52a8\u6f2b\u5143\u7d20\uff0c\u662f\u4e2a\u975e\u5e38\u53ef\u7231\u7684\u8001\u5e08\u3002 \u8fd9\u95e8\u8bfe\u6302\u7740\u673a\u5668\u5b66\u4e60\u7684\u724c\u5b50\uff0c\u4f46\u5176\u8bfe\u7a0b\u5185\u5bb9\u4e4b\u5e7f\u5b9e\u5728\u4ee4\u4eba\u548b\u820c\uff0c\u5176\u4f5c\u4e1a\u4e00\u5171\u5305\u542b 15 \u4e2a lab\uff0c\u5206\u522b\u662f Regression\u3001Classification\u3001CNN\u3001Self-Attention\u3001Transformer\u3001GAN\u3001BERT\u3001Anomaly Detection\u3001Explainable AI\u3001Attack\u3001Adaptation\u3001 RL\u3001Compression\u3001Life-Long Learning \u4ee5\u53ca Meta Learning\u3002\u53ef\u8c13\u662f\u5305\u7f57\u4e07\u8c61\uff0c\u80fd\u8ba9\u5b66\u751f\u5bf9\u4e8e\u6df1\u5ea6\u5b66\u4e60\u7684\u7edd\u5927\u591a\u6570\u9886\u57df\u90fd\u6709\u4e00\u5b9a\u4e86\u89e3\uff0c\u4ece\u800c\u53ef\u4ee5\u8fdb\u4e00\u6b65\u9009\u62e9\u60f3\u8981\u6df1\u5165\u7684\u65b9\u5411\u8fdb\u884c\u5b66\u4e60\u3002 \u5927\u5bb6\u4e5f\u5927\u53ef\u4e0d\u5fc5\u62c5\u5fc3\u4f5c\u4e1a\u7684\u96be\u5ea6\uff0c\u56e0\u4e3a\u6240\u6709\u4f5c\u4e1a\u90fd\u4f1a\u63d0\u4f9b\u52a9\u6559\u7684\u793a\u4f8b\u4ee3\u7801\uff0c\u5e2e\u4f60\u5b8c\u6210\u6570\u636e\u5904\u7406\u3001\u6a21\u578b\u642d\u5efa\u7b49\uff0c\u4f60\u53ea\u9700\u8981\u5728\u5176\u57fa\u7840\u4e0a\u8fdb\u884c\u9002\u91cf\u7684\u4fee\u6539\u5373\u53ef\u3002\u8fd9\u4e5f\u662f\u4e00\u4e2a\u5b66\u4e60\u522b\u4eba\u4f18\u8d28\u4ee3\u7801\u7684\u6781\u597d\u673a\u4f1a\uff0c\u5927\u5bb6\u9700\u8981\u6c34\u8bfe\u7a0b\u5927\u4f5c\u4e1a\u7684\u8bdd\uff0c\u8fd9\u91cc\u4e5f\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u8d44\u6599\u6765\u6e90\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/#_3","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \uff0c\u6bcf\u8282\u8bfe\u7684\u94fe\u63a5\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html \uff0c15 \u4e2a lab\uff0c\u51e0\u4e4e\u8986\u76d6\u4e86\u4e3b\u6d41\u6df1\u5ea6\u5b66\u4e60\u7684\u6240\u6709\u9886\u57df","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/","text":"UCB EE16A&B: Designing Information Devices and Systems I&II \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 UC Berkeley \u7535\u5b50\u7cfb\u5b66\u751f\u7684\u5927\u4e00\u5165\u95e8\u8bfe\uff0c\u901a\u8fc7\u7535\u8def\u57fa\u7840\u77e5\u8bc6\u7684\u8bb2\u6388\uff0c\u914d\u5408\u5404\u7c7b\u52a8\u624b\u5b9e\u64cd\u7684 lab\uff0c\u8ba9\u5b66\u751f\u4f53\u9a8c\u901a\u8fc7\u7535\u8def\u4ece\u73af\u5883\u4e2d\u6536\u96c6\u4fe1\u606f\u5e76\u8fdb\u884c\u5206\u6790\uff0c\u4f5c\u51fa\u9884\u6d4b\u548c\u53cd\u9988\u3002\u7531\u4e8e\u75ab\u60c5\u7684\u7f18\u6545\uff0c\u6240\u6709 lab \u90fd\u6709\u8fdc\u7a0b\u5728\u7ebf\u7248\uff0c\u975e\u5e38\u9002\u5408\u5927\u5bb6\u5728\u5bb6\u81ea\u5b66\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a EE16A , EE16B \u8bfe\u7a0b\u89c6\u9891\uff1aB \u7ad9\u641c\u7d22 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u4e3b\u9875 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/EE16A - GitHub \u4e2d\u3002","title":"EE16A&B: Designing Information Devices and Systems I&II"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/#ucb-ee16ab-designing-information-devices-and-systems-iii","text":"","title":"UCB EE16A&B: Designing Information Devices and Systems I&II"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 UC Berkeley \u7535\u5b50\u7cfb\u5b66\u751f\u7684\u5927\u4e00\u5165\u95e8\u8bfe\uff0c\u901a\u8fc7\u7535\u8def\u57fa\u7840\u77e5\u8bc6\u7684\u8bb2\u6388\uff0c\u914d\u5408\u5404\u7c7b\u52a8\u624b\u5b9e\u64cd\u7684 lab\uff0c\u8ba9\u5b66\u751f\u4f53\u9a8c\u901a\u8fc7\u7535\u8def\u4ece\u73af\u5883\u4e2d\u6536\u96c6\u4fe1\u606f\u5e76\u8fdb\u884c\u5206\u6790\uff0c\u4f5c\u51fa\u9884\u6d4b\u548c\u53cd\u9988\u3002\u7531\u4e8e\u75ab\u60c5\u7684\u7f18\u6545\uff0c\u6240\u6709 lab \u90fd\u6709\u8fdc\u7a0b\u5728\u7ebf\u7248\uff0c\u975e\u5e38\u9002\u5408\u5927\u5bb6\u5728\u5bb6\u81ea\u5b66\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a EE16A , EE16B \u8bfe\u7a0b\u89c6\u9891\uff1aB \u7ad9\u641c\u7d22 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1\u8bfe\u7a0b\u4e3b\u9875","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/EE16A - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/","text":"MIT 6.007 Signals and Systems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra \u7f16\u7a0b\u8bed\u8a00\uff1aMatlab Preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 \u770b\u5230\u8bfe\u7a0b\u8001\u5e08\u7684\u540d\u5b57\uff1aProf. Alan V. Oppenheim \u597d\u7684\uff0c\u4e0a\u8fd9\u95e8\u8bfe\u7684\u7406\u7531\u5df2\u7ecf\u8db3\u591f\u4e86\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/index.htm \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1CZ4y1j7hs \u8bfe\u7a0b\u6559\u6750\uff1aSignals and Systems, 2nd Edition \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/assignments","title":"MIT 6.007 Signals and Systems"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/#mit-6007-signals-and-systems","text":"","title":"MIT 6.007 Signals and Systems"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1aCalculus, Linear Algebra \u7f16\u7a0b\u8bed\u8a00\uff1aMatlab Preferred \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 \u770b\u5230\u8bfe\u7a0b\u8001\u5e08\u7684\u540d\u5b57\uff1aProf. Alan V. Oppenheim \u597d\u7684\uff0c\u4e0a\u8fd9\u95e8\u8bfe\u7684\u7406\u7531\u5df2\u7ecf\u8db3\u591f\u4e86\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/index.htm \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1CZ4y1j7hs \u8bfe\u7a0b\u6559\u6750\uff1aSignals and Systems, 2nd Edition \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/assignments","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/","text":"UCB EE120: Signal and Systems \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS70\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u6700\u7cbe\u534e\u7684\u90e8\u5206\u5c31\u662f 6 \u4e2a\u8d85\u6709\u8da3\u7684\u7f16\u7a0b\u4f5c\u4e1a\u4e86\uff0c\u4f1a\u8ba9\u4f60\u7528 Python \u901a\u8fc7\u5b66\u4e60\u5230\u7684\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u7684\u7406\u8bba\u77e5\u8bc6\uff0c\u89e3\u51b3\u5404\u7c7b\u5b9e\u9645\u95ee\u9898\u3002\u4f8b\u5982 lab3 \u4f1a\u8ba9\u4f60\u5b9e\u73b0 FFT \u7b97\u6cd5\uff0c\u5e76\u548c Numpy \u7684\u5b98\u65b9\u5b9e\u73b0\u8fdb\u884c\u6027\u80fd\u5bf9\u6bd4\uff1blab4 \u4f1a\u901a\u8fc7\u5206\u6790\u624b\u6307\u5934\u7684\u5f71\u50cf\u6570\u636e\u63a8\u65ad\u5fc3\u7387\uff1blab5 \u5c31\u66f4\u725b\u4e86\uff0c\u4f1a\u8ba9\u4f60\u7ed9\u54c8\u52c3\u671b\u8fdc\u955c\u62cd\u5230\u7684\u7167\u7247\u8fdb\u884c\u964d\u566a\u5904\u7406\uff0c\u6062\u590d\u7eda\u70c2\u6e05\u6670\u7684\u661f\u7a7a\uff1blab6 \u4f1a\u8ba9\u4f60\u6784\u9020\u4e00\u4e2a\u53cd\u9988\u7cfb\u7edf\uff0c\u5e73\u8861\u5c0f\u8f66\u4e0a\u7684\u7ec6\u6746\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~ee120/fa19/ \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a5 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 6 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-EE120 - GitHub \u4e2d\u3002","title":"UCB EE120 : Signal and Systems"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/#ucb-ee120-signal-and-systems","text":"","title":"UCB EE120: Signal and Systems"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS70\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570 \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u6700\u7cbe\u534e\u7684\u90e8\u5206\u5c31\u662f 6 \u4e2a\u8d85\u6709\u8da3\u7684\u7f16\u7a0b\u4f5c\u4e1a\u4e86\uff0c\u4f1a\u8ba9\u4f60\u7528 Python \u901a\u8fc7\u5b66\u4e60\u5230\u7684\u4fe1\u53f7\u4e0e\u7cfb\u7edf\u7684\u7406\u8bba\u77e5\u8bc6\uff0c\u89e3\u51b3\u5404\u7c7b\u5b9e\u9645\u95ee\u9898\u3002\u4f8b\u5982 lab3 \u4f1a\u8ba9\u4f60\u5b9e\u73b0 FFT \u7b97\u6cd5\uff0c\u5e76\u548c Numpy \u7684\u5b98\u65b9\u5b9e\u73b0\u8fdb\u884c\u6027\u80fd\u5bf9\u6bd4\uff1blab4 \u4f1a\u901a\u8fc7\u5206\u6790\u624b\u6307\u5934\u7684\u5f71\u50cf\u6570\u636e\u63a8\u65ad\u5fc3\u7387\uff1blab5 \u5c31\u66f4\u725b\u4e86\uff0c\u4f1a\u8ba9\u4f60\u7ed9\u54c8\u52c3\u671b\u8fdc\u955c\u62cd\u5230\u7684\u7167\u7247\u8fdb\u884c\u964d\u566a\u5904\u7406\uff0c\u6062\u590d\u7eda\u70c2\u6e05\u6670\u7684\u661f\u7a7a\uff1blab6 \u4f1a\u8ba9\u4f60\u6784\u9020\u4e00\u4e2a\u53cd\u9988\u7cfb\u7edf\uff0c\u5e73\u8861\u5c0f\u8f66\u4e0a\u7684\u7ec6\u6746\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~ee120/fa19/ \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a5 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 6 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-EE120 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%A8%8B%E5%BA%8F%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1/CS242/","text":"","title":"CS242"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/","text":"UCB CS161: Computer Security \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aC, Go \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u8bfe\u7a0b\u5185\u5bb9\u5206\u4e3a5\u4e2a\u90e8\u5206\uff1a Security principles: how to design a secure system Memory safety: buffer overflow attack Cryptography: symmetric encryption, asymmetric encryption, MAC, digital signature ......... Web: SQL-injection, XSS, XSRF ....... Networking: attacks for each layer \u8fd9\u95e8\u8bfe\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\u7684\u90e8\u5206\u662f Project2\uff0c\u8ba9\u4f60\u7528 Go \u8bed\u8a00\u8bbe\u8ba1\u548c\u5b9e\u73b0\u4e00\u4e2a\u5b89\u5168\u7684\u6587\u4ef6\u5206\u4eab\u7cfb\u7edf\u3002\u6211\u82b1\u4e86\u6574\u6574\u4e09\u5929\u624d\u5b8c\u6210\u4e86\u8fd9\u4e2a\u975e\u5e38\u8650\u7684 Project\uff0c\u603b\u4ee3\u7801\u91cf\u8d85\u8fc7 3k \u884c\u3002\u5728\u8fd9\u6837\u5bc6\u96c6\u578b\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u80fd\u6781\u5927\u5730\u953b\u70bc\u4f60\u8bbe\u8ba1\u548c\u5b9e\u73b0\u4e00\u4e2a\u5b89\u5168\u7cfb\u7edf\u7684\u80fd\u529b\u3002 2020 \u5e74\u590f\u5b63\u5b66\u671f\u7684\u7248\u672c\u5f00\u6e90\u4e86\u8bfe\u7a0b\u5f55\u5f71\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728\u4e0b\u9762\u7684\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5\u91cc\u627e\u5230\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://su20.cs161.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://textbook.cs161.org/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a7 \u4e2a\u5728\u7ebf HW + 3 \u4e2a Lab + 3 \u4e2a Project \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS161 - GitHub \u4e2d\u3002","title":"UCB CS161: Computer Security"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/#ucb-cs161-computer-security","text":"","title":"UCB CS161: Computer Security"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1aCS61A, CS61B, CS61C \u7f16\u7a0b\u8bed\u8a00\uff1aC, Go \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u8bfe\u7a0b\u5185\u5bb9\u5206\u4e3a5\u4e2a\u90e8\u5206\uff1a Security principles: how to design a secure system Memory safety: buffer overflow attack Cryptography: symmetric encryption, asymmetric encryption, MAC, digital signature ......... Web: SQL-injection, XSS, XSRF ....... Networking: attacks for each layer \u8fd9\u95e8\u8bfe\u8ba9\u6211\u5370\u8c61\u6700\u4e3a\u6df1\u523b\u7684\u90e8\u5206\u662f Project2\uff0c\u8ba9\u4f60\u7528 Go \u8bed\u8a00\u8bbe\u8ba1\u548c\u5b9e\u73b0\u4e00\u4e2a\u5b89\u5168\u7684\u6587\u4ef6\u5206\u4eab\u7cfb\u7edf\u3002\u6211\u82b1\u4e86\u6574\u6574\u4e09\u5929\u624d\u5b8c\u6210\u4e86\u8fd9\u4e2a\u975e\u5e38\u8650\u7684 Project\uff0c\u603b\u4ee3\u7801\u91cf\u8d85\u8fc7 3k \u884c\u3002\u5728\u8fd9\u6837\u5bc6\u96c6\u578b\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u80fd\u6781\u5927\u5730\u953b\u70bc\u4f60\u8bbe\u8ba1\u548c\u5b9e\u73b0\u4e00\u4e2a\u5b89\u5168\u7cfb\u7edf\u7684\u80fd\u529b\u3002 2020 \u5e74\u590f\u5b63\u5b66\u671f\u7684\u7248\u672c\u5f00\u6e90\u4e86\u8bfe\u7a0b\u5f55\u5f71\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728\u4e0b\u9762\u7684\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5\u91cc\u627e\u5230\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://su20.cs161.org/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a https://textbook.cs161.org/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a7 \u4e2a\u5728\u7ebf HW + 3 \u4e2a Lab + 3 \u4e2a Project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/UCB-CS161 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/","text":"MIT 6.858: Computer System Security \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u521d\u6b65\u4e86\u89e3 \u7f16\u7a0b\u8bed\u8a00\uff1aC, Python \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 MIT \u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u5b9e\u9a8c\u73af\u5883\u662f\u4e00\u4e2a Web Application Zoobar\u3002\u5b66\u751f\u5b66\u4e60\u653b\u9632\u6280\u672f\u5e76\u5e94\u7528\u4e8e\u8be5 Web Application\u3002 Lab 1: you will explore the zoobar web application, and use buffer overflow attacks to break its security properties. Lab 2: you will improve the zoobar web application by using privilege separation, so that if one component is compromised, the adversary doesn't get control over the whole web application. Lab 3: you will build a program analysis tool based on symbolic execution to find bugs in Python code such as the zoobar web application. Lab 4: you will improve the zoobar application against browser attacks. \u8fd9\u4e2a\u8bfe\u6211\u4e3b\u8981\u662f\u505a\u4e86 Lab 3\u3002Lab 3 \u662f\u901a\u8fc7\u6df7\u5408\u7b26\u53f7\u6267\u884c\u6765\u904d\u5386\u7a0b\u5e8f\u7684\u6240\u6709\u5206\u652f\uff0c\u7406\u89e3\u4e86\u7b26\u53f7\u6267\u884c\u7684\u601d\u60f3\u540e Lab \u5e76\u4e0d\u96be\u505a\u3002\u8fd9\u4e2a Lab \u76f4\u89c2\u5c55\u793a\u7b26\u53f7\u6267\u884c\u8fd9\u79cd\u6280\u672f\u7684\u4f7f\u7528\u65b9\u6cd5\u3002 \u8fd9\u4e2a\u8bfe\u7684 Final Project \u662f\u5b9e\u73b0 SecFS \uff0c\u4e00\u4e2a\u8fdc\u7aef\u6587\u4ef6\u7cfb\u7edf\uff0c\u9762\u5bf9\u5b8c\u5168\u4e0d\u53ef\u4fe1\u7684\u670d\u52a1\u5668\uff0c\u63d0\u4f9b\u673a\u5bc6\u6027\u548c\u5b8c\u6574\u6027\u3002\u53c2\u8003\u8bba\u6587\u4e3a SUNDR \u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://css.csail.mit.edu/6.858/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a Lab + Final Project / Lab5","title":"MIT 6.858: Computer System Security"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/#mit-6858-computer-system-security","text":"","title":"MIT 6.858: Computer System Security"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u521d\u6b65\u4e86\u89e3 \u7f16\u7a0b\u8bed\u8a00\uff1aC, Python \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 MIT \u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u5b89\u5168\u8bfe\u7a0b\uff0c\u5b9e\u9a8c\u73af\u5883\u662f\u4e00\u4e2a Web Application Zoobar\u3002\u5b66\u751f\u5b66\u4e60\u653b\u9632\u6280\u672f\u5e76\u5e94\u7528\u4e8e\u8be5 Web Application\u3002 Lab 1: you will explore the zoobar web application, and use buffer overflow attacks to break its security properties. Lab 2: you will improve the zoobar web application by using privilege separation, so that if one component is compromised, the adversary doesn't get control over the whole web application. Lab 3: you will build a program analysis tool based on symbolic execution to find bugs in Python code such as the zoobar web application. Lab 4: you will improve the zoobar application against browser attacks. \u8fd9\u4e2a\u8bfe\u6211\u4e3b\u8981\u662f\u505a\u4e86 Lab 3\u3002Lab 3 \u662f\u901a\u8fc7\u6df7\u5408\u7b26\u53f7\u6267\u884c\u6765\u904d\u5386\u7a0b\u5e8f\u7684\u6240\u6709\u5206\u652f\uff0c\u7406\u89e3\u4e86\u7b26\u53f7\u6267\u884c\u7684\u601d\u60f3\u540e Lab \u5e76\u4e0d\u96be\u505a\u3002\u8fd9\u4e2a Lab \u76f4\u89c2\u5c55\u793a\u7b26\u53f7\u6267\u884c\u8fd9\u79cd\u6280\u672f\u7684\u4f7f\u7528\u65b9\u6cd5\u3002 \u8fd9\u4e2a\u8bfe\u7684 Final Project \u662f\u5b9e\u73b0 SecFS \uff0c\u4e00\u4e2a\u8fdc\u7aef\u6587\u4ef6\u7cfb\u7edf\uff0c\u9762\u5bf9\u5b8c\u5168\u4e0d\u53ef\u4fe1\u7684\u670d\u52a1\u5668\uff0c\u63d0\u4f9b\u673a\u5bc6\u6027\u548c\u5b8c\u6574\u6027\u3002\u53c2\u8003\u8bba\u6587\u4e3a SUNDR \u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://css.csail.mit.edu/6.858/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9 \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a Lab + Final Project / Lab5","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/","text":"Stanford CS106B/X: Programming Abstractions in C++ \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u57fa\u7840 (CS50/CS106A/CS61A or equivalent) \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 Stanford \u7684\u8fdb\u9636\u7f16\u7a0b\u8bfe\uff0cCS106X \u5728\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u4f1a\u6bd4 CS106B \u6709\u6240\u63d0\u9ad8\uff0c\u4f46\u4e3b\u4f53\u5185\u5bb9\u7c7b\u4f3c\u3002\u4e3b\u8981\u901a\u8fc7 C++ \u8bed\u8a00\u8ba9\u5b66\u751f\u5728\u5b9e\u9645\u7684\u7f16\u7a0b\u4f5c\u4e1a\u91cc\u57f9\u517b\u901a\u8fc7\u7f16\u7a0b\u62bd\u8c61\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u7684\u80fd\u529b\uff0c\u540c\u65f6\u4e5f\u4f1a\u6d89\u53ca\u4e00\u4e9b\u7b80\u5355\u7684\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u7684\u77e5\u8bc6\uff0c\u4f46\u603b\u4f53\u6765\u8bf4\u6ca1\u6709\u4e00\u95e8\u4e13\u95e8\u7684\u6570\u636e\u7ed3\u6784\u8bfe\u90a3\u4e48\u7cfb\u7edf\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a CS106B , CS106X \u8bfe\u7a0b\u6559\u6750\uff1a https://web.stanford.edu/class/cs106x/res/reader/CS106BX-Reader.pdf \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1G7411k7jG","title":"Stanford CS106B/X"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/#stanford-cs106bx-programming-abstractions-in-c","text":"","title":"Stanford CS106B/X: Programming Abstractions in C++"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u57fa\u7840 (CS50/CS106A/CS61A or equivalent) \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50-70 \u5c0f\u65f6 Stanford \u7684\u8fdb\u9636\u7f16\u7a0b\u8bfe\uff0cCS106X \u5728\u96be\u5ea6\u548c\u6df1\u5ea6\u4e0a\u4f1a\u6bd4 CS106B \u6709\u6240\u63d0\u9ad8\uff0c\u4f46\u4e3b\u4f53\u5185\u5bb9\u7c7b\u4f3c\u3002\u4e3b\u8981\u901a\u8fc7 C++ \u8bed\u8a00\u8ba9\u5b66\u751f\u5728\u5b9e\u9645\u7684\u7f16\u7a0b\u4f5c\u4e1a\u91cc\u57f9\u517b\u901a\u8fc7\u7f16\u7a0b\u62bd\u8c61\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\u7684\u80fd\u529b\uff0c\u540c\u65f6\u4e5f\u4f1a\u6d89\u53ca\u4e00\u4e9b\u7b80\u5355\u7684\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u7684\u77e5\u8bc6\uff0c\u4f46\u603b\u4f53\u6765\u8bf4\u6ca1\u6709\u4e00\u95e8\u4e13\u95e8\u7684\u6570\u636e\u7ed3\u6784\u8bfe\u90a3\u4e48\u7cfb\u7edf\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a CS106B , CS106X \u8bfe\u7a0b\u6559\u6750\uff1a https://web.stanford.edu/class/cs106x/res/reader/CS106BX-Reader.pdf \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1G7411k7jG","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/","text":"CS106L: Standard C++ Programming \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6700\u597d\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a20 \u5c0f\u65f6 \u6211\u4ece\u5927\u4e00\u5f00\u59cb\u4e00\u76f4\u90fd\u662f\u5199\u7684 C++ \u4ee3\u7801\uff0c\u76f4\u5230\u5b66\u5b8c\u8fd9\u95e8\u8bfe\u6211\u624d\u610f\u8bc6\u5230\uff0c\u6211\u5199\u7684 C++ \u4ee3\u7801\u5927\u6982\u53ea\u662f C \u8bed\u8a00 + cin / cout \u800c\u5df2\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u6df1\u5165\u5230\u5f88\u591a\u6807\u51c6 C++ \u7684\u7279\u6027\u548c\u8bed\u6cd5\uff0c\u8ba9\u4f60\u7f16\u5199\u51fa\u9ad8\u8d28\u91cf\u7684 C++ \u4ee3\u7801\u3002\u4f8b\u5982 auto binding, uniform initialization, lambda function, move semantics\uff0cRAII \u7b49\u6280\u5de7\u90fd\u5728\u6211\u6b64\u540e\u7684\u4ee3\u7801\u751f\u6daf\u4e2d\u88ab\u53cd\u590d\u7528\u5230\uff0c\u975e\u5e38\u5b9e\u7528\u3002 \u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u91cc\u4f60\u4f1a\u5b9e\u73b0\u4e00\u4e2a HashMap\uff08\u7c7b\u4f3c\u4e8e STL \u4e2d\u7684 unordered_map ), \u8fd9\u4e2a\u4f5c\u4e1a\u51e0\u4e4e\u628a\u6574\u4e2a\u8bfe\u7a0b\u4e32\u8054\u4e86\u8d77\u6765\uff0c\u975e\u5e38\u8003\u9a8c\u4ee3\u7801\u80fd\u529b\u3002\u7279\u522b\u662f iterator \u7684\u5b9e\u73b0\uff0c\u505a\u5b8c\u8fd9\u4e2a\u4f5c\u4e1a\u6211\u5f00\u59cb\u7406\u89e3\u4e3a\u4ec0\u4e48 Linus \u5bf9 C/C++ \u55e4\u4e4b\u4ee5\u9f3b\u4e86\uff0c\u56e0\u4e3a\u771f\u7684\u5f88\u96be\u5199\u5bf9\u3002 \u603b\u7684\u6765\u8bb2\u8fd9\u95e8\u8bfe\u5e76\u4e0d\u96be\uff0c\u4f46\u662f\u4fe1\u606f\u91cf\u5f88\u5927\uff0c\u9700\u8981\u4f60\u5728\u4e4b\u540e\u7684\u5f00\u53d1\u5b9e\u8df5\u4e2d\u53cd\u590d\u5de9\u56fa\u3002Stanford \u4e4b\u6240\u4ee5\u5355\u5f00\u4e00\u95e8 C++ \u7684\u7f16\u7a0b\u8bfe\uff0c\u662f\u56e0\u4e3a\u5b83\u540e\u7eed\u7684\u5f88\u591a CS \u8bfe\u7a0b Project \u90fd\u662f\u57fa\u4e8e C++\u7684\u3002\u4f8b\u5982 CS144 \u8ba1\u7b97\u673a\u7f51\u7edc\u548c CS143 \u7f16\u8bd1\u5668\u3002\u8fd9\u4e24\u95e8\u8bfe\u5728\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs106l/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/channel/UCSqr6y-eaQT_qZJVUm_4QxQ/playlists \u8bfe\u7a0b\u6559\u6750\uff1a http://web.stanford.edu/class/cs106l/full_course_reader.pdf Assignment1\u4e0b\u8f7d\u7f51\u5740\uff1a https://github.com/snme/cs106L-assignment1 Assignment2\u4e0b\u8f7d\u7f51\u5740\uff1a https://github.com/snme/cs106L-assignment2 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5177\u4f53\u5185\u5bb9\u89c1\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u6211\u505a\u7684\u65f6\u5019\u4e00\u5171\u662f\u4e24\u4e2a\uff1a \u5b9e\u73b0\u4e00\u4e2a WikiRacer \u7684\u5c0f\u6e38\u620f \u5b9e\u73b0\u4e00\u4e2a\u7c7b\u4f3c STL \u5e93\u7684 HashMap \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS106L - GitHub \u4e2d\u3002","title":"Stanford CS106L: Standard C++ Programming"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/#cs106l-standard-c-programming","text":"","title":"CS106L: Standard C++ Programming"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6700\u597d\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a20 \u5c0f\u65f6 \u6211\u4ece\u5927\u4e00\u5f00\u59cb\u4e00\u76f4\u90fd\u662f\u5199\u7684 C++ \u4ee3\u7801\uff0c\u76f4\u5230\u5b66\u5b8c\u8fd9\u95e8\u8bfe\u6211\u624d\u610f\u8bc6\u5230\uff0c\u6211\u5199\u7684 C++ \u4ee3\u7801\u5927\u6982\u53ea\u662f C \u8bed\u8a00 + cin / cout \u800c\u5df2\u3002 \u8fd9\u95e8\u8bfe\u4f1a\u6df1\u5165\u5230\u5f88\u591a\u6807\u51c6 C++ \u7684\u7279\u6027\u548c\u8bed\u6cd5\uff0c\u8ba9\u4f60\u7f16\u5199\u51fa\u9ad8\u8d28\u91cf\u7684 C++ \u4ee3\u7801\u3002\u4f8b\u5982 auto binding, uniform initialization, lambda function, move semantics\uff0cRAII \u7b49\u6280\u5de7\u90fd\u5728\u6211\u6b64\u540e\u7684\u4ee3\u7801\u751f\u6daf\u4e2d\u88ab\u53cd\u590d\u7528\u5230\uff0c\u975e\u5e38\u5b9e\u7528\u3002 \u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u91cc\u4f60\u4f1a\u5b9e\u73b0\u4e00\u4e2a HashMap\uff08\u7c7b\u4f3c\u4e8e STL \u4e2d\u7684 unordered_map ), \u8fd9\u4e2a\u4f5c\u4e1a\u51e0\u4e4e\u628a\u6574\u4e2a\u8bfe\u7a0b\u4e32\u8054\u4e86\u8d77\u6765\uff0c\u975e\u5e38\u8003\u9a8c\u4ee3\u7801\u80fd\u529b\u3002\u7279\u522b\u662f iterator \u7684\u5b9e\u73b0\uff0c\u505a\u5b8c\u8fd9\u4e2a\u4f5c\u4e1a\u6211\u5f00\u59cb\u7406\u89e3\u4e3a\u4ec0\u4e48 Linus \u5bf9 C/C++ \u55e4\u4e4b\u4ee5\u9f3b\u4e86\uff0c\u56e0\u4e3a\u771f\u7684\u5f88\u96be\u5199\u5bf9\u3002 \u603b\u7684\u6765\u8bb2\u8fd9\u95e8\u8bfe\u5e76\u4e0d\u96be\uff0c\u4f46\u662f\u4fe1\u606f\u91cf\u5f88\u5927\uff0c\u9700\u8981\u4f60\u5728\u4e4b\u540e\u7684\u5f00\u53d1\u5b9e\u8df5\u4e2d\u53cd\u590d\u5de9\u56fa\u3002Stanford \u4e4b\u6240\u4ee5\u5355\u5f00\u4e00\u95e8 C++ \u7684\u7f16\u7a0b\u8bfe\uff0c\u662f\u56e0\u4e3a\u5b83\u540e\u7eed\u7684\u5f88\u591a CS \u8bfe\u7a0b Project \u90fd\u662f\u57fa\u4e8e C++\u7684\u3002\u4f8b\u5982 CS144 \u8ba1\u7b97\u673a\u7f51\u7edc\u548c CS143 \u7f16\u8bd1\u5668\u3002\u8fd9\u4e24\u95e8\u8bfe\u5728\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs106l/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/channel/UCSqr6y-eaQT_qZJVUm_4QxQ/playlists \u8bfe\u7a0b\u6559\u6750\uff1a http://web.stanford.edu/class/cs106l/full_course_reader.pdf Assignment1\u4e0b\u8f7d\u7f51\u5740\uff1a https://github.com/snme/cs106L-assignment1 Assignment2\u4e0b\u8f7d\u7f51\u5740\uff1a https://github.com/snme/cs106L-assignment2 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5177\u4f53\u5185\u5bb9\u89c1\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u6211\u505a\u7684\u65f6\u5019\u4e00\u5171\u662f\u4e24\u4e2a\uff1a \u5b9e\u73b0\u4e00\u4e2a WikiRacer \u7684\u5c0f\u6e38\u620f \u5b9e\u73b0\u4e00\u4e2a\u7c7b\u4f3c STL \u5e93\u7684 HashMap","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS106L - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/","text":"CS110L: Safety in Systems Programming \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6700\u597d\u6709\u4e00\u5b9a\u7684\u7f16\u7a0b\u80cc\u666f\u5e76\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u521d\u6b65\u7684\u8ba4\u8bc6\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aRust \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30 \u5c0f\u65f6 \u5728\u8fd9\u95e8\u8bfe\u4e2d\u4f60\u5c06\u4f1a\u5b66\u4e60 Rust \u8fd9\u95e8\u795e\u5947\u7684\u8bed\u8a00\u3002 \u5982\u679c\u4f60\u5b66\u8fc7 C \u5e76\u63a5\u89e6\u8fc7\u4e00\u4e9b\u7cfb\u7edf\u7f16\u7a0b\u7684\u8bdd\uff0c\u5e94\u8be5\u5bf9 C \u7684\u5185\u5b58\u6cc4\u6f0f\u4ee5\u53ca\u6307\u9488\u7684\u5371\u9669\u6709\u6240\u8033\u95fb\uff0c\u4f46 C \u7684\u5e95\u5c42\u7279\u6027\u4ee5\u53ca\u9ad8\u6548\u4ecd\u7136\u8ba9\u5b83\u5728\u7cfb\u7edf\u7ea7\u7f16\u7a0b\u4e2d\u65e0\u6cd5\u88ab\u4f8b\u5982 Java \u7b49\u81ea\u5e26\u5783\u573e\u6536\u96c6\u673a\u5236\u7684\u9ad8\u7ea7\u8bed\u8a00\u6240\u66ff\u4ee3\u3002\u800c Rust \u7684\u76ee\u6807\u5219\u662f\u5e0c\u671b\u5728 C \u7684\u9ad8\u6548\u57fa\u7840\u4e0a\uff0c\u5f25\u8865\u5176\u5b89\u5168\u4e0d\u8db3\u7684\u7f3a\u70b9\u3002\u56e0\u6b64 Rust \u5728\u8bbe\u8ba1\u4e4b\u521d\uff0c\u5c31\u6709\u5e26\u6709\u5f88\u591a\u7cfb\u7edf\u7f16\u7a0b\u7684\u89c2\u70b9\u3002\u5b66\u4e60 Rust\uff0c\u4e5f\u80fd\u8ba9\u4f60\u4e4b\u540e\u80fd\u7528 C \u8bed\u8a00\u7f16\u5199\u51fa\u66f4\u5b89\u5168\u66f4\u4f18\u96c5\u7684\u7cfb\u7edf\u7ea7\u4ee3\u7801\uff08\u4f8b\u5982\u64cd\u4f5c\u7cfb\u7edf\u7b49\uff09\u3002 \u8fd9\u95e8\u8bfe\u7684\u540e\u534a\u90e8\u5206\u5173\u6ce8\u5728\u5e76\u53d1\uff08concurrency\uff09\u8fd9\u4e00\u4e3b\u9898\u4e0a\uff0c\u4f60\u5c06\u4f1a\u7cfb\u7edf\u5730\u638c\u63e1\u591a\u8fdb\u7a0b\u3001\u591a\u7ebf\u7a0b\u3001\u57fa\u4e8e\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u7b49\u82e5\u5e72\u5e76\u53d1\u6280\u672f\uff0c\u5e76\u5728\u7b2c\u4e8c\u4e2a Project \u4e2d\u6bd4\u8f83\u5b83\u4eec\u5404\u81ea\u7684\u4f18\u52a3\u3002Rust \u4e2d \u201cfutures\u201d \u7684\u6982\u5ff5\u975e\u5e38\u6709\u8da3\u548c\u4f18\u96c5\uff0c\u8fd9\u4e9b\u57fa\u7840\u77e5\u8bc6\u5bf9\u4f60\u540e\u7eed\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u76f8\u5173\u8bfe\u7a0b\u7684\u5b66\u4e60\u5f88\u6709\u5e2e\u52a9\u3002\u53e6\u5916\uff0c\u6e05\u534e\u5927\u5b66\u7684\u64cd\u7edf\u5b9e\u9a8c rCore \u5c31\u662f\u57fa\u4e8e Rust \u7f16\u5199\u7684\uff0c\u5177\u4f53\u53c2\u89c1 \u6587\u6863 \u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://reberhardt.com/cs110l/spring-2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://youtu.be/j7AQrtLevUE \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5171 6 \u4e2a Lab \u548c 2 \u4e2a Project\uff0c\u4f5c\u4e1a\u6587\u6863\u548c\u4ee3\u7801\u6846\u67b6\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002\u5176\u4e2d\u4e24\u4e2a Project \u975e\u5e38\u6709\u8da3\uff0c\u5206\u522b\u662f\uff1a \u7528 Rust \u5b9e\u73b0\u4e00\u4e2a\u7c7b\u4f3c\u4e8e GDB \u7684 debugger \u7528 Rust \u5b9e\u73b0\u4e00\u4e2a\u8d1f\u8f7d\u5747\u8861\u5668 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS110L - GitHub \u4e2d\u3002","title":"Stanford CS110L: Safety in Systems Programming"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/#cs110l-safety-in-systems-programming","text":"","title":"CS110L: Safety in Systems Programming"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u6700\u597d\u6709\u4e00\u5b9a\u7684\u7f16\u7a0b\u80cc\u666f\u5e76\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u521d\u6b65\u7684\u8ba4\u8bc6\u3002 \u7f16\u7a0b\u8bed\u8a00\uff1aRust \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a30 \u5c0f\u65f6 \u5728\u8fd9\u95e8\u8bfe\u4e2d\u4f60\u5c06\u4f1a\u5b66\u4e60 Rust \u8fd9\u95e8\u795e\u5947\u7684\u8bed\u8a00\u3002 \u5982\u679c\u4f60\u5b66\u8fc7 C \u5e76\u63a5\u89e6\u8fc7\u4e00\u4e9b\u7cfb\u7edf\u7f16\u7a0b\u7684\u8bdd\uff0c\u5e94\u8be5\u5bf9 C \u7684\u5185\u5b58\u6cc4\u6f0f\u4ee5\u53ca\u6307\u9488\u7684\u5371\u9669\u6709\u6240\u8033\u95fb\uff0c\u4f46 C \u7684\u5e95\u5c42\u7279\u6027\u4ee5\u53ca\u9ad8\u6548\u4ecd\u7136\u8ba9\u5b83\u5728\u7cfb\u7edf\u7ea7\u7f16\u7a0b\u4e2d\u65e0\u6cd5\u88ab\u4f8b\u5982 Java \u7b49\u81ea\u5e26\u5783\u573e\u6536\u96c6\u673a\u5236\u7684\u9ad8\u7ea7\u8bed\u8a00\u6240\u66ff\u4ee3\u3002\u800c Rust \u7684\u76ee\u6807\u5219\u662f\u5e0c\u671b\u5728 C \u7684\u9ad8\u6548\u57fa\u7840\u4e0a\uff0c\u5f25\u8865\u5176\u5b89\u5168\u4e0d\u8db3\u7684\u7f3a\u70b9\u3002\u56e0\u6b64 Rust \u5728\u8bbe\u8ba1\u4e4b\u521d\uff0c\u5c31\u6709\u5e26\u6709\u5f88\u591a\u7cfb\u7edf\u7f16\u7a0b\u7684\u89c2\u70b9\u3002\u5b66\u4e60 Rust\uff0c\u4e5f\u80fd\u8ba9\u4f60\u4e4b\u540e\u80fd\u7528 C \u8bed\u8a00\u7f16\u5199\u51fa\u66f4\u5b89\u5168\u66f4\u4f18\u96c5\u7684\u7cfb\u7edf\u7ea7\u4ee3\u7801\uff08\u4f8b\u5982\u64cd\u4f5c\u7cfb\u7edf\u7b49\uff09\u3002 \u8fd9\u95e8\u8bfe\u7684\u540e\u534a\u90e8\u5206\u5173\u6ce8\u5728\u5e76\u53d1\uff08concurrency\uff09\u8fd9\u4e00\u4e3b\u9898\u4e0a\uff0c\u4f60\u5c06\u4f1a\u7cfb\u7edf\u5730\u638c\u63e1\u591a\u8fdb\u7a0b\u3001\u591a\u7ebf\u7a0b\u3001\u57fa\u4e8e\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u7b49\u82e5\u5e72\u5e76\u53d1\u6280\u672f\uff0c\u5e76\u5728\u7b2c\u4e8c\u4e2a Project \u4e2d\u6bd4\u8f83\u5b83\u4eec\u5404\u81ea\u7684\u4f18\u52a3\u3002Rust \u4e2d \u201cfutures\u201d \u7684\u6982\u5ff5\u975e\u5e38\u6709\u8da3\u548c\u4f18\u96c5\uff0c\u8fd9\u4e9b\u57fa\u7840\u77e5\u8bc6\u5bf9\u4f60\u540e\u7eed\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u76f8\u5173\u8bfe\u7a0b\u7684\u5b66\u4e60\u5f88\u6709\u5e2e\u52a9\u3002\u53e6\u5916\uff0c\u6e05\u534e\u5927\u5b66\u7684\u64cd\u7edf\u5b9e\u9a8c rCore \u5c31\u662f\u57fa\u4e8e Rust \u7f16\u5199\u7684\uff0c\u5177\u4f53\u53c2\u89c1 \u6587\u6863 \u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://reberhardt.com/cs110l/spring-2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://youtu.be/j7AQrtLevUE \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5171 6 \u4e2a Lab \u548c 2 \u4e2a Project\uff0c\u4f5c\u4e1a\u6587\u6863\u548c\u4ee3\u7801\u6846\u67b6\u8be6\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002\u5176\u4e2d\u4e24\u4e2a Project \u975e\u5e38\u6709\u8da3\uff0c\u5206\u522b\u662f\uff1a \u7528 Rust \u5b9e\u73b0\u4e00\u4e2a\u7c7b\u4f3c\u4e8e GDB \u7684 debugger \u7528 Rust \u5b9e\u73b0\u4e00\u4e2a\u8d1f\u8f7d\u5747\u8861\u5668","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS110L - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/","text":"CS50: This is CS50x \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aHarvard \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aC, Python, SQL, HTML, CSS, JavaScript \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a20 \u5c0f\u65f6 \u8fde\u7eed\u591a\u5e74\u88ab\u54c8\u4f5b\u5927\u5b66\u5b66\u751f\u8bc4\u4e3a\u6700\u53d7\u6b22\u8fce\u7684\u516c\u9009\u8bfe\u7a0b\u3002Malan \u6559\u6388\u4e0a\u8bfe\u975e\u5e38\u6709\u6fc0\u60c5\uff0c\u6495\u9ec4\u9875\u8bb2\u4e8c\u5206\u6cd5\u7684\u573a\u9762\u8ba9\u4eba\u8bb0\u5fc6\u72b9\u65b0\uff08\u7b11\uff09\u3002\u4f46\u56e0\u4e3a\u5b83\u7684\u5165\u95e8\u4ee5\u53ca\u5168\u6821\u516c\u9009\u7684\u5c5e\u6027\uff0c\u8bfe\u7a0b\u5185\u5bb9\u96be\u5ea6\u6bd4\u8f83\u6e29\u548c\uff0c\u4f46\u662f\u8bfe\u7a0b\u4f5c\u4e1a\u8d28\u91cf\u975e\u5e38\u9ad8\u800c\u4e14\u5168\u90e8\u514d\u8d39\u5f00\u6e90\uff0c\u975e\u5e38\u9002\u5408\u5c0f\u767d\u5165\u95e8\uff0c\u6216\u8005\u5927\u4f6c\u4f11\u95f2\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs50.harvard.edu/x/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://cs50.harvard.edu/x/2022/ \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs50.harvard.edu/x/2022/","title":"Harvard CS50: This is CS50x"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/#cs50-this-is-cs50x","text":"","title":"CS50: This is CS50x"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aHarvard \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aC, Python, SQL, HTML, CSS, JavaScript \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a20 \u5c0f\u65f6 \u8fde\u7eed\u591a\u5e74\u88ab\u54c8\u4f5b\u5927\u5b66\u5b66\u751f\u8bc4\u4e3a\u6700\u53d7\u6b22\u8fce\u7684\u516c\u9009\u8bfe\u7a0b\u3002Malan \u6559\u6388\u4e0a\u8bfe\u975e\u5e38\u6709\u6fc0\u60c5\uff0c\u6495\u9ec4\u9875\u8bb2\u4e8c\u5206\u6cd5\u7684\u573a\u9762\u8ba9\u4eba\u8bb0\u5fc6\u72b9\u65b0\uff08\u7b11\uff09\u3002\u4f46\u56e0\u4e3a\u5b83\u7684\u5165\u95e8\u4ee5\u53ca\u5168\u6821\u516c\u9009\u7684\u5c5e\u6027\uff0c\u8bfe\u7a0b\u5185\u5bb9\u96be\u5ea6\u6bd4\u8f83\u6e29\u548c\uff0c\u4f46\u662f\u8bfe\u7a0b\u4f5c\u4e1a\u8d28\u91cf\u975e\u5e38\u9ad8\u800c\u4e14\u5168\u90e8\u514d\u8d39\u5f00\u6e90\uff0c\u975e\u5e38\u9002\u5408\u5c0f\u767d\u5165\u95e8\uff0c\u6216\u8005\u5927\u4f6c\u4f11\u95f2\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs50.harvard.edu/x/2022/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://cs50.harvard.edu/x/2022/ \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs50.harvard.edu/x/2022/","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/","text":"CS61A: Structure and Interpretation of Computer Programs \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aPython, Scheme, SQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u7b2c\u4e00\u95e8\u8bfe\u7a0b\uff0c\u4e5f\u662f\u6211\u7684 Python \u5165\u95e8\u8bfe\u3002 CS61 \u7cfb\u5217\u662f\u4f2f\u514b\u5229 CS \u4e13\u4e1a\u7684\u5165\u95e8\u8bfe\uff0c\u5176\u4e2d\uff1a CS61A: \u5f3a\u8c03\u62bd\u8c61\uff0c\u8ba9\u5b66\u751f\u638c\u63e1\u7528\u7a0b\u5e8f\u6765\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff0c\u800c\u4e0d\u5173\u6ce8\u5e95\u5c42\u7684\u786c\u4ef6\u7ec6\u8282\u3002 CS61B: \u6ce8\u91cd\u7b97\u6cd5\u4e0e\u6570\u636e\u7ed3\u6784\u4ee5\u53ca\u5927\u89c4\u6a21\u7a0b\u5e8f\u7684\u6784\u5efa\uff0c\u5b66\u751f\u4f1a\u7528 Java \u8bed\u8a00\u7ed3\u5408\u7b97\u6cd5\u4e0e\u6570\u636e\u7ed3\u6784\u7684\u77e5\u8bc6\u6765\u6784\u5efa\u5343\u884c\u4ee3\u7801\u7ea7\u522b\u7684\u5927\u578b\u9879\u76ee\uff08\u4e00\u4e2a\u7b80\u6613\u7684\u8c37\u6b4c\u5730\u56fe\uff0c\u4e00\u4e2a\u4e8c\u7ef4\u7248\u7684 Minecraft\uff09\u3002 CS61C: \u5173\u6ce8\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u8ba9\u5b66\u751f\u7406\u89e3\u9ad8\u7ea7\u8bed\u8a00\uff08\u4f8b\u5982 C\uff09\u662f\u5982\u4f55\u4e00\u6b65\u6b65\u8f6c\u6362\u4e3a\u673a\u5668\u53ef\u4ee5\u7406\u89e3\u7684 01 \u4e32\u5e76\u5728 CPU \u6267\u884c\u7684\uff0c\u5b66\u751f\u5c06\u4f1a\u5b66\u4e60 RISC-V \u67b6\u6784\u5e76\u81ea\u5df1\u7528 Logism \u5b9e\u73b0\u4e00\u4e2a CPU\u3002 CS61B \u548c CS61C \u5728\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 \u56de\u5230 CS61A\uff0c\u6ce8\u610f\u8fd9\u4e0d\u4ec5\u4ec5\u662f\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00\u8bfe\uff0c\u800c\u662f\u4f1a\u6df1\u5165\u5230\u7a0b\u5e8f\u6784\u9020\u4e0e\u8fd0\u884c\u7684\u539f\u7406\u3002\u6700\u540e\u4f60\u5c06\u5728\u7b2c 4 \u4e2a Project \u4e2d\u7528 Python \u5b9e\u73b0\u4e00\u4e2a Scheme \u7684\u89e3\u91ca\u5668\u3002\u6b64\u5916\uff0c\u62bd\u8c61\u5c06\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u4e3b\u9898\uff0c\u4f60\u5c06\u5b66\u4e60\u5230\u51fd\u6570\u5f0f\u7f16\u7a0b\u3001\u6570\u636e\u62bd\u8c61\u3001\u9762\u5411\u5bf9\u8c61\u7b49\u7b49\u77e5\u8bc6\u6765\u8ba9\u4f60\u7684\u4ee3\u7801\u66f4\u6613\u8bfb\uff0c\u66f4\u6a21\u5757\u5316\u3002\u5f53\u7136\uff0c\u5b66\u4e60\u7f16\u7a0b\u8bed\u8a00\u4e5f\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u5185\u5bb9\uff0c\u4f60\u5c06\u4f1a\u638c\u63e1 Python\u3001Scheme \u548c SQL \u8fd9\u4e09\u79cd\u7f16\u7a0b\u8bed\u8a00\uff0c\u5728\u5b83\u4eec\u7684\u5b66\u4e60\u548c\u6bd4\u8f83\u4e2d\uff0c\u76f8\u4fe1\u4f60\u4f1a\u62e5\u6709\u5feb\u901f\u638c\u63e1\u4e00\u95e8\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\u7684\u80fd\u529b\u3002 \u6ce8\u610f\uff1a\u5982\u679c\u6b64\u524d\u5b8c\u5168\u6ca1\u6709\u7f16\u7a0b\u57fa\u7840\uff0c\u76f4\u63a5\u4e0a\u624b CS61A \u9700\u8981\u4e00\u5b9a\u7684\u5b66\u4e60\u80fd\u529b\u548c\u81ea\u5f8b\u8981\u6c42\u3002\u4e3a\u907f\u514d\u8bfe\u7a0b\u96be\u5ea6\u8fc7\u9ad8\u800c\u5bfc\u81f4\u7684\u4fe1\u5fc3\u632b\u6298\uff0c\u53ef\u4ee5\u9009\u62e9\u4e00\u4e2a\u66f4\u4e3a\u53cb\u597d\u7684\u5165\u95e8\u7f16\u7a0b\u8bfe\u7a0b\u3002\u4f8b\u5982\u4f2f\u514b\u5229\u7684 CS10 \u6216\u8005\u54c8\u4f5b\u5927\u5b66\u7684 CS50 \u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~cs61a/su20/ \u8bfe\u7a0b\u89c6\u9891: \u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u6559\u6750\uff1a http://composingprograms.com/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u8bfe\u7a0b\u7f51\u7ad9\u4f1a\u6709\u6bcf\u4e2a\u4f5c\u4e1a\u5bf9\u5e94\u7684\u6587\u6863\u94fe\u63a5\u4ee5\u53ca\u4ee3\u7801\u6846\u67b6\u7684\u4e0b\u8f7d\u94fe\u63a5\u3002 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPic/CS61A - GitHub \u4e2d\u3002","title":"UCB CS61A: Structure and Interpretation of Computer Programs"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/#cs61a-structure-and-interpretation-of-computer-programs","text":"","title":"CS61A: Structure and Interpretation of Computer Programs"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aPython, Scheme, SQL \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u4f2f\u514b\u5229 CS61 \u7cfb\u5217\u7684\u7b2c\u4e00\u95e8\u8bfe\u7a0b\uff0c\u4e5f\u662f\u6211\u7684 Python \u5165\u95e8\u8bfe\u3002 CS61 \u7cfb\u5217\u662f\u4f2f\u514b\u5229 CS \u4e13\u4e1a\u7684\u5165\u95e8\u8bfe\uff0c\u5176\u4e2d\uff1a CS61A: \u5f3a\u8c03\u62bd\u8c61\uff0c\u8ba9\u5b66\u751f\u638c\u63e1\u7528\u7a0b\u5e8f\u6765\u89e3\u51b3\u5b9e\u9645\u95ee\u9898\uff0c\u800c\u4e0d\u5173\u6ce8\u5e95\u5c42\u7684\u786c\u4ef6\u7ec6\u8282\u3002 CS61B: \u6ce8\u91cd\u7b97\u6cd5\u4e0e\u6570\u636e\u7ed3\u6784\u4ee5\u53ca\u5927\u89c4\u6a21\u7a0b\u5e8f\u7684\u6784\u5efa\uff0c\u5b66\u751f\u4f1a\u7528 Java \u8bed\u8a00\u7ed3\u5408\u7b97\u6cd5\u4e0e\u6570\u636e\u7ed3\u6784\u7684\u77e5\u8bc6\u6765\u6784\u5efa\u5343\u884c\u4ee3\u7801\u7ea7\u522b\u7684\u5927\u578b\u9879\u76ee\uff08\u4e00\u4e2a\u7b80\u6613\u7684\u8c37\u6b4c\u5730\u56fe\uff0c\u4e00\u4e2a\u4e8c\u7ef4\u7248\u7684 Minecraft\uff09\u3002 CS61C: \u5173\u6ce8\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784\uff0c\u8ba9\u5b66\u751f\u7406\u89e3\u9ad8\u7ea7\u8bed\u8a00\uff08\u4f8b\u5982 C\uff09\u662f\u5982\u4f55\u4e00\u6b65\u6b65\u8f6c\u6362\u4e3a\u673a\u5668\u53ef\u4ee5\u7406\u89e3\u7684 01 \u4e32\u5e76\u5728 CPU \u6267\u884c\u7684\uff0c\u5b66\u751f\u5c06\u4f1a\u5b66\u4e60 RISC-V \u67b6\u6784\u5e76\u81ea\u5df1\u7528 Logism \u5b9e\u73b0\u4e00\u4e2a CPU\u3002 CS61B \u548c CS61C \u5728\u672c\u4e66\u4e2d\u5747\u6709\u6536\u5f55\u3002 \u56de\u5230 CS61A\uff0c\u6ce8\u610f\u8fd9\u4e0d\u4ec5\u4ec5\u662f\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00\u8bfe\uff0c\u800c\u662f\u4f1a\u6df1\u5165\u5230\u7a0b\u5e8f\u6784\u9020\u4e0e\u8fd0\u884c\u7684\u539f\u7406\u3002\u6700\u540e\u4f60\u5c06\u5728\u7b2c 4 \u4e2a Project \u4e2d\u7528 Python \u5b9e\u73b0\u4e00\u4e2a Scheme \u7684\u89e3\u91ca\u5668\u3002\u6b64\u5916\uff0c\u62bd\u8c61\u5c06\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u4e3b\u9898\uff0c\u4f60\u5c06\u5b66\u4e60\u5230\u51fd\u6570\u5f0f\u7f16\u7a0b\u3001\u6570\u636e\u62bd\u8c61\u3001\u9762\u5411\u5bf9\u8c61\u7b49\u7b49\u77e5\u8bc6\u6765\u8ba9\u4f60\u7684\u4ee3\u7801\u66f4\u6613\u8bfb\uff0c\u66f4\u6a21\u5757\u5316\u3002\u5f53\u7136\uff0c\u5b66\u4e60\u7f16\u7a0b\u8bed\u8a00\u4e5f\u662f\u8fd9\u95e8\u8bfe\u7684\u4e00\u5927\u5185\u5bb9\uff0c\u4f60\u5c06\u4f1a\u638c\u63e1 Python\u3001Scheme \u548c SQL \u8fd9\u4e09\u79cd\u7f16\u7a0b\u8bed\u8a00\uff0c\u5728\u5b83\u4eec\u7684\u5b66\u4e60\u548c\u6bd4\u8f83\u4e2d\uff0c\u76f8\u4fe1\u4f60\u4f1a\u62e5\u6709\u5feb\u901f\u638c\u63e1\u4e00\u95e8\u65b0\u7684\u7f16\u7a0b\u8bed\u8a00\u7684\u80fd\u529b\u3002 \u6ce8\u610f\uff1a\u5982\u679c\u6b64\u524d\u5b8c\u5168\u6ca1\u6709\u7f16\u7a0b\u57fa\u7840\uff0c\u76f4\u63a5\u4e0a\u624b CS61A \u9700\u8981\u4e00\u5b9a\u7684\u5b66\u4e60\u80fd\u529b\u548c\u81ea\u5f8b\u8981\u6c42\u3002\u4e3a\u907f\u514d\u8bfe\u7a0b\u96be\u5ea6\u8fc7\u9ad8\u800c\u5bfc\u81f4\u7684\u4fe1\u5fc3\u632b\u6298\uff0c\u53ef\u4ee5\u9009\u62e9\u4e00\u4e2a\u66f4\u4e3a\u53cb\u597d\u7684\u5165\u95e8\u7f16\u7a0b\u8bfe\u7a0b\u3002\u4f8b\u5982\u4f2f\u514b\u5229\u7684 CS10 \u6216\u8005\u54c8\u4f5b\u5927\u5b66\u7684 CS50 \u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://inst.eecs.berkeley.edu/~cs61a/su20/ \u8bfe\u7a0b\u89c6\u9891: \u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u94fe\u63a5 \u8bfe\u7a0b\u6559\u6750\uff1a http://composingprograms.com/ \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u8bfe\u7a0b\u7f51\u7ad9\u4f1a\u6709\u6bcf\u4e2a\u4f5c\u4e1a\u5bf9\u5e94\u7684\u6587\u6863\u94fe\u63a5\u4ee5\u53ca\u4ee3\u7801\u6846\u67b6\u7684\u4e0b\u8f7d\u94fe\u63a5\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPic/CS61A - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/","text":"Introductory C Programming Specialization \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aDuke \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a110 \u5c0f\u65f6 \u975e\u5e38\u597d\u7684\u8bfe\u7a0b\uff0c\u81ea\u6211\u611f\u89c9\u6536\u76ca\u975e\u5e38\u5927\uff1a \u4fa7\u91cd\u57fa\u7840\u548c\u57fa\u672c\u6982\u5ff5\uff1a\u5982 frame\u3001stack memory\u3001heap memory \u7b49\u8bb2\u5f97\u5f88\u900f\u3002 \u9488\u5bf9C\u6700\u96be\u638c\u63e1\u7684\u6307\u9488\uff0c\u6709\u597d\u7684\u7ec3\u4e60\u548c\u7f16\u7a0b\u6765\u52a0\u6df1\u548c\u5f3a\u5316\u7406\u89e3\u3002 \u975e\u5e38\u597d\u7684 GDB\uff0cValgrind \u4e0a\u624b\u8bad\u7ec3\uff0c\u4f5c\u4e1a\u4e5f\u4f1a\u6d89\u53ca\u4e00\u4e9b\u57fa\u672c\u7684 Git \u7ec3\u4e60\u3002 \u8001\u5e08\u5efa\u8bae\u4f5c\u4e1a\u7528 Emacs\uff0c\u6240\u4ee5\u5bf9 Emacs \u5c0f\u767d\u6765\u8bf4\uff0c\u662f\u4e2a\u4e0d\u9519\u7684\u5165\u95e8\u3002\u5982\u679c\u4f60\u4f1a\u7528 Vim \uff0c\u6211\u5efa\u8bae\u4f60\u7528 Evil \u63d2\u4ef6\u3002\u8fd9\u6837\u4f60\u4e0d\u4f1a\u4e22\u6389 Vim \u7684\u7f16\u8f91\u529f\u80fd\uff0c\u540c\u65f6\u53ef\u4ee5\u4f53\u4f1a Emacs \u7684\u5f3a\u5927\u3002\u5de5\u5177\u7bb1\u91cc\u540c\u65f6\u6709 Emacs \u548c Vim \u65f6\uff0c\u6548\u7387\u4f1a\u6709\u4e0d\u5c11\u63d0\u9ad8\u3002Emacs \u7684 org-mode\uff0c\u548c GDB \u7684\u987a\u6ed1\u6574\u5408\uff0c\u7b49\u7b49\u7b49\u7b49\uff0c\u90fd\u4f1a\u8ba9\u4f60\u5982\u864e\u6dfb\u7ffc\u3002 \u867d\u7136\u53ef\u80fd\u9700\u8981\u4ed8\u8d39\uff0c\u4f46\u6211\u89c9\u5f97\u503c\u3002 Coursera \u628a\u8fd9\u4e00\u5927\u8bfe\u5206\u6210\u4e86\u56db\u4e2a\u5c0f\u8bfe\uff0c\u4f46\u5c0f\u8bfe\u4e4b\u95f4\u7684\u4f5c\u4e1a\u6587\u4ef6\u7684\u8f6c\u79fb\u5e76\u4e0d\u987a\u5229\u3002\u8fd9\u662f\u4e2a\u6709\u70b9\u8ba8\u538c\u7684\u5730\u65b9\u3002\u5e78\u8fd0\u7684\u662f\uff0c\u540e\u9762\u7684\u5c0f\u8bfe\u53ef\u4ee5\u7ed9\u4ee5\u524d\u5c0f\u8bfe\u7684\u4f5c\u4e1a\u6253\u5206\uff0c\u6240\u4ee5\u6211\u662f\u63a5\u7740\u628a\u524d\u9762\u7684\u4f5c\u4e1a\u53c8\u505a\u4e86\u4e00\u904d\u3002\u6743\u5f53\u5de9\u56fa\uff0c\u6548\u679c\u4e0d\u9519\u3002 \u867d\u8bf4\u8bfe\u540d\u662f\u5165\u95e8\uff0c\u4f46\u517c\u5177\u5e7f\u5ea6\u548c\u6df1\u5ea6\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/specializations/c-programming \u8bfe\u7a0b\u89c6\u9891\uff1a\u540c\u4e0a \u8bfe\u7a0b\u6559\u6750\uff1a\u540c\u4e0a \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u540c\u4e0a \u8d44\u6e90\u6c47\u603b @haidongji \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7684\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 Duke Coursera Intro C \u4e2d\u3002\u56e0\u4e3a\u65f6\u95f4\u5173\u7cfb\uff0c\u6211\u6700\u540e\u4e00\u8bfe\u6700\u540e\u4e00\u5468\u7684\u51e0\u4e2a\u4f5c\u4e1a\u5230\u76ee\u524d\u8fd8\u6ca1\u6709\u5b8c\u6210\u3002","title":"Duke University: Introductory C Programming Specialization"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/#introductory-c-programming-specialization","text":"","title":"Introductory C Programming Specialization"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aDuke \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aC \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a110 \u5c0f\u65f6 \u975e\u5e38\u597d\u7684\u8bfe\u7a0b\uff0c\u81ea\u6211\u611f\u89c9\u6536\u76ca\u975e\u5e38\u5927\uff1a \u4fa7\u91cd\u57fa\u7840\u548c\u57fa\u672c\u6982\u5ff5\uff1a\u5982 frame\u3001stack memory\u3001heap memory \u7b49\u8bb2\u5f97\u5f88\u900f\u3002 \u9488\u5bf9C\u6700\u96be\u638c\u63e1\u7684\u6307\u9488\uff0c\u6709\u597d\u7684\u7ec3\u4e60\u548c\u7f16\u7a0b\u6765\u52a0\u6df1\u548c\u5f3a\u5316\u7406\u89e3\u3002 \u975e\u5e38\u597d\u7684 GDB\uff0cValgrind \u4e0a\u624b\u8bad\u7ec3\uff0c\u4f5c\u4e1a\u4e5f\u4f1a\u6d89\u53ca\u4e00\u4e9b\u57fa\u672c\u7684 Git \u7ec3\u4e60\u3002 \u8001\u5e08\u5efa\u8bae\u4f5c\u4e1a\u7528 Emacs\uff0c\u6240\u4ee5\u5bf9 Emacs \u5c0f\u767d\u6765\u8bf4\uff0c\u662f\u4e2a\u4e0d\u9519\u7684\u5165\u95e8\u3002\u5982\u679c\u4f60\u4f1a\u7528 Vim \uff0c\u6211\u5efa\u8bae\u4f60\u7528 Evil \u63d2\u4ef6\u3002\u8fd9\u6837\u4f60\u4e0d\u4f1a\u4e22\u6389 Vim \u7684\u7f16\u8f91\u529f\u80fd\uff0c\u540c\u65f6\u53ef\u4ee5\u4f53\u4f1a Emacs \u7684\u5f3a\u5927\u3002\u5de5\u5177\u7bb1\u91cc\u540c\u65f6\u6709 Emacs \u548c Vim \u65f6\uff0c\u6548\u7387\u4f1a\u6709\u4e0d\u5c11\u63d0\u9ad8\u3002Emacs \u7684 org-mode\uff0c\u548c GDB \u7684\u987a\u6ed1\u6574\u5408\uff0c\u7b49\u7b49\u7b49\u7b49\uff0c\u90fd\u4f1a\u8ba9\u4f60\u5982\u864e\u6dfb\u7ffc\u3002 \u867d\u7136\u53ef\u80fd\u9700\u8981\u4ed8\u8d39\uff0c\u4f46\u6211\u89c9\u5f97\u503c\u3002 Coursera \u628a\u8fd9\u4e00\u5927\u8bfe\u5206\u6210\u4e86\u56db\u4e2a\u5c0f\u8bfe\uff0c\u4f46\u5c0f\u8bfe\u4e4b\u95f4\u7684\u4f5c\u4e1a\u6587\u4ef6\u7684\u8f6c\u79fb\u5e76\u4e0d\u987a\u5229\u3002\u8fd9\u662f\u4e2a\u6709\u70b9\u8ba8\u538c\u7684\u5730\u65b9\u3002\u5e78\u8fd0\u7684\u662f\uff0c\u540e\u9762\u7684\u5c0f\u8bfe\u53ef\u4ee5\u7ed9\u4ee5\u524d\u5c0f\u8bfe\u7684\u4f5c\u4e1a\u6253\u5206\uff0c\u6240\u4ee5\u6211\u662f\u63a5\u7740\u628a\u524d\u9762\u7684\u4f5c\u4e1a\u53c8\u505a\u4e86\u4e00\u904d\u3002\u6743\u5f53\u5de9\u56fa\uff0c\u6548\u679c\u4e0d\u9519\u3002 \u867d\u8bf4\u8bfe\u540d\u662f\u5165\u95e8\uff0c\u4f46\u517c\u5177\u5e7f\u5ea6\u548c\u6df1\u5ea6\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://www.coursera.org/specializations/c-programming \u8bfe\u7a0b\u89c6\u9891\uff1a\u540c\u4e0a \u8bfe\u7a0b\u6559\u6750\uff1a\u540c\u4e0a \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u540c\u4e0a","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/#_3","text":"@haidongji \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7684\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 Duke Coursera Intro C \u4e2d\u3002\u56e0\u4e3a\u65f6\u95f4\u5173\u7cfb\uff0c\u6211\u6700\u540e\u4e00\u8bfe\u6700\u540e\u4e00\u5468\u7684\u51e0\u4e2a\u4f5c\u4e1a\u5230\u76ee\u524d\u8fd8\u6ca1\u6709\u5b8c\u6210\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/","text":"MIT-Missing-Semester \u8bfe\u7a0b\u7b80\u4ecb \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1ashell \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a10 \u5c0f\u65f6 \u6b63\u5982\u8bfe\u7a0b\u540d\u5b57\u6240\u8a00\uff1a\u201c\u8ba1\u7b97\u673a\u6559\u5b66\u4e2d\u6d88\u5931\u7684\u4e00\u4e2a\u5b66\u671f\u201d\uff0c\u8fd9\u95e8\u8bfe\u5c06\u4f1a\u6559\u4f1a\u4f60\u8bb8\u591a\u5927\u5b66\u7684\u8bfe\u5802\u4e0a\u4e0d\u4f1a\u6d89\u53ca\u4f46\u5374\u5bf9\u6bcf\u4e2a CSer \u65e0\u6bd4\u91cd\u8981\u7684\u5de5\u5177\u6216\u8005\u77e5\u8bc6\u70b9\u3002\u4f8b\u5982 Shell \u7f16\u7a0b\u3001\u547d\u4ee4\u884c\u914d\u7f6e\u3001Git\u3001Vim\u3001 tmux \u3001 ssh \u7b49\u7b49\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u8ba1\u7b97\u673a\u5c0f\u767d\uff0c\u90a3\u4e48\u6211\u975e\u5e38\u5efa\u8bae\u4f60\u5b66\u4e60\u4e00\u4e0b\u8fd9\u95e8\u8bfe\uff0c\u56e0\u4e3a\u5b83\u57fa\u672c\u6d89\u53ca\u4e86\u672c\u4e66\u5fc5\u5b66\u5de5\u5177\u4e2d\u7684\u7edd\u5927\u90e8\u5206\u5185\u5bb9\u3002 \u9664\u4e86 MIT \u5b98\u65b9\u7684\u5b66\u4e60\u8d44\u6599\u5916\uff0c\u5317\u4eac\u5927\u5b66\u56fe\u7075\u73ed\u5f00\u8bbe\u7684\u524d\u6cbf\u8ba1\u7b97\u5b9e\u8df5\u4e2d\u4e5f\u5f00\u8bbe\u4e86\u76f8\u5173\u8bfe\u7a0b\uff0c\u8d44\u6599\u4f4d\u4e8e \u8fd9\u4e2a\u7f51\u7ad9 \u4e0b\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://missing.csail.mit.edu/2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e00\u4e9b\u968f\u5802\u5c0f\u7ec3\u4e60\uff0c\u5177\u4f53\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002","title":"MIT-Missing-Semester"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/#mit-missing-semester","text":"","title":"MIT-Missing-Semester"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/#_1","text":"\u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1ashell \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a10 \u5c0f\u65f6 \u6b63\u5982\u8bfe\u7a0b\u540d\u5b57\u6240\u8a00\uff1a\u201c\u8ba1\u7b97\u673a\u6559\u5b66\u4e2d\u6d88\u5931\u7684\u4e00\u4e2a\u5b66\u671f\u201d\uff0c\u8fd9\u95e8\u8bfe\u5c06\u4f1a\u6559\u4f1a\u4f60\u8bb8\u591a\u5927\u5b66\u7684\u8bfe\u5802\u4e0a\u4e0d\u4f1a\u6d89\u53ca\u4f46\u5374\u5bf9\u6bcf\u4e2a CSer \u65e0\u6bd4\u91cd\u8981\u7684\u5de5\u5177\u6216\u8005\u77e5\u8bc6\u70b9\u3002\u4f8b\u5982 Shell \u7f16\u7a0b\u3001\u547d\u4ee4\u884c\u914d\u7f6e\u3001Git\u3001Vim\u3001 tmux \u3001 ssh \u7b49\u7b49\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u8ba1\u7b97\u673a\u5c0f\u767d\uff0c\u90a3\u4e48\u6211\u975e\u5e38\u5efa\u8bae\u4f60\u5b66\u4e60\u4e00\u4e0b\u8fd9\u95e8\u8bfe\uff0c\u56e0\u4e3a\u5b83\u57fa\u672c\u6d89\u53ca\u4e86\u672c\u4e66\u5fc5\u5b66\u5de5\u5177\u4e2d\u7684\u7edd\u5927\u90e8\u5206\u5185\u5bb9\u3002 \u9664\u4e86 MIT \u5b98\u65b9\u7684\u5b66\u4e60\u8d44\u6599\u5916\uff0c\u5317\u4eac\u5927\u5b66\u56fe\u7075\u73ed\u5f00\u8bbe\u7684\u524d\u6cbf\u8ba1\u7b97\u5b9e\u8df5\u4e2d\u4e5f\u5f00\u8bbe\u4e86\u76f8\u5173\u8bfe\u7a0b\uff0c\u8d44\u6599\u4f4d\u4e8e \u8fd9\u4e2a\u7f51\u7ad9 \u4e0b\uff0c\u4f9b\u5927\u5bb6\u53c2\u8003\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://missing.csail.mit.edu/2020/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u4e00\u4e9b\u968f\u5802\u5c0f\u7ec3\u4e60\uff0c\u5177\u4f53\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/6035/","text":"","title":"6035"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/","text":"Stanford CS143: Compilers \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u6216 C++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u65af\u5766\u798f\u7684\u7f16\u8bd1\u539f\u7406\u8bfe\u7a0b\uff0c\u8bbe\u8ba1\u8005\u5f00\u53d1\u4e86\u4e00\u4e2a Class-Object-Oriented-Language\uff0c\u7b80\u79f0 COOL \u8bed\u8a00\u3002\u8fd9\u95e8\u8bfe\u7684\u6838\u5fc3\u5c31\u662f\u901a\u8fc7\u7406\u8bba\u77e5\u8bc6\u7684\u5b66\u4e60\uff0c\u4e3a COOL \u8bed\u8a00\u5b9e\u73b0\u4e00\u4e2a\u7f16\u8bd1\u5668\uff0c\u5c06 COOL \u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u4e3a MIPS \u6c47\u7f16\u5e76\u5728 Spim \u8fd9\u4e2a MIPS \u6a21\u62df\u5668\u4e0a\u6210\u529f\u6267\u884c\u3002 \u7406\u8bba\u90e8\u5206\u57fa\u672c\u6309\u7167\u9f99\u4e66\u7684\u987a\u5e8f\u8986\u76d6\u4e86\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u3001\u8fd0\u884c\u65f6\u73af\u5883\u3001\u5bc4\u5b58\u5668\u5206\u914d\u3001\u4ee3\u7801\u4f18\u5316\u4e0e\u751f\u6210\u7b49\u5185\u5bb9\uff0c\u5b9e\u8df5\u90e8\u5206\u5219\u76f8\u5e94\u5730\u5206\u4e3a\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u3001\u4ee3\u7801\u751f\u6210\u56db\u4e2a\u9636\u6bb5\uff0c\u96be\u5ea6\u5faa\u5e8f\u6e10\u8fdb\uff0c\u5e76\u5728\u4f18\u5316\u90e8\u5206\u7ed9\u5b66\u751f\u7559\u4e0b\u4e86\u5f88\u5927\u7684\u8bbe\u8ba1\u7a7a\u95f4\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs143/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV17K4y147Bz \u8bfe\u7a0b\u6559\u6750\uff1a\u9f99\u4e66 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a5 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5e26\u4f60\u5b9e\u73b0\u4e00\u4e2a\u7f16\u8bd1\u5668 \u8d44\u6e90\u6c47\u603b @skyzluo \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 skyzluo/CS143-Compilers-Stanford - GitHub \u4e2d\u3002","title":"Stanford CS143: Compilers"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/#stanford-cs143-compilers","text":"","title":"Stanford CS143: Compilers"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u8ba1\u7b97\u673a\u4f53\u7cfb\u7ed3\u6784 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u6216 C++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a150 \u5c0f\u65f6 \u65af\u5766\u798f\u7684\u7f16\u8bd1\u539f\u7406\u8bfe\u7a0b\uff0c\u8bbe\u8ba1\u8005\u5f00\u53d1\u4e86\u4e00\u4e2a Class-Object-Oriented-Language\uff0c\u7b80\u79f0 COOL \u8bed\u8a00\u3002\u8fd9\u95e8\u8bfe\u7684\u6838\u5fc3\u5c31\u662f\u901a\u8fc7\u7406\u8bba\u77e5\u8bc6\u7684\u5b66\u4e60\uff0c\u4e3a COOL \u8bed\u8a00\u5b9e\u73b0\u4e00\u4e2a\u7f16\u8bd1\u5668\uff0c\u5c06 COOL \u9ad8\u7ea7\u8bed\u8a00\u7f16\u8bd1\u4e3a MIPS \u6c47\u7f16\u5e76\u5728 Spim \u8fd9\u4e2a MIPS \u6a21\u62df\u5668\u4e0a\u6210\u529f\u6267\u884c\u3002 \u7406\u8bba\u90e8\u5206\u57fa\u672c\u6309\u7167\u9f99\u4e66\u7684\u987a\u5e8f\u8986\u76d6\u4e86\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u3001\u8fd0\u884c\u65f6\u73af\u5883\u3001\u5bc4\u5b58\u5668\u5206\u914d\u3001\u4ee3\u7801\u4f18\u5316\u4e0e\u751f\u6210\u7b49\u5185\u5bb9\uff0c\u5b9e\u8df5\u90e8\u5206\u5219\u76f8\u5e94\u5730\u5206\u4e3a\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u8bed\u4e49\u5206\u6790\u3001\u4ee3\u7801\u751f\u6210\u56db\u4e2a\u9636\u6bb5\uff0c\u96be\u5ea6\u5faa\u5e8f\u6e10\u8fdb\uff0c\u5e76\u5728\u4f18\u5316\u90e8\u5206\u7ed9\u5b66\u751f\u7559\u4e0b\u4e86\u5f88\u5927\u7684\u8bbe\u8ba1\u7a7a\u95f4\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://web.stanford.edu/class/cs143/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV17K4y147Bz \u8bfe\u7a0b\u6559\u6750\uff1a\u9f99\u4e66 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a5 \u4e2a\u4e66\u9762\u4f5c\u4e1a + 5 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a\u5e26\u4f60\u5b9e\u73b0\u4e00\u4e2a\u7f16\u8bd1\u5668","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/#_3","text":"@skyzluo \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 skyzluo/CS143-Compilers-Stanford - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/","text":"Stanford CS148 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cPython \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u8fd9\u662f\u4e00\u95e8\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u5165\u95e8\u8bfe\u7a0b\uff0c\u8fd9\u95e8\u8bfe\u7684\u4e00\u5f00\u59cb\u4f7f\u7528 Blender \u53bb\u751f\u6210\u56fe\u50cf\uff0c\u5e76\u4e14\u7406\u89e3\u5e95\u5c42\u7684\u6570\u5b66\u77e5\u8bc6\uff0c\u5305\u62ec\u4e09\u89d2\u5f62\u3001\u6cd5\u5411\u91cf\u3001\u63d2\u503c\u3001\u7eb9\u7406\u6620\u5c04\u3001\u51f9\u51f8\u8d34\u56fe\u7b49\u7b49\u3002\u4e4b\u540e\u4f1a\u4ecb\u7ecd\u5149\u7ebf\u548c\u989c\u8272\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u5f71\u54cd\u8ba1\u7b97\u673a\u7684\u663e\u793a\u548c\u6253\u5370\u3002\u540c\u65f6\u4e5f\u4f1a\u4ecb\u7ecd BRDF \u4ee5\u53ca\u4e00\u4e9b\u57fa\u672c\u7684\u5149\u7167\u548c\u7740\u8272\u6a21\u578b\u3002\u8bfe\u7a0b\u7684\u6700\u540e\uff0c\u4f1a\u6d89\u53ca\u5230\u5149\u7ebf\u8ffd\u8e2a\u3001\u53cd\u8d70\u6837\u3001\u52a0\u901f\u7ed3\u6784\u7b49\u5185\u5bb9\u3002 \u5177\u4f53\u8bfe\u7a0b\u4fe1\u606f\u53ef\u4ee5\u67e5\u770b \u8bfe\u7a0b\u7f51\u7ad9 \u3002 \u8fd9\u95e8\u8bfe\u7a0b\u6bd4\u8d77 GAMES101 \u6d45\u4e00\u4e9b\uff0c\u7f16\u7a0b\u8bed\u8a00\u4f7f\u7528\u7684\u662f Python\uff0c\u5bf9\u4e8e\u4e0d\u719f\u6089 C++ \u7684\u540c\u5b66\u6bd4\u8f83\u53cb\u597d\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a CS148 \u8bfe\u7a0b\u89c6\u9891\uff1a\u65e0\uff0c\u76f4\u63a5\u770b lecture \u5c31\u53ef\u4ee5\u4e86\uff0c\u4e5f\u53ef\u4ee5\u53c2\u8003 GAMES101 \u89c6\u9891 \u8bfe\u7a0b\u6559\u6750\uff1aFundamentals of Computer Graphics \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 8 \u4e2a hw, 1 \u4e2a final project","title":"Stanford CS148"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/#stanford-cs148","text":"","title":"Stanford CS148"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cPython \u7f16\u7a0b\u8bed\u8a00\uff1aPython \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u8fd9\u662f\u4e00\u95e8\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u5165\u95e8\u8bfe\u7a0b\uff0c\u8fd9\u95e8\u8bfe\u7684\u4e00\u5f00\u59cb\u4f7f\u7528 Blender \u53bb\u751f\u6210\u56fe\u50cf\uff0c\u5e76\u4e14\u7406\u89e3\u5e95\u5c42\u7684\u6570\u5b66\u77e5\u8bc6\uff0c\u5305\u62ec\u4e09\u89d2\u5f62\u3001\u6cd5\u5411\u91cf\u3001\u63d2\u503c\u3001\u7eb9\u7406\u6620\u5c04\u3001\u51f9\u51f8\u8d34\u56fe\u7b49\u7b49\u3002\u4e4b\u540e\u4f1a\u4ecb\u7ecd\u5149\u7ebf\u548c\u989c\u8272\u4ee5\u53ca\u5b83\u4eec\u5982\u4f55\u5f71\u54cd\u8ba1\u7b97\u673a\u7684\u663e\u793a\u548c\u6253\u5370\u3002\u540c\u65f6\u4e5f\u4f1a\u4ecb\u7ecd BRDF \u4ee5\u53ca\u4e00\u4e9b\u57fa\u672c\u7684\u5149\u7167\u548c\u7740\u8272\u6a21\u578b\u3002\u8bfe\u7a0b\u7684\u6700\u540e\uff0c\u4f1a\u6d89\u53ca\u5230\u5149\u7ebf\u8ffd\u8e2a\u3001\u53cd\u8d70\u6837\u3001\u52a0\u901f\u7ed3\u6784\u7b49\u5185\u5bb9\u3002 \u5177\u4f53\u8bfe\u7a0b\u4fe1\u606f\u53ef\u4ee5\u67e5\u770b \u8bfe\u7a0b\u7f51\u7ad9 \u3002 \u8fd9\u95e8\u8bfe\u7a0b\u6bd4\u8d77 GAMES101 \u6d45\u4e00\u4e9b\uff0c\u7f16\u7a0b\u8bed\u8a00\u4f7f\u7528\u7684\u662f Python\uff0c\u5bf9\u4e8e\u4e0d\u719f\u6089 C++ \u7684\u540c\u5b66\u6bd4\u8f83\u53cb\u597d\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a CS148 \u8bfe\u7a0b\u89c6\u9891\uff1a\u65e0\uff0c\u76f4\u63a5\u770b lecture \u5c31\u53ef\u4ee5\u4e86\uff0c\u4e5f\u53ef\u4ee5\u53c2\u8003 GAMES101 \u89c6\u9891 \u8bfe\u7a0b\u6559\u6750\uff1aFundamentals of Computer Graphics \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 8 \u4e2a hw, 1 \u4e2a final project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS184/","text":"","title":"CS184"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/","text":"GAMES101 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUCSB \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cC++ \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u672c\u8bfe\u7a0b\u5c06\u5168\u9762\u800c\u7cfb\u7edf\u5730\u4ecb\u7ecd\u73b0\u4ee3\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u56db\u5927\u7ec4\u6210\u90e8\u5206\uff1a\uff081\uff09\u5149\u6805\u5316\u6210\u50cf\uff0c\uff082\uff09\u51e0\u4f55\u8868\u793a\uff0c\uff083\uff09\u5149\u7684\u4f20\u64ad\u7406\u8bba\uff0c\u4ee5\u53ca\uff084\uff09\u52a8\u753b\u4e0e\u6a21\u62df\u3002\u6bcf\u4e2a\u65b9\u9762\u90fd\u4f1a\u4ece\u57fa\u7840\u539f\u7406\u51fa\u53d1\u8bb2\u89e3\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5e76\u4ecb\u7ecd\u524d\u6cbf\u7684\u7406\u8bba\u7814\u7a76\u3002\u901a\u8fc7\u672c\u8bfe\u7a0b\uff0c\u4f60\u53ef\u4ee5\u5b66\u4e60\u5230\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u80cc\u540e\u7684\u6570\u5b66\u548c\u7269\u7406\u77e5\u8bc6\uff0c\u5e76\u953b\u70bc\u5b9e\u9645\u7684\u7f16\u7a0b\u80fd\u529b\u3002 \u4f5c\u4e3a\u5165\u95e8\uff0c\u672c\u8bfe\u7a0b\u4f1a\u5c3d\u53ef\u80fd\u7684\u8986\u76d6\u56fe\u5f62\u5b66\u7684\u65b9\u65b9\u9762\u9762\uff0c\u628a\u6bcf\u4e00\u90e8\u5206\u7684\u57fa\u672c\u6982\u5ff5\u90fd\u5c3d\u53ef\u80fd\u8bf4\u6e05\u695a\uff0c\u8ba9\u5927\u5bb6\u5bf9\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u6709\u4e00\u4e2a\u5b8c\u6574\u7684\u3001\u81ea\u4e0a\u800c\u4e0b\u7684\u5168\u5c40\u628a\u63e1\u3002\u5168\u5c40\u7684\u7406\u89e3\u5f88\u91cd\u8981\uff0c\u5b66\u5b8c\u672c\u8bfe\u7a0b\u540e\uff0c\u4f60\u4f1a\u4e86\u89e3\u5230\u56fe\u5f62\u5b66\u4e0d\u7b49\u4e8e OpenGL\uff0c\u4e0d\u7b49\u4e8e\u5149\u7ebf\u8ffd\u8e2a\uff0c\u800c\u662f\u4e00\u5957\u751f\u6210\u6574\u4e2a\u865a\u62df\u4e16\u754c\u7684\u65b9\u6cd5\u3002\u4ece\u672c\u8bfe\u7a0b\u7684\u6807\u9898\uff0c\u5927\u5bb6\u8fd8\u53ef\u4ee5\u770b\u5230\u201c\u73b0\u4ee3\u201d\u4e8c\u5b57\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u8fd9\u95e8\u8bfe\u6240\u8981\u7ed9\u5927\u5bb6\u4ecb\u7ecd\u7684\u90fd\u662f\u73b0\u4ee3\u5316\u7684\u77e5\u8bc6\uff0c\u4e5f\u90fd\u662f\u73b0\u4ee3\u56fe\u5f62\u5b66\u5de5\u4e1a\u754c\u9700\u8981\u7684\u56fe\u5f62\u5b66\u57fa\u7840\u3002 GAMES101 \u662f\u56fd\u5185\u76f8\u5f53\u6709\u540d\u7684\u56fe\u5f62\u5b66\u516c\u5f00\u8bfe\u3002\u548c\u5927\u5bb6\u5370\u8c61\u4e2d\u6ee1\u662f\u6570\u5b66\u548c\u7b97\u6cd5\u7684\u56fe\u5f62\u5b66\u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe\u4ee5\u5341\u5206\u751f\u52a8\u7684\u65b9\u5f0f\u5e26\u6211\u4eec\u8fdb\u5165\u4e86\u56fe\u5f62\u5b66\u8fd9\u4e2a\u9886\u57df\u7684\u5927\u95e8\u3002 \u6bcf\u4e2aproject\u4ee3\u7801\u91cf\u90fd\u4e0d\u4f1a\u5f88\u591a\uff0c\u4f46\u662f\u5374\u90fd\u5341\u5206\u6709\u8da3\u3002\u5728\u505a\u8fd9\u4e9bproject\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u4f1a\u5b9e\u73b0\u7b80\u5355\u7684\u5149\u6805\u5316\uff0c\u5e76\u6e32\u67d3\u4e00\u4e2a\u7b80\u6613\u7684\u6a21\u578b\uff0c\u6211\u4eec\u8fd8\u4f1a\u5b9e\u73b0\u5149\u7ebf\u8ffd\u8e2a\uff0c\u4ee5\u8ffd\u6c42\u6e32\u67d3\u66f4\u597d\u7684\u8d28\u91cf\u3002\u6bcf\u4e2aproject\u4e2d\u8fd8\u6709\u9009\u505a\u7684\u62d3\u5c55\u4f5c\u4e1a\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u6e32\u67d3\u7684\u6a21\u578b\u5177\u6709\u66f4\u597d\u7684\u8d28\u91cf\uff0c\u66f4\u5feb\u7684\u6e32\u67d3\u901f\u5ea6\u3002 \u559c\u6b22\u73a9\u6e38\u620f\u7684\u540c\u5b66\u5e94\u8be5\u5bf9\u5b9e\u65f6\u5149\u7ebf\u8ffd\u8e2a\u6709\u4e00\u5b9a\u7684\u4e86\u89e3\uff0c\u8fd9\u95e8\u8bfe\u7684\u8001\u5e08\u95eb\u4ee4\u742a\u5c31\u5bf9\u8fd9\u4e00\u6280\u672f\u6709\u76f4\u63a5\u7684\u63a8\u52a8\u4f5c\u7528\u3002 \u8ddf\u7740\u8bfe\u7a0b\u7684\u89c6\u9891\uff0c\u505a\u5b8c\u6bcf\u4e00\u4e2aproject\uff0c\u76f8\u4fe1\u4f60\u4f1a\u548c\u6211\u4e00\u6837\u5bf9\u56fe\u5f62\u5b66\uff0c\u4ee5\u53ca\u73b0\u4ee3\u7684\u6e32\u67d3\u6280\u672f\u4ea7\u751f\u6d53\u539a\u7684\u5174\u8da3\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES101 , GAMES101 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili , \u5b98\u7f51 \u8bfe\u7a0b\u6559\u6750\uff1aFundamentals of Computer Graphics \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 8 \u4e2a project \u8d44\u6e90\u6c47\u603b @ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: graphics/GAMES101 - GitHub \u4e2d\u3002","title":"GAMES101"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/#games101","text":"","title":"GAMES101"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUCSB \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cC++ \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a80 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u672c\u8bfe\u7a0b\u5c06\u5168\u9762\u800c\u7cfb\u7edf\u5730\u4ecb\u7ecd\u73b0\u4ee3\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u56db\u5927\u7ec4\u6210\u90e8\u5206\uff1a\uff081\uff09\u5149\u6805\u5316\u6210\u50cf\uff0c\uff082\uff09\u51e0\u4f55\u8868\u793a\uff0c\uff083\uff09\u5149\u7684\u4f20\u64ad\u7406\u8bba\uff0c\u4ee5\u53ca\uff084\uff09\u52a8\u753b\u4e0e\u6a21\u62df\u3002\u6bcf\u4e2a\u65b9\u9762\u90fd\u4f1a\u4ece\u57fa\u7840\u539f\u7406\u51fa\u53d1\u8bb2\u89e3\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5e76\u4ecb\u7ecd\u524d\u6cbf\u7684\u7406\u8bba\u7814\u7a76\u3002\u901a\u8fc7\u672c\u8bfe\u7a0b\uff0c\u4f60\u53ef\u4ee5\u5b66\u4e60\u5230\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u80cc\u540e\u7684\u6570\u5b66\u548c\u7269\u7406\u77e5\u8bc6\uff0c\u5e76\u953b\u70bc\u5b9e\u9645\u7684\u7f16\u7a0b\u80fd\u529b\u3002 \u4f5c\u4e3a\u5165\u95e8\uff0c\u672c\u8bfe\u7a0b\u4f1a\u5c3d\u53ef\u80fd\u7684\u8986\u76d6\u56fe\u5f62\u5b66\u7684\u65b9\u65b9\u9762\u9762\uff0c\u628a\u6bcf\u4e00\u90e8\u5206\u7684\u57fa\u672c\u6982\u5ff5\u90fd\u5c3d\u53ef\u80fd\u8bf4\u6e05\u695a\uff0c\u8ba9\u5927\u5bb6\u5bf9\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u6709\u4e00\u4e2a\u5b8c\u6574\u7684\u3001\u81ea\u4e0a\u800c\u4e0b\u7684\u5168\u5c40\u628a\u63e1\u3002\u5168\u5c40\u7684\u7406\u89e3\u5f88\u91cd\u8981\uff0c\u5b66\u5b8c\u672c\u8bfe\u7a0b\u540e\uff0c\u4f60\u4f1a\u4e86\u89e3\u5230\u56fe\u5f62\u5b66\u4e0d\u7b49\u4e8e OpenGL\uff0c\u4e0d\u7b49\u4e8e\u5149\u7ebf\u8ffd\u8e2a\uff0c\u800c\u662f\u4e00\u5957\u751f\u6210\u6574\u4e2a\u865a\u62df\u4e16\u754c\u7684\u65b9\u6cd5\u3002\u4ece\u672c\u8bfe\u7a0b\u7684\u6807\u9898\uff0c\u5927\u5bb6\u8fd8\u53ef\u4ee5\u770b\u5230\u201c\u73b0\u4ee3\u201d\u4e8c\u5b57\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u8fd9\u95e8\u8bfe\u6240\u8981\u7ed9\u5927\u5bb6\u4ecb\u7ecd\u7684\u90fd\u662f\u73b0\u4ee3\u5316\u7684\u77e5\u8bc6\uff0c\u4e5f\u90fd\u662f\u73b0\u4ee3\u56fe\u5f62\u5b66\u5de5\u4e1a\u754c\u9700\u8981\u7684\u56fe\u5f62\u5b66\u57fa\u7840\u3002 GAMES101 \u662f\u56fd\u5185\u76f8\u5f53\u6709\u540d\u7684\u56fe\u5f62\u5b66\u516c\u5f00\u8bfe\u3002\u548c\u5927\u5bb6\u5370\u8c61\u4e2d\u6ee1\u662f\u6570\u5b66\u548c\u7b97\u6cd5\u7684\u56fe\u5f62\u5b66\u4e0d\u540c\uff0c\u8fd9\u95e8\u8bfe\u4ee5\u5341\u5206\u751f\u52a8\u7684\u65b9\u5f0f\u5e26\u6211\u4eec\u8fdb\u5165\u4e86\u56fe\u5f62\u5b66\u8fd9\u4e2a\u9886\u57df\u7684\u5927\u95e8\u3002 \u6bcf\u4e2aproject\u4ee3\u7801\u91cf\u90fd\u4e0d\u4f1a\u5f88\u591a\uff0c\u4f46\u662f\u5374\u90fd\u5341\u5206\u6709\u8da3\u3002\u5728\u505a\u8fd9\u4e9bproject\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u4f1a\u5b9e\u73b0\u7b80\u5355\u7684\u5149\u6805\u5316\uff0c\u5e76\u6e32\u67d3\u4e00\u4e2a\u7b80\u6613\u7684\u6a21\u578b\uff0c\u6211\u4eec\u8fd8\u4f1a\u5b9e\u73b0\u5149\u7ebf\u8ffd\u8e2a\uff0c\u4ee5\u8ffd\u6c42\u6e32\u67d3\u66f4\u597d\u7684\u8d28\u91cf\u3002\u6bcf\u4e2aproject\u4e2d\u8fd8\u6709\u9009\u505a\u7684\u62d3\u5c55\u4f5c\u4e1a\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u6e32\u67d3\u7684\u6a21\u578b\u5177\u6709\u66f4\u597d\u7684\u8d28\u91cf\uff0c\u66f4\u5feb\u7684\u6e32\u67d3\u901f\u5ea6\u3002 \u559c\u6b22\u73a9\u6e38\u620f\u7684\u540c\u5b66\u5e94\u8be5\u5bf9\u5b9e\u65f6\u5149\u7ebf\u8ffd\u8e2a\u6709\u4e00\u5b9a\u7684\u4e86\u89e3\uff0c\u8fd9\u95e8\u8bfe\u7684\u8001\u5e08\u95eb\u4ee4\u742a\u5c31\u5bf9\u8fd9\u4e00\u6280\u672f\u6709\u76f4\u63a5\u7684\u63a8\u52a8\u4f5c\u7528\u3002 \u8ddf\u7740\u8bfe\u7a0b\u7684\u89c6\u9891\uff0c\u505a\u5b8c\u6bcf\u4e00\u4e2aproject\uff0c\u76f8\u4fe1\u4f60\u4f1a\u548c\u6211\u4e00\u6837\u5bf9\u56fe\u5f62\u5b66\uff0c\u4ee5\u53ca\u73b0\u4ee3\u7684\u6e32\u67d3\u6280\u672f\u4ea7\u751f\u6d53\u539a\u7684\u5174\u8da3\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES101 , GAMES101 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili , \u5b98\u7f51 \u8bfe\u7a0b\u6559\u6750\uff1aFundamentals of Computer Graphics \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 8 \u4e2a project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/#_3","text":"@ysj1173886760 \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 ysj1173886760/Learning: graphics/GAMES101 - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/","text":"GAMES103 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStyle3D/OSU \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0c\u5927\u5b66\u7269\u7406\uff0c\u7f16\u7a0b\u80fd\u529b\uff0c\u57fa\u672c\u56fe\u5f62\u77e5\u8bc6 \u7f16\u7a0b\u8bed\u8a00\uff1aC# \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd\uff1a \u672c\u8bfe\u7a0b\u5c06\u4f5c\u4e3a\u57fa\u4e8e\u7269\u7406\u7684\u8ba1\u7b97\u673a\u52a8\u753b\u6280\u672f\u5165\u95e8\uff0c\u7740\u91cd\u4ecb\u7ecd\u5404\u79cd\u57fa\u7840\u7684\u7269\u7406\u52a8\u753b\u6a21\u62df\u6280\u672f\u3002 \u8be5\u8bfe\u7a0b\u4e3b\u8981\u6db5\u76d6\u56db\u4e2a\u65b9\u5411\uff0c\u5206\u522b\u4e3a\uff1a1\uff09\u521a\u4f53\u6a21\u62df\uff1b2\uff09\u8d28\u70b9\u5f39\u7c27\u3001\u7ea6\u675f\u4e0e\u5e03\u6599\u6a21\u62df\uff1b3\uff09\u57fa\u4e8e\u6709\u9650\u5143\u7684\u5f39\u6027\u4f53\u6a21\u62df\uff1b4\uff09\u6d41\u4f53\u6a21\u62df\u3002 \u672c\u8bfe\u7a0b\u5185\u5bb9\u5c06\u4e0d\u4f1a\u6d89\u53ca\u5177\u4f53\u7684\u7269\u7406\u6a21\u62df\u5f15\u64ce\uff0c\u4f46\u4f1a\u8ba8\u8bba\u5404\u79cd\u5f15\u64ce\u80cc\u540e\u7684\u6280\u672f\uff0c\u4ee5\u53ca\u5b83\u4eec\u7684\u4f18\u7f3a\u70b9\u7b49\u7b49\u3002\u7531\u4e8e\u5f00\u53d1\u5b66\u4e60\u7269\u7406\u6a21\u62df\u9700\u8981\u4e00\u5b9a\u7684\u6570\u5b66\u57fa\u7840\uff0c\u8bfe\u7a0b\u521d\u59cb\u9636\u6bb5\u4e5f\u4f1a\u82b1\u4e00\u5b9a\u7684\u65f6\u95f4\u590d\u4e60\u5fc5\u5907\u7684\u6570\u5b66\u77e5\u8bc6\u3002\u987a\u5229\u5b8c\u6210\u8bfe\u7a0b\u4e4b\u540e\uff0c\u540c\u5b66\u4eec\u5e94\u8be5\u4f1a\u5bf9\u57fa\u7840\u7684\u7269\u7406\u6a21\u62df\u6280\u672f\u6709\u6df1\u5165\u7406\u89e3\uff0c\u5bf9\u9ad8\u7ea7\u7684\u6a21\u62df\u6280\u672f\u4e5f\u4f1a\u6709\u90e8\u5206\u63a5\u89e6\u3002 \u56fe\u5f62\u5b66\u53ef\u7c97\u7565\u5206\u4e3a\u6e32\u67d3\u3001\u6a21\u62df\u3001\u51e0\u4f55\u4e09\u4e2a\u9886\u57df\u3002GAMES101 \u548c GAMES202 \u4e3b\u8981\u4ee5\u6e32\u67d3\u4e3a\u4e3b\uff0c\u800c\u5bf9\u4e8e\u7269\u7406\u6a21\u62df\uff0cGAMES103 \u5219\u662f\u5f88\u68d2\u7684\u5b66\u4e60\u8d44\u6e90\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES103 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u53c2\u8003\u8d44\u6599\uff1a \u8bfe\u7a0bPPT \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5171\u56db\u6b21\u4f5c\u4e1a\uff0c\u53ef\u89c1\u5b98\u65b9BBS\u5c0f\u7a0b\u5e8f\u6216\u975e\u5b98\u65b9\u7684Repo\uff1a GAMES103 HW \u8d44\u6e90\u6c47\u603b @indevn \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u8981\u6c42\u90fd\u6c47\u603b\u5728 GAMES103 Unoffical \u4e2d\u3002\u5bf9\u4e8e\u4f5c\u4e1a\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u5728\u77e5\u4e4e\u4e0a\u6709\u5f88\u591a\u76f8\u5173\u6587\u7ae0\u8fdb\u884c\u4e86\u7ec6\u81f4\u8bb2\u89e3\u53ef\u4ee5\u53c2\u8003\u3002","title":"GAMES103"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/#games103","text":"","title":"GAMES103"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStyle3D/OSU \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0c\u5927\u5b66\u7269\u7406\uff0c\u7f16\u7a0b\u80fd\u529b\uff0c\u57fa\u672c\u56fe\u5f62\u77e5\u8bc6 \u7f16\u7a0b\u8bed\u8a00\uff1aC# \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a50 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd\uff1a \u672c\u8bfe\u7a0b\u5c06\u4f5c\u4e3a\u57fa\u4e8e\u7269\u7406\u7684\u8ba1\u7b97\u673a\u52a8\u753b\u6280\u672f\u5165\u95e8\uff0c\u7740\u91cd\u4ecb\u7ecd\u5404\u79cd\u57fa\u7840\u7684\u7269\u7406\u52a8\u753b\u6a21\u62df\u6280\u672f\u3002 \u8be5\u8bfe\u7a0b\u4e3b\u8981\u6db5\u76d6\u56db\u4e2a\u65b9\u5411\uff0c\u5206\u522b\u4e3a\uff1a1\uff09\u521a\u4f53\u6a21\u62df\uff1b2\uff09\u8d28\u70b9\u5f39\u7c27\u3001\u7ea6\u675f\u4e0e\u5e03\u6599\u6a21\u62df\uff1b3\uff09\u57fa\u4e8e\u6709\u9650\u5143\u7684\u5f39\u6027\u4f53\u6a21\u62df\uff1b4\uff09\u6d41\u4f53\u6a21\u62df\u3002 \u672c\u8bfe\u7a0b\u5185\u5bb9\u5c06\u4e0d\u4f1a\u6d89\u53ca\u5177\u4f53\u7684\u7269\u7406\u6a21\u62df\u5f15\u64ce\uff0c\u4f46\u4f1a\u8ba8\u8bba\u5404\u79cd\u5f15\u64ce\u80cc\u540e\u7684\u6280\u672f\uff0c\u4ee5\u53ca\u5b83\u4eec\u7684\u4f18\u7f3a\u70b9\u7b49\u7b49\u3002\u7531\u4e8e\u5f00\u53d1\u5b66\u4e60\u7269\u7406\u6a21\u62df\u9700\u8981\u4e00\u5b9a\u7684\u6570\u5b66\u57fa\u7840\uff0c\u8bfe\u7a0b\u521d\u59cb\u9636\u6bb5\u4e5f\u4f1a\u82b1\u4e00\u5b9a\u7684\u65f6\u95f4\u590d\u4e60\u5fc5\u5907\u7684\u6570\u5b66\u77e5\u8bc6\u3002\u987a\u5229\u5b8c\u6210\u8bfe\u7a0b\u4e4b\u540e\uff0c\u540c\u5b66\u4eec\u5e94\u8be5\u4f1a\u5bf9\u57fa\u7840\u7684\u7269\u7406\u6a21\u62df\u6280\u672f\u6709\u6df1\u5165\u7406\u89e3\uff0c\u5bf9\u9ad8\u7ea7\u7684\u6a21\u62df\u6280\u672f\u4e5f\u4f1a\u6709\u90e8\u5206\u63a5\u89e6\u3002 \u56fe\u5f62\u5b66\u53ef\u7c97\u7565\u5206\u4e3a\u6e32\u67d3\u3001\u6a21\u62df\u3001\u51e0\u4f55\u4e09\u4e2a\u9886\u57df\u3002GAMES101 \u548c GAMES202 \u4e3b\u8981\u4ee5\u6e32\u67d3\u4e3a\u4e3b\uff0c\u800c\u5bf9\u4e8e\u7269\u7406\u6a21\u62df\uff0cGAMES103 \u5219\u662f\u5f88\u68d2\u7684\u5b66\u4e60\u8d44\u6e90\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES103 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u53c2\u8003\u8d44\u6599\uff1a \u8bfe\u7a0bPPT \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u5171\u56db\u6b21\u4f5c\u4e1a\uff0c\u53ef\u89c1\u5b98\u65b9BBS\u5c0f\u7a0b\u5e8f\u6216\u975e\u5b98\u65b9\u7684Repo\uff1a GAMES103 HW","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/#_3","text":"@indevn \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u8981\u6c42\u90fd\u6c47\u603b\u5728 GAMES103 Unoffical \u4e2d\u3002\u5bf9\u4e8e\u4f5c\u4e1a\u7684\u5177\u4f53\u5b9e\u73b0\uff0c\u5728\u77e5\u4e4e\u4e0a\u6709\u5f88\u591a\u76f8\u5173\u6587\u7ae0\u8fdb\u884c\u4e86\u7ec6\u81f4\u8bb2\u89e3\u53ef\u4ee5\u53c2\u8003\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/","text":"GAMES202 \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUCSB \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cC++\uff0cGAMES101 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u672c\u8bfe\u7a0b\u5c06\u5168\u9762\u5730\u4ecb\u7ecd\u73b0\u4ee3\u5b9e\u65f6\u6e32\u67d3\u4e2d\u7684\u5173\u952e\u95ee\u9898\u4e0e\u89e3\u51b3\u65b9\u6cd5\u3002\u7531\u4e8e\u5b9e\u65f6\u6e32\u67d3 (>30 FPS) \u5bf9\u901f\u5ea6\u8981\u6c42\u6781\u9ad8\uff0c\u56e0\u6b64\u672c\u8bfe\u7a0b\u7684\u5173\u6ce8\u70b9\u5c06\u662f\u5728\u82db\u523b\u7684\u65f6\u95f4\u9650\u5236\u4e0b\uff0c\u4eba\u4eec\u5982\u4f55\u6253\u7834\u901f\u5ea6\u4e0e\u8d28\u91cf\u4e4b\u95f4\u7684\u6743\u8861\uff0c\u540c\u65f6\u4fdd\u8bc1\u5b9e\u65f6\u7684\u9ad8\u901f\u5ea6\u4e0e\u7167\u7247\u7ea7\u7684\u771f\u5b9e\u611f\u3002 \u672c\u8bfe\u7a0b\u5c06\u4ee5\u4e13\u9898\u7684\u5f62\u5f0f\u5448\u73b0\uff0c\u8bfe\u7a0b\u5185\u5bb9\u4f1a\u8986\u76d6\u5b66\u672f\u754c\u4e0e\u5de5\u4e1a\u754c\u7684\u524d\u6cbf\u5185\u5bb9\uff0c\u5305\u62ec\uff1a\uff081\uff09\u5b9e\u65f6\u8f6f\u9634\u5f71\u7684\u6e32\u67d3\uff1b\uff082\uff09\u73af\u5883\u5149\u7167\uff1b\uff083\uff09\u57fa\u4e8e\u9884\u8ba1\u7b97\u6216\u65e0\u9884\u8ba1\u7b97\u7684\u5168\u5c40\u5149\u7167\uff1b\uff084\uff09\u57fa\u4e8e\u7269\u7406\u7684\u7740\u8272\u6a21\u578b\u4e0e\u65b9\u6cd5\uff1b\uff085\uff09\u5b9e\u65f6\u5149\u7ebf\u8ffd\u8e2a\uff1b\uff086\uff09\u6297\u952f\u9f7f\u4e0e\u8d85\u91c7\u6837\uff1b\u4ee5\u53ca\u4e00\u4e9b\u5e38\u89c1\u7684\u52a0\u901f\u65b9\u5f0f\u7b49\u7b49\u3002 \u9664\u4e86\u6700\u65b0\u6700\u5168\u7684\u5185\u5bb9\u4e4b\u5916\uff0c\u672c\u8bfe\u7a0b\u4e0e\u5176\u5b83\u4efb\u4f55\u5b9e\u65f6\u6e32\u67d3\u7684\u6559\u7a0b\u8fd8\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u533a\u522b\uff0c\u90a3\u5c31\u662f\u672c\u8bfe\u7a0b\u4e0d\u4f1a\u8bb2\u6388\u4efb\u4f55\u4e0e\u6e38\u620f\u5f15\u64ce\u7684\u4f7f\u7528\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u5e76\u4e14\u4e0d\u4f1a\u7279\u522b\u5f3a\u8c03\u5177\u4f53\u7684\u7740\u8272\u5668\u5b9e\u73b0\u6280\u672f\uff0c\u800c\u4e3b\u8981\u8bb2\u6388\u5b9e\u65f6\u6e32\u67d3\u80cc\u540e\u7684\u79d1\u5b66\u4e0e\u77e5\u8bc6\u3002\u672c\u8bfe\u7a0b\u7684\u76ee\u6807\u662f\u5728\u4f60\u5b66\u4e60\u5b8c\u8fd9\u95e8\u8bfe\u7684\u65f6\u5019\uff0c\u4f60\u5c06\u6709\u6df1\u539a\u7684\u529f\u5e95\u53bb\u5f00\u53d1\u4e00\u4e2a\u5c5e\u4e8e\u4f60\u81ea\u5df1\u7684\u5b9e\u65f6\u6e32\u67d3\u5f15\u64ce\u3002 \u4f5c\u4e3a GAMES101 \u7684\u8fdb\u9636\u8bfe\u7a0b\uff0c\u96be\u5ea6\u6709\u4e00\u5b9a\u7684\u63d0\u5347\uff0c\u4f46\u4e0d\u4f1a\u5f88\u5927\uff0c\u76f8\u4fe1\u5b8c\u6210\u4e86 GAMES101 \u7684\u540c\u5b66\u90fd\u6709\u80fd\u529b\u5b8c\u6210\u8fd9\u95e8\u8bfe\u7a0b\u3002\u6bcf\u4e2a project \u4ee3\u7801\u91cf\u90fd\u4e0d\u4f1a\u5f88\u591a\uff0c\u4f46\u662f\u90fd\u9700\u8981\u4e00\u5b9a\u7684\u601d\u8003\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES202 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u8bfe\u7a0b\u6559\u6750\uff1aReal-Time Rendering, 4th edition. \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 5\u4e2aproject","title":"GAMES202"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/#games202","text":"","title":"GAMES202"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUCSB \u5148\u4fee\u8981\u6c42\uff1a\u7ebf\u6027\u4ee3\u6570\uff0c\u9ad8\u7b49\u6570\u5b66\uff0cC++\uff0cGAMES101 \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a60 \u5c0f\u65f6 \u5b98\u65b9\u4ecb\u7ecd: \u672c\u8bfe\u7a0b\u5c06\u5168\u9762\u5730\u4ecb\u7ecd\u73b0\u4ee3\u5b9e\u65f6\u6e32\u67d3\u4e2d\u7684\u5173\u952e\u95ee\u9898\u4e0e\u89e3\u51b3\u65b9\u6cd5\u3002\u7531\u4e8e\u5b9e\u65f6\u6e32\u67d3 (>30 FPS) \u5bf9\u901f\u5ea6\u8981\u6c42\u6781\u9ad8\uff0c\u56e0\u6b64\u672c\u8bfe\u7a0b\u7684\u5173\u6ce8\u70b9\u5c06\u662f\u5728\u82db\u523b\u7684\u65f6\u95f4\u9650\u5236\u4e0b\uff0c\u4eba\u4eec\u5982\u4f55\u6253\u7834\u901f\u5ea6\u4e0e\u8d28\u91cf\u4e4b\u95f4\u7684\u6743\u8861\uff0c\u540c\u65f6\u4fdd\u8bc1\u5b9e\u65f6\u7684\u9ad8\u901f\u5ea6\u4e0e\u7167\u7247\u7ea7\u7684\u771f\u5b9e\u611f\u3002 \u672c\u8bfe\u7a0b\u5c06\u4ee5\u4e13\u9898\u7684\u5f62\u5f0f\u5448\u73b0\uff0c\u8bfe\u7a0b\u5185\u5bb9\u4f1a\u8986\u76d6\u5b66\u672f\u754c\u4e0e\u5de5\u4e1a\u754c\u7684\u524d\u6cbf\u5185\u5bb9\uff0c\u5305\u62ec\uff1a\uff081\uff09\u5b9e\u65f6\u8f6f\u9634\u5f71\u7684\u6e32\u67d3\uff1b\uff082\uff09\u73af\u5883\u5149\u7167\uff1b\uff083\uff09\u57fa\u4e8e\u9884\u8ba1\u7b97\u6216\u65e0\u9884\u8ba1\u7b97\u7684\u5168\u5c40\u5149\u7167\uff1b\uff084\uff09\u57fa\u4e8e\u7269\u7406\u7684\u7740\u8272\u6a21\u578b\u4e0e\u65b9\u6cd5\uff1b\uff085\uff09\u5b9e\u65f6\u5149\u7ebf\u8ffd\u8e2a\uff1b\uff086\uff09\u6297\u952f\u9f7f\u4e0e\u8d85\u91c7\u6837\uff1b\u4ee5\u53ca\u4e00\u4e9b\u5e38\u89c1\u7684\u52a0\u901f\u65b9\u5f0f\u7b49\u7b49\u3002 \u9664\u4e86\u6700\u65b0\u6700\u5168\u7684\u5185\u5bb9\u4e4b\u5916\uff0c\u672c\u8bfe\u7a0b\u4e0e\u5176\u5b83\u4efb\u4f55\u5b9e\u65f6\u6e32\u67d3\u7684\u6559\u7a0b\u8fd8\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u533a\u522b\uff0c\u90a3\u5c31\u662f\u672c\u8bfe\u7a0b\u4e0d\u4f1a\u8bb2\u6388\u4efb\u4f55\u4e0e\u6e38\u620f\u5f15\u64ce\u7684\u4f7f\u7528\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u5e76\u4e14\u4e0d\u4f1a\u7279\u522b\u5f3a\u8c03\u5177\u4f53\u7684\u7740\u8272\u5668\u5b9e\u73b0\u6280\u672f\uff0c\u800c\u4e3b\u8981\u8bb2\u6388\u5b9e\u65f6\u6e32\u67d3\u80cc\u540e\u7684\u79d1\u5b66\u4e0e\u77e5\u8bc6\u3002\u672c\u8bfe\u7a0b\u7684\u76ee\u6807\u662f\u5728\u4f60\u5b66\u4e60\u5b8c\u8fd9\u95e8\u8bfe\u7684\u65f6\u5019\uff0c\u4f60\u5c06\u6709\u6df1\u539a\u7684\u529f\u5e95\u53bb\u5f00\u53d1\u4e00\u4e2a\u5c5e\u4e8e\u4f60\u81ea\u5df1\u7684\u5b9e\u65f6\u6e32\u67d3\u5f15\u64ce\u3002 \u4f5c\u4e3a GAMES101 \u7684\u8fdb\u9636\u8bfe\u7a0b\uff0c\u96be\u5ea6\u6709\u4e00\u5b9a\u7684\u63d0\u5347\uff0c\u4f46\u4e0d\u4f1a\u5f88\u5927\uff0c\u76f8\u4fe1\u5b8c\u6210\u4e86 GAMES101 \u7684\u540c\u5b66\u90fd\u6709\u80fd\u529b\u5b8c\u6210\u8fd9\u95e8\u8bfe\u7a0b\u3002\u6bcf\u4e2a project \u4ee3\u7801\u91cf\u90fd\u4e0d\u4f1a\u5f88\u591a\uff0c\u4f46\u662f\u90fd\u9700\u8981\u4e00\u5b9a\u7684\u601d\u8003\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a GAMES202 \u8bfe\u7a0b\u89c6\u9891\uff1a bilibili \u8bfe\u7a0b\u6559\u6750\uff1aReal-Time Rendering, 4th edition. \u8bfe\u7a0b\u4f5c\u4e1a\uff1a 5\u4e2aproject","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/","text":"CS144: Computer Network \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u57fa\u7840\uff0cCS106L \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u7684\u4e3b\u8bb2\u4eba\u4e4b\u4e00\u662f\u7f51\u7edc\u9886\u57df\u7684\u5de8\u64d8 Nick McKeown \u6559\u6388\u3002\u8fd9\u4f4d\u62e5\u6709\u81ea\u5df1\u521b\u4e1a\u516c\u53f8\u7684\u5b66\u754c\u4e1a\u754c\u53cc\u5de8\u4f6c\u4f1a\u5728\u4ed6\u6155\u8bfe\u6bcf\u4e00\u7ae0\u8282\u7684\u6700\u540e\u91c7\u8bbf\u4e00\u4f4d\u4e1a\u754c\u7684\u9ad8\u7ba1\u6216\u8005\u5b66\u754c\u7684\u9ad8\u4eba\uff0c\u975e\u5e38\u5f00\u9614\u773c\u754c\u3002 \u5728\u8fd9\u95e8\u8bfe\u7684 Project \u4e2d\uff0c\u4f60\u5c06\u7528 C++ \u5faa\u5e8f\u6e10\u8fdb\u5730\u642d\u5efa\u51fa\u6574\u4e2a TCP/IP \u534f\u8bae\u6808\uff0c\u5b9e\u73b0 IP \u8def\u7531\u4ee5\u53ca ARP \u534f\u8bae\uff0c\u6700\u540e\u5229\u7528\u4f60\u81ea\u5df1\u7684\u534f\u8bae\u6808\u4ee3\u66ff Linux Kernel \u7684\u7f51\u7edc\u534f\u8bae\u6808\u548c\u5176\u4ed6\u5b66\u751f\u7684\u8ba1\u7b97\u673a\u8fdb\u884c\u901a\u4fe1\uff0c\u975e\u5e38 amazing\uff01 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs144.github.io/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=r2WZNaFyrbQ&list=PL6RdenZrxrw9inR-IJv-erlOKRHjymxMN \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs144.github.io/ \uff0c8 \u4e2a Project \u5e26\u4f60\u5b9e\u73b0\u6574\u4e2a TCP/IP \u534f\u8bae\u6808 \u8d44\u6e90\u6c47\u603b PKUFlyingPig Lexssama's Blogs huangrt01 kiprey \u5eb7\u5b87PL's Blog doraemonzzz ViXbob's libsponge \u5403\u7740\u571f\u8c46\u5750\u5730\u94c1\u7684\u535a\u5ba2 Smith \u661f\u9065\u89c1 EIMadrigal Joey","title":"Stanford CS144: Computer Network"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/#cs144-computer-network","text":"","title":"CS144: Computer Network"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aStanford \u5148\u4fee\u8981\u6c42\uff1a\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u57fa\u7840\uff0cCS106L \u7f16\u7a0b\u8bed\u8a00\uff1aC++ \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u7684\u4e3b\u8bb2\u4eba\u4e4b\u4e00\u662f\u7f51\u7edc\u9886\u57df\u7684\u5de8\u64d8 Nick McKeown \u6559\u6388\u3002\u8fd9\u4f4d\u62e5\u6709\u81ea\u5df1\u521b\u4e1a\u516c\u53f8\u7684\u5b66\u754c\u4e1a\u754c\u53cc\u5de8\u4f6c\u4f1a\u5728\u4ed6\u6155\u8bfe\u6bcf\u4e00\u7ae0\u8282\u7684\u6700\u540e\u91c7\u8bbf\u4e00\u4f4d\u4e1a\u754c\u7684\u9ad8\u7ba1\u6216\u8005\u5b66\u754c\u7684\u9ad8\u4eba\uff0c\u975e\u5e38\u5f00\u9614\u773c\u754c\u3002 \u5728\u8fd9\u95e8\u8bfe\u7684 Project \u4e2d\uff0c\u4f60\u5c06\u7528 C++ \u5faa\u5e8f\u6e10\u8fdb\u5730\u642d\u5efa\u51fa\u6574\u4e2a TCP/IP \u534f\u8bae\u6808\uff0c\u5b9e\u73b0 IP \u8def\u7531\u4ee5\u53ca ARP \u534f\u8bae\uff0c\u6700\u540e\u5229\u7528\u4f60\u81ea\u5df1\u7684\u534f\u8bae\u6808\u4ee3\u66ff Linux Kernel \u7684\u7f51\u7edc\u534f\u8bae\u6808\u548c\u5176\u4ed6\u5b66\u751f\u7684\u8ba1\u7b97\u673a\u8fdb\u884c\u901a\u4fe1\uff0c\u975e\u5e38 amazing\uff01","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://cs144.github.io/ \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.youtube.com/watch?v=r2WZNaFyrbQ&list=PL6RdenZrxrw9inR-IJv-erlOKRHjymxMN \u8bfe\u7a0b\u6559\u6750\uff1a\u65e0 \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://cs144.github.io/ \uff0c8 \u4e2a Project \u5e26\u4f60\u5b9e\u73b0\u6574\u4e2a TCP/IP \u534f\u8bae\u6808","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/#_3","text":"PKUFlyingPig Lexssama's Blogs huangrt01 kiprey \u5eb7\u5b87PL's Blog doraemonzzz ViXbob's libsponge \u5403\u7740\u571f\u8c46\u5750\u5730\u94c1\u7684\u535a\u5ba2 Smith \u661f\u9065\u89c1 EIMadrigal Joey","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/","text":"Computer Networking: A Top-Down Approach \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u9a6c\u8428\u8bf8\u585e\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u6709\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u300a\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u300b\u662f\u8ba1\u7b97\u673a\u7f51\u7edc\u9886\u57df\u7684\u4e00\u672c\u7ecf\u5178\u6559\u6750\uff0c\u4e24\u4f4d\u4f5c\u8005 Jim Kurose \u548c Keith Ross \u7cbe\u5fc3\u5236\u4f5c\u4e86\u6559\u6750\u914d\u5957\u7684\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u5e76\u4e14\u516c\u5f00\u4e86\u81ea\u5df1\u5f55\u5236\u7684\u7f51\u8bfe\u89c6\u9891\uff0c\u4ea4\u4e92\u5f0f\u7684\u5728\u7ebf\u7ae0\u8282\u6d4b\u8bd5\uff0c\u4ee5\u53ca\u5229\u7528 WireShark \u8fdb\u884c\u6293\u5305\u5206\u6790\u7684 lab\u3002\u552f\u4e00\u9057\u61be\u7684\u662f\u8fd9\u95e8\u8bfe\u5e76\u6ca1\u6709\u786c\u6838\u7684\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u800c Stanford \u7684 CS144 \u80fd\u5f88\u597d\u5730\u5f25\u8865\u8fd9\u4e00\u70b9\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a https://gaia.cs.umass.edu/kurose_ross/index.php \u8bfe\u7a0b\u89c6\u9891\uff1a https://gaia.cs.umass.edu/kurose_ross/lectures.php \u8bfe\u7a0b\u6559\u6750\uff1aComputer Networking: A Top-Down Approach \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://gaia.cs.umass.edu/kurose_ross/wireshark.php \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Computer-Network-A-Top-Down-Approach - GitHub \u4e2d\u3002","title":"Computer Networking: A Top-Down Approach"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/#computer-networking-a-top-down-approach","text":"","title":"Computer Networking: A Top-Down Approach"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u9a6c\u8428\u8bf8\u585e\u5927\u5b66 \u5148\u4fee\u8981\u6c42\uff1a\u6709\u4e00\u5b9a\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u57fa\u7840 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u300a\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u300b\u662f\u8ba1\u7b97\u673a\u7f51\u7edc\u9886\u57df\u7684\u4e00\u672c\u7ecf\u5178\u6559\u6750\uff0c\u4e24\u4f4d\u4f5c\u8005 Jim Kurose \u548c Keith Ross \u7cbe\u5fc3\u5236\u4f5c\u4e86\u6559\u6750\u914d\u5957\u7684\u8bfe\u7a0b\u7f51\u7ad9\uff0c\u5e76\u4e14\u516c\u5f00\u4e86\u81ea\u5df1\u5f55\u5236\u7684\u7f51\u8bfe\u89c6\u9891\uff0c\u4ea4\u4e92\u5f0f\u7684\u5728\u7ebf\u7ae0\u8282\u6d4b\u8bd5\uff0c\u4ee5\u53ca\u5229\u7528 WireShark \u8fdb\u884c\u6293\u5305\u5206\u6790\u7684 lab\u3002\u552f\u4e00\u9057\u61be\u7684\u662f\u8fd9\u95e8\u8bfe\u5e76\u6ca1\u6709\u786c\u6838\u7684\u7f16\u7a0b\u4f5c\u4e1a\uff0c\u800c Stanford \u7684 CS144 \u80fd\u5f88\u597d\u5730\u5f25\u8865\u8fd9\u4e00\u70b9\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a https://gaia.cs.umass.edu/kurose_ross/index.php \u8bfe\u7a0b\u89c6\u9891\uff1a https://gaia.cs.umass.edu/kurose_ross/lectures.php \u8bfe\u7a0b\u6559\u6750\uff1aComputer Networking: A Top-Down Approach \u8bfe\u7a0b\u4f5c\u4e1a\uff1a https://gaia.cs.umass.edu/kurose_ross/wireshark.php","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/Computer-Network-A-Top-Down-Approach - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/","text":"USTC Computer Networking:A Top-Down Approach \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1a\u4e2d\u56fd\u79d1\u5b66\u6280\u672f\u5927\u5b66 \u6388\u8bfe\u6559\u5e08\uff1a\u90d1\u70c7\u3001\u6768\u575a \u5148\u4fee\u8981\u6c42\uff1a\u64cd\u4f5c\u7cfb\u7edf\uff08\u975e\u5fc5\u9700\uff09 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u5e94\u8be5\u662f\u4e2d\u6587\u4e92\u8054\u7f51\u4e0a\u6bd4\u8f83\u706b\u7684\u8ba1\u7b97\u673a\u7f51\u7edc\u8bfe\u4e86\uff0c\u6559\u6750\u91c7\u7528\u795e\u4e66\u8ba1\u7b97\u673a\u7f51\u7edc\uff08\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\uff09\uff0c\u6388\u8bfe\u98ce\u683c\u66f4\u504f\u5411\u5b9e\u9645\u800c\u975e\u7eaf\u7406\u8bba\uff08 \u5f3a\u70c8\u5efa\u8bae \u5148\u9605\u8bfb\u6559\u6750\u9884\u4e60\u518d\u770b\u8bfe\uff0c\u5426\u5219\u4e0a\u8bfe\u65f6 \u53ef\u80fd \u4f1a\u6709\u4e9b\u61f5\u5708\uff09\u3002 \u8bfe\u7a0b\u5185\u5bb9\u5305\u62ec \u5927\u90e8\u5206 \u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u91cc\u7684\u5185\u5bb9\uff0c\u540c\u65f6 \u6db5\u76d6 \u8003\u8bd5\u5185\u5bb9\uff0c\u53ef\u653e\u5fc3\u89c2\u770b\u3002 \u8bfe\u7a0b\u89c6\u9891\u662f\u90d1\u70c7\u8001\u5e08\u672c\u4eba\u5728\u54d4\u54e9\u54d4\u54e9\u4e0a\u4e0a\u4f20\u7684\uff0c\u4e14\u4ece2020\u5e74\u81f3\u4eca\u4e00\u76f4\u575a\u6301\u5728\u8bc4\u8bba\u533a\u7b54\u7591\uff0c\u5c5e\u5b9e\u8d1f\u8d23\u4e14\u8ba4\u771f\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://staff.ustc.edu.cn/~qzheng/teaching.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1JV411t7ow/ \u8bfe\u7a0b\u8bfe\u4ef6\uff1a http://staff.ustc.edu.cn/~qzheng/cn.zip \u8bfe\u7a0b\u6559\u6750\uff1a\u8ba1\u7b97\u673a\u7f51\u7edc\uff08\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5 \u7b2c7\u7248\uff09\uff0c\u673a\u68b0\u5de5\u4e1a\u51fa\u7248\u793e\uff0c2016","title":"USTC Computer Networking:A Top-Down Approach"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/#ustc-computer-networkinga-top-down-approach","text":"","title":"USTC Computer Networking:A Top-Down Approach"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1a\u4e2d\u56fd\u79d1\u5b66\u6280\u672f\u5927\u5b66 \u6388\u8bfe\u6559\u5e08\uff1a\u90d1\u70c7\u3001\u6768\u575a \u5148\u4fee\u8981\u6c42\uff1a\u64cd\u4f5c\u7cfb\u7edf\uff08\u975e\u5fc5\u9700\uff09 \u7f16\u7a0b\u8bed\u8a00\uff1a\u65e0 \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a40 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u5e94\u8be5\u662f\u4e2d\u6587\u4e92\u8054\u7f51\u4e0a\u6bd4\u8f83\u706b\u7684\u8ba1\u7b97\u673a\u7f51\u7edc\u8bfe\u4e86\uff0c\u6559\u6750\u91c7\u7528\u795e\u4e66\u8ba1\u7b97\u673a\u7f51\u7edc\uff08\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\uff09\uff0c\u6388\u8bfe\u98ce\u683c\u66f4\u504f\u5411\u5b9e\u9645\u800c\u975e\u7eaf\u7406\u8bba\uff08 \u5f3a\u70c8\u5efa\u8bae \u5148\u9605\u8bfb\u6559\u6750\u9884\u4e60\u518d\u770b\u8bfe\uff0c\u5426\u5219\u4e0a\u8bfe\u65f6 \u53ef\u80fd \u4f1a\u6709\u4e9b\u61f5\u5708\uff09\u3002 \u8bfe\u7a0b\u5185\u5bb9\u5305\u62ec \u5927\u90e8\u5206 \u81ea\u9876\u5411\u4e0b\u65b9\u6cd5\u91cc\u7684\u5185\u5bb9\uff0c\u540c\u65f6 \u6db5\u76d6 \u8003\u8bd5\u5185\u5bb9\uff0c\u53ef\u653e\u5fc3\u89c2\u770b\u3002 \u8bfe\u7a0b\u89c6\u9891\u662f\u90d1\u70c7\u8001\u5e08\u672c\u4eba\u5728\u54d4\u54e9\u54d4\u54e9\u4e0a\u4e0a\u4f20\u7684\uff0c\u4e14\u4ece2020\u5e74\u81f3\u4eca\u4e00\u76f4\u575a\u6301\u5728\u8bc4\u8bba\u533a\u7b54\u7591\uff0c\u5c5e\u5b9e\u8d1f\u8d23\u4e14\u8ba4\u771f\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://staff.ustc.edu.cn/~qzheng/teaching.html \u8bfe\u7a0b\u89c6\u9891\uff1a https://www.bilibili.com/video/BV1JV411t7ow/ \u8bfe\u7a0b\u8bfe\u4ef6\uff1a http://staff.ustc.edu.cn/~qzheng/cn.zip \u8bfe\u7a0b\u6559\u6750\uff1a\u8ba1\u7b97\u673a\u7f51\u7edc\uff08\u81ea\u9876\u5411\u4e0b\u65b9\u6cd5 \u7b2c7\u7248\uff09\uff0c\u673a\u68b0\u5de5\u4e1a\u51fa\u7248\u793e\uff0c2016","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/","text":"MIT 6.031: Software Construction \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u7684\u76ee\u6807\u5c31\u662f\u8ba9\u5b66\u751f\u5b66\u4f1a\u5982\u4f55\u5199\u51fa\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\uff0c\u6240\u8c13\u9ad8\u8d28\u91cf\uff0c\u5219\u662f\u6ee1\u8db3\u4e0b\u9762\u4e09\u4e2a\u76ee\u6807\uff08\u8bfe\u7a0b\u8bbe\u8ba1\u8005\u539f\u8bdd\u590d\u5236\uff0c\u4ee5\u9632\u81ea\u5df1\u7ffb\u8bd1\u66f2\u89e3\u672c\u610f\uff09\uff1a Safe from bugs. Correctness (correct behavior right now) and defensiveness (correct behavior in the future) are required in any software we build. Easy to understand. The code has to communicate to future programmers who need to understand it and make changes in it (fixing bugs or adding new features). That future programmer might be you, months or years from now. You\u2019ll be surprised how much you forget if you don\u2019t write it down, and how much it helps your own future self to have a good design. Ready for change. Software always changes. Some designs make it easy to make changes; others require throwing away and rewriting a lot of code. \u4e3a\u6b64\uff0c\u8fd9\u95e8\u8bfe\u7684\u8bbe\u8ba1\u8005\u4eec\u7cbe\u5fc3\u7f16\u5199\u4e86\u4e00\u672c\u4e66\u6765\u9610\u91ca\u8bf8\u591a\u8f6f\u4ef6\u6784\u5efa\u7684\u6838\u5fc3\u539f\u5219\u4e0e\u524d\u4eba\u603b\u7ed3\u4e0b\u6765\u7684\u5b9d\u8d35\u7ecf\u9a8c\uff0c\u5185\u5bb9\u7ec6\u8282\u5230\u5982\u4f55\u7f16\u5199\u6ce8\u91ca\u548c\u51fd\u6570 Specification\uff0c\u5982\u4f55\u8bbe\u8ba1\u62bd\u8c61\u6570\u636e\u7ed3\u6784\u4ee5\u53ca\u8bf8\u591a\u5e76\u884c\u7f16\u7a0b\u7684\u5185\u5bb9\uff0c\u5e76\u4e14\u4f1a\u8ba9\u4f60\u5728\u7cbe\u5fc3\u8bbe\u8ba1\u7684 Java \u7f16\u7a0b\u9879\u76ee\u91cc\u4f53\u9a8c\u548c\u7ec3\u4e60\u8fd9\u4e9b\u7f16\u7a0b\u6a21\u5f0f\u3002 2016\u5e74\u6625\u5b63\u5b66\u671f\u8fd9\u95e8\u8bfe\u5f00\u6e90\u4e86\u5176\u6240\u6709\u7f16\u7a0b\u4f5c\u4e1a\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u800c\u6700\u65b0\u7684\u8bfe\u7a0b\u6559\u6750\u53ef\u4ee5\u5728\u5176\u6700\u65b0\u7684\u6559\u5b66\u7f51\u7ad9\u4e0a\u627e\u5230\uff0c\u5177\u4f53\u94fe\u63a5\u53c2\u89c1\u4e0b\u65b9\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a 2021spring , 2016spring \u8bfe\u7a0b\u89c6\u9891\uff1a\u65e0 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u7684\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a + 1 \u4e2a Project \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.031-software-construction - GitHub \u4e2d\u3002 @pengzhangzhi \u5b8c\u6210\u4e86\u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u5e76\u8bb0\u5f55\u4e86\u7b14\u8bb0, \u4ee3\u7801\u5f00\u6e90\u5728 pengzhangzhi/self-taught-CS/Software Construction - Github \u3002","title":"MIT 6.031: Software Construction"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/#mit-6031-software-construction","text":"","title":"MIT 6.031: Software Construction"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aMIT \u5148\u4fee\u8981\u6c42\uff1a\u638c\u63e1\u81f3\u5c11\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00 \u7f16\u7a0b\u8bed\u8a00\uff1aJava \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u8fd9\u95e8\u8bfe\u7684\u76ee\u6807\u5c31\u662f\u8ba9\u5b66\u751f\u5b66\u4f1a\u5982\u4f55\u5199\u51fa\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\uff0c\u6240\u8c13\u9ad8\u8d28\u91cf\uff0c\u5219\u662f\u6ee1\u8db3\u4e0b\u9762\u4e09\u4e2a\u76ee\u6807\uff08\u8bfe\u7a0b\u8bbe\u8ba1\u8005\u539f\u8bdd\u590d\u5236\uff0c\u4ee5\u9632\u81ea\u5df1\u7ffb\u8bd1\u66f2\u89e3\u672c\u610f\uff09\uff1a Safe from bugs. Correctness (correct behavior right now) and defensiveness (correct behavior in the future) are required in any software we build. Easy to understand. The code has to communicate to future programmers who need to understand it and make changes in it (fixing bugs or adding new features). That future programmer might be you, months or years from now. You\u2019ll be surprised how much you forget if you don\u2019t write it down, and how much it helps your own future self to have a good design. Ready for change. Software always changes. Some designs make it easy to make changes; others require throwing away and rewriting a lot of code. \u4e3a\u6b64\uff0c\u8fd9\u95e8\u8bfe\u7684\u8bbe\u8ba1\u8005\u4eec\u7cbe\u5fc3\u7f16\u5199\u4e86\u4e00\u672c\u4e66\u6765\u9610\u91ca\u8bf8\u591a\u8f6f\u4ef6\u6784\u5efa\u7684\u6838\u5fc3\u539f\u5219\u4e0e\u524d\u4eba\u603b\u7ed3\u4e0b\u6765\u7684\u5b9d\u8d35\u7ecf\u9a8c\uff0c\u5185\u5bb9\u7ec6\u8282\u5230\u5982\u4f55\u7f16\u5199\u6ce8\u91ca\u548c\u51fd\u6570 Specification\uff0c\u5982\u4f55\u8bbe\u8ba1\u62bd\u8c61\u6570\u636e\u7ed3\u6784\u4ee5\u53ca\u8bf8\u591a\u5e76\u884c\u7f16\u7a0b\u7684\u5185\u5bb9\uff0c\u5e76\u4e14\u4f1a\u8ba9\u4f60\u5728\u7cbe\u5fc3\u8bbe\u8ba1\u7684 Java \u7f16\u7a0b\u9879\u76ee\u91cc\u4f53\u9a8c\u548c\u7ec3\u4e60\u8fd9\u4e9b\u7f16\u7a0b\u6a21\u5f0f\u3002 2016\u5e74\u6625\u5b63\u5b66\u671f\u8fd9\u95e8\u8bfe\u5f00\u6e90\u4e86\u5176\u6240\u6709\u7f16\u7a0b\u4f5c\u4e1a\u7684\u4ee3\u7801\u6846\u67b6\uff0c\u800c\u6700\u65b0\u7684\u8bfe\u7a0b\u6559\u6750\u53ef\u4ee5\u5728\u5176\u6700\u65b0\u7684\u6559\u5b66\u7f51\u7ad9\u4e0a\u627e\u5230\uff0c\u5177\u4f53\u94fe\u63a5\u53c2\u89c1\u4e0b\u65b9\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a 2021spring , 2016spring \u8bfe\u7a0b\u89c6\u9891\uff1a\u65e0 \u8bfe\u7a0b\u6559\u6750\uff1a\u53c2\u89c1\u8bfe\u7a0b\u7f51\u7ad9\u7684\u8bfe\u7a0b notes \u8bfe\u7a0b\u4f5c\u4e1a\uff1a4 \u4e2a\u7f16\u7a0b\u4f5c\u4e1a + 1 \u4e2a Project","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/MIT6.031-software-construction - GitHub \u4e2d\u3002 @pengzhangzhi \u5b8c\u6210\u4e86\u8fd9\u95e8\u8bfe\u7684\u4f5c\u4e1a\u5e76\u8bb0\u5f55\u4e86\u7b14\u8bb0, \u4ee3\u7801\u5f00\u6e90\u5728 pengzhangzhi/self-taught-CS/Software Construction - Github \u3002","title":"\u8d44\u6e90\u6c47\u603b"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/","text":"UCB CS169: software engineering \u8bfe\u7a0b\u7b80\u4ecb \u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aRuby/JavaScript \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u7a0b\uff0c\u4e0d\u540c\u4e8e\u5f88\u591a\u4f20\u7edf\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u5f3a\u8c03\u5404\u79cd\u7c7b\u56fe\u3001\u6587\u6863\u8bbe\u8ba1 (plan and document \u6a21\u5f0f)\uff0c\u8fd9\u95e8\u8bfe\u4e13\u6ce8\u4e8e\u6700\u8fd1\u9010\u6e10\u6d41\u884c\u8d77\u6765\u7684\u654f\u6377\u5f00\u53d1 (Agile Development)\u6a21\u5f0f\uff0c\u5229\u7528\u4e91\u5e73\u53f0\u63d0\u4f9b\u8f6f\u4ef6\u5373\u670d\u52a1 (software as a service)\u3002\u4e3a\u6b64\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u8005\u7f16\u5199\u4e86 Software as a service \u8fd9\u672c\u6559\u6750\uff0c\u901a\u8fc7 Ruby/Rails \u6846\u67b6\u6765\u9610\u91ca SaaS \u8fd9\u4e2a\u6982\u5ff5\uff0c\u5e76\u4e14\u6709\u4e30\u5bcc\u7684\u914d\u5957\u7f16\u7a0b\u7ec3\u4e60\u3002 \u8fd9\u95e8\u8bfe\u5728 Edx \u8fd9\u4e2a\u7531 MIT \u548c Havard \u5927\u5b66\u53d1\u8d77\u7684\u5728\u7ebf\u6559\u80b2\u5e73\u53f0\u5168\u8d44\u6599\u5f00\u6e90\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728 Edx \u81ea\u884c\u641c\u7d22 Agile SaaS Development \u8fd9\u95e8\u8bfe\u7a0b\u8fdb\u884c\u5b66\u4e60\u3002\u8bfe\u7a0b\u5185\u5bb9\u57fa\u672c\u6309\u7167\u6559\u6750\u7684\u987a\u5e8f\u5e26\u4f60\u4e00\u6b65\u6b65\u4ee5\u654f\u6377\u5f00\u53d1\u7684\u65b9\u5f0f\u642d\u5efa\u4e00\u4e2a\u8f6f\u4ef6\u5e76\u514d\u8d39\u90e8\u7f72\u5728\u4e91\u5e73\u53f0\u4e0a\u3002 \u8bfe\u7a0b\u8d44\u6e90 \u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.saasbook.info/courses \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1 Edx \u8bfe\u7a0b\u4e3b\u9875\u3002 \u8bfe\u7a0b\u6559\u6750\uff1a Software as a service \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1 Edx \u8bfe\u7a0b\u4e3b\u9875\u3002 \u8d44\u6e90\u6c47\u603b @PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS169-Software-Engineering - GitHub \u4e2d\u3002","title":"UCB CS169: software engineering"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/#ucb-cs169-software-engineering","text":"","title":"UCB CS169: software engineering"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/#_1","text":"\u6240\u5c5e\u5927\u5b66\uff1aUC Berkeley \u5148\u4fee\u8981\u6c42\uff1a\u65e0 \u7f16\u7a0b\u8bed\u8a00\uff1aRuby/JavaScript \u8bfe\u7a0b\u96be\u5ea6\uff1a\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f\ud83c\udf1f \u9884\u8ba1\u5b66\u65f6\uff1a100 \u5c0f\u65f6 \u4f2f\u514b\u5229\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u7a0b\uff0c\u4e0d\u540c\u4e8e\u5f88\u591a\u4f20\u7edf\u7684\u8f6f\u4ef6\u5de5\u7a0b\u8bfe\u5f3a\u8c03\u5404\u79cd\u7c7b\u56fe\u3001\u6587\u6863\u8bbe\u8ba1 (plan and document \u6a21\u5f0f)\uff0c\u8fd9\u95e8\u8bfe\u4e13\u6ce8\u4e8e\u6700\u8fd1\u9010\u6e10\u6d41\u884c\u8d77\u6765\u7684\u654f\u6377\u5f00\u53d1 (Agile Development)\u6a21\u5f0f\uff0c\u5229\u7528\u4e91\u5e73\u53f0\u63d0\u4f9b\u8f6f\u4ef6\u5373\u670d\u52a1 (software as a service)\u3002\u4e3a\u6b64\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u8005\u7f16\u5199\u4e86 Software as a service \u8fd9\u672c\u6559\u6750\uff0c\u901a\u8fc7 Ruby/Rails \u6846\u67b6\u6765\u9610\u91ca SaaS \u8fd9\u4e2a\u6982\u5ff5\uff0c\u5e76\u4e14\u6709\u4e30\u5bcc\u7684\u914d\u5957\u7f16\u7a0b\u7ec3\u4e60\u3002 \u8fd9\u95e8\u8bfe\u5728 Edx \u8fd9\u4e2a\u7531 MIT \u548c Havard \u5927\u5b66\u53d1\u8d77\u7684\u5728\u7ebf\u6559\u80b2\u5e73\u53f0\u5168\u8d44\u6599\u5f00\u6e90\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728 Edx \u81ea\u884c\u641c\u7d22 Agile SaaS Development \u8fd9\u95e8\u8bfe\u7a0b\u8fdb\u884c\u5b66\u4e60\u3002\u8bfe\u7a0b\u5185\u5bb9\u57fa\u672c\u6309\u7167\u6559\u6750\u7684\u987a\u5e8f\u5e26\u4f60\u4e00\u6b65\u6b65\u4ee5\u654f\u6377\u5f00\u53d1\u7684\u65b9\u5f0f\u642d\u5efa\u4e00\u4e2a\u8f6f\u4ef6\u5e76\u514d\u8d39\u90e8\u7f72\u5728\u4e91\u5e73\u53f0\u4e0a\u3002","title":"\u8bfe\u7a0b\u7b80\u4ecb"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/#_2","text":"\u8bfe\u7a0b\u7f51\u7ad9\uff1a http://www.saasbook.info/courses \u8bfe\u7a0b\u89c6\u9891\uff1a\u53c2\u89c1 Edx \u8bfe\u7a0b\u4e3b\u9875\u3002 \u8bfe\u7a0b\u6559\u6750\uff1a Software as a service \u8bfe\u7a0b\u4f5c\u4e1a\uff1a\u53c2\u89c1 Edx \u8bfe\u7a0b\u4e3b\u9875\u3002","title":"\u8bfe\u7a0b\u8d44\u6e90"},{"location":"%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/#_3","text":"@PKUFlyingPig \u5728\u5b66\u4e60\u8fd9\u95e8\u8bfe\u4e2d\u7528\u5230\u7684\u6240\u6709\u8d44\u6e90\u548c\u4f5c\u4e1a\u5b9e\u73b0\u90fd\u6c47\u603b\u5728 PKUFlyingPig/CS169-Software-Engineering - GitHub \u4e2d\u3002","title":"\u8d44\u6e90\u6c47\u603b"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 3367806d..726b3bd9 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,437 +2,437 @@ https://csdiy.wiki/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%90%8E%E8%AE%B0/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%9F%B9%E5%85%BB%E6%96%B9%E6%A1%88Pro/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/Web%E5%BC%80%E5%8F%91/CS142/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/Web%E5%BC%80%E5%8F%91/fullstackopen/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/Web%E5%BC%80%E5%8F%91/mitweb/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS188/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CS50/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/CYJ/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CS61C/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/CSAPP/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/DDCA/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/N2T/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/MIT6.824/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/CMake/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Docker/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GNU_Make/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Git/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/GitHub/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/LaTeX/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/Vim/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/thesis/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/tools/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E5%BF%85%E5%AD%A6%E5%B7%A5%E5%85%B7/%E7%BF%BB%E5%A2%99/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CS162/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/MIT6.S081/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/NJUOS/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITLA/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/MITmaths/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80/information/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/6.042J/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS126/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/CS70/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/The_Information_Theory_Pattern_Recognition_and_Neural_Networks/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/convex/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E5%AD%A6%E8%BF%9B%E9%98%B6/numerical/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/15445/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS122/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F/CS186/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6/Data100/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/Algo/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS170/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/CS61B/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS189/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/CS229/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/ML/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/CMU10-414/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F/MLC/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CMU10-708/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/CS229M/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STA4273/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/STAT8201/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%9B%E9%98%B6/roadmap/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224n/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS224w/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS230/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS231/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/CS285/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/LHY/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/EE16/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/Signals_and_Systems_AVO/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%94%B5%E5%AD%90%E5%9F%BA%E7%A1%80/signal/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%A8%8B%E5%BA%8F%E8%AF%AD%E8%A8%80%E8%AE%BE%E8%AE%A1/CS242/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/CS161/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8/MIT6.858/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106B_CS106X/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS106L/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS110L/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS50/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/Duke-Coursera-Intro-C/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/MIT-Missing-Semester/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/6035/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS148/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/CS184/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES101/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES103/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/GAMES202/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/CS144/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/topdown_ustc/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/6031/ - 2022-09-09 + 2022-09-10 daily https://csdiy.wiki/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/CS169/ - 2022-09-09 + 2022-09-10 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 443ee3c639a386915a58c3b8fd65ecfa79dd3b1c..746bbc83a3680f485e6bdf54f9416301f08db221 100644 GIT binary patch delta 1141 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 GKmY*0w>B35