我在知乎上听了一场live分享,标题是”如果自学计算机专业课程“,觉得老师讲的很好,所以整理了这篇笔记。
首先自己要明白,为什么要学习计算机专业,如果没有明确的目标,是很难坚持下去的。这个目标就因人而异了,而我学习的目的是因为现在的工作的太无聊,为了提升自己的核心竞争力,也为了自己的一个小梦想。
计算机的基础知识是枯燥难懂的,而且大部分知识工作中都用不到,但学习这些基础知识,会让你”知其然,知其所以然“,也更有机会获得创造性强的工作。计算机知识虽然庞大,但靠业余时间自学是完全可行的,不用怀疑
关键知识领域
计算机科学被划分为18个领域,领域之间都是有关联性的,他们共同构成了计算机专业的关键知识领域
自学路线
下面这张图概述了要学习的内容,推荐大家阅读下浪潮之巅
学习方法
推荐阅读“学习之道”这本书,这本书介绍了人的大脑是如何进行学习的。简单来说,我们很多时候学习的知识都是零散的,人类学习的过程就是把知识转化为组块,并将其移入长期记忆的过程。我们在学习时的记忆是瞬间的,比如我听了这场live,过了两天我可能全忘了,但是记录下来通多不断巩固,就会变成长期记忆。
基于组块的场景式学习
这种方式非常适合解决工作中的问题。举个例子,我的github有个开源项目Essay,这个项目最初我是为了解决公司业务中的vue ssr问题,要解决这个问题我需要学习webpack、vue、node、linux等这些组块,通过掌握结合这些组块顺利解决了ssr问题。
学习的基本原则
这张图很好理解,任何知识都不是看一遍就能完全掌握的,因此好书值得多看上几遍。同样,学习必须要制定计划,遇到问题不能得过且过。现在网络这么发达,你遇到的问题很多都有解决方案,即使网上找不到,还有很多社区同行可以帮你。而有计划的学习可以让进度可控,比如一本书有二十章,我每天必须掌握一章内容,把时间得到充分应用。最后的学习目标那就更重要了,能读到我这篇笔记的人,相信都是有目标的人
认知规律
很多时候我们学习都是出于一时的兴趣,这时的我们是感性的,并不知道学习它能给我带来什么。慢慢的,当我们逐步深入,我们就会对要学习的东西有了理性的认识。
从具体到抽象可以看做是一个从初级到高级的过程,比如编程语言中的面向对象
理论必须在实践中才能真正学好,这点相信每个人都有体会,上学时不知道学习的知识有什么用,工作后发现到处都要用
知识的“互联网”
知识的深度遍历
深度遍历在实际生活中都有用到,比如我是做前端开发的,需要学习HTML、CSS、JS,而学习这三项又需要掌握其他知识,直到把他们都搞懂才算真正掌握
N + 1 和 N - 1层
工作中,我们处于第N层,比如前端大部分时间是写页面、对接口。N + 1层表示上一层,比如这个功能我如何做才能让用户喜欢、体验更好。N - 1层就是下一层,比如浏览器的工作原理、http协议,为什么浏览器能渲染我的页面?客户端和服务器是如何通信的?
读书的基本原则
“难书”如何阅读
有些书看似薄薄的一本,但是看一页都要花几个小时,自信心受到打击,真么办?下面是几种推荐方法
计算机专业课程学习建议
计算机与数学
数学和计算机的关系是紧密的,特定领域对数学的要求不同,但不可能脱离数学
推荐学习教材
认识计算机
下面这两本书,带你走进计算机的世界
深入理解计算机系统是一本经典教材,值得多读几遍
数据结构与算法
数据结构和算法是紧密关联的,因此当数据结构发生变化,算法也同样发生变化。学习数据结构和算法的目的,是为了针对特定的问题,设计出解决方案。比如https中的非对称加密算法,其目的是为了解决数据传输的安全问题
下面是推荐阅读的书籍和学习路线
计算机组成原理推荐书籍
计算机网络
学习计算机网络的关键是为了弄明白计算机是如何连接的、数据是如何在网络中传输的、网络软件系统应该如何构建
推荐阅读图灵出版的书籍《网络是如何连接的》
结语
最后用一张图概括这场live所要表达的核心。
点线面,构成整个知识体系。另外,这个live是针对研究生的,因此是有难度的