接下来就是选课的问题了,我先和大家分享一下四个方向的具体课程设计: 1、THEORY AREA
CS 530: Algorithms
CS 535: Complexity Theory
CS 537: Probability in Computing 2、SOFTWARE AREA
CS 511: Formal Methods I
CS 512: Formal Methods II
CS 520: Programming Languages
CS 525: Compilers 3、SYSTEMS AREA
CS 550: Computer Architecture
CS 552: Introduction to Operating Systems
CS 553: Advanced Operating Systems
CS 655: Graduate Introduction to Computer Networks
CS 556: Advanced Computer Networks
CS 651: Distributed Systems
CS 670: Performance Analysis of Computer Systems
接下来我和大家具体介绍几门课的情况,首先就是我前面提到的那些相对比较硬核的课程。首先第一门是CS651,也就是分布式系统这门课。这门课跟的MIT6.824,每周看两篇paper+开卷的期中以及期末考试,作业两三周一份,内容主要是用Go实现MapReduce/Raft/KVRaft之类的,很有干货,这门课的教授也是很能讲的,在上课的过程中会有很多收获。
接下来是CS538:Intro of Cryptography,这门课是密码学的理论基础,这里面会涉及一些数学方面的知识,不过这些知识并不是很难,所以大家在选课的时候也不需要担心,另外这门课还有证明的部分,但是证明同样不是很可怕,学起来其实还好。Reyzin可以说是所有老师中课讲的最好的一个了,他没有ppt,就靠一块白板讲一节课,内容也是干货满满。不过需要注意的是他的语速很快,信息量也很大,一开始上他的课可能会有一些不适应,但是后面习惯了节奏之后我们会觉得很舒服,因为他的课讲得真的很明白。
下面是CS568,这门课是应用密码学,是用python来实现或者破解一些加密的算法,如果有了538的基础的话这门课会十分的轻松,我当时是作业全满分过的,而且老师也很幽默,课堂氛围比较轻松,我也很建议同学们同时选择这两门课,大家一定会有很多收获。