我的大学:大三

到了大三之后我几乎对大学生活丧失了热情。比赛不参加了,GPA在我自认为保不了研之后也不卷了,科研更是从入学就没打算参加过。每天都过着宿舍-食堂-教学楼三点一线的生活。这样的日子确实没什么好回忆的,本篇就主要写一点让我印象比较深的几门课吧,顺便让大家了解一下即便是大三我们也有这么多课要上。

JavaEE架构程序设计

这是一门教Java的课程,最后需要提交一份学习笔记和大作业。众所周知你校的编程课全是白给,只要你有基础,满绩通常问题不大,所以我在得知这门课不签到之后就一次没来上过。刚好我大二和大三衔接的暑假也是在自学Java,那时候刚好把Spring部分看完,所以这门课的学习笔记我就交了我自学时的写的一些东西,然后大作业是跟着培训班公开的课程写了一个分布式微服务的网上商城。据说教我们这门课的老师桂浩这一次比较严格,有不少同学被卡绩了,但是我还是靠着技术栈的大量堆砌涉险过关。

值得一提的是这门大作业我和经常一起合作的lyx同学起了争执,原因有很多:

  • 我自己能力上的一些不足。因为当时后端写还得不是很熟练。前后端对接的过程中出现的很多bug,最后都发现是我的问题(这个实在是太伤感情了);
  • 自身的拖延症和其他组员摸鱼。这个直接导致我们的大作业拖到ddl前夕才做,当时lyx担心他负责的前端部分写不完,而我则信誓旦旦地保证我可以帮他写前端,但那时我前端已经忘得差不多了。在写完后端部分后我就去改文档了,一行前端代码都没写,这直接引起了他的不满;
  • 双方对于项目持有的不同意见。我开始的比较早,写了很多功能模块,但是前端来不及写了,有些我写的东西得不到展示,相当于是白写了;还有一些功能我认为没必要做,他则持反对意见,说如果我不做,就在前端用IndexedDB写一个假的实现。那要我何用?你直接脱离后端一个人玩去吧!这搞得我也不高兴了。

当天我还去他们寝室刷夜赶ddl,在口头争执之后我直接爆发了,连夜写了小作文喷他。后来想想这样做太娘们了,不论如何也不应该去主动攻击别人。

Windows原理与应用

这门课就是讲.Net的,除此之外还补充了一些Windows的知识,比如注册表、COM组件啥的。理论上来讲这门课也没什么意思,但是教授我们的胡继承老师非常开明,他并没有按照教学大纲授课,而是教我们一些Azure、WinRT等前沿知识。这种标新立异的做法影响最大的就是这门课的考试,还好Windows是开卷考,纯纯白给,哪怕你一次课都没上过都能满绩。

胡老师在上课时曾经布置过一个可选的作业,那就是用C++写一个强化学习框架,这个是想蹭前段时间出的tianshou强化学习平台的热度。因为这个项目也是本科生写的,所以胡老师鼓励我们能不能用C++复现一个出来。恰好我在初学强化学习的时候也萌生过写框架这个想法(当然在听闻tianshou出来后这个计划就搁置了),于是我真的用C++去实现了DQN等算法(完整的框架就别想了,没那个时间)。最终在CartPole上的耗时比tianshou慢了快10倍,这个差距也在我意料之中,毕竟这种框架的性能差异并不在语言这一层次,显然人家用NumPy比我手操vector要快许多。我给胡老师发了邮件说了我的工作,得到了他肯定的回复,他也fork了我的这个仓库。作为班上唯一完成了这个作业的人,我还特意去上了下一节Windows课,去听听老师是怎么表扬我的,可是他一个字也没有提,可以说是乘兴而来,败兴而归了。

中华茶文化概论

这公选有两节实践课,所谓的实践课就是老师在台上介绍茶,然后你们在下面泡茶喝茶。当然沏茶这种事情肯定要自己干,一般是小组里面轮流沏。这个沏茶也挺有讲究,不是倒开水一样随便倒的。我还学会了在别人给你沏茶的时,用两根手指的关节敲击桌面表示感谢。硬要说有什么要注意的话,那就是水温很高,小心烫伤,我就被烫了几次。

这门课还有一个插曲,那就是我觉得理论课太无聊,中间翘了几节,没听到期末论文的ddl。供需群问了没人回,课程群也不敢问。根据我的经验,这种论文最早会在上完课之前交,所以我在最后一节课的前一个晚上熬夜肝完了2k字的论文,没成想竟是第一个交的,还被老师在课堂上提到表扬了。

人文物理学

人文物理学就是简单介绍物理学各个领域,给我们上课的是物理学院的院长石兢。他可能是我见过最有号召力的老师了:

  • 物理学院各个领域的专家都被请来授课;
  • 在国外名校读研的学生也会抽空赶来听他的课;
  • 其他学院有一些德高望重的教授也会慕名来听讲;

不过我选这门课就是用来混跨专业学分的,对我而言最大的收获是认识了邹老板。之前对邹老板的认识还停留在网络上,在这门课上终于见到真人了。认识的契机是我们都是计算机专业,所以便组队去完成各种物理实验。人文物理学之所以受欢迎就是因为它丰富的实验内容,我做过的包括:做日晷、凌波门看日出和物理学院天台上观星。这些实验听上去就很有趣。而记录数据这种脏活累活都是邹老板干,我就负责划划水

健身气功

体育课四个学分可以是三门初级课 + 一门高级课,大三之前我已经有两门初级课 + 一门高级课了,只要再选一门初级即可。抱着养老的心态我选择了健身气功,老师是之前教武术课的秦子来老师。这门课依然是教八段锦,这个我在她之前的武术课已经学习过了,所以每节课其实就是复习之前的动作,又水到一学分

物联网导论

为了凑够专选的分数,我不得以选了一门大一的课。不幸的是物联网的教材改版了,同级的书我不能直接用,只好去求助19级的学弟学妹。然而不仅书没借到,还被冷嘲热讽了一顿,说你大三为什么还要上大一的课,对此我也是哑口无言,只能忍气吞声。

这门课的任务和它的学分数很实匹配,只有一个课后作业 + 考试。所以除了最后一节布置作业的课以外我全翘了。万万没想到这一门大一的课我竟然还没有满绩。你说这整个计算机系总得有人满绩吧,那岂不是新生都能考的比我高了?实在是太尴尬了。

科技写作

科技写作算是我本科四年中上完最有收获的一节课(虽然现在已经记不得有什么收获了)。刘华俊老师不仅教我们怎么写论文,还教我们如何应对复试。最后考试是现场评阅一篇论文,我拿到的是某不知名大学的硕士毕业论文,我不仅挑出了格式上的错误,还指出了这片文章本身存在的漏洞(毕竟之前也学过CV),最后成绩也是非常满意(一般95分往上我就觉得非常满意了)。

算法设计与分析

我们学院把「数据结构与算法」分成了两门课,一门叫做「数据结构」,另一门就是「算法设计与分析」了。我大二在上「数据结构」的时候被授课老师搞了心态,那个老师是我整个本科期间见过最「雷」的老师了,虽然他用C语言讲数据结构,但是他连什么是头文件也不知道。但那时的我对数据结构这玩意还是抱有满腔热情的,即便看清了生活的真相,我也有认真的学这门课。每次上课我就在后排静静地刷Leetcode,结课的时候差不多刷了有200道,考试的试卷也是半小时就写完了,没成想最后分数连80都没上。而且低分的不止我一个人,我们学校ACM队长wk也和我选了同样的课头,分数也不高,要知道其他班可是均分90+。数据结构这门课直接改变了我对GPA的看法,我理解到:给分这种东西是跟老师强相关的,有时候你学得再好分数也不一定比那些比你差的高。

说回「算法设计与分析」,上这门课的李春葆老师就非常靠谱了,他还是国内某著名算法书的作者之一。布置的作业也非常先进,都是从Leetcode上精选的真题,而非一些野鸡习题册上随便摘抄的题目。不过当时我对数据结构和算法的热情已经消磨殆尽了,所以刷的题目没超过他作业的范围。当时有不少人都准备找实习了,周围出现了一股刷Leetcode的风气。每次看到他们在群里讨论题目,我总是暗暗地想,自己确实比其他人走得更远一些。最后考试出的题目也非常有质量,不是数据结构那种一眼就能看出答案的,有不少题目我想了很久才想出来,还有些题目我虽然有了正确的思路,但是漏了些细节。因为我并没有投入过多的时间,这门课的成绩也是差强人意,最终并没有满绩。

计算机图形学

教我们这门课的是苏科华老师。这个老师也很有想法,别的老师讲图形学都是基于OpenGL,而他则是独树一帜讲WebGL。WebGL充分利用了Web平台的优势,有浏览器就能用,比OpenGL更适合入门。最后考试也不考具体的代码,就考一些图形学基本的内容,这下更有充分的理由选WebGL了。但他的课程有两个缺点:一是lab太简单了,THU和SJTU这些高校,选图形学的最后基本都能写个光追球出来,我也很渴望渲染出这样一张图片当我社交网站的背景,然而他课的lab是写谢尔宾斯三角形就戛然而止了;二是给分也不太好,很少有满绩的,想卷GPA的慎选。

俄罗斯历史

为了顺利毕业,我还差一门公选课,于是我就去供需群询问有什么公选推荐,给分无所谓,水就行。还没等其他人回复,wyn就私聊推荐我俄罗斯历史。这门课我最后是76分,是我本科所有课程的最低分。所以这门课还真TM符合“给分无所谓,水就行”的要求。

这门课水在老师是明确允许翘课的,你甚至可以全翘了,反正也不签到。我去上第一节课的时候教室里人满为患,后面几节课人就稀稀落落了。我看老师比较可怜,中途又上了几次,后来就再也没去过了,原因是我发现虽然没有签到,但是老师要大规模地叫教室里的人回答问题,而这些问题必须得是专心听课才能回答出来。有一次抽到我,我没回答出来,就再也不打算去了。

这门课最后要交一篇论文。文学这玩意我实在是不懂,所以我直接找了个文学院的代写,2k字的论文她洋洋洒洒地写了3k字,文笔看上去也很不错,至少比我自己写的好,没想到最后的分数还是这么低。其实这门课在上学期的时候就暴过雷了,原先这是一门给分很好的水课,但是在上学期,老师的态度突然发生了巨大的转变,给出了极低的分数,还有人匿名威胁老师说不会给学弟学妹推荐这门课。

如果想要在这门课上取得高分该怎么做呢?就我仅有的几次上课经验看,你需要坐到前排,积极地和老师互动。这个老师上课会带一个小本子,记录主动回答问题的人,可能这就是取得高分的秘诀吧。说实话我是有点佩服这群坐在前排的人的,他们不仅上课认真(这种课还做笔记),专业素养也挺好,各个时代的世界地图基本上是指哪答哪,这可比学计算机难多了。

前沿知识讲座

这是我最后一门跨专业专选,像这种名字比较宽泛的课一般都比较水,所以就拉上邹老板一起上了。主要内容是遥感的前沿知识,确实很水,最后只要交一篇论文,我便随便写了一篇遥感技术和计算机系统相结合的论文交了上去。我们学院对跨专业要求比较严格,带点计算机的基本上都不能算,而遥感和计算机关系又比较紧密,所以当初选这门课的时候我心还是挺悬的,还好最后有惊无险地算了。

多媒体技术

这门课平平无奇,没什么好多说的。选这门课的大多数同学和我的想法一样,那就是混三个专选学分。对我而言,它唯一有用的方面在于有了和TYTY吹水的资本(当时TYTY在给Mozilla和Chromium适配AVIF)。虽然有三个学分,但是难度不大,只是事比较多,结课是经典的大作业 + 考试。大作业我糊了个玩具级别的PNG编码器,虽然这个编码器从功能上看很简陋,而且性能上也没什么亮点,但是其他同学比我更摆,有不少只是复现了个压缩算法敷衍了事,对比之下我便满绩了。

嵌入式系统

你校计科专业少有的必修性质的体系结构课程。本身我在ROBOCON队里已经打过一遍嵌入式的基础了,上这门课基本上是复习学过的东西。而且我们这届嵌入式系统还是基于ARM的,刚好同时期我也在看ARM的书,对我而言上嵌入式甚至成为了一种享受。

这门课事也挺多,它还有配套的实验环节,因此在大三下学期开设大家意见很大,不少人认为这门课应该放到选修里面。实验的内容无非就是写代码、拷到板子上然后观察结果。然而你校实验课的质量一如既往的差,这门课也不例外。其实代码都已经给你准备好了,你只要会几个Linux命令拷到板子上即可。虽然我Linux只学到了一些三脚猫的本领,但是吊打大部分人还是没什么问题的。前几个实验我和yjx都是第一个完成,老师也给了A+的评分。最后一个实验是用PWM控制板子上风扇的转速,我发现原有代码中,不同电压下风扇转速对比并不明显,所以我精益求精重新写了一版:让电压随着时间变化,这样你就能明显地观察到风扇转速的改变了。等我写完时已经有很多人凭借着原先的代码走人了。验收的时候我原以为老师会表扬我们组,但是实际上并没有,评分也只有A,这说明老师评价的标准仅仅是速度而不是质量,后来的学弟学妹看到可以注意一下。

编译原理

上第一节课的时候我走错教室了,然后在那个教室碰到了一个可能是我见过的最严格的老师。在他那上课甚至不允许带手机,如果你想记笔记就写在纸上。我被他的气场震住了,所以在那呆了一节课。直到下课我才灰溜溜地跑到指定地点上课。

编译原理这门课本身没什么好谈的,各个学校讲的也都差不多。我们最后的大作业也是写一个编译器,但这个编译器简单到令人发指,它实际上仅仅是一个C语言子集的前端。自学过编译原理的人都知道,一开始会写一个计算器入门,可我们这个编译器连这点功能都没有,它只会打印源代码的AST。根据hw同学的情报,这个实际上是NJU编译原理课的lab1,我们武大编译原理的大作业竟然是别人学校的lab1,这实在是有点可笑了。

由于我深知这门课的重要性,看到大作业这么简单就想整点活。我们这个编译器的前端部分甚至不要求手写,你可以使用yacc和bison这种工具。既然都是使用工具那我为何不用现代一点的呢?恰巧当时我听闻有一个叫做Antlr的工具挺现代的,所以在征得老师同意后便用这个来写了。当然我们助教就不高兴了,毕竟最后测评我们作业的不是老师而是他,除了我(和被我蛊惑的舍友之外)大家都是老老实实用的yacc和bison。这导致评测其他同学的作业是很轻松,但是我俩的就很麻烦了。考虑到这点,我非常体贴地用Github Action写了一个issue bot,这下你连环境都不用配了,只需要提一个issue,贴下你测试的代码,机器人就能自动返回结果。但是这个助教不知道是不是不会用Github,他直接把测试的锅甩给了课代表。而课代表又竟然嫌这种方法麻烦,决定直接在我舍友的电脑上运行(因为我舍友也装了Antlr)。没成想他不会用maven,我的编译器根本跑不起来,于是我又做了一个Dockerfile丢给他,发现他俩还是不会用。没辙,我只好远程修改我的代码,最后总算是能跑了。不知道是不是受这件事情的影响,我编译原理的分数很低,只有81分。

色彩原理与应用

本科期间最后一门公选。这门课的点名很有规律,老师是按照学院点的,比如今天点动力与机械学院的,下一次就点计算机学院的。所以我在差不多点到信息学部的那几节课去上了一下,其他时候便没去了。

最后的大作业是写一篇色彩原理和本专业相结合的论文,之前dzy在群里吹水说他论文写的是前端设计和色彩的关系。我寻思着这个大作业反正也不查重,就写了点antd和Material中的设计思想交了,最后给分特别好,强烈推荐。

软件工程

软件工程也要交一个大作业,和其他大作业不同的它还要交一堆文档,谁叫它是软件工程嘛。之前JavaEE课程上我写了一个微服务,所以这次我就寻思着能不能写一个微前端。虽然微前端这种技术在我看来是纯粹的扯淡,但是架不住它唬人太猛了。当时我们组做的是一个网盘系统,我和lhy同学用Vue、React和Angular三种框架混写前端,在演示的时候把很多小白都震住了。

我们大四上学期还需要写一个大作业,你可能发现了即便到了大三大四,我们依然有这么多项目要写。这个时候很多人开始复用比赛和之前写过的项目,作为每个大作业都从零开始的人,我对这种行为是颇有微词的。不知道他们在同学面前一遍又一遍地介绍自己的项目时,内心是什么样的感受。


Copyright ©️ 2025 ShZh7