其实本来这些总结都应该早就写了的,但是直到最近我才搭起来我的博客,毕竟这种东西如果没有一个分享的地方的话写来也没有什么意义。现在慢慢把之前一些学期给补上吧,趁还没完全忘记。
本学期均绩4.0哦。
计算机网络原理(A+)
上课上的非常烦躁,前两节课讲的是一些网络发展的历史,虽然很多课前两节课都是这样的,不过这个我直接就听不下去了,可能跟老师和主题都有关系吧。这两节课之后基本就只零星地去上过课了。
学期当中很慌张,因为零星去的几次也听不懂,感觉内容太多太杂了。自己在宿舍也零星地看过网络原理的书,书也许比ppt讲的清楚一些吧,但是也没有太大的帮助,书上讲的太长了,ppt里没有的东西我也不知道该不该仔细看,最关键的是看完之后过不了多久也就忘记了。虽然大家都很推崇那几本黑书,感觉很高大上的样子,说的好像万能药一样(当然,一般这么说其实目的只是贬低一下我们的ppt),反正我是觉得看书对我没什么帮助。
不过后来事实证明这些担心都是多余的,我考试水平一直可以的,当然也是因为复习的比较仔细。考试周开始前大概两周我就开始复习了,ppt看了一遍又一遍,把重点内容摘出来到一个word文档里,也是看了一遍又一遍,再把往年题多做几遍。当然不是所有的时间都用来复习网络原理,反正这几门课我都是一起复习,直到考试前的一刻。
上考场一看,这50道选择题不都是白给,我连GRE单词都能记,这点东西怎么会记不下来。最难选择题的可能就是计算一个CRC码的校验和了,我算了第一次结果不在选项里,按照我的习惯我就跳了,做完回头再做一次(差点忘记了)才做出一个在选项里的答案,后来还验算了好几遍。大题除了第一题考概念算原题,后面确实都没见过,但是从来不觉得这种东西真的能考验什么能力,只要ppt复习足够,往年题做的足够,新题能有什么难的。
路由器实验很简单,这种代码有手就行,难度全在环境搭建和测试上,而且课上的知识基本也没有用到。根本没必要为了优化性能一直卷,只要功能是正确的几乎不会不是满分。最后的代码在这里https://github.com/MashPlant/Router-Lab。
计算机组成原理(A)
前半段的课都是比较熟悉的东西,后半段就多了很多奇怪的知识点,不过人也是越来越少了。
我是像复习网络原理一样复习的它,但是考试基本没有考那些死记硬背的东西,还有一些分很高的大题,这做起来就很慌。这种题目就是,没有什么可写的东西,全看你运气好不好,有没有和出题人想到一块去,运气不好就没有什么得分的机会了。最后没有拿到A+,可能是考的不好吧,也可能是造机没造好(好贱的一句话啊^^)。
造机基本是我单挑了,因为我总是想着,这么困难的工作,恐怕我的队友应该不能胜任吧,所以基本把所有的工作都做了。本来基本没有遇到什么问题,基本都是前两周的白天在写,一点夜也没熬。前两周基本不怎么需要板子(广义的板子,包括网络上的那个)来调试,都是用iverilog + gtkwave来模拟,编译非常快,这对调试来说是至关重要的。
然而最后做TLB的时候实在是遇到了很大的困难(顺便说一句,n+e写的TLB绝对是假的),不管怎么改上板子结果都是错的,模拟结果又是对的。我一直觉得,我不理解Verilog到FPGA的编译的根本原理,不理解时序那些东西,那能写出任何东西来都是幸运,现在遇到问题了,就几乎没有解决的机会了。最后一周熬了几次夜,不过最晚应该也不过三点吧,我是不适合熬夜的,我夜里工作效率比白天低多了,不过这样造机其实也不需要什么工作效率,就是随便改改代码试试,然后编译一下等5~10分钟(应该还是我的电脑比较好才有这个速度),然后上板子试一下,得到错误的结果后再重复这个过程而已。
最后也没有解决,只是乱改改出来一个看似还算能跑一些简单的例子的CPU来。我们跟助教说,我们造了TLB,但是这个在高频率下不能稳定的运行,所以只拿来展示一些简单的例子,性能测试就用没有TLB的版本来跑。这倒是没有说谎,TLB在高频率下不能稳定是肯定的,毕竟它在在低频率下也不能稳定。
真的挺难受的,最后也没有学到什么东西,而且基本以后肯定没有信心去碰硬件了。
信号处理原理(A+)
算是数学味比较重的一门课吧,虽然老师讲着讲着就会说一句”我们这是应用学科,不要太在意严谨的数学证明”之类的话。既然是数学课我肯定是认真记笔记了,感觉自己微积分和复变函数的那些东西已经忘记得差不多了。
我感觉每节课记到最后,我都感觉,啊懂了懂了,原来是这样的,好精妙啊。到了做作业或者下个星期再上课,之前的内容我基本就全忘记了。不过这也正常,数学课不都是这样的吗,笔记本来就不是为了平时巩固用的,考试复习能用到就行了。
和其他的课一起复习,也把往年题基本都做了。往年题中感觉有一些很难的,越到近年越简单。ppt中有一些很复杂的公式,一看就不知道怎么证明的那种,可能是大概类似这种的?
要是我早点写这个总结我就能回忆起来具体是哪个公式了,现在REKCARC-TSC-UHT上也还没有这张卷子,所以我也记不起来是什么题了。
我复习的时候就觉得,这么复杂的公式肯定就是拓展知识,不会考的,况且题目不是越来越简单了吗?当然我还是记了,毕竟没有什么不记的道理,我的记忆容量是充足的。结果考试中还真有一题用到了,而且也不是给你左边要你写右边这么简单,而是要在证明过程中自己发掘的。还有最后一题我也感觉挺难的,想了半天才凑出来证明。考完我就觉得稳了,这套题这么难,但是我都做出来了,这门课拿下。
实验照着学长的做一下就行了,很简单的。装matlab可能会成为一个困难,反正我是没有装,我用的是在线版的:https://matlab.mathworks.com。
数据库系统概论(A+)
上了几次课,感觉很无聊,反正也没有考试,后面就不去了。
整门课基本等于一个大作业。代码在这:https://github.com/MashPlant/db。
我寒假就开始写了,因为害怕自己写不完。开始是照着学长的写的,越看越难受,他们的代码怎么这么垃圾,这全是漏洞和性能缺陷啊。垃圾归垃圾,如果让我从零开始自己写,我觉得我就是做不到,我就是需要别人给我个框架才能往上面加东西。我自己写的也是很别扭,用的是Rust,全是unsafe
,每写一个地方就要为性能和安全性斟酌半天。
开学之后没怎么写,可是听到作业要求之后,感觉学长的功能比今年的基本要求都差远了,以前要求这么低的吗?我也有很多功能没有写,比如实现一个真正动态分配空间的varchar
之类的,最后大概是在十一假期的时候完成了,这之后基本没有动过。我感觉基本功能要求实在是太高了,如果把基本功能全部写完了,那一点推荐的拓展功能实在是太简单了。
学期末去找助教检查,事实证明我的”性能和安全性”确实是那些粗制滥造的C++代码比不了的,不过有的人实现的功能比我多多了,我除了没有实现的功能之外都顺利通过。最后拿了A+也是没想到,难道完成基本功能加这么一点拓展功能就能A+吗?
编译原理专题训练(A)
这可能是这学期我学的最认真的一门课,因为我对这个方向感兴趣嘛。遗憾的是没有超出我的预料,基于数据流的优化我基本都会了,除了PRE这个相当综合的优化我没有写过(当然这也是最难的)。后面讲讲循环,SSA,GC,IPA,verification什么的,都很浅,只靠这门课讲的肯定是写不出什么实际的代码来。
实验和作业的代码在这:https://github.com/MashPlant/compiler-train-19。关于实验作业和考试的介绍也都在里面,我就不复制了。
有一说一,这门课工作量比编译原理小,这不是我的锅,编译原理的实验主题又不是我定的。
三年级男生手球(C-)
手球真的是宝藏课程,非常水的一门体育课。之前上过一次了,拿到了我体育的历史最高分(B-)。这学期幸运又选上了,直接划水一学期,反正学分是0,C-也不影响绩点。
科研?
你看我上面每门课说的结果都那么好,是不是一帆风顺的样子。但是这个学期我真的是生活在很大的痛苦当中,科研这方面,我所做的所有的尝试,都没有任何结果。主要应该是我自己的原因,也许也有一点客观原因吧,我不想讨论了。每当我想起自己的表现,我就觉得自己完全是个废物。
我不想在这里说太多负面的东西,我希望我展现给别人的永远是光鲜亮丽的一面,只是不知道这样还能维持多久。
我觉得我就是不适合做科研吧,做作业和考试水平倒是一直可以的,那是因为有个明确的目标,而且”不可能失败”,这是我心里对自己说的原话。但是我还是想出国的,只是为了不辜负我考的那么高的GT。