DUKE MSECE-22fall-两学期就读体验

20263
13
现在正好写完这学期最后一个项目(没错,就是workload很大的568),从学校回宿舍的路上回想自己这一年的改变有感而发,遂而把此时此刻的感想记录下来,分享给以后想来杜克的师弟师妹。
来DUKE ECE的人,无非就是当初被转码“神”项目吸引来的。那我就先从评价最高的“神”课程,来分享一下自己的感受。
首先在第一年,作为很多转码选手,大家都会选三件套。俗称秋季三件套(550,551,590)和春季三件套(650,651,568).
秋季三件套(550,551,590):
550 FUND COMP SYSTEM & ENGINEERING
这门课是很多后置课程的prerequisite,包括568,650等等一系列课程。如果你不想上可以和professor约meeting,他会问你一些问题,觉得你ok的话能waive这门课。
这节课就是讲数电+计组+一小部分操作系统的知识。然后作业主要是用Verilog写代码。
课程难度不会很大,平时跟着上课,不会就去Office hour问助教,rabih人也很好,课前有录屏,上课就翻转课堂。然后考试题也不会很刁难学生(毕竟都是转码的)。一共有五次project,分别是做Simple ALU/ FULL ALU/ Register File/ Simple Processor/Full Processor, 加每周一次的recitation。往年的FPGA final project,现在也变成了optional,如果你觉得你拿不到A可以做一下,总体来说还是很有意思的大项目。
总体来说,对于转码,确实是用处不大的课程,无奈是prerequisite。
551 PROG, DATA STRUC & ALGO IN C++
无敌好课,多的不说了。对于从0基础学一门C++真的让我学到了很多东西。包括国内面试会考的内容,比如虚函数,重载,多态,template编程等等。测试的精华(基础上每次写完一个函数就应该做单元测试)。但是后面的算法部分有点赶,所以效果不是特别好。然后也讲了一点concurrency的内容(对于初学者来说这个chapter真的又臭又长,但是回过头看发现收获很大)
课程现在是110多个小作业,3次evaluation,3次test,往年final project做的linux shell变成了寒假自愿做的项目。来之前自学一下CS61B应该问题不大。
请注意!evaluation千万别抄代码,不要质疑drew神的查重能力。发现抄袭算一次misconduct,两次misconduct就劝退了。
590 ADVANCED TOPICS IN ECE - ALGORITHMS
这门课得仔细讲讲了。往年都是eric教,今年他去 Grinnell College教书了。然后学校本来是安排了一个印度教授和Jeffery来教,但是印度教授去其他学校。最后学校让drew来教(魔改)这门课了,还有一个班是裴老师来教。
drew总喜欢玩点花活。他就觉得eric讲得太简单了,所以他上课很多东西都讲得非常快。前期就是讲regular expression,CFG,NFA,DFA,图灵机讲了半学期,后面divide and conquer/DP/图论分别讲两节课。后面又来讲NP completeness。总体学下来,发现其实学leetcode的那种算法可能没有特别多,属于是扩展了很多理论知识。
作业是6个,本来是7个,因为实在有点多然后取消了一个。有几个作业巨痛苦,写起来很花时间(对于转码,刚进来的小白来说)包括最后一个项目是用汤普森构造法搞一个NFA/DFA/regular expression互相转换的算法,然后用BFS来验证给定的两个正则表达式是否等价。期末考就drew出得挺难的,后面可能是看到成绩不太好看就curve了一下吧hhh
总的来说,drew真的很想让你在duke学点东西,不然也不会疯狂魔改课程。所以590的workload比往年大了很多,一个是作业难了,还有一个是讲课很快,要花很多时间消化,包括很多理论性的东西很难搞懂。印象特别深刻的就是图灵机的停机问题,反正我到现在还没绕出来。
我个人感觉第一学期如果是选了秋季三件套(现在的workload),会比较占用第一学期找工作的时间,没什么时间刷题。反正来了duke,除了春季在找国内实习的时候刷了点,其他时间基本没什么时间刷题。唯一的解决办法就是来之前刷够两三百题吧。
春季三件套(650,651,568)
总结下来第一学期课程Loading不算大,秋季三件套还能嘻嘻哈哈。如果想找实习的话我会推荐第一学期找,其一是那时机会比较多,再来是课程Loading也没来的第二学期大(虽然Drew会骗你说第二学期比较轻松,千万别上当了)
第二学期三件套就能让你感觉到什么叫窒息。基本每天早上睁开眼就是写project。
650 SYSTEMS PROGRAM & ENGINEERING
还是rabih教的课,但是从翻转课堂变成了以纯lecture的形式展开了。八股的内容都会讲一遍,包括多线程编程,操作系统,计算机网络,数据库。但是讲得东西比较浅,对于转码入门肯定够了,对于找工作,比如国内的八股那肯定是完全不够。
项目主要是五个,分别是实现malloc/线程安全的malloc/C++数据库实操/socket编程/操作系统实操。
成绩想拿个A难度不大,一个是项目提早交会有一些extra credit,还有就是rabih比较好人,考试不会很刁难同学。
ECE 651 SOFTWARE ENGINEERING
这门课我没选,因为我深知我这种菜鸡是handle不了651的巨大workload的。听同学反馈除了workload大没什么不好,能学到特别多东西,包括团队协作,CI/CD,真实的开发场景什么的。
ECE568 ENGINEERING ROBUST SERVER SOFT
非常好的一门课,写的三个项目和final project都非常的有用。就是brain早八上课有点催眠,tyler上课还比较有激情。
第一个项目是用django写的拼车网页,比较toy的项目,但也算是熟悉了很多web开发的基本实现,比如账号登录注册,数据库增删改查,路由,中间件什么的。
第二个项目是C++写的http缓存代理服务器。有点像国内的webserver。这个项目主要学了socket编程,多线程编程,熟悉HTTP请求和响应头,再加写了一个LRU类。第一次写2000+行代码。。。
第三个项目是写一个高频股票交易系统。模拟买卖交易,可能请求量会很大,主要是提升代码scalability的能力,学习了线程池什么的。
final project就是写Amazon/UPS, 模拟商城的下单操作,然后让UPS送货。不仅要保证正确性,还有并发性问题要解决。
总而言之,这堂课修完Resume就会有很漂亮的projects。但是也非常看个人,有的人随随便便应付一下,完成基本的语言逻辑其实没什么提升。更重要的是挑战自己,比如有人在写高频交易系统的时候,没有用更好的并发策略,直接串行处理请求。还有些同学就通过微信来传代码,没有用github/gitlab等现代化工具来团队协作写代码。感觉这样对自己的提升并没有特别大。还有一个问题就是这个项目主要是以后端为主,如果是想发展其他方向的同学可能帮助不是很大。
590 ADVANCED TOPICS IN ECE - TOWARDS MORE RELIABLE SOFTWARE
比较轻松的一门课,完成11个作业和essay就结束了。上这门课主要是为了这学期找工作减负用的。给分也比较高。
总的来说,ECE的第一年的课程在drew的设计下,确实非常地成体系,比如在做ECE650的socket编程的时候,正好在写568的第二个项目http proxy server,两个项目都有共通的地方。包括课程之间的DDL都是相互交叉安排好了(目的就是让你每天都在学习)。尽管过去的一年巨累,感觉一学期顶大学两三年,但我觉得这是非常值得的。 感觉自己的编码能力成熟了,现在在设计系统的时候更加关注module之间的dependcy。 我也更加注意某些代码部分是否过于紧密耦合且难以阅读。
但是从下学期的选课来看好像就没什么选择,往年会开的Operating system没开,database system也没开,mobile development只开25个slot。只能选选水课秋招加油找全职了。
找工情况(23Summer)
今年找工作情况非常的差,主要原因还是互联网的增长点一时间也找不到,加上之前的企业拿太多钱疯狂扩招,导致现在经济泡沫有点严重,很多厂都在lay off。曾经我还以为裁员离我很远,直到我在朋友圈看到很熟的一个师兄刚被Amazon aws裁员我才发现事情的严重性。所以对于以后无脑转码的同学还是谨慎选择吧。
ECE的实习情况的话,以我自己的消息(包括朋友圈领英以及和同学闲聊了解)有10个不到的同学找到了美国的实习,有Amazon,Nvidia, intuit之类的,还有个位数准备去unpaid实习。然后还有一些准备回国实习,最近也在朋友圈陆陆续续看到有人上岸阿里百度美团什么的,可能也有十来号人吧。上岸不多的主要原因还是1.本身是转码的人,简历不太好看 2. workload比较大,没什么时间准备刷题,背八股什么的。
全职的话不太了解,但是看到挺多有美国实习的师兄师姐没有拿到return,现在还在找NG的。
只能说找工作还是看当年的经济情况,运气加自己的实力吧。在找工作的时候有个自己的小团体,互相了解一下进度给自己打一下鸡血,然后互相问问题目什么的会比较好。
用双城记的一段话作为结尾吧:这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂,人们正在直下地狱。