MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序
译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程。本文就是他个人对于这次MIT挑战的介绍和总结。
版权声明:本次翻译已经得到Scott本人授权,禁止任何形式的转载。
---------------------------------------
在接下来的12个月里,我将在不去上课的情况下,学完整个MIT四年分的计算机课程。
更新:MIT挑战现在已经结束了。我在2012年9月26日完成了挑战,距离开始时间2011年10月1日刚好12个月。下面将列出我所有课程的考试、官方解法以及我写的代码的链接。
回答一些普遍的问题:
- 我花了多少功夫来完成这次挑战?一开始差不多每周60个小时,到后来就是35小时左右。
- 你拿到MIT的学位了吗?没有。看上面的视频就知道我完成这次无学分学习的动机。
- 你是否做了所有MIT学生做的事情?没有。我考试和编程项目的总课程很类似MIT列出的课程,有些实验课和人文学科我不得不改成了其他科目,但是总学时是一样的。这是MIT计算机科学的课程表,可以跟我下面列出的课程做对照。(提示:这个链接已经更新过了,旧的链接挂了。我并没有检查课表有哪些修改。)
- 你在学习过程中用了课本或者教学视频吗?所有的资料都在下面列出来了,如果你不确定,可以到下面的列表查看。
- 你是按什么顺序来上这些课的?就是下面列出来的顺序,除了一些同时上的课程。当然,如果你按照这个顺序来上课,你就不用担心某些被依赖课程会被安排到后面。
- 你是不是自己给考试评分的?是的。诚然,没有教授评分在一定程度上会有误差,但是大多数考试都是量化的问题,这些问题的答案都是有规律的,因此误差没那么大。我建议每个人都去检查一下我真正的考试回答,并跟官方提供的答案作对比。
- 你是否相信人们应该不去上大学,而是做这个项目?当然不是。我上过大学,我并不后悔。我做这个项目的是想看看获得一次教育的时长、代价和常规性的预期能被压缩到多低。
计算机总是令我神魂颠倒。从金融到社交,算法是构成人们生活大部分方面的隐藏语言。当今世界最大的变化就是由代码编写而成的人工智能事业的发展让我们能够通过计算机了解作为人类的意义。
除了机器的诗意,计算机科学也是非常实践性的。财富被积累了,变革的火星在行行代码中闪耀。
我总想掌握计算机语言,但是我并不想投入4年以及数十万没金来学习。
我开启这项实验是因为我想告诉大家,完成一门学业,并不像有些人认为的那样,需要通过录取委员会和SAT考试,背负数千美元的债务,甚至耗费四年来慢慢学习。
我会失败吗?当然有可能,这个世上许多比我聪明的人仍在类似MIT的地方挣扎于巨大的工作量之中。我还企图在没有人指导的情况下按四倍速来学习同样的内容。
我会跟大家分享我在这一过程中的收获,这是我唯一能保证的。下面列出了我将学习的33门课程,每门课我都会做期终考试,诸位可以拿我的回答跟MIT官方的答案做对比。我也会把我的错误发布出来,大家不用怀疑我会把我的错误答案删除。
MIT挑战之后的更新
由于我已经完成了这次挑战,我会在这里更新我上过的计算机科学相关的课程或者编写的相关程序。
- WordSmith 这是我写的开源免费的拼字游戏的AI。
学习进度
- 8.01 物理1-经典力学
- 我在七月份完成了这门课,这是一次预实验,用来检查我是不是准备好进行这次挑战了。这门课程很精彩,Walter Lewin教授在不遗漏知识点的情况下把物理讲得栩栩如生。提示:这门课已经被MIT删除了,大家可以去看另一个版本 。分数:5/5。
- 免费课程资料
- 基于费曼学习方法的笔记
- 我的考试结果
- MIT官方答案
- 我在七月份完成了这门课,这是一次预实验,用来检查我是不是准备好进行这次挑战了。这门课程很精彩,Walter Lewin教授在不遗漏知识点的情况下把物理讲得栩栩如生。提示:这门课已经被MIT删除了,大家可以去看另一个版本 。分数:5/5。
- 18.01 一元微积分
- 18.02 多元微积分
- 8.02 物理2-电磁学
- 又一门Walter Lewin教授的物理课,示范实验非常棒。这门课对于专业细节非常严谨,同时也很贴近生活,每天讨论像彩虹和金属探测器这样的概念。提示:这门课也被MIT删除了,替代版本。分数:5/5。
- 免费课程资料
- 基于费曼学习方法的笔记(巨大的pdf)
- 我的考试结果
- MIT官方答案
- 又一门Walter Lewin教授的物理课,示范实验非常棒。这门课对于专业细节非常严谨,同时也很贴近生活,每天讨论像彩虹和金属探测器这样的概念。提示:这门课也被MIT删除了,替代版本。分数:5/5。
- 6.01 电子工程和计算机科学导论1
- 5.111 基础化学
- 7.012 生物学导论
- 18.03 微分方程
- 6.02 电子工程和计算机科学导论2
- 6.042J 计算机数学
- 6.006 算法简介
- 18.06 线性代数
- 6.041 概率系统分析
- 6.002 电路与电子学
- 6.046J 算法的设计与分析
- 6.304 人工智能
- 6.003 信号与系统
- 6.004 计算结构
- 24.241 逻辑学1
- 14.01 微观经济学原理
- 6.003 计算机系统工程
- 6.013 电磁学及应用
- 14.02 宏观经济学原理
- 24.242 逻辑学2
- 6.011 通讯、控制和信号入门
- 24.244 模态逻辑
- 14.20 产业组织学
- 14.23 政府的产业条例
- 14.48J 教育经济学
- 6.005 软件构建基础
- 这是MIT规定的软件开发课程。这门课挺难的,不是因为有什么智力要求,而是因为工作量繁重。这门课由3个团队项目,3个个人项目以及一些实验课组成。我当时很犹豫要不要上这门课,因为这次挑战的时间有限,很难上这样的课。但是最终我发现,最简单的方式就是做完所有的事情。
- 我花了大概三周的时间成功上完这门课,零零散散耗费了两个月。虽然很费时,但是这门课是最有回报的课程。我本想在每个项目上花费更多的时间补充更多特性,特别是最后的那个用Scratch做的即时通讯应用。如果你在编程方面刚入门,想学习高级的设计思想,写出优秀的代码而不是能够运行的代码,这门课是很棒的选择。
- 我把我写的所有的项目都发布在这里,需要安装Java环境才能运行。我也把我做的三个设计项目上传了(扫描之后清晰度降低了,很抱歉!)。分数:5/5。
- 6.801 计算机视觉
- 这门课讲述如何用算法去看,主要的背景就是通过看到的图像指导机器人运作。包括二进制图像处理、边缘检测、高斯扩展表面、方向、摄影测量等主题。这门课由两次课外考试来评分,并且是由两门研究生级别的课程合成的一门课。
- 总之,这门课很有挑战性,使用了傅里叶分析、矢量计算、线性代数、二次规划算法以及变分法等技术方法,所以这门课大概是应用数学相关最难的一门课了。很可惜没有编程的作业,不然一定会很有趣。分数:5/5。
- 6.837 计算机图形学
- 这门课讲述了计算机图形学的基本原理,主要讲了射线追踪,当然扫描线方法也讲了。这门课基本由作业来评分(本来有两次小考的,但是没有提供答案,所以没用它们来计分)。从简单的光线投射和平面着色开始,作业逐渐包含了毛面着色、反射模糊、投射阴影、带有折射指数的透明表面、镜面反射以及过程贴图。一个网格加速数据结构的过程也完成了,它没有任何视觉效果,却大大加快了相对缓慢的射线的图像路径。
- 具体的编程环境写在了代码的README.rtf文件里。文件比较大,包含了渲染出的图片,这样不用运行代码就能看到问题需求的输出了。(作为对比,MIT的官方输出在sample_res.pdf里)。提示:我之前上的课被替换了,新的版本。分数:5/5。
- COSC 545 计算理论
MIT挑战的常问问题
Q)你遵守了哪些规则?
因为我不是MIT的学生(也不隶属于MIT),所以我自己制定了一套公平可行的规则。规则很简单:
1. 我完成一门课的标准是通过期末考试(一般高于50分就可以了,虽然我想拿更高的分数。)
2. 考试的限制是一样的,不能提前看题目,不能带课程相关的材料,一样的时长限制(默认是三小时)。
3. 我根据MIT的官方答案给自己打分,我把回答和答案都发布到这里,任何人都可以再次检查我的评分手段。
记住,这只是我这次挑战的最低要求。对于含有重要的编程部分的课程,我尽可能完成代表性的编程作业。
Q)你完成了所有的作业、论文和项目吗?
对于数学或者理论课程来说,期末考试是很重要的评分手段。我仍然会做一部分作业和测验来为期末考试做准备。不过由于在这次挑战中我没法维持一个统一的标准(许多课程要么不可用,要么没法评分),我没有很认真地去做它们。
对于含有大量编程或实际设计的课程,我尽量去完成最多的作业。但是它们很难做评分,我还是依赖于期末考试。
Q)你的课程表和MIT的是否不一样?
我花了差不多一个月的时间来拼凑一个MIT计算机科学实际课表的镜像。很可惜我没法完美地完成,因为有些课程(包括实验和研究课)很难评分,另外一些网上没有资源。
这次挑战,我课程表的总学时跟MIT的学位学时是一样的,所以当我没法上某一门课的时候,我就换成一门近似的课程。就学习的知识而言,我的课程表跟MIT的课程表很像了。
唯一的区别就是MIT的选修课。我也上了不少非计算机科学的课程,来模仿MIT的人文、艺术、社科的要求。因为MIT的线上艺术课程的资料比社科的课程差远了,所以我选的课程跟MIT的课程并不完全匹配。
这是MIT计算机科学的课表。
Q)如果你挂科了,你会怎么做?
鉴于我正在做一次尝试,所以我觉得挂科是无法避免的。我的主要要求是通过期末考试,所以如果我挂了,我允许自己过段时间再试一次。
对于有多次考试的课程,我的对策就是先挂一次,这样我在后续的课程上会更高效。这跟在大学里很不一样,不及格不再是一种挫折。这就是自学的优势之一。
Q)你为什么做这个挑战?你只是爱学习吗?
没有人喜欢学习,但是每个人都想变得更聪明。学习,得到更强的洞察力,对于某些主题变得更睿智,这是很有价值的。很遗憾,很多人在经历过很多年惩罚式的教育后,都已经忘记了这一点。
我承认,想在12个月内学完四年的内容有些疯狂,或者说傲慢。但是我真正的动机就是希望告诉大家,快速的学习是有可能的,与此同时还能获得更多的快乐。
Q)这样做你能获得毕业文凭吗?
不能,这就是问题所在。我们社会错误地把知识和文凭等同起来。
得到一纸文凭很不错,对于许多工作来说,这是完全必要的。但是这种强烈的等价使得人们忘记了两者之间是有区别的。
作为一个作家和生意人,我已经有了自己的事业。我从来没想过去大公司工作,那里的HR可能会审议我匮乏的文凭。对我来说,我学习计算机科学就是想为以后开展新事业或者创业时做准备。
我不反对大学。对我来说,大学经历很美好,很有价值,对每个人来说都是这样。我只是希望我给出这样一种选择,那些觉得当下的政策不适合自己的人可以有新路可走。
Q)这仅仅是为了通过考试吗?
不是,但区别很细微。许多课程基于之前学过的概念,所以我的目标是尽可能地去理解每门课。临时抱佛脚只是一种为了考试死记硬背然后很快遗忘的方法。理解更难,却并不会耗费更多时间(如果每门课都为后一门做好铺垫)。
更新:最初的四节课,我同时学三到四门。虽然这导致我在回顾知识上的时间比正常的少很多(一个月而不是一学期),这却提升了重复的好处。
最终,因为最初的课程大部分都是在为后续更难的课程打基础,我的理解能力和考试表现都上了一个台阶,这些就是我通过考试的工具。
Q)关于计算机科学,你以前有哪些经验?
我在高中的时候写了挺多代码的,大多数是创造电脑游戏。另外,我在曼尼托巴大学商学院上学的时候,也上了四年学制的计算机科学课程。所以确实,我之前有编程的经验,在这次挑战中占了优势。话虽如此,我的技能水平可能跟那些去MIT上学的计算机科学的学生相距不远。
还有一点就是我在2011年七月就上了第一门课,8.01经典力学,作为预测试课程。因此我在这12个月内实际学习的课程数是32门课。
Q)我是博客主/记者,如何跟你联系,分享故事?
通过邮箱challenge@scotthyoung.com,或者通过这里的表格。接下来我会变得很忙(显而易见),所以很抱歉我在短期内不能很迅速地查看邮件。我在学习一门课程时通常不在线。
---------------------------------------
个人博客地址:MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序) | CdiajadeX's world
公众号:编程布道师 ProgrammingPreacher
我做个好事好了……这个Quora问题里面有Lewin的课备份。https://www.quora.com/Where-can-I-find-Walter-Lewins-lecture-notes-assignments-and-videos-after-the-removal-from-MIT