add CS61A & missing semester

This commit is contained in:
zhongyinmin
2021-11-09 16:58:43 +08:00
parent 563393ce7e
commit 0cf8a83c21
4 changed files with 47 additions and 7 deletions

View File

@@ -6,10 +6,11 @@
本书目前规划了以下部分(如果你有其他好的建议或者想加入贡献者的行列欢迎邮件zhongyinmin@pku.edu.cn或者在issue里提问)
- 必学工具:翻墙, StackOverflow, Git, Github, Vim, Latex, Makefile ...
- 环境配置bash环境变量Anaconda ...
- 培养方案替代课程我将按照信科2021年计算机科学与技术专业的培养方案对于每个课程列出相关替代课程学习资料并分析如何在不影响课程绩点的情况下学习尽可能多的内容
- 必学工具:IDE, 翻墙, StackOverflow, Git, Github, Vim, Latex, Makefile ...
- 环境配置:Linux基础bash环境变量Anaconda ...
- **国外高质量CS课程汇总**我将把所有我上过的所有高质量的CS课程分门别类进行汇总并给出相关的自学建议每门课都会有一个独立的仓库维护相关的资源以及我的作业实现
- 经典书籍推荐看过CSAPP这本书的同学一定感叹好书的重要我将列举推荐自己看过的计算机领域的必看好书与资源链接。
- 培养方案替代课程(北大信科专享)我将按照信科2021年计算机科学与技术专业的培养方案对于每个课程列出相关替代课程学习资料并分析如何在不影响课程绩点的情况下学习尽可能多的内容。
## 梦开始的地方 —— CS61A
大一入学时我是一个对计算机一无所知的小白装了几十个G的Visual Studio天天和OJ你死我活。凭着高中的数学底子我数学课学得还不错但在专业课上对竞赛大佬只有仰望。提到编程我只会打开那笨重的IDE新建一个我也不知道具体是干啥的命令行项目然后就是cincoutfor循环然后CEREWA循环。当时的我就处在一种拼命想学好但不知道怎么学课上认真听讲但题还不会做课后做作业完全是用时间和它硬耗的痛苦状态。我至今电脑里还存着自己大一上学期计算概论大作业的源代码 —— 一个1200行的C++文件没有头文件、没有类、没有封装、没有unit test、没有makefile、没有git唯一的优点是它确实能跑缺点是“能跑”的补集。我一度怀疑我是不是不适合学计算机因为童年对于极客的所有想象已经被我第一个学期的体验彻底粉碎了。
@@ -57,11 +58,11 @@
## 自学的坏处
当然作为CS自学主义的忠实拥趸者我不得不承认自学也有它的坏处。
第一就是交流沟通的不便。我其实是一个很热衷于提问的人,对于所有没有弄明白的点,我都喜欢穷追到底。但当你面对着屏幕听到老师讲了一个你没明白的知识点的时候,你只能反复听那句让你匪夷所思的知识点。当然,如果能有几个志同道合的伙伴结伴自学,那将是极好的。之后我将会根据这个项目的受关注情况考虑建立类似交流群性质的论坛供大家讨论。
第一就是交流沟通的不便。我其实是一个很热衷于提问的人,对于所有没有弄明白的点,我都喜欢穷追到底。但当你面对着屏幕听到老师讲了一个你没明白的知识点的时候,你无法顺着网线到另一端向老师问个明白。我努力通过独立思考和善用Google来缓解这一点但是,如果能有几个志同道合的伙伴结伴自学,那将是极好的。之后我将会根据这个项目的受关注情况考虑建立类似交流群性质的论坛供大家讨论。
第二就是这些自学的课程基本都是英文的。从视频到slides到作业全是英文所以有一定的门槛。不过我觉得这个挑战如果你克服了的话对你是极为有利的。因为在当下虽然我很不情愿但也不得不承认在计算机领域很多优质的文档、论坛、网站都是全英文的。养成英文阅读的习惯在赤旗插遍世界之前还是有一定好处的狗头保命
第三也是我觉得最困难的一点就是自律。因为没有DDL有时候真的是一件可怕的事情特别是随着学习的深入国外的很多课程是相当虐的。北大信科引以为傲的第一虐课ICS只是CMU的系统入门课你觉得它虐只是因为你还没有习惯除了OJ之外的编程。你得有足够的驱动力强迫自己静下心来阅读几十页的Project Handout理解上千行的代码框架忍受数个小时debug时光。而这一切没有学分没有绩点没有老师没有同学只有一个信念 —— 你在变强。
第三也是我觉得最困难的一点就是自律。因为没有DDL有时候真的是一件可怕的事情特别是随着学习的深入国外的很多课程是相当虐的。北大信科引以为傲的第一虐课ICS只是CMU的系统入门课你觉得它虐只是因为你还没有习惯除了OJ之外的编程。你得有足够的驱动力强迫自己静下心来阅读几十页的Project Handout理解上千行的代码框架忍受数个小时debug时光。而这一切没有学分没有绩点没有老师没有同学只有一个信念 —— 你在变强。
## 这本书适合谁
正如我在前言里说的,任何有志于自学计算机的朋友都可以参考这本书。如果你只是对某个特定的领域感兴趣,当然可以选择性地挑选你感兴趣的内容进行学习。当然,如果你是一个像我当年一样对计算机一无所知的小白,初入大学的校门,我希望这本书能成为你的攻略,让你花最少的时间掌握你所需要的知识和能力。某种程度上,这本书更像是一个根据我的体验来排序的课程搜索引擎,帮助大家足不出户,体验世界顶级名校的计算机优质课程。

View File

@@ -0,0 +1,28 @@
# CS61A: Structure and Interpretation of Computer Programs
## 课程简介
- 所属大学UC Berkeley
- 先修要求:无
- 编程语言PythonSchemeSQL
- 课程难度:🌟🌟🌟
- 预计学时50 hour
伯克利CS61系列的第一门课程也是我的Python入门课。
CS61系列是伯克利CS专业的入门课其中
- CS61A强调抽象让学生掌握用程序来解决实际问题而不关注底层的硬件细节。
- CS61B注重算法与数据结构以及大规模程序的构建学生会用Java语言结合算法与数据结构的知识来构建千行代码级别的大型项目一个简易的谷歌地图一个二维版的Minecraft
- CS61C关注计算机体系结构让学生理解高级语言例如C是如何一步步转换为机器可以理解的01串并在CPU执行的学生将会学习RISC-V架构并自己用Logism实现一个CPU。
CS61B和CS61C在本书中均有收录。
回到CS61A注意这不仅仅是一门编程语言课而是会深入到程序构造与运行的原理。最后你将在第4个Project中用Python实现一个Scheme的解释器。此外抽象将是这门课的一大主题你将学习到函数式编程、数据抽象、面向对象等等知识来让你的代码更易读更模块化。当然学习编程语言也是这门课的一大内容你将会掌握Python、Scheme和SQL这三种编程语言在它们的学习和比较中相信你会拥有快速掌握一门新的编程语言的能力。
## 课程资源
- 课程网站https://inst.eecs.berkeley.edu/~cs61a/su20/
- 课程视频https://www.youtube.com/watch?v=0_LryzvBxFw&list=PL6BsET-8jgYVkdaPYJNyvuNga3QA_U1gA
- 课程教材http://composingprograms.com/
- 课程作业:课程网站会有每个作业对应的文档链接以及代码框架的下载链接。
## 资源汇总
我学习这门课中的所有资源和作业实现都汇总在[这个](https://github.com/PKUFlyingPig/CS61A)Github仓库中。

View File

@@ -0,0 +1,12 @@
## 课程简介
- 先修要求:无
- 编程语言shell
- 课程难度:🌟🌟
- 预计学时10小时
正如课程名字所言“计算机教学中消失的一个学期”这门课将会教会你许多大学的课堂上不会涉及但却对每个CSer无比重要的工具或者知识点。如果你是一个计算机小白那么我非常建议你学习一下这门课因为它基本涉及了本书必学工具中的绝大部分内容。
## 课程资源
- 课程网站https://missing.csail.mit.edu/2020/
- 课程视频https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J
- 课程作业:一些随堂小练习,具体见课程网站。

View File

@@ -1,5 +1,4 @@
site_name: CS自学指南
theme:
name: material
repo_url: https://github.com/pkuflyingpig/pku-cs-self-learning/
repo_url: https://github.com/pkuflyingpig/pku-cs-self-learning/