CMU SE-SV项目个人课程总结

23394
52
来CMU硅谷校区已经两个学期过去了,每学期修三门课,两学期便是六门课,在这里做一个简单的介绍加总结。不得不说的是,虽然一个学期只有三门课,但是任务量和收获都比本科时候的一学期要多得多。在除了课程和找工作(实习)外,这两个学期下来几乎没有什么个人时间。关于来美国读硕士的感受,之后可能会单独写一篇,这一篇重点讲课程。

2018 Fall
18652 Foundations of Software Engineering (Hakan, Cecile)

这门课是 SE (Software Engineering) 项目的唯一一门必修课,也是很多课程的先修课程,两位老师一起上课。整个学期是围绕一个 Emergency Social Network 的项目展开,每星期课前视频讲授概念,课上做测验以及讨论或者是动手实践。课程项目规定使用 Node.js 和 Express 作为框架,前端一般选用 React 或者 Angular。每个小组四到五人,两周一个迭代,一共有五轮迭代。其中第四轮迭代需要单人完成从选择功能到细化软件需求,画原型图,最后前后端实现并完成相应测试与部署。课程内容上基本涵盖了软件开发的各个方面,但是因为面比较广,每一方面不会介绍特别深入,所使用的技术比较贴近业界。

个人认为算是 SE 项目数一数二的好课,可以在一个学期对于前端和后端开发有一个比较全面的认识,总体来讲课程项目的收获大于课程内容。期末考试给分很一般,总评普遍在 A- 以下。

课程用时:10-15小时/周

18655 Service Oriented Computing (Jia)

这门课(简称SOC)老师是中国老师 Jia Zhang,第一节课的时候会介绍自己有160+篇paper,并且是 2019 IEEE International Conference on Web Services 的 Program Committee Chair。老师为人比较 nice,但是比较 push。上课内容和中国传统课堂比较像,主要是听老师讲课。课程内容也比较陈旧,主要涉及 XML, WSDL, SOAP 等和 Web Service 有关的概念。一共有10次个人作业,基本上都是 Java 编程,和课程内容有联系。后半学期有小组作业,是老师指定的分组,一般一组4-5人,按要求完成一个稍微复杂一些的 Service Repository Web System,使用 Play 框架。有期中期末考试,闭卷纸质答题纸。考试前老师会发复习提纲并且带着大家复习,考试以记忆为主,也包含一些理解的部分。总的来说,比较符合中国同学的习惯,好好学的话不难拿A。收获上初步接触了一些领域,比如用 Lucene 做索引,调用 Google Map API 做简单服务,以及数据库访问与操作等。

课程用时:约10小时/周

18658 Software Requirements and Interface Design (Cecile)

这门课主要讲授在开始开发之前的工作,即如何从用户的需求出发,落实为一个细化并且可行的软件需求。整个学期的课程内容围绕每个小组的项目展开,项目自由组队,宗旨是用技术解决现实生活中的问题。我们组有6名中国同学,选择的项目内容是幼儿园的家长-学校-孩子交流平台。课程内容主要在 Jama 平台上来做,包含了用户采访,头脑风暴,用户塑像,产品原型制作,需求细化等内容。期末要做前端的原型进行展示,并且有闭卷考试。考试全部是主观题,考察对整个学期内容的理解程度。给分很看重在项目内的个人参与,老师在期末会根据平时表现进行宏观调控分数。总的来说还是比较有收获,也学到了写代码以为的知识。

课程用时:4-8小时/周

2019 Spring
15619 Cloud Computing (Majd)

这门课(以下简称CC)素来被称为 CMU “神课”之一,以其任务量大而著称,事实上也确实如此。选课需谨慎,如果选了CC建议就不要再选其他硬课了否则会特别辛苦。这门课是网课,每周要在网上学习相应的理论知识并做Quiz,同时每周都有个人作业,后半学期加入了小组Project。理论内容比较多而且比较杂,与编程关系不大,着重介绍云计算相关的概念。个人作业包罗万象,从MapReduce, Docker, Kubernetes, AWS Lambda, Spark, Kafka, Samza到数据库,多线程以及机器学习有关的内容都有所涉及,基本上是一周接触一个新领域,先学习再应用到实践之中,相当于提供了很多领域的入门。小组Project难度较大,三人组对完成,从1T大小的推特数据集开始做数据的处理和存储,并完成相应的查询功能有很高的性能要求,并且需要完成 MySQL 和 HBase 两种数据库的实现。整个学期下来的感受就是很累,经常需要熬夜做个人作业和小组项目,但是收获也比较大,不仅可以写在简历里面,而且学习的很多技术都是业界目前在用的,有了课程的基础之后上手会比较容易。

课程用时:20-25小时/周

18657 Decision Analysis and Engineering Economics for Software Engineers (Hakan)

这么课主要讲授软件系统中如何进行决策,主要是利用经济学里面的相关知识进行收益分析与评估。没有需要编程的内容,整个学期的作业和项目都是使用 Excel 作为工具。前几节课会介绍相关的数学背景,之后基本上是一两周介绍一种具体的分析方法,有假设检验,回归分析,决策树,风险中性定价理论,期权理论等等。内容涉及到很多经济学有关的知识,经常会让人听得云里雾里的。小组项目是三人一组在老师给定的项目里选择一个综合使用一个学期的知识进行分析,要符合老师的要求还是比较难的。整个学期有3次小测,6个个人作业,3次实验,5次线上讨论,内容比较多,不过平时分扣得不多。考试难度不算很大,考试分数也算比较良心。

课程用时:6-10小时/周

49807 Exponential Innovation (Vivek, Tarun)

这门课在 III 下面,任务量较小,两位老师是父子,会先介绍目前各个行业前沿的一些技术,然后每节课带着大家讨论时下的科技新闻,后半学期几乎每节课会请2-3位不同领域的专家来做演讲,还请到过苹果公司前 CEO 这样的大咖。两位老师都比较敬业,上课的时候不能看电脑,但是由于课程是从5点半一直上到9点20,所以同学们经常会瞌睡。作业主要是4次个人的写作,有点像中学时候的命题作文,限定话题和字数,主要考察的是对未来行业的了解和判断,也可以放到博客或者领英上。小组会按照选择的行业来进行划分,贯穿整个学期,相当于一个团队有一个小的创业的 idea,老师会带着大家讨论融资,盈利以及法律有关的内容,大概两周要做一次小组的展示。总的来说,任务量小,老师人很nice,给分也不错。

课程用时:约3小时/周

以上就是我在 CMU 硅谷校区两个学期下来的课程内容小总结。繁忙的学期结束了,之后马上要开始去公司的暑期实习。路漫漫其修远兮,还是要继续努力~

(良心贴求大米哈,谢谢大家~
  • 113
52条回复