[18Fall] MS. CS @
来国外以后,哪些方面、哪些事物,跟你想象的很不一样? :
这里真的好空旷哈哈,然后发现其实蛮喜欢四季分明的地方,另外最意外的是从每天外食变成每天自己煮带便当,变非常勤劳哈哈
来国外以后,哪些方面、哪些事物,跟你想象的差不多? :
外食很贵,以及匹村很适合念书
来国外以后,你最喜欢和最不喜欢的,分别是什么? :
学校附近吃饭、购物和交通方便吗? :
我不是住在松鼠丘一带,但有公车算是非常的方便,最喜欢Trader Joe’s了!食材便宜又好,也不会太多选择,可以抓一抓就完成采购~
房子和roommate都是通过什么途径找到的?难找吗? :
跟几位已经在这边待过的朋友问问哪几间公寓不错,就发信过来问
从机场到学校,你是如何到达的?学长接机、租车、公交,还是其他方式? :
当时是叫Uber,因为行李真的太多太多了哈哈,可是可以搭公车的
你觉得自己的英语能力够用吗?在听、说方面,有障碍吗?介意说一下你的托福总分和口语单项分数吧? :
系里课程设置,你满意吗?据你所知,哪些课程比较抢手,很快被注册满?为啥? :
我觉很不错啦,各方面都有照顾到。不过念这个所的问十个人可能有二十个答案,听听就好哈哈
你们学校周围,治安环境如何?学校在信息公布、提高校园安全方面,做的怎么样? :
算是蛮安全的吧,有问题学校会马上寄简讯提醒大家不要去哪个地方,蛮贴心的
《前言》
在这边过完两学期了算是略懂状况,
论坛里的资讯年代久远,更新些消息希望能帮助大家选校选系。
CMU的SCS有大量的program,好像有十个,个别有个别的重点,
小弟读的是着重在software engineering,之前一位学长有问过我,
我当时真的分不出来CS跟SE,来了才算是略懂~
考虑到我去年手牌不是很好,没有太多选择,而且就是想念embedded,
因此虽然不是很清楚SE,但基于选课自由以及校名还是选择这间,
这里稍微介绍一下software engineering这个program的重点,
希望能帮助跟我一样不太清楚的同学选系。
《科系介绍》
CMU主校区有一栋建筑,二楼是ISR: Institute of Software Research,
他们开设Software Engineering的master program已经超过十年,
目前主要有几个program:
1.MSIT-Software Engineering
2.MSIT-Embedded Software Engineering
3.MSE
这三个program都是fall入学,MSIT-SE念三个学期,八月底毕业,
ESE跟MSE念四个学期,十二月毕业。
前两个是主打两学期的MSIT project,第三个是三学期的Studio Project,
由于都是春季开始做project,所以这三个program都是不能暑期实习,
暑期需要至少24学分做project。
(还有一个是MITS,我不熟悉,就先不谈)
(暑假不能实习很多人都认为是硬伤,这点不多说)
Project基本上可以想成校内的startup software team,ISR帮你找客户,
客户可以是业界或校外单位,举例像magic leap或是NASA JPL,
也可以是CMU校内的专案,举例像SEI的开源专案或是RI的机器人竞赛,
在这两个学期或三个学期间,把所学的SE技巧用在管理与开发,
会有Mentor像顾问一样给予协助,
这个单位的program大概是这样的定位。
至于SE的技巧小弟目前也是略懂,大致上包含:
- Requirement Engineering: 试着将客户的需求转化成更具体能实作的项目
- Architecture Design: 根据需求导出品质特性,并设计出相对应合理的架构
- Quality Plan: 根据需求设计出各种测试方法,确保软体的品质
- Planning and Estimation: 依据budget试着找出合理的开发计划
- Risk Management: 根据可能发生的问题做事前规划,问题包含可能的延迟
- Software Process: 根据这个专案的特性,选择并执行合理的软体开发流程
写成中文好奇怪哈哈,但大概意思是这样,
每个学期末有EOSP,End of Semester Presentation,
报告给系内的老师们,并根据project过程中,
产出的software artifacts给予评分与建议。
(artifacts大概就是前面提到的五六个文件啦)
project的内容大致上可以选,题目我就不说太多了,
但project评分的重点在于如何做好software engineering,
实际的软体写几行、写多帅并不是老师们认为的关键,
重点是写出来的软体有没有客户满意、有没有架构的问题、有没有流程的问题。
《课程安排》
我的program是Embedded Software Engineering,俗称ESE,
必修与其他两个program有至少三门不同,SE类型的课程大概占一半,
如果考虑每学期修四门课,扣除必修,可以选择的course slot分别有:
- 秋季学期:两个slot
- 春季学期:一个slot
- 暑假学期:一个slot
- 秋季学期:三个slot
其中一个slot要选17开头的课程,也就是ISR所内开的课程,
因此可以选择六门ISR以外的课程。
相较来说,其他两个program:MSE与MSIT-SE如下:
- 秋季学期:一个slot
- 春季学期:一个slot
- 暑假学期:两个slot
- 秋季学期:一个slot(MSIT-SE没有这个学期)
这几个slot里至少要两个17开头的课程。
CMU这边SCS大家常说的好课=好重的课,大多是15、16或10开头,
17的课程相对来说评价没有这么好,
但考虑到春季学期一般而言非常重,且暑假学期没有什么课程,
ISR这样的课程设计是否符合需求,就需要多做点功夫比较。
(话说本来就要比较吧,学费好贵)
《课程介绍》
*Canvas是CMU的课程管理系统
想了想我还是以时间作区隔,读起来比较知道每学期在干嘛,
但我用亮色标记的是SE/ESE/MSE必修,是software engineering的核心课程,
大致上秋季一入学会讲软体工程概论(17653),
下学期着重在讲testing(17654)跟architecture(17655),
以及开始跑project(17677, 17678),把许多学到的软体工程概念应用上。
至于选修就看看就好,个人兴趣。
《暑假》
15-513 Introduction to Computer Systems
。必选修:必修
。课程网:Canvas以及可google到的那个
。介绍:
这门课是开学前五月到八月,远端上课。
这门课是开学前五月到八月,远端上课。
这门课是开学前五月到八月,远端上课。
很重要要说三遍,开学前不是通常很忙吗?忙离职、搬家、签证、打包、结婚,
没错,然后很多课程需要这门课成绩至少B才能选,
还没到美国就先体验CMU的生活啰
但这门课真的很好,作业都非常的有趣,教课书读起来如沐春风,
把电脑的很多观念都深入浅出的讲解,并且透过作业稍微体验,
大概知道怎么设计cache、设计memory management、设计proxy,
只读课本可能就很有帮助了,作业设计的很好更让人印象深刻,
很可惜我不能百分之百的时间投入,人生好多可惜~
推荐有志写扣的人都读一遍CS:APP这本书
《秋季》
18-648 Real-Time Embedded System
。必选修:ESE必修
。Prereq:15-513至少B
。课程网:Canvas
。介绍:
主要是Linux Kernel Hack,四个Lab最终把resource reservation framework实作,
可以学到怎么改Android Linux Kernel以加入各种schedule policy的task server,
还有知道怎么做bin packing,利用RMS确保系统可以达成real-time的要求,
大概会深入了解作业系统里的scheduler这个角色,
另外了解一些Linux的design: kernel module、sysfs、或是governor等等,
大概会很熟悉用C自己刻一些资料结构或syscall,跟学着与Linux kernel相处
课堂讲的比较多是理论,Linux的部分是不提的,需要靠摸索或是问助教,
虽然四五人一小组,但写起来还是哭天抢地,
另外课程进行到Lab3跟Lab4大概就觉得老师讲的有意义了,需要一点耐心,
然后课堂内容着重在各种scheduling policy,各种task server,
主要想知道怎样的task set是schedulable,或是会miss deadline、造成deadlock,
以及一些case study,Prof Raj非常认真教学,讲的也很好,
口音蛮重的有点冲击,但因为讲话很有节奏,还算听的懂
15-746 Storage Systems
。必选修:选修
。Prereq:15-513至少B
。课程网:google的到
。介绍:
这门课的后半会自己用FUSE刻一个file system,大档案放在云端,小档案放local,
云端的部分模仿亚玛的S3-API,并且引入dedup跟cache把云端用量进一步减少,
dedup搭配MD5是非常有趣的地方,另外会实作write-back cache,
相较于前一门,这门会对作业系统的file system这个部分很有心得
前半的project是写一个SSD的FTL,这有点难解释,大概就是把logical address,
转换成physical address,并利用一些技巧节省记忆体用量、减少消耗SSD寿命,
会写很多C/C++以及bash脚本,以及知道怎么设计资料结构以加速与节省记忆体
Prof Ganger跟Prof George都非常会讲,有趣而且聚焦,听得很开心,
课程第一部份比较各种储存装置:SSD、HDD,以及tape,
接着讲怎么部属storage system:RAID的概念、declustering跟redistribution
最后讲很多不同的distributed file system:HTTP, NFS, AFS,
有一些客座讲堂:Google FSv2 Colossus,Datum FS,HPC的设计之类的
17-630 Data Structure and Algorithms for Engineers
。必选修:选修
。Prereq:没有
。课程网:Canvas
。介绍:
作业有六份,大概就是实作各种ADT,用C/C++/Python/Java,每个作业用一种XDD
ISR的课程特色就是希望你design doc写好、code comments写满,
作业其实都不难,而且Tony人超好会看我们是不是很累,deadline会延期,
应该是有趣中又有点佛心这样,重点在怎么做info hiding,
效能那些不是重点,也算是很偏design的课。
Tony教学很认真,大概跟他重训一样认真,他多壮请参考ISR官网,
会花大概三分之二学期讲各种资料结构,并且在Tree跟graph讲一些常见的演算法,
并在最后讲一些concurrent programming,
因为并不是很重的课,从我的叙述就听得出来,对于刷题的帮助我觉有限,
把他当成Python 101跟Java 101应该可以。
17-653 Managing Software Development
。必选修:必修
。Prereq:没有
。课程网:Canvas
。介绍:
这门课大概是Sofware Engineering 101,把软体开发与管理流程里,
的各种activities介绍一遍,搭配课堂跑一次,大致是希望传达Scrum的精神,
讨论每个sprint的component:backlog、review,或是planning pocker,
还有requirement engineering、milestone planning、earn value tracking等等
我当时抓不到重点,但因为我过去是embedded hardware/software,大致waterfall,
如果在新创上班过的、或是跑过类似流程的,可能可以一秒知道他要干嘛,
这学期开始跑project就蛮有感觉,遇到问题会一直回去查找投影片,
有些组有经验丰富的前PM或前工程师,规划的部分就比较有模有样,希望能跟上
有两个case study,以及期中期末考,reading很多,但loading不算重
MSIT-SE以及MSE在秋季学期会有另外两门课:Method与Modals,
是software engineering core必修课,
我没有修,讲不出什么重点
《春季》
17-654 Analysis of Software Artifacts
。必选修:必修
。Prereq:没有
。课程网:Canvas
。介绍:
作业着重testing与continuous deployment,
大量使用各种工具:Jenkins, JUnit, Mockito, Docker,搭配git,
当然可以自己引入其他框架啦,比如Flask或是Kubernetes,
去年被批评的一文不值,今年loading变超重啊啊啊
老师们都人超好,可以想像他们想花很多时间思索要让我们多学一点,
但这样评鉴大概还是会被写爆,不过总是不会有浪费钱的感觉惹?
有期中期末考,六个个人作业、五个团体作业,每周有阅读小考,
课堂从dynamic testing开始讲:blackbox, whitebox, inspection,
然后讲static analysis:syntatic跟structural, formal verification,
接着讲一些data model跟process model的quality
17-655 Architecture of Software Systems
。必选修:必修
。Prereq:没有
。课程网:Canvas
。介绍:
在人人都想当架构师的情况下(是吗),这门课应该算是符合很多人需求,
课堂先讲各种quality attributes,以及可能有哪些tactics可以改善,
比如常见的用redundancy作为recovery tactics以解决availability的问题,
但会造成哪一些trade off,比如redundancy大概就是$$$$$$,
接着讲各种不同的软体架构:pipe-filter, event-based, call-return
作业大概也是以改善某quality attribute作分析与设计,
比如怎样让一个系统可以侦测到错误并某程度上自动修复,
写的code不多,总共四个作业跟期末project,每周小考
17-703 Cryptocurrencies, Blockchains and applications
。必选修:选修
。Prereq:没有
。课程网:Canvas
。介绍:
选这门课的原因大概是load management,但因为也很有兴趣就选了这门,
法国老师讲课不错,课本选的更不错,照着他的安排念,
对于cryptography会有简单认识,然后深入的讨论bitcoin的design,
比如scriptSig跟scriptPubKey,distributed consensus,pay-to-script-hash,
后来讲到ethereum,算是对区块炼以及加密货币有很深的认识
《关于Project》
春季学期基本上不会开始写扣,主要是做事前规划与设计架构,
Analysis跟Architecture期末都要交上自己MSIT/Studio project的架构,
以及quality plan,因此project是紧密的与课程结合,
除了要做好development managing,也要把品质做有系统的分析,
暑假学期才会真的开始根据架构写扣,
至于如何manage clients就各凭本事QQ
讲到这里大概可以知道software engineering跟computer science的差异,
software engineering还算很新的领域,这方面CMU有SEI的加持很有成绩,
实际上这边与SEI的合作也很紧密,小弟的mentor就是SEI的staff
《杂记》
最后几点:
1.MSIT-ESE去年停招,也就是2019 Fall不会有新生,猜测是人手问题,
两名主要的老师退休,2020 Fall不知道会不会复招(据说要增加选课自由度)
2.MSIT-SE虽然也希望要有工作经验,但认识的也有蛮多毕业就来的,可参考
3.MSE最少都工作经验三年半以上
4.春季学期很多group project,可以练很多英文口说
5.MSIT-SE来之前要做好求职准备,九月份TOC是重要的career fair,
因为只有一个秋季学期,只能参加一次,自行斟酌
6.就这些必修来说,MSIT-SE跟MSE可能都不适合来CMU转职练功,
要马课会太重(听说spring学期有人修OS,还想睡觉吗…)要马学不全,
建议来之前要有修过CS的课程
一下子想不到还要说什么,看看有什么问题有空再补充
以上
补充内容 (2019-5-31 03:18):
MSE暑假是一个slot