注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
介绍一下上个学期在CMU 的课程:
由于就读的项目最后一个学期要转到硅谷校区去,所以想上一些比较喜欢的课就得集中在匹兹堡的两个学期,最后一个学期在硅谷只能挂机( 这个学期在匹兹堡修的课有: - 15-746 Storage System
- 15-645 Database system
- 15-641 Computer Networks
- 14-741 Introduction to information security. Χ
接下来主要介绍一下每门课。 15-746 Storage System这门课主要讲两个方面的内容,前半学期主要讲储存硬件,从SSD 出发讲到传统的机械硬盘,然后讲如何针对这两种主要的硬盘的不同特性设计各种file system,还有是RAID 等。前半学期的project是写一个ssd的firmware,其实就是在文件系统和硬件之间的那一层,主要就是负责将文件系统需要的逻辑地址转换为ssd中对应的block地址。这个project有三个checkpoint,第一个完成基本功能,第二个实现garbage collection,最后一个是有性能上的要求,并且有一个scoreboard上面有全班同学的提交排名。值得一提的是,这个project虽然测试的时候是用simulator来测试代码的正确性和性能的,但是确实是可以用fuse跑在真正的硬件上的(虽然我并没有测试过…后半学期就比较偏软件了,主要是讲的分布式的文件系统,还有文件系统的备份啊snapshot之类的,第二个project CloudFS就比较有意思了,是要求我们通过FUSE实现一个HybridFS,具体的场景就是通过类似AWS Dropbox等的云文件系统,实现既可以将大文件存在云端,小文件存在本地,同时应用调用文件系统接口的时候感觉所有文件都像存在本地一样。这个project也是分三个checkpoint,第一个是完成基本功能,第二个是deduplication,能够将大的文件切割成小块后再存到云端,同时又保证同样的块只存了一份。第三个是实现snapshot的功能,可以将文件系统快照存到云端,这样可以随时恢复到以前的快照,甚至crash了文件都丢了也可以从云端恢复,最后还要实现一个本地cache的功能。 这门课的老师本来是提出RAID的Garth Gibson和Greg Ganger,但是由于Garth马上跑路了,这个学期就是Greg和另一位Postdoc来上,Greg是我非常喜欢的一位老师,讲课非常有激情,并且讲的很清楚,一个问题只要有人没弄懂就会解答很久大家的问题,直到确认大家都弄清楚了。上一张Greg讲课的图吧:) . Χ
![]()
这门课的有两次随堂考试,内容包括课上的所有内容以及readings,考试一般都是十几道简答题,但是基本不考概念,主要还是靠理解,比如会给你设定一个场景,然后问这种情况下用什么方法去解决一些问题。所以临时抱佛脚的话会比较痛苦.....
15-645 Database System这门课是CMU 少有的DB 相关的课程,之前的15-615 主要是讲DB application,这门课的话主要是讲Implementation。教材用的是 Database System Concepts, 也就是著名的帆船书。这门课基本上把数据库实现方方面面都讲了一下,但是都讲得不深,作为introduction overview来说的话是再好不过了。基本上介绍了数据库系统的方方面面,包括Query Optimization, Buffer Pool, Indexing, B+ tree, concurrency, transaction, distributed DB。总的来说学完以后能对database有一个比较大概的了解吧。 这门课的project也比较有意思,大概就是前端用SQLite, 后端用C++ 进行重写。总共有4个project,分别是写Buffer Pool Manager, Concurrency B+ Tree, Lock Manager 和Log System, 完成之后一个简单的DB 的后端就搞定了。这门课是第一次开课,所以project写的很粗糙,很多地方明显是设计的有问题,并且几个project之间的关联也很弱,但是还是学到不少东西的,不光是实现一个DB 的细节,特别还有一些C++ 和多线程相关的。下次开课应该会用postgres。 这门课的instructor 是Andy pavlo,也是非常喜欢的一个老师,上课语速非常快,所以把所有的视频都放在了YouTube上。但是Andy的戏一直都非常多...比如这学期刚开学的时候去开会了但是却告诉大家说有个TA烦犯事了要跟另一个TA 去捞他...给我们录的视频里还递给TA一根棒球棒说出门的时候遇到条子要小心...作业是TA觉得对Andy之前的犯罪记录(当然是无中生有的事情)很感兴趣,找了Maryland之前的犯罪记录来做SQL 分析...反正是个很有意思的老师。 这门课有两次考试,考前复习好PPT..一定要把每个概念都弄得很清楚,因为问题都不会问的很直接,而是考是否理解。一般Andy的课都会给optional 任务,这个一定要做,因为他会在最后算分...
15-641 Computer Networks这是我们track的必修课,其实就是CMU 的本科生的网络课,讲得内容就是本科那套内容,就不多说了。三个project的还算有意思的,第一个是写一个web server,支持HTTPS 和CGI。第二个是实现一个P2P 文件传输系统,类似于Bit Torrent,基于UDP可以根据网络环境从不同的peer请求chunk。第三个是实现一个CDN 系统,通过一个proxy来实现load balance并且实现DNS protocol。CN 的project应该是这几门课里load最大的了我觉得,因为只能用C语言,大部分数据结构都得自己造...实际上逻辑不麻烦的东西用C语言就要表达很多,当然也是因为这门课要锻炼system programming的能力。如果选这门课的话记得要找一个腿粗一点的队友,不然可能会比较蛋疼。 这门课的instructor是Peter 和Justine,Peter属于年纪比较大了,估计接下来这门课就要逐步交给Justine来交了,Justine属于那种四年就读完Berkeley PhD智力异于常人的很可爱的小姐姐...考试被她的final虐的不轻... 这门课有两次考试,都是Justine自己编的题目,基本不能参考往年题..只能好好复习
14-741 Introduction to information security这门课是INI MSIT/ ECE/ SCS MITS 的必修课,这几个项目的同学应该是逃不掉的...按往年学长的说法是这门课的load算是比较轻的,但是实际上今年由于老Martin的接手,作业改革之后难度还是load还是不小的。 上课主要就是讲安全的理论,感觉有点意思的也就密码学和比特币那一块,其他的其实我也没怎么认真听2333。四次作业比较有意思可以说说,第一次上来Martin就让我们打CTF,做了几个密码学的题,有2 time pad, ECB, RSA, padding 等等,每一题感觉都需要动脑筋,需要写脚本。第二次也是ctf,各种buffer overflow的题,第三次就是网络相关,kerberos/ Tor/ SQL 注入,第四次作业是写一些tor的脚本,还有就是attck Eth。 上课感觉室友Limin Jia 和Martin 两个instructor,都有视频录像,不过我没怎么仔细听课...
在CMU 一个学期上这四门课还是比较有压力的,同时这个学期还有找实习的压力,有段时间过得比较struggle,不过好歹还是撑了下来。
|