取其精华

计算机四强选手

 

视频课程主页(课件)
麻省理工(MIT)

网易公开课;YouTube、Coursera/edX/

对应课程的网站

OCW/Audio vedio lecture

斯坦福(StandFord)

~~
加州大学伯克利分校(UCB)~~
卡内基梅隆大学(CMU)~~

OCW(OpenCourseWare)上视频比较少,找视频的可以去YouTube上或者Coursera、edX上瞅瞅。

电子工程和计算机学科包含:

  1. 电气科学与工程理学士/课程6-1
  2. 电气工程与计算机科学理学士/课程6-2
  3. 计算机科学与工程理学士/课程6-3
  4. 计算机科学与分子生物学理学士/课程6-7

附Degree Chart

  1. 6-1 http://catalog.mit.edu/degree-charts/electrical-science-engineering-course-6-1/
  2. 6-2  http://catalog.mit.edu/degree-charts/electrical-engineering-computer-science-course-6-2/
  3. 6-3 http://catalog.mit.edu/degree-charts/computer-science-engineering-course-6-3/

 

毕业要求(MIT)


伯克利是怎么教授学生的

(1)一般CS的课都是视频的,即使不去也没有关系,反正YouTube上都有。

(2)教学资源非常强大,上课lecture是很小的一部分,很多课每周都有lab有discussion,每隔几周一个大的project。每个助教引领一个discussion,而且有office hour专门答疑。lab上不会做了也可以直接问他们会手把手教你。

(3)课程内容丰富而且视野开阔,不会说我单独的给你上一门C语言什么的,课程的应用方向是什么就教什么。

比方说从他们大一上第一门编程课cs61a,教材用的是伯克利改编的python版本的SICP,

  • 整个学期的安排大概是,一开始教你python,基本上两个礼拜过完语法层面,然后开始讲高阶函数lambda函数等等接近函数式编程的东西,之后教你各种基本的小算法比如链表树什么的,但是配套的练习非常多,比如反转链表,快排,二叉树各种路径生成搜索等等,然后每个练习都有测试例子可以在本地直接跑。之后是讲面向对象编程,在之后是我最喜欢的部分,教scheme这门lisp的方言,也是大概一周过完scheme的语法层面,然后讲解函数式编程的美妙之处比如惰性求值lambda演算,在之后让你用python实现一个scheme的解释器,体会命令式语言和函数式语言的不同。然后在讲讲SQL语句与宏啥的。
  • 61a每周基本上一到两次作业加上一次实验,然后一个学期有四个project,然后project的代码框架都搭的特别好,比如说第二个project Ants,就是实现一个类似于植物大战僵尸的游戏,但是图形层面基本游戏逻辑都给你写好了,但是各种ant单位和敌人的部分交给你实现,这个project写完你对于面向对象编程就有一些了解了。

(4)注重对于整个计算机科学体系的培养

在伯克利,一般的CS学生就是大一上cs61a(structure and interpretation of computer program),大一下cs61b(data structure)加上cs70(Discrete Mathematics and Probability Theory),然后大二上cs61c(machine structure),上完61系列加上70基本上就是junior低年级的CS课就ok了,然后各种课就随便上170算法,162操作系统,164编译原理,184图形学,189机器学习等等。

比方说我上面说的61a是计算机科学的入门课,学生了解了一门面向对象的高抽象的语言python,一门函数式的语言scheme,同时实践了基本的一些算法(链表,二叉树,快排等等),也了解了SQL语句,了解了macro宏的概念,写了很多的作业与实验具有了一定的编程基础。然后是61b数据结构,这门课他们是用java教的,也是一两周过完java语法层面能够写一写基本的算法。在之后是61c相当于我们的计组,抽象层面进一步降低,到硬件的层面,也是一两周过完C语言(用的是经典的那本教材C语言程序设计),然后教一些基本的汇编指令(用的是伯克利自己研发的RISC-V指令集,开发这个指令集的David Patterson教授今年刚拿图灵奖),接着将cache,浮点数等等计组的内容,实践过程中用到了spark和openmp还有intel的simd指令等等东西。最后的project也是实现一个简单的CPU(用他们提供的程序模拟的)。

(5)视野开拓,理论与实践并行

我觉得学习操作系统就应该写操作系统,学编译原理就应该写编译器,但是国内大部分高校这两门课就很容易教偏了(当然一些顶尖高校像清北复交之南浙之类的应该都教的很好),经常是理论大大多于实践,搞得学生没有兴趣,我上的162操作系统就是改pintos这个教学用的操作系统,虽然实现的过程比较痛苦(原谅我菜),也参考了别的组的文档,但是感觉收货非常大,你真正的才能知道原来操作系统是怎么回事,而不是成天看书背书背概念。

(6)没有水课,至少就计算机专业课来说,基本没有。

(7)不开无意义的课

像我在国内竟然Linux的使用还要单独开课,这。。。自己找本鸟哥的书,查查文档手册啥的直接上手不就行了?然后学过了一门命令式语言比如C/C++后还要专门开课教java,而且还每周还只讲讲基本语法,一周讲变量,一周讲条件语句。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾日叁問

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值