MIT EECS是如何安排本科生的专业基础课

简介

本文通过搜集资料经历,结合自己自学经验,来谈谈MIT EECS(美国麻省理工学院电气工程与计算机科学系)大一至大三阶段主要的课程框架和教学方法。

在过去的比较长的一段时间里,我自认为比较认真和自习的去了解了MIT EECS科系给本科生准备的各类课程和教学安排,尤其是专业基础课,我也亲自下海,花了数月时间自学了几门,写这篇文章,就是为了和大家共同分享一下我的心得和感受,希望能帮助国内有心的莘莘学子(主要是各强弱电类、信息类、计算机类专业)和在职工程人员们走出专业学习的困境,打好基础,参考世界上最优秀的理工科院校是配合培养自己的本科生的。而且MIT受实用主义影响较深,大部分的课只要花心思去学,基本都不难,且确实令人受益匪浅。希望对在国内读书的同学和想要自我提升的工程师们一些借鉴经验,少走弯路。

MIT是美国乃至世界上最著名的研究型大学之一,其在EECS,MIT EECS(美国麻省理工学院电气工程与计算机科学系)系在工科领域更是闻名遐迩,除在相关研究领域成果瞩目外,也历来重视本科生教学,重视教学改革和课程教材建设。


话外题:

我并非不认可大家可以适度讨论一些问题来满足自己的好奇心,但大体上来说,我还是比较认可胡适先生的说法:“多研究些问题,少谈些主义”。我花时间写这么一篇文章,并计划不断更新,就是希望以身作则和亲身体验来提倡务实的风气,关于MIT EECS(美国麻省理工学院电气工程与计算机科学系),侃侃而谈的文章很多,但拿起资料,从零开始认真学习的人则寥寥无几,希望大家一起努力。


#### [清华姚班与 MIT EECS 本科哪个好?](https://www.zhihu.com/question/27313459 "清华姚班与 MIT EECS 本科哪个好?")

像是这种问题,知乎上讨论的火热,我并非要一捧一踩,但清华姚班毕竟开办时间并不算太长,而且其课程内容国内公开的中文信息资料相对也较多,大家都可以去查阅看看姚班都给最顶尖的国人学子提供了哪些课程和安排。就我个人感觉而言,其目标和起点都非常高,显然并不适合普通人自学,最主要的还是没有那么多清华的课堂录像和各种资料公开。

但MIT的情况就非常不同了,可能是由于历史沉淀或者其它一些缘故,MIT EECS科系公开的资料之庞大细致,远非一般国内普通高校所能望其项背。而其余四个Four Big(Berkeley, MIT, Stanford, and CMU)也未必向普通公众开放了这么多可供学习的材料。


我对MIT的印象和许多人一样,刚开始懵懵懂懂,互联网利用和资料搜集能力不高,往往可能是从网易开放课之类开始的。但凡你稍微有点英语基础,我都强烈推荐你应该直接去MIT opencourseware直接寻找相关课程的资料,而非转由第三方(有些朋友看B站或者网易开放课也许是为了中英双语字幕,这我并不反对),但第三方的搬运往往遗漏了大量的配套资料。

翻开MIT opencourseware的首页,按照Department选择EECS后,进入这个科系开放课程的页面,如上所示,可以看到上百门浩如烟海的课程。

大概在06年的时候,清华大学相关科系派出了两位著名的教师(看清华相关网课的同学估计都了解这两位教师分别是信号与系统和电路原理的课程负责人)到MIT为期一年左右的访问,用于借鉴和参考帮助清华进行教学改革。以下是他们回来后发表的文章,整理的较为细致,参考价值非常高,我先放出来供大家参考。如果您和我一样,是已经大学毕业多年,相信对国内相关专业的课程体系如数家珍,若读者你还在大学低年级,对下面所说的这些课程都还没有完整的学习经历和感受,也不要担心,后续我还会慢慢更新和讲解。

总的来说,连清华的两位老师都赞叹MIT EECS科系给本科学生提供的教学资源丰富,但这毕竟是十几年前的考察回顾了,双方的课程体系今天都有了比较大的调整。

毕竟我也已毕业将近10年,所以还是以经典体系为例,后续再谈谈现在改革的变化。我们先看看经典的选课图。

有了这张地图,大家就不会对下面这个浩如烟海的课程列表感到不知从何下手了

首先是18开头的两门数学课,微积分1 和 微积分2,以及一门8开头的大学物理课。然后还有线性代数和补充了一门专门的微分方程的课,这几门公共基础课几乎和国内工科大学一开始必学的课程完全类似,虽然也非常经典,但我们讨论的重点是EECS的专业基础课,也不在该科系的页面上,故而不在赘述,有兴趣的读者请自行去查阅。至于离散数学,也是国内计算机相关科系的先修课,往往作为数据结构和算法的预备课程,而非在所有工科类课程中都有开设。

按照传统的MIT的四门课,所有EECS的学生都必须在大二修习并通过的6.001-6.004将会是我们讨论的重点。因为这四门传统的核心基础课程构成了整个系全部本科生必修且学分学时最长的4门课程,可见其基础支柱作用和重要性。

计算机程序的构造与解释

其中6.001在国内尚无完全对应的课程,但其难度对于初学者非常高,其实本来非常不适合作为大学第一门CS相关课程(如果你是天赋和毅力极佳的自学者,可以考虑作为自学的第一门课程)但其重要性非常高。由于作者本人EE工程实践背景远较CS深,所以我是很晚才开始注意到这门课程的重要性的。如果你是有着较为丰富的编程经验的程序员,尤其是涉及系统和算法优化等问题的程序员,强烈建议你马上开始学习和阅读此神书。对绝大多数本科低年级在校生而言,程序设计初学者劝退,建议在充分熟练掌握一门偏底层程序设计语言和具备一些初步的数据结构和算法知识后再开始学习此课程,以免学习积极性受到不必要的挫伤。

Structure and Interpretation of Computer Programs

![](https://pic2.zhimg.com/v2-7120522c5ad2990c419c4d4a3becc539_r.jpg)
只有翻译自原书第二版的简体中文版,由北京大学数学学院信息科学系教授裘宗燕译出,机械工业出版社出版。

评论如下:

这是一门极其重要,但99%程序员没有学的东西。

但是注意的是,这门学问与实用主义当道的现代有些突兀。

如果想学一门计算机语言面对市场的挑战,那么请出门左转。

如果像深刻理解计算机程序设计,那么这门课不容错过。

当时本书在出版两年后(1986年),Harold Abelson和Gerald Jay Sussman两位作者录制了《计算机程序的构造和解释》系列公开课,该录像是他们在给Hewlett-Packard公司员工培训时录制的。当时的视频课程只有英文字幕,因此,也让很多英语小白的程序员心有余而力不足。有人将这些英文字幕翻译成中文,并在GitHub上发布,如此一来,英语小白开发者也可以学习Scheme/Lisp了。

打赏

发表评论