高级农民
积分 3040
大米 颗
鳄梨 个
水井 尺
蓝莓 颗
萝卜 根
小米 粒
学分 个
注册时间 2016-10-11
最后登录 1970-1-1
注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
最近发现已经来美5年了,最近正好也毕业了Georgia Tech的OMSCS项目,也借此文总结一下自己在过去几年里在CS的学习,希望能够帮助到大家
背景介绍:国内中流985学校非cs相关工科专业本科,CMU非SCS学院master(s),Gatech OMSCS在职刚刚读完
由于时间过了很久,可能有些记忆出现了偏差/现在已经不适用。另外有些评价可能有些主观,如果有不同的观点,希望大佬们轻喷。本文谢绝转载。
================================
转码的想法大概是大三的时候。当时有些大神同学有CS双学位加持,已经在申请MSCS项目了。就算是没有双学位项目的同学,也有一部分在思考在申请什么项目能够最大可能在美国找到工作。在大学的前两年我也陆续蹭了一些CS课,自学了一些基本知识比如数据结构等,总体来说CS比本专业更吸引我,再加上彼时本专业在中美都不太好找工作,于是转码的萌芽开始产生。鉴于背景比较薄弱,我也主要只申请了本专业的研究生,最后选择了转码风气比较旺的CMU,虽然CMU在本专业的专排不算靠前。在来CMU之前,我并没有做太多准备,后来才发现自己真是图样
================================
为了多一些缓冲的时间,我当时申请了cmu的双学位项目,这样总共在CMU是4个学期。当时每个项目都有一些必修课,所以需要把每个学期的学分上限通过申请的方式调整到54/60学分,下面是一些我上过的CS相关的课程:
10-601 Introduction to machine learning:这门课是一门machine learning入门课,我当时上的是Roni的版本 (https://www.cs.cmu.edu/~roni/10601-f17/ )。总的来说coding作业还比较多,把常见的模型都讲了一遍。每个模型会要求徒手写一下,当然作业写的模型工业界不可能用的,只是为了理解概念。适合作为ML的入门课。个人给四颗星
15-213 / 15-513 / 18-613 Introduction to computer systems:这个课就不用说太多了,当时是Randal Bryant讲的,他的Computer Systems: A Programmer's Perspective (CSAPP) 属于必读书。无论你之后是不是从事backend/system,这门课都值得一上 (毕竟是本科CS的必修课)。这门课覆盖的面积很广,从电脑的组成到系统的构成,有点面面俱到的感觉。Lab在五年后的今天我依然都能想起来,不管是编译语言拆炸弹,写shell,还是malloc lab,或者是写一个简单的proxy server,都是乐趣无穷。当时我写完malloc lab还不断的在autolab (自动评分系统)上刷排名。这门课的网站是公开的,所以感兴趣的同学也可以自学。这门课想学好不容易,之所以称之为introduction是要和大魔王15-410 Operating systems来区分。这门课只能给五颗星了-baidu 1point3acres
.1point3acres
11-642 / 11-442 Search Engines:这门课讲的是基本的搜索引擎概念,当时是Jamie Callan讲的,需要记忆的内容比较多。作业主要是写一些搜索引擎的常用operators和model,然后在给定的已经index好的dataset上跑。要做一些experiment来测不同情况下的performance。这门课比较适合想对搜索引擎有一个初步了解的同学,我给三星半,因为这门课给我的印象没有那么深。这门课的学习资料是不公开的
15-214 (在之后更名为17-214/514) Principles of Software Constructions: 这门课以Java为载体,讲一些design pattern和version control (git) 的知识。每个作业会要求写Junit tests,每个人都会记得当时的卡卡颂游戏。这门课在写游戏之前会要求详细的UML和interaction flow的design,并且和TA甚至教授review几轮,这种体验还是很独特的。这门课上完以后对于工业的软件开发有了一个朦胧的认识。这门课我给五颗星。
11-611/411 Natural language processing:这门课算是NLP的一个introduction,作业里面有些算法甚至leetcode都有 (比如edit distance)。有一个团队project,我们写的是给定一个文章,我们的系统可以自动提出一些问题。当然,这些问题看起来都很AI就是了。这门课我记得instructor频繁更换,大部分细节我也记不太清了,我给3颗星。
. check 1point3acres for more.
15-746 / 18-746 Storage Systems: 这门课当时是Greg Ganger讲的,如名字所说,讲的就是储存系统从硬盘的内部构造开始,到工业中各种应用,并且比较贴合实际(e.g. gg的bigtable)。两个作业也非常好,第一个是写一个SSD的管理系统,这样能在它报废之前写入尽可能多的数据。第二个是一个cloud file system,类似dropbox,提供例如快照等功能,并且实现dedup和caching。这个project非常精彩。现在看起来工作中的系统的雏形也可以从这个project中学到很多概念。这门课我给四星半
15-641/441 Computer Networks:这是一门比较handy的计算机网络课,使用C语言。从我那学期开始,老教授Peter就逐渐退出一线,渐渐交给 Justine Sherry小姐姐来教。小姐姐努力了,但是这门课还是槽点不少,比如autograding系统不公开导致一出分好多挂0的同学不得不退课。这门课基本介绍了网络所有的概念以及各个layer的详细介绍,第一个project是写一个lisod webserver,要求能够高并发,还要求支持HTTPS。第二个作业是写一个TCP协议,这个project印象中比较困难,也算是了解到了网络中复杂的情况,大大小小的packet先后无序到达,让人抓狂。第三个作业是Video CDN,要求根据用户的网速去自适应视频清晰程度。这个我记得当时搞virtual box环境搞了好久。。。这门课我给三星半,如果没学过network推荐上一下
15-640/440 Distributed System: 这门课一般很火,秋季的是Go版本比较偏向前沿应用,春季的是C/Java版本比较侧重一些基本知识。我上的是春季的Satya的版本。这门课介绍了很多工业界常用的术语,比如第一个作业就是用C写一个RPC protocol,要实现自己mashall和unmarshall,搞完这个了就觉得用thrift/grpc真的很方便。之后改用java去写remote file system,感觉和746有点像,但侧重点不一样。之后的作业是auto scaling,要求实现一个大体的queue - frontend - backend结构,能够根据load以及目前的bottleneck去增减机器。最后一个作业是two phase commit。总的来说这门课值得一个五星,但是每个人都想选,所以不好选上。。
其他一些同学上过的有: 15-645/445 Database systems, 15-410 Operating systems, 15-411 Complier, 15-618/418 Parallel, 11-785 Deep learning, 15-619 Cloud Computing,15-719 Advanced cloud computing,还有terry lee系列 (17-681, 17-683),大家可以自行查找相关经验。另外一些低年级的课程也不错,比如15-112, 15-122, 15-210, 15-251等
===============================
另外我在假期Cousera上了. Waral dи,
UW的Programming language课程:这门课感觉可能和CMU的15-150 Functional Programming比较像,我觉得很不错。。写lambda function都感觉更顺手了。不过转码的话这个感觉性价比不高
普林斯顿的algorithm: 强推,讲的非常详细,比我本科学校的课要讲的清楚很多,转码的话可以把它当第一课,就是没证书
斯坦福光头老师的algorithm系列:这个太理论了,感觉有时间的话可以好好学,没时间的话感觉对刷题找工作真的帮助不大,不推荐转码上
之前看到有大神总结过coursera的课,大家可以参考大神们的指南
===============================
毕业以后,有幸能够进入F/M工作,个人选择了infra组,算是对得起自己的兴趣了。我又申请了Gatech的OMSCS项目,希望在保持学习的同时,如果能够拿到一个学位算是对自己的奖励了。这个项目是在职读的,感觉劲头没有之前在CMU那么狠了,一学期只上一门课,快结束的时候一学期两门,下面是一些我上过的课程,也许和on campus的版本有区别,如果有不恰当的请见谅:
CS6250 Computer Networks: 我选这门课主要是一开始不太确定gatech的课程风格以及强度。这门课定位是研究生level的,讲的topic都比较高大上,比如防火墙之类的。作业没有什么记忆点,主要使用python。课程讲的非常一般。我给2.5星。不太推荐上这门课来进行network的入门学习. Χ
CS6400 Database systems:这门课主要讲的是RDBMS的一些基本知识,包括如何设计表格,一些原则比如4个NF,总体来说是比较实用的一门课。team project是写一个DB驱动的宠物管理系统。关于UI的php代码会给的差不多,这样学生可以主要花时间设计DB。这门课的TA我记得当时是大家吐槽的一个点。考试貌似平均得分不高,没有curve所以有可能会吃B,这门课我给三星半,还是推荐转码的同学上一下的
CS7646 Machine Learning for trading:这门课主要讲了一些市场的基本知识,以及一些基本的ML model。作业的数据集会以股市的数据来测试模型。总体来说,这门课是很有趣的。不过如果学习市场或者ML都有其他更专业的课去讲,这门课我给4星,和CS其实没那么大关系
CS6310 Software Architecture Development: 这门课的video感觉比较无聊。。我好像想不起来什么了。有一个团队project,topic貌似是没有限制的。这门课我觉得应该是我上过的最差的课了,只能给2星,我不推荐转码的同学上这门课来建立software design / developement process的基础知识,另外一门CS6300 SDP听说还不错
CS6457 Video Game Design: 这是一门用Unity写video game的课,整个课程介绍了各种游戏的理论,包括具体的算法,也有一些概念比如怎么设计游戏玩家才能一直玩下去。这门课会有team project写一个3D的游戏,如果你对游戏感兴趣的话我非常推荐。这门课我给4.5颗星
CS7632 Game AI:还是同一个老师的课,这门课主要讲各种AI的逻辑,每个作业老师都会把图形界面画好,你只需要实现一些算法(e.g. A*)就可以看到非常有成就感的动画,state machine控制的小黄人打热血躲避球,fuzzy logic控制的小车都贼有趣,这门课我给4.5颗星,这个老师的主要问题是讲课有点啰嗦并且有点听不懂. ----
CS6200 Introduction to operating systems: 这门课我觉得是gatech的神课之一,和CMU的15-213有不同的侧重点,这个课夏季的project只有三个,第一个是写一个multi thread的client/server,需要处理好锁和信号。第二个作业是IPC相关,debug有一定的难度,写完这个对系统的inter process communication都有一个比较好的了解。第三个作业是grpc相关,算是业界比较通用的了。总的来说我觉得这门课很值,老师Ada讲的也很清楚,我给5颗星。她的另外一门课CS7210分布式则是因为作业太难被喷的比较惨,貌似作业是实现一个paxos. Χ
CSE6220 High Performance Computing: 这门课主要讲的是并行计算,建立多机器协作的概念。这门课会比较handy的用C去实现诸如scatter, gather这类的运算,也会使用相对比较新的技术比如CUDA去实现并行运算。并行运算是比较复杂的,很多时候理论上会加速的实现,最后一测更慢了。这门课我觉得很有意思,我给五颗星
.--
CS-6515 Graduate Algorithms: 这门课是必修课,而且比较理论。一开始的devide and conquer, DP等应该是比较实用的,毕竟LC也会有,而且一般都是medium/hard题目,学习如何系统思考还是挺好的。后面则逐渐变得更理论/数学,先是一些图的算法,还挺有趣的。之后还有一些加密算法(e.g. RSA),NP证明等等。总的来说值得一学,但是学习体验不好。我给三颗星,我觉得还是值得一上的. 1point3acres
MGT-6311 Digital Marketing:这不是一门CS课,takeaway就是其实business idea有时候比起技术来说更重要。我觉得这门课挺好的,不花太多时间就能学期一些常见的商业例子(比如social media,search engine等等),了解他们的盈利方式等。同时了解到leadership vision对一个公司的重要性。这门课我给5颗星
========================
.
在过去几年里上过这些相关的课程,虽然可能对工作直接的帮助不是特别大,但是也许这些知识在潜移默化的改变着工作的习惯。最后祝愿大家转码快乐,学习快乐,晋升快乐。
补充内容 (2023-01-07 13:17 +8:00):
想不到这么快就500多收藏了!希望大家点收藏同时也帮忙加个米,感谢了!
上一篇:
波屯part time MS ECE,东北还是BU,转码还是数电? 下一篇:
机器Phd转码,毕业和文章