接下来我和大家分享一些我学过的general课程,希望给同学们一定的参考。
首先是algorithm,Boston的algorithm课堂教学的主要内容以理论证明为主,作业和考试则是各种语言描述以及伪代码解算法题,大家在刷题之后再来上这门课也可以轻松不少。这门课对于我们来说也是十分有意义的,因为我一开始刷题的时候对于dp和一些graph的题都是以积累经验为主,理解并不是很深,而在上了algorithm课之后,我也学会了通过理论来进行总结,这样再结合之前的经验会让我们对同类问题的认识更加的透彻,这对于我们无疑是很有帮助的。
接下来我想说的是database这门课,最初我身边很多人都说这门课是水课,平心而论这门课的确还是有些水的,因为和其他科目比起来,这门课给的分数的确是偏高的。但是这门课对于转专业的同学来说还是很有帮助的,在我看来这是一门良心课。Jose带的db从sql到nosql技术都有所涉及,最终的作业则是围绕搭建一个web项目的后端来进行。在这个课程中主要介绍的后端是Java、jdbc、和javax-rs那一套东西,最终的学期项目就是一个完整web项目,其中包括前端,可以选用任意的tech stack。Jose还带了另外一门课web用的是MEAN,后端noqsl,和db的tech stack正好是互补的。
我当时上的web是tuck带的,后端用的是elixir/phoenix,这是一个比较冷门的框架,不过用过之后大家对它的评价还是很高的。但是冷门框架放到简历上效果并不是很理想,而且学习一门函数式语言elixir需要的时间也很多。这门课每次作业都要求deploy到server上,所以每周都要准备应付一些deploy config的问题,很浪费时间和精力,总之这门课我不是很推荐大家选择。
还有一门课是mirek的MapReduce,这门课虽然叫MapReduce,但是这门课中也会讲spark。我觉得这门课是很不错的,老师平时上课讲的很细,会让我们对分布式系统的应用有一定的认识,同时课上还会介绍一些常见的并行计算的算法。这门课的作业以coding为主,同学们在学习的过程中会积累很多hands-on经验,对于同学们都是很有帮助的。不过这门课老师每节课都会摇号请同学们回答问题,导致我上课十分紧张,这也算是美中不足的地方吧。在这里我还有一件事要提醒大家,那就是mirek之外另一个老师带的MapReduce是一个大坑,千万不要选,我的室友当时选的就是另一个老师的课,结果他上课完全不讲课还没有讲义,需要自己读文献,还要做coding的作业,如果同学们想要挑战自己可以尝试一下。
对于那些转专业之前没有太多CS项目经历的同学来说,为了让简历显得更加的丰富,我建议大家除了核心的课程之外,在前期阶段可以选一些比较偏重于项目的课程,例如Web Dev/Mobile Dev、Database等等,并尽可能地做一些服务器方面的开发项目。这样我在找coop之前可以让自己的简历上有一些项目开发的内容,从而提高自己简历通过筛选的几率,另外我们也可以在面试的时候向面试官展示自己之前做过的项目,就算我们的项目比较简单,也能在对方心中留下我们热爱项目同时敢于展示的印象,我当时在面试coop的时候就展示了自己在web dev课上开发的web application,并解释了自己使用的框架和调整。
至于后期的课程大家在选课的时候就可以根据自己的兴趣或是计划来调整了,而同学们如果后期实习没有做完或者没有拿到return offer需要找全职工作,我建议大家选一些相对简单的课程,不然学习的压力也是很大的,毕竟后续找工作很多环节都是很花费时间的。找coop那个学期一定要选水一点的课,我当时只选择了一门水课,结果巨大的压力让我整个十月份都是在抑郁中度过的,如今依然不堪回首。
相信来到这里的很多同学都是为了将来可以更好地就业,所以平时和教授交流并不是很多,不过如果大家有做RA的想法的话,也可以在平时和教授沟通。我们在上课的时候可以找到教授套磁,有些教授比较懒,并不会把自己手头的项目po在proj list里面,所以需要我们主动去联系沟通,这样有可能得到RA的机会。
另外还有一种做RA的途径,那就是research fellowship钦定,一般来说如果我们在某节课上表现比较突出,或者GPA达到了4.0,那么我们就有可能被nominated送进committee,被nominated的同学会收到一个proj list,上面写着当前学期所有available的proj和负责的教授,大家也可以随意申请自己喜欢或者对应度比较高的,之后教授会进行进一步的筛选和面试,不过这个面试很水,想要通过的话还是很轻松的。我当时是20小时的part time的RA,每小时20美金,除此之外还上着两门课,结果压力非常大。
不过如果要做fellowship的话,就必须选一节independent study的课程,这门课的学费是由学院来出,另一节课则依旧是自选。所谓的fellowship其实就是跟着教授做项目,为期一个学期,而在和教授商量之后,我们可以把它转成一个full time的coop,这样既可以进一步提升我们的科研经验,同时也可以用来填补cpt。因为RA coop一般是四个月,正好可以跟6/8个月的industrial coop形成互补。我觉得这个fellowship是一个很好的进入lab以及申请PhD的方法。如果同学们想要读博的话,最好可以保持自己的GPA在一个比较高的水平,同时和授课的教授搞好关系。
最后说一下课程的难度,我觉得align项目中一开始的bridge课程十分的简单,后面的课程还是有一定难度的,但是只要大家认真完成平时的学习任务,课下多花一些时间在上面,想拿到A还是比较容易的。