from http://yangzhang91.com/onlinecourse.htm
初识Online Course,恐怕要追溯到高中时代了,当时参加信息学竞赛,看了MIT OCW(OpenCourseWare)中的Introduction to Algorithms和Introduction to Computer Science and Programming这两门课程,虽然有好多没看懂的,但是也基本上算是大部分都看下来了,那时候还得完全依赖字幕才能看懂。
第二次接触到Online Course,应该说是一次偶然,从王瑞大牛的blog上发现有一门课叫Machine Learning,出于好奇就关注了一下,还没来得及开始看,这个网站的创始人Andrew Ng已经把这一门课发展成为有好多门课的Coursera,没想到短短一年多,Coursera已经从当时的一门课迅速发展到300多门课,种类之齐全,发展速度之快,上课人数之多,令人叹为观止,不禁让人联想,未来的大学,会不会被Online Course完全取代?
我也是从2013年开始才算完全腾出时间来好好上Online Course,这不到半年的时间里,Online Course让我学到了非常多的东西,也是我能够申请成功清华交叉信息研究院的首要原因。在这里,我也想把自己的感受和心得分享给所有的人,希望有更多的人能够加入到Mooc的大军当中来。
(下面推荐的课程只是我的个人见解,并不是这些课我都修过,有些我也是正在学习之中)
MIT COW应该算是Online Course的鼻祖,MIT在很早之前就把自己的上课录像、课件、作业、考试都放在了这上面,共享给全球的人,其中不乏很多非常优秀的课程,MIT这个学校就是比较偏重理论和数学,所以这些课都是也都是这样的类型,但是对于计算机专业的学生来说,理论和数学非常重要!我的推荐如下:
Introduction to Linear Algebra:这门课从空间的角度解释了什么是线性代数,深入浅出,不是国内那些逻辑混乱、只教公式和怎么做题怎么考试的线性代数课可以比的。不得不让人感叹什么才是牛教授,什么才是牛校。
Introduction to Computer Science and Programming:比较基础的算法,课程用的语言是Python,我高二时候听过的课,那时候都能听懂,说明难度不大,适合编程入门。另外,我认为Python也是非常好的学习编程的入门语言。
Introduction to Algorithms:算法是计算机科学的核心,所有计算机专业的学生都应该修一下,这门课内容很多很丰富,讲课老师都是大牛。
Probabilistic Systems Analysis and Applied Probability:概率是所有计算机专业的学生必须修好的一门课,国内的概率课难度低,内容又少又浅,该讲的全没讲,所上的内容大概只有这门课的1/3,想读Master或者PhD的学生,这门课里的内容必须是得会的。
Advanced Data Structures:高级数据结构,我也正在学习之中,对于想读PhD,尤其是理论计算机方向的学生非常适合。
MIT OCW上还有很多非常好的课,MIT作为工科的圣殿,几乎涵盖了所有方向的计算机的课程,所以就请根据自己的研究方向去发掘吧。
但是MIT OCW有一个很大的缺点就是交互性不够,而下面要讲到的几个网站则是最新一代的Online Course,交互性非常强,每周更新上课视频(一对一的,不再是上课录像),每周有作业,计算机专业的课程通常还会有编程作业,提交作业之后就能得到自己的分数,所有作业都会计入总分,有些课会有期末考试,最后会有一个总得分,通过的话还会发一张电子证书!这俨然和真正的大学上课已经别无二致了!最重要的是,你可以选择任何你喜欢的课听,所有上课的这些老师都是国外顶尖大学的顶尖教授!
Edx和Udacity是其中两个代表,但是由于视频在youtube上,由于某种原因,所以上课体验不是很好,我从来没有在这上面修过一门课。
下面的重点是Coursera,现在已经有374门课,包含了文史哲、数理化等等各个方向,计算机的课程尤其多,因为Andrew Ng本来就是个计算机系的教授。所以我只重点推荐计算机(也包括数学)的课程:
Algorithm Design and Analysis, Part 1, Part 2:斯坦福的课,质量自然不会差,编程作业很容易,理论作业有点难。
Algorithm, Part 1, Part 2:普林斯顿的课,教授是Knuth的学生,自然也是大牛,编程作业质量挺高,竟然都有KD-tree。
Machine Learning:Andrew Ng的课,非常好,编程作业质量挺高,但是理论的东西偏少,适合于Machine Learning的入门。
Probabilistic Graphical Models:Machine Learning中的一个分支吧,但是课程很难,听说是斯坦福最难的课之一,以后有时间我会认真修一下的。
Calculus: Single Variable:微积分入门的课,讲课挺生动,课件也做的非常可爱,不像国内的微积分课又枯燥又无聊。
Neural Networks for Machine Learning:Neural Networks方面的顶级大牛,同时也是Deep Learning的首个提出者Geoffrey Hinton的课,打算研究Deep Learning的同学应该先看这个,我也只看了前面一部分,难度比较大。
Image and Video Processing:图像处理的课,打算做这方面研究的同学,这应该是个不错的入门。
Computational Photography:我也不知道这门课中文应该叫什么了,反正跟摄影是一点关系都没有的,都是图像处理的内容。应该是算在Computer Vision门下吧。
Game Theory:博弈论的入门课程,但说实话没有我想象中的那么有趣,比较理论。
Social and Economic Networks: Models and Analysis:关于社交网络的,跟姚班的网络科学那门课内容差不多,理论为主。
Statistics One:统计也是每个计算机专业的学生必须学好的课,这课虽然还没开始,但是看内容还是比较全面的。
下面还有一些我也没有看过,但是这些课程几乎涵盖了大学计算机专业要学的所有专业课,而且质量远远高于学校里的乏味的课,以及更乏味的作业。
Computer Networks:计算机网络
Compilers:编译原理
Introduction to Databases:数据库系统
Learn to Program: The Fundamentals、Learn to Program: Crafting Quality Code:学习编程
C++ for C Programmers:学习C++
Computer Architecture:计算机系统结构
暂时就这么多了,更多的课程就要根据自己的研究方向去发掘了。Coursera现在也是在蓬勃发展之中,将来肯定会有更多更好的课程出现。Mooc的未来不可限量!
下面再补充一些比较零散的,也是非常不错的Online Course:
Machine Learning:Andrew Ng在斯坦福上的课,理论的东西比较多了,是Coursera上的那门课的一个很好的补充。视频在iTunes上可以下载。
Machine Learning:CMU的课,上课的教授是那本很薄的《机器学习》的书的作者,但是视频有点卡。
Learning From Data:加州理工学院的课,讲的也是机器学习,理论比较多一些。视频在iTunes上可以下载。
Deep Learning and Unsupervised Learning:Andrew Ng最新的课,内容不多,是Deep Learning很好的入门材料。
Introduction to Haskell:入门Haskell的不错的材料,但是没有视频,只有课件。
结语:或许很多大学生跟我有一样的感觉,上了一学期的课,但是感觉自己什么都没学到,或者干脆一学期就没好好听过课,考前突击了一下,考完什么都不记得了。我想中国的大学确实也应该好好反省一下自身,为什么大学这样一个本来该是所有年轻人学习、奋斗的地方,却看到了那么多的迷茫和颓废。也许现在,Online Course是一个不错的选择,它给每个人这样一个机会,来选择自己喜欢的东西。虽然现在它还不能取代大学,不能发放文凭,但是一纸文凭,是否真的代表你真的拥有了这张文凭背后的知识和能力?我想没有一个人是不爱学习、自甘颓废的,只是很多人没有找到适合自己的学习方式和道路,所以才会迷茫、会颓废。Online Course或许可以帮助一些人找到属于自己的路。