Gatech OMSCS刚毕业来介绍一下上过的课(今天实在学不动了。。)

avatar 105800
donnice
66318
88
[align="left"]关于这个项目的感受其实介绍已经很多了,比如下面两个贴子:[/align][align="left"]instant.1point3acres.cn[/align][align="left"]zhihu.com[/align][align="left"]
[/align][align="left"]虽然年代久远,但个人感受我认为写得比较客观,也就不再赘述了。作为选课群群主,我这里主要讲一讲选课。**说到群,我之前在地里不少地方留过我的微信号,欢迎大家来加我入群。由于本人已毕业,所以目前已退出我所在的所有OMSCS相关的群,所以想加群的同学请不要来加我了(其实2个群现在都快满了)。[/align][align="left"]
[/align][align="left"] [/align][align="left"]选课我认为要注意的点我认为是项目从开办以来到现在,课程在不断地变化,版本在一代代地更新,以前耳熟能详的水课现在估计也没那么水了,难课的难度变化不大,所以无论是出于什么用途,想要【水】一个文凭的难度我认为是越来越大的。但一门课难不难和一门课好不好我认为没有很强的相关性,更何况一门课的难度本身也是有争议的。所以我这里根据我自己的选课顺序,大概谈一谈我所选过的课以及我的选课思路,大家可以略知深浅。提一点,我的选课是不含很强的功利性的(不用这个文凭找工作),纯粹是为了弥补相关背景和满足自己对一些领域的好奇心,因此我的选课思路不适用于绝大部分人。还有一点就是这些课都是在udacity上免费能搜到的,不管你有没有选这门课,甚至无论你是不是OMSCS的学生,都可以听,所以也不要听了我说的就认为是对的,在选课前不妨听一听再决定要不要选。为了避免麻烦,这里课号我用的是我上课时的所用的课号,有很多已经改变了,或者正在被改变的路上,敬请谅解。[/align][align="left"]
[/align][align="left"] [/align][align="left"]16FALL:CS8803-002Introduction to Operating Systems[/align][align="left"]神课。以Operating System Concepts这本书为蓝本,从非常基础的部分讲process,thread, memory等OS中非常基础但又极为重要的概念,再讲到常见的多线程模型,job之间的互相协调等OS的工作方式。又以此稍作拓展到RPC,分布式系统,云计算等高级操作系统的内容。作业主要以写pthread为主,我有印象的作业包括Consumer-Producer模型、multithread server、shared memory、RPC等四个作业。考试考概念+计算。[/align][align="left"]推荐程度(5/5)[/align][align="left"]类似的课里面,我不知道能否和鼎鼎大名的CMU15213以及Berkeley61C相比较(前者是综合的计算机系统,后者则专注计算机组成)。但光说OS入门,我敢说不虚全世界任何一门相同级别的公开课,可以算是顶尖的。推荐OMSCS的同学,尤其是没有系统基础的,无论哪个track,都要上一上。其他同学也可以拿它当OS的入门公开课来听。[/align][align="left"]
[/align][align="left"] [/align][align="left"]17Spring CS6262:Network Security[/align][align="left"]对我本人来说,是最后悔选的一门课。这门课我是认真听完的,但老师上课讲得实在是有点不知所云,现在我脑子里一点印象也没有,同学们也普遍反映这门课比较烂。作业我记得有一个实现XSS攻击,以及用Wireshark来分析并识别黑客攻击,听说Wireshark是相当落伍的一个工具了。不过老师讲课的水平是一点,我后悔的原因主要是1.我对网络安全这个话题丝毫不感兴趣,当初纯粹是因为听说这门课很水好拿A选的;2.我没有学过Computer Network。这样去选课的结果就是作业一点也不会做,去夏威夷旅游的时候晚上还不得不赶作业,最后战战兢兢拿了个B,真的是损己不利人。[/align][align="left"]推荐程度(1.5/5)[/align][align="left"]想给1分的,但想到没学到东西有一半是自己的责任,便给加了0.5。如果有同学要选这门课的话,我觉得是要有一定network基础、并且对安全这个课题感兴趣的(但对这样的同学来说,这门课可能太过于简单)。如果像我这样既没兴趣也没基础,只想拿个A的话,我建议不要选(我也同样不建议用同样的态度选任何课)。以及这门课给我的另一个教训就是,不是所有的lecture video都需要听,因为和其他任何master program都一样,课和作业往往无关。[/align][align="left"]
[/align][align="left"] [/align][align="left"]17Spring CS7637:Knowledge-Based Artificial Intelligence: Cognitive Systems[/align][align="left"]其实现在回过来看,这门课就是非常基本地向我们介绍了AI的认知系统是如何工作的,包括retrieval,adapting (nearest neighbor), evaluation, storage四个步骤,作业也是围绕着写一个程序来实现看图找规律(就是测智商的那种图),其实是非常基本的MachineLearning的应用。以及写相关的论文。但这门课我认为亮点在于不只是简单地重复常规的AI课,换汤不换药地讲AI的公式和算法,而是真正展示了AI是如何“学习”的过程,对于认知系统感兴趣的同学应该是很好的一门入门课。当然,没有太多的算法展示确实是缺陷,但对算法感兴趣的同学,应该直接去上AI或者AI for Robotics。[/align][align="left"]推荐程度(3.5/5)[/align][align="left"]我认为这门课适合有比较好的Machine Learning基础的同学去上,这样会对这个课题的内容有更好的理解。当然就拿课本身而言,难度偏易,我去上的时候只有研究生学的AI的基础(学得很不好),对Machine Learning没有任何基础,也不妨碍我差点拿A。编程部分很简单,作文写认真一点肯定没问题。不过听说现在这课要改革了,会越来越难。另外多说一句,我觉得大部分学校的ML应该比AI更加基础向。想上AI的同学,建议先认真上一门ML。[/align][align="left"]
[/align][align="left"] [/align][align="left"]17Summer CS7642:Reinforcement Learning[/align][align="left"]怎么说呢,又是一个选课错位引起的血案。应该先上完ML再来上这个的,但奈何暑假没有ML,不得不先上这个。RL是ML里的一个专题,如果说大家熟悉的ML算法是监督学习和半监督学习的话,RL是一种“自主学习”,即把一个agent扔到一个充满正负反馈的环境里,让agent自己通过和环境的交互,自己学会这个环境的规则。大名鼎鼎的AlphaGo正是基于DeepReinforcement Learning实现的,而Reinforcement Learning最好的公开课正是AlphaGo的总设计师David Silver在UCL开的。所以回过来看7642,这门课的出发点很好,课题也很好,但课程质量本身真的有点一言难尽。。。花了半学期讲BellmanEquation,RL里的重点算法很多都没提到(如Sarsa)。但作业还可以,除了巩固Bellman Equation等算法外,还有OpenAI里的火箭着陆,MDP,Game theory等project,也会因此让你读一些相关的paper,但没有任何Deep Learning的内容。[/align][align="left"]推荐程度(3/5)[/align][align="left"]可以说这2分完全扣在lecture video的内容质量上。我个人的方式是听David Silver的公开课+做作业的方式。作业不算太难,集中精神想的话一天完全可以写个七七八八。而且再怎么说,通过自己的努力,多少也能对RL这个领域有基本的了解,这对于那些明明是转行却立志做ML Engineer或者DS的同学也算是个福音,毕竟除了写会KNN和Decision Tree以外,还能骄傲地说自己了解Reinforcement Learning,多少让面试官眼前一亮。[/align][align="left"]
[/align][align="left"] [/align][align="left"]17Fall:CS7641:Machine Learning[/align][align="left"]本以为终于上到靠谱的Machine Learning课,结果(手动捂脸)。怎么说呢,这门课最大的优点是涵盖面非常广。从昨夜来说,有SupervisedLearning, Random Optimization, Unsupervised Learning, Reinforcement Learning四次论文作业,一次十页,加起来十几种算法,都要求你在短短一学期内写出它们在实际数据分析上的应用并比较其效果。这一门课涵盖的点是其他学校几乎四门课的量,除了深度学习以外几乎都有了。这门课在课程评价网omscentral上难度评分很高,但实际上对于作业老师允许抄Code。作业的目标是让人了解这些算法而非亲自实现这些算法(毕竟压力太大)。所以在抄“对”地方的前提下,加上考试以判断简答并为主可以curve的前提下,只想拿个A其实是不难的(本人以平均58/100的分数拿了A),所以也有学霸小姐姐怒斥其为水课。但也正是因为这门课的特点,让我不得不一学期读完了《统计学习算法》、西瓜书和一部分AndrewNg的CS229课堂讲义。虽然不能说钻研得很深,以上资料加起来最多读懂了60%,但确实把我从对ML云里雾里的萌新变成初识ML的半新,起码现在应该很少有我从来没听过的ML算法,以及非专业人士是没法用ML在我面前装逼了。课程还是由RL的两位老师主讲,内容质量进一步降低,包括过时、重点偏门等缺点,并且他俩的课被戏称为“讲相声”也不是没道理的。[/align][align="left"]推荐程度(3/5)[/align][align="left"]其实按照课本身的质量,打2.5甚至更低也是不为过的,但考虑到托这门课的福,我确确实实有这么个机会系统地学习了ML的各种算法,并且因为课程质量低让我不得不去读一些课外的质量过硬的学习资料,以及也给了我一个关键的A,所以还是加回一些分的。鉴于读OMSCS的同学95%以上都选的Machine Learning track,这门课是必修课,所以也谈不上推不推荐,都要上了。我的建议是,自己一定要读课外资料,ML好的资料铺天盖地。虽然拿A是不难,但千万不要仅仅满足于拿一个A,尤其是号称对ML感兴趣的人。[/align][align="left"]
[/align][align="left"] [/align][align="left"]17Fall:CSE6242 Data and Visual Analytics[/align][align="left"]这门课已经改版了,在这里不多说。改版前这门课我称之为R Programming 101,从各种角度练习了R在Data Preprocessing以及Visualization的应用,但难度很低,和真正主用R做数据分析的DS完全无法比。现在据说已经上成了一门彻底的Big Data课,或许值得一上。课程一如既往可以无视。[/align][align="left"]推荐程度(3/5)[/align][align="left"]改版前内容简单,但对于用R做数据分析来说是一门不错的入门课,适合一些文科背景想做BA的同学入门,因此也不能说这门课一无是处。现在改版后据说加入了另一门课CSE6250 Big Data For Health才有的Spark,Scala,Hadoop等,内容丰富很多,据靠谱的上过的同学说非常值得一上。关于CSE6250我之后介绍。[/align][align="left"]
[/align][align="left"] [/align][align="left"]18Spring:CS8803-GA Graduate Algorithm[/align][align="left"]这是我们项目唯一的一门算法课,也让很多同学误以为拿来做转CS第一课很适合。大错特错,这里的“Graduate”不是白写的。这门课assume同学有本科的算法基础,会从DP开始讲,延伸到图论、NP问题、PageRank、线性规划、RSA等较为高级的算法,大部分算法是我这种中等偏下水平的leetcoder从未见过的;但也正是因此,我认为是对我这种只刷过medium题的人的一个很好的补充。这门课有四次考试加一次project,考试作业都是写伪代码,题目都是实打实的算法题(最后一次考试有一点基本的离散数学题),属于非常【数学】的一门课。作业占100分里的5分,project是10分,剩下的85分全是考试,我们这届分数偏高,A是86分B是63分。这门课因为是相当纯粹的数学课,既不像论文课那样要考虑行文逻辑,也不像一般的编程课那样或多或少会遇到环境配置等和编程其实无关的东西,所以如果离散数学基础好,对自己考试有信心的话,完全可以平时不做作业也不复习而拿A(这不奇怪,中学大学里总有几个从来不听数学课,数学考试也能拿满分的家伙)。但project是实现PageRank,相信这种机会不多,所以值得一做。这门课的课程主页如下:[/align][align="left"]gt-algorithms.com
[/align][align="left"]推荐程度(4/5)[/align][align="left"]这确实不是一门算法入门课,而是补充了一些面试不常考的算法,加上随着面试越来越难,考到图论等较高级的算法也不是不可能,我认为还是值得每个人上一上的。不过话说回来,GA是三个[/align][align="left"]Track的共同必修课,所以想回避也很难。另外,omscentral也把GA列为难课之一,其实GA已经改版过了,简单了不少,对于我这个水平的leetcoder,努力一下拿B甚至拿A应该问题不大(我83,就差3分拿A)。之前据说还较图灵机等更为高级的算法,可惜错过了。没有给满分的原因是它虽然质量不错,但太过于数学,没有配合实际的code来讲算法题,我觉得可以是一个遗憾。以及lecture video有些地方讲得不是很清楚,并没有给人一种“醍醐灌顶”的感觉。[/align][align="left"]
[/align][align="left"] [/align][align="left"]18Spring:CS6210:Advanced Operating Systems[/align][align="left"]如果让我评出一门我整个项目最难忘的课,那必然是这门课了。一来这是我唯一拿了C的课(因为不是ML track的必修课,所以算及格!算及格!算及格!),难是真的难,但二来是课真的是好。Lecture video以系统方面的paper为蓝本,涉及到高级virtual memory管理、各类锁的实现、复杂调度算法、常见框架的模块通信实现方法、分布式文件系统、存储系统、RAID、MapReduce、CDN等各种高级系统知识,把这些知识都非常详细地梳理了一遍。常常一个3分钟的video我要来回听3-4遍才能听懂,但听懂后看到系统设计题真的是心里不虚了。无论对于面试还是想从事系统架构方面工作的同学来说都是相当好的课,在分布式系统方面,目前为止我不知道还有其他比这更好的课。对我而言,难点在于1.C/C++编程不熟,如果说IOS的难度可以让我混过去的话,那AOS的难度我只能昏过去了,非常考验读API手册的能力;2. 内容太多,就算有一点OS基础,要上这门课还是要使出吃奶的力。作业48%考试42%,老师非常大方地分享了前10年(包括campus)的考卷和答案,一方面有利于复习,但另一方面,问学长要上一届答案,企图考题永远不换的策略是行不通了。[/align][align="left"]推荐程度(5/5)[/align][align="left"]是的,可以说就算这门课最后让我拿了D甚至让我上完就退学,我也认为这门课十分值得一上,尤其是我的兴趣在于从事云计算架构。要发挥出这门课的最大效用,我认为最好有扎实的C/C++基础以及OS基础,以及对系统真正感兴趣。另外,考试前认真把至少前5年的考卷都做2遍以上,拿高分不难,以及对知识积累真的大有裨益。再次强烈推荐!![/align][align="left"]
[/align][align="left"] [/align][align="left"]18Summer:CS7646Machine Learning For Trading[/align][align="left"]CSE6242相对应的,这门课我称之为PythonProgramming 101,确实是以trading为背景,Machine Learning的Library(sklearn,pandas为主,严格说来后者不是ML专有的Library)为蓝本,提供了大量练习Python编程的机会,同时又切切实实地讲了一点Machine Learning的算法、trading的基础知识以及前者在其中的应用。但对于真正想用ML做trading的人来说,这门课实在是太浅了,远远不到应用的地步,连老师自己也承认“Donot go to trading market by the end of this lecture – you will lose everything.”Project是用sklearn的Library实现各种交易策略,其中几个需要撰写报告。所以总的来说,这门课可以算简单,所以想学一下Python又想比较轻松拿A的同学,一定不能错过这门课。Lecture video一如既往地没用,但考试会紧扣video考,所以不得不看一下。[/align][align="left"]推荐程度(4/5)[/align][align="left"]4分可能给高了,因为内容真的有点简单,对于冲着它的标题来,想学完就去华尔街的同学来说,可能要失望而归了。但我因为做好了心理准备,所以而且是抱着学Python的心态去的,所以没什么落差。没有任何背景的同学可以去上,但如果想进一步学习量化交易的话,还得去外面自己找书看。以及那个考试我真的觉得没有意义,感觉有点像背考纲,所以扣掉一分。[/align][align="left"]
[/align][align="left"] [/align][align="left"]18Fall:CSE6250Big Data For Health[/align][align="left"]这门课是这个项目在18Fall前唯一一门涉及Big Data的,18Fall也新增了Deep Learning,而且除了推荐算法和无人驾驶,Health确实是把Big Data和Deep Learning应用得比较广的一个领域(而不是大家所认为的,Deep Learning只能用来下围棋),所以不管是不是对healthcare感兴趣,以此为契机去了解这些课题,我认为是非常适合的。这门课的作业内容涉及到Hadoop、Spark以及Deep Learning的一套东西,Syllabus可以参考以下链接:[/align][align="left"]sunlab.org
[/align][align="left"]课我一节也没有听,因为听过的同学都说烂,我想我也犯不着去浪费时间。Deep Learning以外的我认为都是工具,所以看一些教程、做一下老师提供的lab就足够,但Deep Learning不仅有一个作业,最后一个占40分的project也要求做这方面的内容,我认为是需要懂一些理论的,但偏偏这是18Fall新加的, Lecture video里没用DL的内容。所以只能发奋图强听完了CS231n,发现这真是一门好课,讲得深入浅出,过段时间我打算把它的作业也亲手做一下。最后,这门课在omscentral上的评价是一星期要花掉30-50小时,这让很多同学望而却步。没有这回事,我个人完全没有BigData和DL的背景,一星期不过花了15个小时,身边的同学普遍也是这个数字。所以这真的是一个小马过河的问题,而且作为ML track的OMSCS的学生,这门课我认为应该试一试。[/align][align="left"]推荐程度(4.5/5)[/align][align="left"]ML一样,扣分的唯一原因就是Lecturevideo,但也因此它让我认识了CS231n这样的好课,所以勉强给它加回0.5分。如果学过Syllabus里提到的工具的话自然是最好,但没学过也可以通过做Lab来学会。和其他课一样,这门课需要很强的自学能力,但愿意花时间下去的话,一定是有所收获的。加上给分很大方,能坚持下来的同学拿A并不难。[/align]

补充内容 (2018-12-16 13:14):
格式有点乱,大家勉强看吧。。另外再强调一下,我已经毕业退群了,所以请大家不要再加我微信啦,谢谢

补充内容 (2019-1-30 06:19):
想看课的同学直接google课程名字即可

补充内容 (2019-10-2 13:11):
很高兴这个帖子不停地有人顶。其实我选课不是很主流,对更多转行人士来说,如6300,6310,6400,6250等软件工程方向的课可能更为实用。希望看到有后来者补充!

补充内容 (2020-2-29 01:18):
这个介绍贴也不错:instant.1point3acres.cn

补充内容 (2020-4-26 08:38):
omscs-cn.slack.com
OMSCS-CN的Slack Workspace
  • 363
88条回复