CMU转学CS感受+课程介绍

avatar 108193
niniumc
25479
29
[align="left"]前几天就琢磨着写写上过的课,这两天也有同学问,今天跑出去放风和同学吃饭更是被说感觉我在CMU呆了好久,送走好几批毕业的人。。。[/align][align="left"]
[/align][align="left"]说正题吧。关于CMU的课程,首先第一感觉,选课有时要比上课难。随着CS学生的扩招和转学CS的热浪,有些课程选不进去是常事,waitlist经常一排就是上百人。所以关于选课,如果不幸不是第一批选的,不是CS学院没有优先权的,去找任课老师表达你想上的决心是一种选择,虽然不一定能选上,比如我曾经争取过15413, 15640和15615都未果。但也有争取来的,比如10605, 95702,08722,秉着脸皮厚的原则,上自己想上的课,是我第一条经验。[/align][align="left"]
[/align][align="left"]PS:关于课号代表的课程,google CMU course catalog都能找到。[/align][align="left"]
[/align][align="left"]说说这两年我上过的课给大家个参考,太多想上的课没机会上了,又有些不得不上的课程,但是得意于我们专业选课的自由度之大和我的advisor对于冥顽不灵的我的放任,大部分我想上的课还是上了的。[/align][align="left"]
[/align][align="left"]除去这个学期的三门专业课,我总计上了12门课, 根据我的了解给个介绍,CS出身的可忽略。[/align][align="left"]
[/align][align="left"]第一学期,15112,15122, 15150, 02713[/align][align="left"]
[/align][align="left"]15112 [/align][align="left"]教python的,老师叫David Kosbie,这是我在CMU最爱的老师,没有之一。我和无数人推荐过这门课,也和各种人在各种面试时候和面试官讲我喜欢上cs的原因,都来源于这门课。这是CS本科生入门的第一门课,每学期大约400人选,之前kosbie有两个lecture,内容相同,从上学期起来了一个新的年轻的老师分担另一个lecture。[/align][align="left"]
[/align][align="left"]喜欢112有几个原因,第一是课程的设置。每周一次quiz,一次作业,两次期中,一次期末,一个final project。预算每周耗时20小时。大多数人花的时间远不止这个数。[/align][align="left"]经典的作业是一次写贪吃蛇和俄罗斯方块,目前只有这个没怎么变过,其他的每个学期kosbie都在改,至少过去的四个学期都是。[/align][align="left"]
[/align][align="left"]其次是这门课老师和ta的投入。自己上这门课时没怎么去过office hour,当TA的这几个学期体会无比深刻。周一至周五晚6点至10点,周六周日下午2点到10点都是TA的答疑时间,在Gates的五楼,永远见到穿着blue hoodie的112 TA,俨然已经成为一个特色了。依旧记得拿到那件印着自己名字的blue hoodie时的兴奋和脱下来那一刻的惘然。Kosbie是个好老师,我从小到大从没见过如此负责的老师,他的负责来源于他的热爱。CMU大多数课都有recitation,112也不例外。我们有大约20个recitation,每个班20人左右,他要求每个TA在第一周记住自己班同学的名字,要求在3周左右知道班级里最后的5个学生是谁,给每个学生单独发信提供额外的辅导。他自己的OH总是堵满了各种学生,有来哭诉的,有来分享喜悦的,有来问问题的。。。他每周还提供额外的lecture讲那些他认为有意思的东西,比如算法,比如别的语言。我觉得我如果继续写下去可以给Kosbie写个传纪了。[/align][align="left"]
[/align][align="left"]总之,这段文字当作112的宣传吧。在CMU神课云集的地方,这门课不神。但是这门课却带给很多人无数的感动。作为没有CS基础的人,这绝对是一门顶好的入门课。推荐程度 五颗星![/align][align="left"]
[/align][align="left"]15122[/align][align="left"]用CMU自己发明的一种语言C0来讲,最后会转换为C。这是本科生选完112后接着上的课,同时也是213的先修课。这门课数据结构讲的蛮多,BFS,DFS,堆栈,trie都讲过,作业也很好。8次coding最后一次是virtual machine用C写给C0,除此每次还伴随着手写。两次期中一次期末,还有几次quiz。[/align][align="left"]
[/align][align="left"]对于想单纯转行找工作的人来说,这门课实用程度不高,不上这门直接上213的人比比皆是,没见有什么障碍。但是对于基础的夯实来说,这是一门不错的课。取决于个人的时间吧。推荐程度,三颗星。[/align][align="left"]
[/align][align="left"]15150[/align][align="left"]极其fancy的functional programming,用的sml,一般上过122的人接下来会选150。据说这是10年后的语言。平均每周一次作业,一次期中,一次期末。关于这门课怎么说呢,我一边为recursion的美妙和思路的精巧震撼感动,一面薅着头发想破脑袋逮着TA问问题。上150的日子是不堪回首的,当自己无比认真还是跟不上老师的节奏时旁边的小本打着毛衣回答老师的问题的时候,当坐在wean hall的图书馆里白天黑夜却想不出思路的时候,当看到考试卷子只有甚至低于平均分的时候,我都一次又一次质疑自己的智商。[/align][align="left"]
[/align][align="left"]150是210的先修课。我认得的大多数人,无论是CS出身还是转学CS的,很少有上的。但这绝对是门好课,尽管我被虐成狗。推荐程度,三颗星。[/align][align="left"]
[/align][align="left"]02713[/align][align="left"]现在这门课改号了,又叫15650,02613。关于这门课,我觉得我能说的不多。我上时是这老师刚转来CMU第一次开课,他的自我迷恋程度与讲课的方式彻底打败了我,我实在对这课没有任何好感。尽管他讲了很多很有用的东西。这门课每周一次作业,两次期中,一次期末。[/align][align="left"]
[/align][align="left"]关于这,在网上看到了一个介绍,转过来。[/align][align="left"]
[/align][align="left"][/align]

这门课的老师是以前在U MARYLAND 教算法的,前两年来了CMU的Computational Biology 系,CMU的算法早有牛人一直在上了就在computational biology系下开了这门算法课。选这门课也是实属无奈,说实话对于CMU转CS找工作的同学来说,CMU目前还真没有一门特别适合的算法数据结构的课。15451 Algorithm design & analysis 不讲数据结构不编程,都是各种证明,各种数学,而且难度很大,远大于面试可能考到的难度。15210 倒是数据结构+算法,而且有编程,但是使用的语言是 CMU 自制的函数式编程语言SML,另外并行的算法讲的比较多。这门课WORKLOAD也比较重,再加上你需要自学SML,并行的算法目前来看考察的也不是特别的多,LZ权衡之后没有选这门课。。

上了这门02713以后发现其风格跟15651基本一致,大量的证明与数学。编程作业一共两次,用PYTHON写。

内容包括

1、“简单”图论算法: minimum spanning tree(prim’s, kruskal’s etc.) BSFS,DFS , Dijkstra , A*, Bellman Ford, Topological sorting.

2、 Divide & Conquer: closest pair of points,inversion count..

3、splay tree 4、Dynamic Programming 5、Network Flow 6、Linear & Integer Programming 7、 NPC problem


作业和考试都是围绕这些内容的算法设计和证明,比如让你证明如果一个图里有多个minimum spanning tree的话,那么他们的边的权重的序列一定相同。讲课的时候也是会花很多的时间来证明为什么splay tree是amortized O(log n). 之类的问题。总之比较数学。

编程作业刚布置了第一次,以 Minimum Spanning Tree 做 heuristic 用 A* 的思路做TSP 的算法,看了一下感觉还是要花一些时间的,特别是LZ这种之前不会PYTHON的人。

另外虽然名字里有data structure 但其实基本没有讲,除了splay tree 以外,就讲MST的时候讲了一点heap和union find data structure.

这门课对找工作的直接帮助可能也不是特别大,据说面试的时候图论的算法基本也就是个 BFS,DFS . Dijkstra 都不太可能有, 更别说什么 Bellman Ford, A*了。但是上上这门课对一些算法思想的认识上还是有提升的,再加上现在美国这边的算法普遍就是这个风格。

[align="left"][/align][align="left"]
[/align][align="left"]现在回望,觉得自己当初真是无知者无谓。上来就把本科生的三门基础课选了,第一次Kosbie问我上什么课时,我说完他就惊呆了,他说这是他认识第一个这三门课一起上的人。我因此骄傲了很久。但其实我自己明白自己第一个学期的苦痛以及觉醒时已经来不及了,只能咬着牙撑下来。现在的我肯定没有勇气这样做了。
[/align][align="left"]
[/align][align="left"]一个学期,每周每门课一次作业,一般是周二三五七due,每周四一次quiz,不定时122quiz,考了7次期中,4次期末,做了一个project。没什么空余时间,稍有点能喘息的时间,我一般都能矫情的哭一场。[/align][align="left"]
[/align][align="left"]虽然辛苦,但是当在OE吃饭同学问放弃ETH优厚奖学金外加轻松愉快游欧洲的生活来到这里找虐有没有后悔时,我还是顶着乌黑的眼圈嚼着鱼香茄子摇了摇头。[/align][align="left"]
[/align][align="left"]借用Kosbie的一句话来给第一学期来个总结,Carpe Diem![/align][align="left"]
[/align][align="left"]未完待续~[/align][align="left"]欢迎关注nn_umc,娱乐自己祸害群众的公众号[/align]
  • 27
29条回复