中科大软件学院第一学期总结

考研究生调剂到了中科大软件学院,现在看来是一件让我觉得十分幸运的事情。中科大的学习气氛非常的浓,课程的内容也十分有新意,虽然有新意,但是又都是很基础的内容,让我收获很大,很多课程给我带来了很大的启发。直到过年时候,才腾出时间来写上一篇总结,记录我这一学期的生活和学习。

初来

我一直是一个地地道道的北方人,生在北京,长在北京,却跑到哈尔滨读了四年书。哈工大学习负担不轻,假期也很短,一直没有时间到处玩玩,再加上自己比较懒,大学期间也就去了趟长春。这次考到了中科大苏州研究院,心中对于南方的风土人情很是期待,内心中也不乏有些忐忑。

开学前,我直接跑到了南京玩了一周,玩的十分痛快,题外话暂且不提,然后从南京坐高铁到了苏州。中科大苏州研究院地处独墅湖高教园区,正巧高铁有工业园区一站,我就在工业园区站下了车。人生地不熟找不到合适的公交,直接拦下一辆出租车奔着学校这边就来了。苏州的出租车司机素质感觉比较高,礼让行人等做的都很不错,开车也很规矩。出租车司机还很健谈,就像北京的老师傅一样,听说我是来上学的,给我说了很多苏州的情况。我是提前一天前来报道的,物业态度很不好,不过好在顺利办理了入住手续,搬进了宿舍。宿舍两人寝,上床下桌,屋子不小,但是什么都没有,不过比较干净,我开学前几天都在置备东西。苏州的空气很好,略显湿润但却不潮湿,气温跟北京差不多,略高3℃左右,我很适应。住宿的地方离学校不近,走路30分钟左右,不过每天都有班车。

乍到

中科大开的课程都很有意思,很多课程我遗憾的没有抢到,不过幸好没有全抢到我喜欢的课程,不然估计得累到爆。曾经我很不理解哈佛的学生为什么一学期只有8门课程还累得要死,知道我来到了号称“不要命的来科大”的中科大,才彻底理解了原因。中科大的课很有意思,难度也颇高,想要学好,就要付出150%的努力,而且基本上我学的所有的课都需要这种程度的努力。

下面说说我都上了些什么课,都有什么好玩的内容。

英语免修过关考试侥幸水过,让我能够选一些其他我感兴趣的课程。一开始我选的是实用算法设计一课,第一节课时,老师负责任的指出此课程针对于没有算法基础的同学,恰巧此时算法分析与设计一课有一个空位,我就改选了算法分析与设计。实用算法设计一课使用的是《程序员实用算法》一书,说实在的,里面的例子都是经过精心编写的算法,非常优美,很多细节处理的十分精妙,可惜我还是更喜欢算法分析与设计一课。算法分析与设计使用的教材是经典的《算法导论》一书,整个课程跳过了一些简单的章节,但是覆盖到了算法导论中的大部分章节(不含第七部分和第八部分)。这课说实在的,超赞啊!我本科学的算法课用的是《算法概论》一书,比较偏重于算法设计,《算法导论》则是设计与分析并重。自己看《算法导论》的时候真心看不进去,这门课程一口气跟下来觉得并不吃力,而且有一种融会贯通的感觉。发现很多的时候,一个算法的时间复杂度暗示了其设计思想。例如,含lgn的往往是用了递归、二分或者操作时间复杂度为lgn的数据结构;而n1/2或者是更奇怪的常数α作为指数的算法往往是多级算法,分阶段算法,或者待定参数的算法,α是最后接触的最优参数。一些以前不能够很好的理解的数据结构,比如说线段树,也得到了很好地理解。美中不足的是红黑树的部分讲解依然比较混乱,老师没有采用《算法导论》一书中的红黑树的讲解,而是从其他方面讲解的红黑树,感觉仍然不够理想。恰巧以前看到过刘未鹏《知其所以然(以算法学习为例)》中提到了Left-Leaning Red Black Tree,仔细的看了5次以上后,终于觉得能够明白红黑树是怎么一回事儿了。

数学课我选择了组合数学并且旁听随机过程。组合数学用的是Brualdi的Introductory Combinatorics,课上老师基本上把整本书讲了一遍,作业题中不乏一些难度较高的证明题。上这门课的感觉还是很多问题都似曾相识,比如说经典的八皇后问题,这些问题以前在遇到的时候都是采用一些固定的策略来进行处理,并不知道为什么要采用这样的策略。这门课程让我认识到了三类基本问题:组合计数、组合优化、组合设计,每一类问题都有很多数学工具来对其进行分析和解决。顺便说一下,书中对于如何构造GF(pk)讲解的实在是让人有点稀里糊涂的,恰巧我另一门课程密码学及其应用中讲到了这些内容,让我在这点上没有稀里糊涂的跳过去。随机过程是一门神奇的课,说实在的,我一直都挺怕概率论的,我觉得概率论十分的违反直觉,很多时候得出的答案都令我十分费解,也不能够肯定是否正确。随机过程这门课的老师非常棒!非常厉害!由于时间精力的关系,我没有做这门课的习题,因此收获相对较小,但是老师在课上提出的很多问题,使我对于概率论的理解深刻了许多。这里举两个我印象比较深刻的例子。(在座的几乎都是男生)你们的爸爸有儿子,你们爸爸的爸爸也有儿子,往上若干代都有儿子,但是你不一定有儿子,你儿子不一定有儿子,这不是很奇怪吗?还有一个是敲金蛋问题,一共有三个金蛋,一个有奖,先让你选择一个金蛋,此时主持人将剩下两个金蛋中没奖的一个砸开,问你是否改变选择?(即改变或者不改变选择,中奖的概率是多少?答案分别是2/3和1/3)这些问题都揭示了概率的基本问题,比如概率是人为规定的,描述可能性的(不确定性的)度量,等等。

中科大还开了一门叫做程序设计与计算机系统的课程,教材用的是经典的Computer Systems: A Programmer's Perspective。这课上得我十分开心啊,说实在的,我大四考完研才开始看这本书,真心觉得相见恨晚啊。看这本书,觉得终于把我学过的计算机组成原理、操作系统、C语言给联系起来了,收获十分的大,更重要的是一种看待问题角度的改变。比如说,以前很难理解为什么位移操作有两种,虽然知道这两种位移操作的概念和区别,但是还是不知道本质的原因,看了这本书之后,就明白了,对于补码表示的数字,需要扩展符号位才能够得到正确的结果。有时候觉得国外真先进,大一的时候就开这门课,我却直到研一了才把这门课给学了;但是又觉得,如果我没有学过计算机组成原理、操作系统、C语言等等课程,没有这么多的累积,学这门课的时候也不会有这么大的收获,有一种茅塞顿开豁然开朗的感觉。这本书,估计还要反复读上3、5遍才能够完全吃透吧。

说到程序设计与计算机系统,就不得不说说我选的课程——计算机病毒与免疫系统,参考教材《程序员的自我修养》。这也是一门神奇的课,实验难度相当高,几乎快比得上我本科学操作系统时实验的难度了。这课其实关键就是对于编译、链接、加载的理解程度。一段病毒代码想要在宿主程序中运行,就需要我们手工来完成编译、链接、加载的工作,在这个基础上,再对病毒程序进行一定的伪装和保护。因此,对于编译、链接、加载的理解程度直接影响了理解这门课程原理的难易程度。病毒和杀毒软件的大部分思想都是十分朴素和平凡的,但是在矛与盾的斗争过程中,总是会擦出新的火花,有些思路巧妙地不禁让人拍案叫绝,例如说代码自定位,字符串的注入等等。病毒和杀毒软件的战场,是一个比拼思维活跃度的地方。这门课程的实验中,大量的使用了汇编代码,让我发现了嵌入汇编的巨大威力,有些地方使用C语言写起来十分的繁琐和枯燥,最主要的是难以阅读和理解,但是用等价的汇编形式来编写,就十分的简介明了,尤其是函数指针的部分,C语言为了进行编译时期检查将函数指针弄得有些太过于繁琐了。从2年前,我就知道要把C语言和汇编语言结合起来看待,看到C语言就应该想到其汇编形式,但是很难做到。这次经过一定量的训练,终于可以勉强做到,看到C程序的时候,在有意识地去想的时候,能够想到这段代码的汇编形式。这有助于我们抛弃一些不必要的tricks,在关键的时候进行优化。(这也是CSAPP所需要达到的一个目标之一)

说完这两门课程,不妨看看上面提到过的密码学及其应用一课。在上这门课程以前,我一直认为密码学领域主要是一些数学问题,程序员需要关注的内容很少;上了这门课程后,我发现,所有的程序员都应该学习一下密码学的基本知识,走出密码学的误区。在这门课程上,我了解了,即便是有了安全的加密方式,如果使用不当的话,仍然可能会泄密或收到被攻击者伪装成正常消息而受到欺骗,非对称加密并不比对称加密更安全,反而,非对称加密方式由于加密速度较慢,使用范围会受到限制。有些不安全性的引入是十分隐蔽的,而只要有一处不安全的地方,整个体系就好像马其顿防线一样会被整个绕过去,所以我觉得,如果真的对于安全的需求比较高,还是要建立一个从理论上就安全的系统。

高级图形图像处理和现代通信网上的我都相当苦闷了,没有物理基础的我基本上没办法从理论上理解频域这个概念,只能够从直观上进行理解和解释。高级图形图像处理实际上分两部分:图形学、图像处理。这两门课虽然由于缺乏理论基础理解不够深刻,但是如果我今后在这方面深入学习的话,对于我的学习有着指导作用。

面向对象技术一课是针对于本科没有学过C++的同学的。C++我实在是不敢说自己学得多好,C++实在是太复杂了,语言细节非常多。不过我对于C++常用的一部分子集自觉掌握得尚可,于是就跑到了嵌入式课程去听设备驱动开发。也是很基础的东西,比如说如何构建一个Linux驱动程序等等,和硬件接口连接比较紧密,收获并不是太大。

Web安全实践一课主要讲了讲Ruby On Rails,和一些常见的攻击,比如说Cross-site Script,SQL injection之类的,其中一个实验写了个Worm脚本挺有意思的。我本科写了将近3年的网站,ASP.NET,后来发现WebForm模型理解起来确实比较别扭,用起来经常会弄得乱七八糟的,而新出的ASP.NET MVC框架就好得多。ASP.NET MVC框架其实大量的模仿了Rails框架,于是我怀着膜拜的心情上完了这门课程,发现Rails框架确实整合了很多工具进来,而且扩展点留的也恰到好处,的确使得Web开发变成了一件非常愉悦的事情。

然后?

然后就跑回北京睡大觉了,发现现在休息是一件很奢侈的事情,突然很有一种紧迫感,觉得有很多东西想学却来不及学。Concrete MathematicsSICPThe Art Of Computer Programming……下学期必须得选的课就很少了,但是想要学的课却相当多。希望能赶紧把想学的都学会,然后到实践中去大展身手呢。

Technorati 标签: ,
posted @ 2012-01-25 14:33  HCOONa  阅读(2919)  评论(2编辑  收藏  举报