一年内自学MIT的33门课? 疯狂学习有方法
能快速掌握复杂信息,对成就卓越事业至关重要。ScottYoung的学习过程不只适用于学生,同样有助于学习复杂技能的专业知识。
最近,在TED大会上,一位叫Scott Young的年轻人分享了他的一个惊人成就:他在一年之内,完成了MIT(麻省理工学院)计算机科学本科课程的全部33门课,并都通过了考试。重要的是,他完全是靠自学完成的,观看在线教程的讲座,再参加实际的考试做自我评估。
MIT计算机科学的33门课,都是一些硬骨头,从线性代数到计算理论。而且,MIT的课程不能用临时抱佛脚的方式完成,死记硬背行不通。因为MIT的考试对解决问题的技巧要求很高,还会经常出一些没见过的题型。其次,MIT的课程讲究循序渐进,就算你能侥幸通过一次考试,同系列课程的第七课可能就跟不上了。Young能通过考试,主要是靠“加速理解的过程”。
Young自己是学商学出身,按照他的进度,读完一门课程只需要1.5个星期。Young也把自己学习33门课的经验在自己的博客上做了分享,他并不准备因此就转行去做一个计算机工作者。做这件事情的主要目的,是证明此事是可以做到的。
一年内如何自学MIT的33门课?
尽管学得更快有很多好处,但大多数人并不愿意思考“如何学习”。大概是因为我们不肯相信有这种好事,在我们看来,学习的速度只取决于好基因与天赋。确实总有些人天赋异禀,但你的学习方法也很重要。
更深层次的知识加工,与时而反复的温故知新,在某些情况下会加快你的学习效率。是的,研究表明,没有正确的方法,学习将永远停滞。
如何建立你的知识体系?
大多数人经典的求学之路,就是听讲座,读书;如果还不懂,只好枯燥地做大量习题(题海)或重看笔记。没有系统的方法,想更快地理解似乎是天方夜谭。我们大概都经历过“啊哈!我懂了”的那种快乐,但对顿悟的心理机制全然不知。
而且理解本身,很难称得上是一种开关。它像洋葱的层层表皮,从最肤浅的领会到深层次的理解,逐层巩固对科学革命的认知。给这样的洋葱剥皮,则是常人知之甚少、易被忽略的理解过程。
加速学习的第一步,就是揭秘这个过程。如何洞悉问题,加深你的理解,取决于两个因素:
建立知识之间的联系,自我调试排错知识联系很重要,因为它们是了解一个想法的接入点。我曾纠结于傅里叶变换,直至我意识到它将压强转化为音高、或将辐射转化为颜色。这些见解,常在你懂的和你不懂的之间建立联系。调试排错也同样重要,因为你常常犯错,这些错误究根到底,还是知识残缺,胸无成竹。
贫瘠的理解,恰似一个错漏百出的软件程序。如果你能高效地自我调试,必将大大提速学习进程。建立准确的知识联系与调试排错,就足够形成了深刻的问题见解。而机械化技能与死记硬背,通常也只在你对问题的本质有了肯定的直觉以后,才有所裨益。
钻研学习方法,你会学得更快经年累月,我完善了一个方法,可以加速逐层增进理解的过程。这个方法至今已被我用于各科目的课题,包括数学、生物学、物理学、经济学与工程学。只需些许修改,它对掌握实用技能效果也很好,比如编程、设计或语言。
这个方法的基本结构是:知识面、练习、自省。我将解释每个阶段,让你了解如何尽可能有效率地执行它们,同时给出详细的例子,展示我是怎么应用在实际课程的。
快速学习的三个阶段
第1阶段知识面覆盖
你不可能组织一场进攻,如果你连一张地形图都没有。因此,深入研习的第一步,就是对你需要学习的内容有个大致印象。若在课堂上,这意味着你要看讲义或读课本;若是自学,你可能要多读几本同主题的书,相互考证。
学生们常犯的一个错误,就是认为这个阶段是最重要的。从很多方面来讲,这个阶段却是效率最低的,因为单位时间的投入只换来了最少量的知识回报。我常常加速完成这个阶段,很有好处,这样,我就可以投入更多时间到后面两个阶段。
如果你在看课程讲座的视频,最好是调到1.5或2倍速快进。这很容易做到,只要你下载好视频,然后使用播放器的“调速”功能。我用这个法子在两天内看完了一学期的课程视频。如果你在读一本书,我建议你不要花时间去高亮文本。这样只会让你的知识理解停留在低层次,而从长远来看,也使学习效率低下。
更好的方法是,阅读时只偶尔做做笔记,或在读过每个主要章节后写一段落的总结。比如,下面这些就是上机器视觉这门课时的笔记:
第2阶段练习
做练习题,能极大地促进你的知识理解。但是,如果你不小心,可能会落入两个效率陷阱:
没有获得即时的反馈:研究表明,如果你想更好地学习,你需要即时的反馈。因此,做题时最好是答案在手,天下我有,每做完一题就对答案,自我审查。没有反馈或反馈迟来的练习,只会严重牵制学习效率;
题海战术:正如有人认为学习是始于教室终于教室,一些学生也认为大多数的知识理解产自练习题。是的,你总能通过题海战术最终搭起知识框架,但过程缓慢、效率低下。
练习题,应该能凸显你需要建立更好直觉的知识领域。一些技巧,比如费曼技巧(the Feynman technique),对此则相当有效。对于非技术类学科,它更多的是要求你掌握概念而不是解决问题。所以,你常常只需要完成最少量的习题。对这些科目,你最好花更多的时间在第三阶段,形成学科的洞察力。
第3阶段自省
知识面覆盖,与做练习题,是为了让你知道你还有什么不懂。这并不像听上去那么容易,毕竟知之为知之,不知为不知,难矣。你以为你都懂了,其实不是,所以老犯错;或者,你对某综合性学科心里没底,但又看不确切还有哪里不懂。
接下来的技巧,我称之为“费曼技巧”,将帮助你查漏补缺,在求知路上走得更远。当你能准确识别出你不懂的知识点时,这个技巧助你填补知识的缺口,尤其是那些最难以填补的巨大缺口。这个技巧还能两用。即使你真的理解了某个想法,它也能让你关联更多的想法,于是,你可以继续钻研,深化理解。
学得更快的策略
我描述了学习的三个阶段:知识面、练习和自省。但这可能让你误解,错以为它们总在不同的时期被各自执行,从不重叠或反复。实际上,随着不断地深入理解知识,你可能会周而复始地经历这些阶段。你刚开始读一个章节,只能有个大概的肤浅印象,但做过练习题和建立了直觉以后,你再回过来重新阅读,又会有更深刻的理解,即温故而知新。
我描述的学习过程也不只是适用于学生,同样有助于学习复杂技能或积累某话题的专业知识。学习像编程或设计的技能,大多数人遵循前两个阶段。他们阅读一本相关的基础书籍,然后在一个项目里历练。然而,你能运用“费曼技巧”更进一步,更好地锁定与清晰表述你的深刻见解。积累某话题的专业知识,亦同此理;唯一的差别是,你在建立知识面以前,需要搜集一些学习材料,包括相关的研究文章、书籍等。无论如何,只要你弄清楚了想掌握的知识领域,你就钻研下去,深入学习它。
费曼技巧(The Feynman Technique)
这个技巧的灵感,源于诺贝尔物理奖获得者,理查德·费曼(Richard Feynman)。在他的自传里,他提到曾纠结于某篇艰深的研究论文。他的办法是,仔细审阅这篇论文的辅助材料,直到他掌握了相关的知识基础、足以理解其中的艰深想法为止。
费曼技巧,亦同此理。对付一个知识枝节繁杂如发丝、富有内涵的想法,应该分而化之,切成小知识块,再逐个对付,你最终能填补所有的知识缺口,否则,这些缺口将阻挠你理解这个想法。
费曼技巧很简单:拿张白纸;在白纸顶部写上你想理解的某想法或某过程;用你自己的话解释它,就像你在教给别人这个想法。
最要紧的是,对一个想法分而化之,虽然可能重复解释某些已经弄懂的知识点,但你最终会到达一个临界点,无法再解释清楚,那里正是你需要填补的知识缺口。为了填补这个缺口,你可以查课本、问老师或到互联网搜寻答案。通常来说,一旦你精准地定义了你的不解或误解,找到确切的答案则相对而言更轻松。
我已经使用过这个费曼技巧有数百次,确信它能应付各种各样的学习情境。你可以假设自己要把知识点给一个五岁的孩子讲清楚,在头脑中画出解释这个概念的最简单的办法。
对付你完全摸不着头脑的概念对此,我仍坚持使用费曼技巧。翻开课本,找到解释这个概念的章节。我先浏览一遍作者的解释,然后仔细地模仿它,并也试着用自己的思维详述和阐明它。如此一来,当你不能用自己的话写下任何解释时,引导式费曼技巧很有用处。
对付各种过程你也能通过费曼技巧去了解一个你需要用到的过程。审视所有的步骤,不光解释每一步在干什么,还要清楚它是怎么执行的。我常这样理解数学的证明过程、化学的方程式和生物学的糖酵解过程。
对付需要记忆的内容费曼技巧,也可以帮你自查是否掌握非技术类学科那些博大精深的知识概念。对于某个主题,如果你能顺利应用费曼技巧,而无需参考原始材料(讲义、课本等),就证明你已经理解和记住它。
形成更深刻的直觉结合做习题,费曼技巧能帮你剥开知识理解的浅层表皮。但它也能帮你钻研下去,走得更远,不只是浅层的理解,而是形成深刻的知识直觉。直观地理解一个想法,并非易事。它看似有些许神秘,但这不是它的本相。一个想法的多数直觉,可作以下归类:
类比:你理解一个想法,是通过确认它与某个更易理解的想法之间的重要相似点。可视化:抽象概念也常成为有用的直觉,只要我们能在脑海为它们构筑画面,即使这个画面只是一个更大更多样化想法的不完全表达。简化:一位科学家曾说过,如果你不能给你的祖母解释一样东西,说明你还没有完全理解它。简化是一门艺术,它加强了基础概念与复杂想法之间的思维联系。
你可以用费曼技巧去激发这些直觉。对于某个想法,一旦你有了大致的理解,下一步就是深入分析,看能不能用以上三种直觉来阐释它。期间,就算是借用已有的意象喻义,也是情有可原的。例如,把复数放到二维空间里理解,很难称得上是新颖的,但它能让你很好地可视化这个概念,让概念在脑海中构图成型。DNA复制,被想象成拉开一条单向拉链,这也不是一个完美的类比,但只要你心里清楚其中的异同,它会变得有用。
一年内自学MIT的33门课? 疯狂学习有方法的更多相关文章
- MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序
译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程.本文就是他个人对于这次MIT挑战的介绍和总结. 版权声明:本 ...
- 个人附加作业XD --这门课终于结束了~~
你认为每次项目的评分标准存在哪些问题,你认为的合理评分准则是怎样的(个人/结对/团队算三个) 评分的话我个人觉得是存在一些问题的. 第一,分数差异 问题:一个就是各班的成绩评分有高有低,有的班整体分数 ...
- [自学] MIT的EECS本科+研究生课程【持续更新中-2020.06.02】
前言 我的本科是读的电子信息工程,研究生跟着老师做项目,参与到深度学习中来,毕业后做了算法工程师,工作之后愈发发现,不论从事什么岗位,基础都很重要,但现在也没有时间再读一遍本科了,自学的话也不知道从何 ...
- java例题_50 题目:有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成 绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
1 /*50 [程序 50 文件 IO] 2 题目:有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成 3 绩),计算出平均成绩,将原有的数据和计算出的平均分数存放 ...
- 用一条SQL语句查出每门课都大于80分的学生的姓名
用一条SQL语句查出每门课都大于80分的学生的姓名,数据表结构如下: 建表SQL如下: ; -- ---------------------------- -- Table structure for ...
- /* * 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 *(包括学生号,姓名,三门课成绩),计算出平均成绩, *将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。 */
1.Student类:类中有五个变量,分别是学号,姓名,三门成绩 package test3; public class Student { private int num; private Stri ...
- SQL查询出每门课都大于80 分的学生姓名
Course表如下: 查询出每门课都大于80 分的学生姓名有两种方法. 1.select distinct name from Course where name not in (select di ...
- 代码实现:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 (包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.ut ...
- T-SQL - 习题01_查询每门课都大于80分的学生姓名
时间:2017-09-11 整理:byzqy 题目:用一条SQL语句查询出每门课都大于80分的学生姓名. 最近面试C#开发工程师,碰到上面这个考数据库的题目,自己感觉有点难度,没有思路,现将找到的解决 ...
随机推荐
- Qt5.3.2(VS2010)_调试_进入Qt源码
1.必须是 Debug模式 2. http://blog.csdn.net/mayenjoy/article/details/42535789 http://blog.csdn.net/goforwa ...
- 算法笔记--priority_queue
算法笔记 priority_queue<int>que;//默认大顶堆 或者写作:priority_queue<int,vector<int>,less<int&g ...
- resin中关于url rewrite来传递jsessionid的问题
最近两天在项目中碰到,一个很奇怪的问题.同一个账号多次切换登录时,会出现这个账号的信息在session中找不到,虽然可以登录成功,但是之后这个用户信息好像没有保存到session中一样,或者是被改变了 ...
- dubbo监控报错Error creating bean with name 'uriBrokerService'
在jdk1.8下面会出现此错误 解决方法: 1.更换服务器jdk版本.(会影响其他项目环境) 2.修改dubbo-admin tomcat默认jdk版本. 3.修改dubbo-admin项目依赖(de ...
- 『PyTorch』第十三弹_torch.nn.init参数初始化
初始化参数的方法 nn.Module模块对于参数进行了内置的较为合理的初始化方式,当我们使用nn.Parameter时,初始化就很重要,而且我们也可以指定代替内置初始化的方式对nn.Module模块进 ...
- Oracle11g温习-第七章:redo日志
2013年4月27日 星期六 10:33 1.redo (重做) log 的功能: 用于数据恢复 2.redo log 特征: [特征]: 1) 记录数据块的变化(DML.D ...
- 一、Object类
1.Object类是所有类的父类 声明一个类的时候,实际上已经默认继承了Object类 package property; public class Hero extends Object{ Stri ...
- python中read()、readline()、readlnes()
在python中 1.file.read()直接按原样读取文件,它通常用于将文件内容放到一个字符串变量中,如果文件大于可用内存,则不可能实现这种处理,因为原来文件里面是str_class,所以 fil ...
- VMware Station NAT上网模式配置
- 2.2 C++类的成员变量和成员函数
参考:http://www.weixueyuan.net/view/6334.html 总结: 类成员的声明和定义: 类成员函数的定义分类内定义(内联)和类外定义(可用 inline 关键字 强制转换 ...