2024春季学期总结
上学期是转入软件工程专业的第一个学期,也是我的新大一下。
在转入之前,我有很多美妙的幻想,无论是声名远扬的实验室和校内最好的本科教学,还是软件学院向来高标准严要求,被学长们交相赞誉“XX为数不多的值得读的专业”,而JYY的课程让我更是早早地期待起了这学期的讲课水平。虽然本人也有很多类似的失望经验了,但人总归对新环境有一种期许的。
与此同时,老师整了个全新的项目——挺新奇、也挺有挑战的一个课题,同时水源的开发也算是委派了第一个新人试水级别的任务,看似前途一片光明——在开学的前三周,我就在一种喜悦的充实感之中度过,总感觉真是大有可为,会是飞速成长的一个学期。
然而事实却给了我两个大嘴巴子——贪心不足蛇吞象,这也要那也要的结果就是都干不好——另一个原因也是我依然高估了自己的能力,低估了软院课程的工作量, 一学期2w行代码真不是说着玩的。同时课程质量各个课之间的差距也特别大,距离赶上国外尚任重道远乎......
上学期上了哪些课呢?
-
ICS2,计算机系统基础2,csapp剩下的全本+ostep的部分+许多Linux拓展,在原本的CSAPP Lab上也加了新的手写assembler和simulator。体系结构讲得很难,后面的系统讲得很广,总体上除了后几个lab文档确实不怎么样之外体验还是好的,能体验到许多新奇的东西——slab, vma, elf和动态链接的各种细节,等等等,但也就是这学期唯一的希望之光了。唯一一门有国外公开课水平的课,体感优于15213,和61c差不多(广度倒是远大于),差于NJU ICS。
-
ADS,高级数据结构,粪课。内容为radix tree,rbtree,splay tree等各种树+kmp+快选+skiplist+bloomfilter+cuckoo hash+高阶图算法、并行图算法(三种并行最小生成树+pagerank。有12个hw,不少带实验报告,4个lab和一个proj。他的讲课真的很烂,一度有让我产生“什么?这不是华五正统科班,这是带专,课程吸水变高变大”之感,又是签到狂魔和作业狂魔,给分还差,导致体验非常不好。lab和proj还算是这门课最后的良心——虽然是助教的功劳。一个Huffman压缩,一个基数树,一个HNSW+并行优化(这个我是真喜欢),还有一个重量级LSM Tree。LSM tree真是一个好项目——虽然我写了很久(算上沟槽的实验报告在80个小时以上),但写完还是收获非常大,从c++17到db设计中的各种技巧和权衡乃至debug、写测试、管理项目的能力——从0开始手写一个支持键值分离、GC、持久化(还有选做的并行)等feature的LSM真是很磨练人。这门课最大的问题在于耗时间太多,且有些东西太过琐碎,虽然学了不少东西,但浪费的时间也是很多。几位助教真是辛苦了,硬生生把这门课程从依托变成了还算能看的东西。
-
Web, 互联网应用开发。前端React+后端Spring Boot+JPA的手搓全栈开发课——很有培训班的风格。老师前半学期讲前端的时候挺无聊的,毕竟寒假自学过,后半学期对着《Database System Design》来讲的时候倒是很 有意思,从JPA的底层讲到数据库范式、同步等机制,还是挺有意思,加上给分也好,算是一门还行的课。下学期还有他的Web2, 讲讲各种Redis,MQ,Cloud, 全局搜索之类的东西,还是可以期待一下。
-
math4cs:垃圾课,完全不知道在教什么。今年这门课发生了改革,把自动机的部分去掉了,导致整体更没法看。前半是信息论和凸优化的最基础的东西,后半又开倒车回到了线代——SVD,QR,LU,...,结果大作业又是train两个AI model,不知所云的课。
-
量子力学:沟槽的工科平台,软件工程的学生学牛魔量子力学。
-
电路实验:喜欢我大化实验+大物实验*2+电路实验吗
-
数电:学了吗?如学。在学期快结束的时候倒是感觉串起来还是比较新奇的,但和CS交界的部分也不超过之前学的计组,电路部分也不是很有意思。 私以为软院需要自己的数电,例如讲纠错码的时候带上纠错码在物理层传输的作用,把前面没什么用的布尔表达式化简、卡诺图,后面的555计数器之类删了,后面寄存器什么的需要讲,自动机什么也多讲一点,最好再讲讲目前新型的存储装置,比如3d的存储之类。
-
红课:没啥好说的。
-
软件基础实践:也是补大一的课,现在再去写小朋友的lab还是简单的。另外,个人觉得大部分lab不是很有意思,比如qlink,除了体验GUI编程和看文档全都是体力活。个人觉得把这些课题做成鼓励探索的会更好一点,例如qlink把带来很多麻烦的rpg机制换掉,转而鼓励实现网络对战,等等。
实验室项目是一个在OpenHarmony上做基础设施移植的工作——可惜一个是自己时间太少,另一个是自己水平不够,导致项目的进度几乎和我没什么关系。新奇的事也有,例如玩开发板、完整的Linux环境、亲手装机、一些图形和库移植的知识......但总感觉迷迷糊糊的,挺细碎,其实也不知道后续有什么地方能用到。
上学期很可惜的就是几乎没怎么课外自学,就是在ddl之中疲于奔命了。暑假也算是在一个比较迷茫的状态下过去的,考了个驾照,学了学计网,开发选课社区v2.0,看看新的小说和玩玩黑神话悟空,也有看看分布式、DDIA、玩玩游戏引擎、写写compiler、ai或者mlsys这种尝试性的试探自己兴趣点,但最后也还是不知道自己热爱哪个方向,反倒是说找到了不少看起来很美好,但我实际不喜欢的方向(比如mlsys)。 看看这学期的CSE和云网融合吧,继续探索一下分布式。
感觉本学期还是对我造成了一点创伤——以至于对于代码的兴趣都消退了些许,当兴趣变成“工作”或许就是如此,期中也常常深夜破防,得到的感想就是人还是不能把自己绷得太紧,或许有人喜欢这样,但我这样效率反而低下。我本学期博客更新频率也变低了好多——有时候连总结的时间都没有,无尽的ddl让人对生活本身也处于一个钝感的状态。
至于新学期的规划,初步是纯纯的简历导向,为下学期申日常实习服务:在外部大环境这么差的当下,总想尽早刷一段大厂实习经历,才有一种能上桌的安心感。 学习方面的话,大概是这样:
- 第一个月学一下数据库,同时把rookieDB的lab写一写,刷个简历项目; 再看看leveldb和rocksdb的源码。
- 第二个月继续深入后端开发,各种架构上的东西比如mq等等多写多看,继续写数据库。同时时间投入云网融合的小组项目。
- 后面分布式,八股,力扣。
生活方面的话,大概就是打算这学期坚持去健身,约了几个同学,希望能坚持下来。