2019051571626 Spring-2019学期总结

距离Spring2019期末考试已经过去一周,忙着Thesis的同时开始写这篇学期总结。

成绩飙升!

首先肯定要附上成绩单,我也终于从学细胞进化到了学微生物,向着学渣之路进发了。在经历了Fall2018一个A一个B的惨痛教训以后,我痛定思痛,端正态度,努力学习,终于收获不菲:

Name Grade
Network Security A+
Machine Learning A
Thesis S

Network Security

Network Security这门课的老师就是我的论文导师,而我也是以此作为我研究生阶段研究方向的,当然要好好学。不过老师考虑到同学们的水平参差不齐,有些甚至是电子专业的也来学这门课,因此难度设置的不高。

前几个lectures从基本的讲起,比如Linux操作系统扫盲、网络基础扫盲等等。后面几个lectures囊括了从缓冲区溢出攻击到DNS Spoofing等一系列攻击,攻击种类也不限于host攻击,而是覆盖了从计算机安全到网络安全的大范围。

作业方面,主要是完成几个基于Seed Lab的攻击实验,对课上的攻击理论进行实践巩固。Seed Lab其实是一个基于Ubuntu系统的网络攻击实验平台,使用者可以在上面实际体会一个攻击从信息探查到最终实现的全部过程。这些实验难度都不是很大,但是足够经典,做起来烧脑又有趣。本学期总共有三个Hands-on,平均下来完成一个我所花的时间大概是三天(边做实验边写报告)。

考试的话,整体的结构大概是quiz + 期中考 + 期末考。形式都是简答题,每道题目有一定空格来填写自己的答案。比如设置一个Alice/Bob/Lily的三人场景,简要描述Man-in-the-middle Attack的攻击过程之类的。quiz难度和考试难度都不是很大,平常认真听讲,考前把PPT复习好了,拿高分很简单。
成绩出来以后有一次Meeting,导师悄摸摸和我讲我是全班唯一一个A+,当时心情就有点小激动,算是不妄我这一学期的努力了。 总而言之,按导师话讲:

”在你学完这门课以后,请不要把这门课当作终点,而应该把它当作你网络安全事业的起点。“

Machine Learning

从Fall2018开始选课的时候我就想着Spring我一定要选这门Machine Learning。一方面是因为我的论文研究方向和机器学习紧密相关,其次是因为现在机器学习和深度学习热潮,自己也想趁着机会追赶一波潮流。然而周围的人,包括以前上过这门课的学姐、同班的一些印度小伙伴都告诉我选这门课要慎重,因为这门课的老师超严厉,作业批改和考试评分超严格,之前不少人努力学了一个学期结果最终成绩连B也没有,以至于我开学以后对这个个子小小的印度老头好感度很低。

因为我之前就学习过一些网上关于机器学习的课程(当然是宇宙最帅吴老师的课啦),所以开始Linear Regression的时候感觉课程并没有想象中的难。但是当话题进一步深入,从Quadratic Form开始,我发现自己的数学知识有点跟不上了,因此又去搜了好多资料恶补了一下线性代数,发现并探索了许多吴老师课程中略过的话题,渐渐发现了机器学习的真正魅力。那就是,在学习完一个主题以后,自己再把这个主题所涉及的公式理论再推导一遍,一边感受数学的魅力一边推导着机器学习的公式,真的是痛并快乐着。由于本学期天气恶劣雪特别大的缘故,ML的课程被冲掉了好几节,所以涉及的主题没有很多(大概两个学期可以把80%的理论和模型讲一遍),主要有:

  • Linear Regression
  • Logistic Regression
  • Linear Algebra Review
  • Quadratic Form
  • Perceptron
  • Backpropagation Neural Network
  • K-mean Clustering
  • Principle Components Analysis
  • Feature Mapping using Prototype Vectors/ Radial Basis Function

整体而言,这个课程对数学要求很高。如果数学基础不太好的话建议复习高等数学、线性代数和概率论。好在这学期老师都有把上课的内容用录屏软件录下来,方便我们进行课后复习和补充笔记。同时建议多搜寻网上的资料看看,老师有的时候会讲错或者有些概念讲得不是很清晰。

作业方面,我大概是经历了上研究生以来作业数量最多的一门课。本学期总共八个作业,基本内容就是用Matlab把课上讲到的模型以及模型中可能出现的各种情况实现一遍。于是秉着兢兢业业的精神,我真的自己一点点用Matlab从线性回归一路写到了K-mean Clustering,从Matlab小白一跃成为熟练使用matlab的一员。你以为我这学期作业分可能是满分,我也这么认为。然而,这个老师给分苛刻的特性显露了出来,他会逐行检查代码,对于任何疏漏或者是不符合题意地方扣分,而且一扣就是20分30分。在我仔细检查代码,认真审阅题目的情况下,我的作业也就只有一次满分,剩下的都是80分左右。并且,扣错分的地方老师也很少会改回来或者补上分数,搞得大家怨声载道,后面大家甚至对作业处于半放弃状态(当然不包括我)。

考试的话,ML和NS一样,分为一次期中考和期末考。这两次考试的难度也比较高,可以这么说,这两次考试让我有一种回到高中做数学卷子的感觉。可能这就是合格的ML考试的精髓所在吧哈哈。期中考我准备比较充分,考了全班第二。期末考则因为写论文什么的,耽误了复习,在PCA这一块全军覆没。好在总体成绩排名靠前,老师说会根据正态分布给分,所以侥幸拿了个A。

总结来讲的话,这门课既有乐趣又有挑战,可惜的是许多有趣的模型都因为课时限制而放弃了。后续我会找网上资料把该学的学全,博客也会有一个专门的关于ML的标签。

Thesis

这学期的Thesis在确定了研究方向和研究主题以后终于有了进展,不再像是上个学期一样无头苍蝇一般乱撞。整个学期下来,在我牺牲许多游戏时间下,Thesis的进度飞速,截止到目前为止已经进入投稿前的最后修改。导师对我的研究进度也比较满意,我自己也感觉这个学期做论文学到了很多东西。美中不足的是文献的阅读量不是很大,这一点是需要在暑假恶补一下的(to read list已经有十几篇在等着我了)。

学习永不停步

这学期期中一次meeting的时候,导师说他有兴趣想组建一个CTF校队,问我有没有兴趣参加。CTF算是网络安全领域大家都比较热衷的一个活动,没参加过几次CTF都不好意思说自己是网络安全专业的。而我之前正好有一些CTF的参赛经验,于是便答应下来。不过目前忙于论文的事情,校队的meeting参加过一次,也没有正式开始训练。六月份回国以后要好好搞一搞这方面的训练。

另外从夏季开始要为明年找工作打基础了,前段日子我投了几个夏季实习,可惜要么就是被拒了要么就是没回复,详细情况会在另外一片博客里面提及。感觉自己算法和数据结构方面太过薄弱,因此将好好复习算法也列为夏季目标之一。

5月末会在洛杉矶和家人共度为期约十五天的假期,算是对辛苦了一个学期的自己的一次放松吧。