add learning map

This commit is contained in:
zhongyinmin
2021-11-09 23:37:15 +08:00
parent a55fa882cf
commit 5eff19c253
6 changed files with 92 additions and 0 deletions

63
docs/CS学习规划.md Normal file
View File

@@ -0,0 +1,63 @@
# 一个仅供参考的CS学习规划
计算机领域方向庞杂,知识浩如烟海,每个细分领域如果深究下去都可以说学无止境。因此,一个清晰明确的学习规划是非常重要的。这一节的内容是对后续整本书的内容的一个概览,你可以将其看作是这本书的目录,按需选择自己感兴趣的内容进行学习。
## 必学工具
> 俗话说磨刀不误砍柴工。如果你是一个刚刚接触计算机的24k纯小白学会一些工具将会让你事半功倍。
[MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md)这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。
[翻墙](必学工具/翻墙.md)由于一些众所周知的原因谷歌、Github等网站在大陆无法访问。然而很多时候谷歌和Stackoverflow可以解决你在开发过程中遇到的95%的问题。因此学会翻墙几乎是一个内地CSer的必备技能。考虑到法律问题这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用
IDEIntegrated Development Environment集成开发环境说白了就是你写代码的地方。作为一个码农IDE的重要性不言而喻一个轻便的编辑器可以让你从产生一个编程点子到开始写代码之间只隔了一个快捷键。个人推荐常用的IDE是VSCode和Sublime准确的说Sublime只是一个编辑器但丰富的插件使它基本满足了我的轻量级编程需求。当然对于大型项目我还是会采用略重型的IDE例如PycharmPythonIDEAJava等等免责申明所有的IDE都是世界上最好的IDE
[Vim](必学工具/Vim.md)一款命令行编辑工具。这是一个学习曲线有些陡峭的编辑器不过学会它我觉得是非常有必要的因为它将极大地提高你的开发效率。现在绝大多数IDE也都支持Vim插件让你在享受现代开发环境的同时保留极客的炫酷yue
[Git](必学工具/Git.md)一款代码版本控制工具。Git的学习曲线可能更为陡峭但出自Linux之父Linus之手的Git绝对是每个学CS的童鞋必须掌握的神器之一。
[Github](必学工具/Github.md)基于Git的代码托管平台。全世界最大的代码开源社区大佬集聚地。
[Makefile](必学工具/Makefile.md)一款工程构建工具。善用Makefile会让你养成代码模块化的习惯同时也能让你熟悉一些稍大的工程的编译链接流程。
[LaTex](必学工具/Latex.md)<del>逼格提升</del>论文排版工具。
## 环境配置
> 你以为的开发 —— 在IDE里疯狂码代码数小时。
> 实际上的开发 —— 配环境配几天还没开始写代码。
under construction.
## 主线课程
under construction.
### 数学类
### 编程入门
### 系统入门
### 体系结构
### 操作系统
### 网络
### 编译原理
### 软件工程
### 人工智能
### 机器学习
### 深度学习
## 定制属于你的课程地图
> 授人以鱼不如授人以渔。
以上的课程规划难免有强烈的个人倾向和喜好,不一定适合所有人,更多的是抛砖引玉的作用。如果你想挑选自己感兴趣的方向和内容加以学习,可以参考我在下面列出来的资源。
- [MIT OpenCourseWare](https://ocw.mit.edu/courses/#electrical-engineering-and-computer-science): 麻省理工学院的课程资源开放共享项目收录了数以千计的各科课程资源其中计算机类的课号是6.xxx。
- [MIT CS Course List](http://student.mit.edu/catalog/m6a.html)麻省理工学院的CS课程列表。
- [UC Berkeley EECS Course Map](https://hkn.eecs.berkeley.edu/courseguides)UC Berkeley的EECS培养方案以课程地图的方式将各门课程的类别和先修关系一目了然地呈现其中绝大多数课程本书中均有收录。
- [UC Berkeley CS Course List](https://www2.eecs.berkeley.edu/Courses/CS/?_ga=2.49145060.370293363.1598336094-476512950.1598336094): UC Berkeley的CS课程列表。
- [Stanford CS Course List](https://blog.csdn.net/qq_41220023/article/details/81976967): 斯坦福的CS课程列表。

15
docs/必学工具/Git.md Normal file
View File

@@ -0,0 +1,15 @@
## 为什么使用Git
Git是一款分布式的代码版本控制工具Linux之父Linus嫌弃当时主流的中心式的版本控制工具太难用还要花钱就自己开发出了Git用来维护Linux的版本给大佬跪了
Git的设计非常优雅但初学者通常因为很难理解其内部逻辑因此会觉得非常难用。对Git不熟悉的初学者很容易出现因为误用命令将代码给控制版本控制没了的状况好吧是我
但相信我和Vim一样Git是一款你最终掌握之后会感叹“它值得”的神器。
## 如何学习Git
和Vim不同我不建议初学者在一知半解的情况下贸然使用Git因为它的内部逻辑并不能熟能生巧而是需要花时间去理解。我推荐的学习路线如下
- 阅读这篇[Git tutorial](https://missing.csail.mit.edu/2020/version-control/)。
- 阅读这本开源书籍[Pro Git](https://git-scm.com/book/en/v2)的Chapter1 - Chapter5是的没错学Git需要读一本书捂脸
- 此时你已经掌握了Git的原理和绝大部分用法接下来就可以在实践中反复巩固Git的命令了。但用好它同样是一门哲学我个人觉得这篇[如何写好 Commit Message](https://chris.beams.io/posts/git-commit/)的博客非常值得一读。
- 好的此时你已经爱上了Git你已经不满足于学会它了你想自己实现一个Git巧了我当年也有这样的想法[这篇tutorial](https://wyag.thb.lt/)可以满足你!
- 什么光实现一个Git无法满足你小伙子/小仙女有前途巧的是我也喜欢造轮子这两个Github项目[build-your-own-x](https://github.com/danistefanovic/build-your-own-x)和[project-based-learning](https://github.com/tuvtran/project-based-learning)收录了你能想到的各种造轮子教程比如自己造个编辑器、自己写个虚拟机、自己写个docker、自己写个TCP等等等等。

View File

View File

@@ -0,0 +1,14 @@
## 为什么学Latex
如果你需要写论文,那么请直接跳到下一节,因为你不学也得学。
LaTex是一种基于Tex的排版系统由图灵奖得主Lamport开发而Tex则是由Knuth最初开发这两位都是计算机界的巨擘。当然开发者强并不是我们学习LaTex的理由LaTex和常见的所见即所得的Word文档最大的区别就是用户只需要关注写作的内容而排版则完全交给软件自动完成。这让没有任何排版经验的普通人得以写出排版非常专业的论文或文章。
Berkeley计算机系教授Christos Papadimitriou曾说过一句半开玩笑的话
> *Every time I read a LaTeX document, I think, wow, this must be correct!*
## 如何学习LaTex
推荐的学习路线如下:
- LaTex的环境配置是个比较头疼的问题。如果你本地配置LaTex环境出现了问题可以考虑使用[Overleaf](www.overleaf.com)这个在线LaTex编辑网站。站内不仅有各种各样的LaTex模版供你选择还免去了环境配置的难题。
- 阅读下面三篇Tutorial: [Part-1](https://www.overleaf.com/latex/learn/free-online-introduction-to-latex-part-1), [Part-2](https://www.overleaf.com/latex/learn/free-online-introduction-to-latex-part-2), [Part-3](https://www.overleaf.com/latex/learn/free-online-introduction-to-latex-part-3).
- 学习LaTex最好的方式当然是写论文不过从一门数学课入手用LaTex写作业也是一个不错的选择。

View File

View File