几周前从 MSRA 离职之后就开始了无所事事的生活,睡懒觉、玩游戏,不愿接受快要开始申请学校的事实。 大四之后就逐渐淡出于学校,每周只上一节课,以后还有个毕业设计,就要跟本科生活说再见了。 现在也是时候总结一下大学期间的经历,开启新的生活了。

高考结束之后,日子变得美好了许多,有了新的手机和电脑,更重要的是可以花时间做自己想做的事情。 现在已经不记得那时做过什么,只记得我的大学从军训开始。

我们这批 16 级的本科生被送到怀柔的基地军训两周,留下了一些痛苦的回忆。 基地的被子很脏,又不能自己带,只好去买床单被罩枕套三件套,给黑乎乎的被子蒙上一层布就勉强睡下了。 由于在郊区,附近有几座大山,那个时候雾蒙蒙的景色非常好,这也是唯一还不错的地方。 平时的军训很苦,不能带手机(在宿舍充电都要偷偷摸摸地),热水供应受限,只能在准点的时候有人送来热水,我们拿着盆、杯子、水壶出去接水。 洗衣服就更难了,现在不太记得如何完成的这项挑战,只记得要把衣服晾在宿舍外面的一个摆满了一排一排晾衣绳的广场,还好衣服没有丢。 每天早上(和中午)都会被一阵尖锐的哨声惊醒,带着一万分的不乐意还是要迅速起床并把被子叠好,冲出去集合。 怀柔的昼夜温差很大,白天被晒的死去活来,有一次晚上轮到我守夜,发了一件军大衣都觉得很冷。 食堂也很神奇,没有椅子,开饭的时候大家冲进食堂,每十个人围一个桌子,上面摆着一盆馒头、一盆汤,和几盆菜,听军官训完话后一声哨响,就开始抢饭吃了。 馒头和汤的分配很平均,不过肉菜就下的非常快,下手要趁早。 站着吃完后就拿着自己的碗去外面的池子里洗(后来懒了就买塑料膜贴着,吃完就扔塑料膜),大家轮流收拾桌子,最后排队回宿舍。 军训全程都是在为最后一天的 “阅兵” 做准备,踢正步、走方队、整整齐齐地在最后一天展示给领导看。 可惜我至今也不太清楚军训对个人来说有什么好处。

怀柔军训

军训结束后回到宏福校区上大一,现在宏福校区已经几乎废弃了,说起来我们 16 级还是最后一个在鸿福、沙河、本部都待过的年级呢。 大一的课程比较紧张,几乎每天都有课,那时剩下的时间大部分花在算法竞赛和享受人生上了。 学算法竞赛是因为觉得一直玩也不太好,应当做一些有意义感兴趣的事情,我又不是很喜欢交际与组织活动,就想办法提高自己的能力吧。 从刘汝佳的《入门经典》开始,后来就去刷 UvaOJ ,不过后来做了一百多题之后就慢慢弃坑了,因为好多人从高中就开始学,我现在跟他们竞争就很亏。 不过要是不从参加 ACM 比赛并拿奖的角度来看的话,提升算法能力带了的好处是很多的: 涉及到算法的课程比如计导、算法、数据结构都会变得很简单; 训练出的对时间和空间复杂度的敏感也会组织你写出很懒的代码; 最后找工作的时候还有很大的可能被问到算法题。

那时音乐游戏也占据了我很多时间——高二的时候有了自己的智能机 Galaxy S4 mini ,偶然的下载了当时刚出品的 Deemo 这款游戏,被它简洁优雅的界面、玩法设计和剧情吸引了,从此一直关注着这款游戏的更新,期待着新的剧情和谱面,还迷上了雷亚旗下的另一款音乐游戏 Cytus 。 后来高三时间紧张,而且在小小的 4.3 寸屏幕上玩它们的体验也不是很好,就没有再怎么接触过。 上大学有了时间,还换上了 5.7 寸的 S7e ,自然要弥补这份未被满足的欲望,入手了正版 Deemo 游戏,开始重温旧梦。 回头看看空间里自 2014 年一直更新到 2018 年的 Deemo 相册,也是自己对这份小小爱好的一种坚持吧,毕竟高中玩音游还可以像周围的同学炫耀各种技巧,大学只能默默地把 FC 截图一张一张放进相册,成为一名孤独的玩家(也是因为自己的水平没有高到在视频网站吸粉的程度)。

Deemo 截图

再去看看大一上的课程: 计导、高数、线代、英语,除了计算导论都是通用基础课,当然计导讲的东西也不深。 我喜欢的课都会去抢第一排坐,因为教室太大了后面又乱听不清楚,前面还方便跟老师交流,现在想想固定坐第一排还有一个好处是可能会有妹子注意到你hh。 高中的物竞基础加上认真学习所以高数和线代掌握得还不错,计导是有兴趣加上机试对算法竞赛来说很简单,而且笔试比较水,成绩很高。 上学期不错的排名使得我从网络工程专业申请并转到了计科实验班,实验班是北邮第一次搞,现在看来也是有利有弊吧。 大一下跟实验班里 37 名同学一起小班上课了,感觉也导致平时人脉圈子小了一些,不过班里的同学都很强。 看一下大一下实验班的课表: 集合论与数理逻辑、数据结构、电子技术基础、数学分析、英语、体育,也是计算机课学领域相对基础的部分。

实验班宣扬的改革是要缩减总学分,删掉无关的课并给我们专业方向更多的选择权。 许多别的大学也有类似的设置,这种安排也有它们的通病——改革之后的班级课程体系与普通专业相对独立,那么排名/奖学金等利益的分配就要单独考虑,因为分数不再可比,但是这些利益又是此消彼长的,会与普通班有冲突。 而且对于出国的同学也有麻烦:使用全专业的排名还是实验班班内排名呢? 在同样的付出下,在实验班得到的成绩比普通班少,因此使用全专业的排名并不划算,但是班内排名人数很少,研究生学校会怎么看又是个未知数。 不过对我来说,实验班最大的好处就是更多的资源。 因为是小班上课,而且大家都很聪明,老师不会因为照顾大班所有人的水平而放慢讲课速度或是降低难度,听起来还是很爽的(不过也因老师而异)。

初雪

大学也是我们第一次跟天南海北的人一起生活,北京第一次下雪的时候好多没见过雪的南方人都很好奇,甚至还会跑出去玩,我们就觉得很有趣。 宏福和沙河都很偏远,但是宏福的基础设施比沙河差得多。 宿舍里没有空调,在夏天简直难以忍受,只能在门头贴在墙上的小风扇的嗡嗡声中流着汗睡着。 没有自己的桌子也给生活带来诸多不便,现在还记得有一次买了汉堡和可乐回宿舍吃,不小心把可乐撒到被子上的尴尬场景。 令人开心的一个时刻是 2016 年的国庆节,我有了自己的笔记本电脑,顶配版 MSI GS63 。 这是我当时心目中最完美的笔记本, i7-6700HQ + GTX1060 + 16G 内存 + 256 SSD + 1 T 硬盘,只有 1.6 kg 重, 18 mm 厚,兼具游戏本的性能和超极本的轻薄,缺点就是经常上课的时候续航不太够用。 前两年还是能撑 4 个小时的,可能因为太过经常的带出去不插电使用,电池老化很快,现在只有一个多小时的续航了。

纸桥

参加过一个纸桥承重的比赛,给定数量的 A4 纸和其他材料,制作一个可以放尽可能多重物的桥。 跟朋友一起想主意,他觉得一张纸从正面去压很容易弯曲,但是从侧面压就相对结实,也就是说纸张侧面的承重能力比较强。 于是我们决定把纸张裁成很多细长的小条,摞在一起粘好,用侧面去承重。 想法很不错,不过制作是个苦力活,我们花了好几天的时间不停的裁纸、粘贴,最后做出来的桥面都不像是用普通纸做成的。 比赛现场我们的桥是最特别的一个,别人都是把纸卷成桶状,只有我们是四四方方粘成立方体的。 比赛时往桥上放了好多个杠铃片,快要有一个人那么高,然后桥塌了,最终好像是第三/第四名。 桥塌掉的原因是桥面制作有瑕疵,有一根粘的不齐,以及两侧的桥墩受力不均。

大一期间,一个号称是太空国家的组织, ASGARDIA 。 成立了。 他们致力于“为地球在外太空的实验研究搭建平台并建立世界首批太空舰队”(百度百科),当时我看到新闻很激动,觉得要赶紧注册不然以后去不了月球了。 成立不久就有很多热闹的事情发生,他向所有公民征集国徽和国旗,并且发动我们竞选成为地方的组织者。 ASGARDIA 还要发射自己的卫星,前十万名注册的公民都可以提交自己的照片和一小段话,卫星会携带着这些数据发往太空(已经忘记我提交了什么东西了)。 然而三年过去我都快把它忘掉了,也没有冒出什么动静,联合国尚未承认它作为一个国家的身份,更不要提殖民外星了。 不知道它能不能活到人类科学技术足以支撑它的目标那一天。

最后,在宏福还遇到了两次特殊天象,一次是 2016 年 11 月 4 日,号称 70 年来最大月亮(我很好奇 1946 年的月亮有多大,还是说再往前就没有记录了),还有一次是大一结束的暑假,有天晚上遇到了雷暴天气。 雷暴那次我很激动,因为以前没见过这种风起云涌夹杂着很多闪电的景观,就冒着风雨跑出去拍照录像,发了说说,有很多人点赞和转发。 这就是对宏福的最后印象了。

雷暴

大一玩过两款印象比较深刻的游戏, Undertale 与 To the moon 。 Undertale 是一个有不少玩法创新的像素风 RPG 游戏,里面塑造了一些非常有人性的 NPC ,像羊妈和 sans 。 整款游戏也因为对人性的刻画使人印象深刻(尽管游戏里除了主角都不是人),我现在还记得羊妈在攻击主角时由于不忍心,所有的攻击都是绕开的。 整体的配乐也很不错,是一个没有短板而且有很多创新的游戏。 To the moon 是一个精品小游戏,全程就是在讲故事,主角在一家修改临死人们的记忆让他们不留遗憾地离去的公司工作,进入别人的记忆中,经历并修改他们的记忆。 里面有很多唯美的场景,看到那些别人的经历也会让我思考人生的意义。

机场安检模拟器

大二的日子是在沙河度过的。 沙河有北邮三个校区最好的基础设施,因为它是在郊区建设的新校区。 宿舍是上床下桌四人间,教学楼比宏福宽敞明亮不少,还有很棒的图书馆(可惜我们快要走的时候才开放)。 17 年的暑假结束之后,回到学校开始了小学期,任务是计导的课程设计,题目是做一个机场安检的模拟器。 那时候虽然编程能力不强,但也有一些基本的审美,觉得老师建议的 C 语言图形库 easyX ,egg 不入法眼,功能少、文档少、用户少。 但是又只能用 C/C++ , Qt 又太大太重,于是决定使用 OpenGL 。 和室友一起笨拙地使用 git 管理源码,他们负责逻辑,我负责 UI ,我的部分写了将近两千行。 现在已经懒得去看那时的代码了,就当是积累经验的练习吧。 大二的课程涉及了计算机的主要领域,因此花了不少时间在学习上,大作业也比较有意思。 离散数学、概率论、物理还算基础,后面算法、形式语言与自动机、计组和课程设计、操作系统、嵌入式系统都是比较硬的课。

计算机组成原理的课程设计是我最得意的一个课程设计,因为在实验班,老师给我们自由,自己用高级语言写一个虚拟机,指令集不限。 我受同学启发决定写一个早期游戏机的模拟器,找了半天发现坑很多, Gameboy 的 CPU 就已经超出我一个人三周的工作量了,而且早期流传下来的文档不全,有些游戏还会利用机器的怪癖,因此坑很多。 好在最后发现了 CHIP-8 ,并最终实现了它,详情参见 CHIP-8 模拟器 。 我对图形有着天生的喜爱,看到埋头写了一两周的模拟器顺利运行网上下载的游戏的时候,心中非常有成就感。 本以为操作系统会有一些有挑战性的作业(比如自己写一个),可惜并没有,连课程难度都很水,让人失望,好在最后给分比较高。

机组课设: CHIP-8 虚拟机

大二结束时还有一门印象深刻的课程,是房鸣教授的 Java 与面向对象,房鸣教授已经退休了,被返聘回来给我们讲课。 他很会讲故事,说了很多他年轻时候的经历,辉煌的 IBM ,软件危机,还有国内教育落后,他们去接受国外老师的培训之类。 他还送给我们一人一张软盘💾,说是办公室留到现在的,据说那个时候装个系统要背着一大包软盘过去,一张一张轮流读入电脑才行。 摸着软盘能感受到数据的质感,为此我还专门买了一个 USB 软驱,虽然也没什么用(或许可以放一些彩蛋留给以后捡到我软盘的人?)。 可惜他教授的 UML 已经有些过时了,本身也不是什么优雅的设计,我对课程内容的兴趣并不大。

3.5软盘与USB驱动

有一个印象比较深刻的事情,就是我参加的两个大创项目都烂尾了,现在想起一个指导老师说的,你能把项目完整做下来就好,感觉太真实了。 那是大一的时候揽的这两个活,一个是做大学英语基础写作训练平台,一个是做用于保护隐私的虚拟号码,先说第一个吧。 大一的时候在英语三年级班,老师想找几个人申请做一个英语自动批改平台的网站,也是为了德育分吧,我就作为主要负责人加入了。 之后要操心很多事情,包括开题报告、定级报告,还有中期检查。 半个学期过去了,我们小组把网站的架构都写得差不多了,老师还是没有给我们提供数据,成为了项目的拦路石。 靠着一点框架撑过了中期检查,我受不了拖延的老师了,跟组员商量过后决定申请取消这个项目。 大创的各种汇报真是很麻烦,就连取消都要交一些表,神奇的是我跟英语老师商量取消,她同意之后还向我道了歉。 另一个项目是基于虚拟号码的隐私保护平台,像人们临时停车时要把电话贴在车窗上,方便需要挪车的人联系到自己,这时就可以放虚拟号码来保护自己的隐私。 这个主要负责人是一个朋友,我感觉是因为难以落地(要联系运营商、推广,而且后来好像支付宝上有类似的软件了),最后不了了之了,没有申请终止项目,也没有去结题答辩。

大二也参加过一些活动与比赛。 去福州参加了 CCSP ,拿到了铜奖(跟竞赛选手比还是太菜了),感觉这种涉及到计算机系统的比赛比纯粹的算法竞赛更有意思,有一道题是让你写一个部分 lisp 语言的解释器,还有想办法加速卷积运算的速度。 过年的时候打了数学建模美赛,跟队友在天津住了三天民宿,记录在 第一次数模美赛经历 。 还参加了校内和北京市的物理竞赛,拿了一等奖,大物满分,挺开心的。

演唱会

17 年还去天津看了张学友的演唱会,并顺便在天大和南开转了转。 高中时期听了很多张学友的歌,虽然现在听的不多了,但也算了却了一桩心事吧。 还花了一段时间研究并写了一个 Minecraft Mod ,用的是 Java 和 MC Forge ,一个反编译 MC 并创造了一套接口的库。 说实话, Java 语言和 MC API 的体验都不算好,微软的基岩版和 JS API 给人的感觉要舒服的多,可惜 Java 版的生态已经建立起来,太多 Mod 是用 Java 版写成,积重难返。 不过作为游戏最重要的还是玩家体验,对我来说,能够通过编程控制这个世界是一件很精彩的事情。 我实现了一把一击必杀的剑、一个瞬间挖掉周围 10x10x10 范围所有石块的镐,并实现了无限二段跳( N 段跳)的能力,一开始还因为跳太高摔死了,只好取消跳跃的掉落伤害。 在带着这些自己实现的游戏元素通关之后,对 MC 的兴趣就告一段落了。

Minecraft: 终末之诗

双十一的时候入手了 ipad pro 10.5 ,当时的主要目的是打音游,正好宿舍还有桌子。 在 ios 上买了 Deemo 和 Cytus ,并且都刷到通关了,当时还出了 Cytus II ,貌似现在还在更新,不过曲风不太对口,通关当时的剧情后就没再刷。 ipad 的大屏非常适合音乐游戏,两只手都能施展开,像 Cytus 这种游戏在小屏幕上只能用两根拇指实在很憋屈。 现在想要把 ipad 当作生产力工具的时候却发现它的系统太过封闭,对程序员还是太不友好了,要是能选,现在可能更倾向于同等级的安卓平板。

大二结束的暑假,包括我在内的一批人由北邮公费送去剑桥大学学习两周,这是我第一次出国,具体内容在 剑桥游记 。 回来之后,就把重心放在 GRE 和托福的准备上,这个过程还是相当痛苦的,背单词、刷题。 前前后后准备了大约三个月,考 GRE 第一次就够用了,有 326 + 3.5 。 之后又花了一个多月,在 GRE 的基础上准备了一下托福,也是一战就够用了。 英语花了大三上的不少时间和精力,好在成绩都出的比较快,没有要考很多次的折磨。

最后,放一张沙河校区霓虹的景色作为大二阶段的收尾吧。 手机的全景拼贴效果不太好,只好将就一下。

霓虹,有两圈哦

大三开始就回到本部了,被分配到的宿舍条件很差,八人间上下铺,没有独立卫浴还很小,好在还有空调。 实验班的课都被排在设施精良的多媒体教室,让人开心。 临近出国申请,也开始重视成绩了。 可惜偏偏在这种时候遇到一些凭心情打分的老师,导致我的软件工程和研究生课程成绩惨不忍睹。 不知道是我运气不好还是老师被要求怎样,这些事让我觉得北邮不是一个值得尊敬的学校,不过北邮只是一个虚拟的人格,还是说那些老师没有师德吧。

这一年做的事情主要有三件,上课、英语和实习。 感觉还不错的课程有计网、编译原理和数据库,其余的如系统结构、软件工程、图论之类,只能说知识是有意思的,可惜被老师的教学毁了——如果说教育的意义是激发学生的兴趣的话,这些人适得其反。

计网老师是个亲切的山东大汉,本身的技术水平也很不错,自己写了一个实验框架,让我们自己设计协议包格式,比谁的鲁棒性更强。 可惜计网大纲上零零碎碎的知识点太多,导致教学内容比较乱。 编译原理听起来很舒服,感觉上学期的形式语言与自动机没有白学,老师也带着我们走过几类分析方法的流程, LL , LR 之类基础且精妙的算法,最为以后自学的基础还是很让人满意的。 教数据库的邓芳老师我很喜欢,上课思路清晰,干脆利落,对关系型数据库的方方面面有了比较完整的介绍。 后面数据库的小学期也是针对实验班开了一个可选项: 以前是做一个用到数据库的 Web 系统,现在可以选做自己写一个数据库。 我很喜欢这个 idea ,提前很久就开始自己写这个东西,肝完了 SQL 解析、 UI 界面、物理计划生成与执行的部分。 后来小学期和室友一起进行完善,添加了对事务的支持与基于日志的回滚。 就算有我前面的基础铺垫,到小学期结束的时候还是有点要崩掉的感觉,截止日期前一晚还在修 bug 。 主要原因可能是我一开始接口与架构设计的不太好,虽然对我当时的功能够用了,但是加上事务和回滚就需要一些 hack 。 两周时间也不够重构,只好将就一下了。 好在最终跟老师演示时没有出问题,也把过去做过的一点一滴全部展示了出来,非常有满足感。

这里想提一下成绩的问题,大学上到现在我遇到很多次在自己的喜好与更高的成绩之间选择的情况。 比如数据库课程设计,我花费了至少两百个小时的精力才做出自己满意的结果,老师很严谨、要求高,还是给了我 97 分。 相比于选择了计网课程设计的同学,只要十来个小时不到,写一个 DNS 服务器,就能水到将近 100 分。 这样的事情还有很多,像是公选课,是选择自己喜欢但是给分低的课程呢,还是非常无聊但是给分高的呢,两者兼顾的课可谓少之又少。 前几日看到论坛有人发帖,问在喜欢但工资低的工作岗位和不喜欢但工资很高的岗位如何选择,题目就叫"年轻人的技术理想值多少钱?"。 他说的跟我提到的困境很相似,自尊和探索精神驱使我选择更有挑战性的课程分支,但是这些自己的情绪,又能值多少分呢? 可能不像工资高低那么直接,但是成绩好坏也会影响到后来申请研究生学校的质量,间接地影响工作岗位。 对现在的我来说,成绩的决定性作用比高考那时弱的多,因此我更倾向于选择更有挑战性,自己更喜欢的路线。 就算其他同学轻轻松松可以拿到更好看的分数,我也不后悔,因为这才是我心目中的计科学生应有的水平。

大三一年我开始比较急切的找实习,主要目的是为了申请出国时的推荐信和丰富简历。 我的第一份实习是去剑桥时的带队老师那里的,北邮 PCN&CAD 实验室(我至今不知道 PCN 是什么意思),和一个学长一起做一个手机相册中人脸聚类的项目。 可惜带我的学长水平很厉害,我做的事情并不多,他就把项目做完了,难得体验一把带飞的感觉。 后来也没有明确地跟老师道别,也没有再去那边。 第二次是北邮的体系结构实验室,导员给介绍的老师,一开始以为是基于图的深度学习,后来发现只是预先调研,我负责流线分割的部分。 这个领域比较小众,因此我的入门之路也很坎坷,要用 python 调用 VTK 的接口,读取流线,处理后再用 VTK 显示出来。 VTK 是一个 C++ 写的数据可视化库,集成了很多算法。 它的接口高度面向对象,文档虽然多,但在我的这个方向并不是很全。 我觉得它有些过度设计了,和 python 的思想有天壤之别。 然而可视化大量流线还就只能用它,因为它性能好,别的库都吃不消。在这里积累了一定量的代码基础,开始对流线的分割方法做创新,但是做着做着我发现好像我们的 idea 和别人的没有本质区别,这个领域也没有公认的 baseline ,就开始有些迷茫。 大约这个时候我找到了 MSRA 的实习,时间变得非常紧张: 早上八到十点上课,然后跟学校实验室老师汇报,然后赶在十一点前到公司开会,晚上八点下班。 过了一阵子有点吃不消,就离开了学校的实验室,专心实习了。

在 MSRA 一共呆了六个月,做的方向是通过强化学习进行网络带宽估计。 组里 intern 之间的氛围很融洽,每天一起吃饭闲聊。 感受最深的是身边的人都比较厉害,比如我来的时候快离开的一个北航的学姐,拿到了 CMU MSCV 的 offer ,还有身边的 intern 多是清华北大之流,还有不少科大的联培博士。 跟这里的人接触也让我了解了博士们的世界,我原本很坚定的要读硕士,现在有些动摇了。

有一件神奇且幸运的事情,就是我在大二期间加入了一个叫易班的组织,当时最吸引我的是去了可以使用沙河校区的一个超大活动室,还有电脑、显示器可以用。 大二期间给它开发了一个叫帮帮忙的 app ,大家能够发布需要帮忙的事情比如代取快递,并设置奖励,其他人可以接受、完成任务并获得奖励。 可惜后来重整易班的项目渐渐烂尾(人们总是这样),这个 app 也不了了之了。 回到前面,活动室的使用权,放在有上床下桌的沙河校区这不算什么了不起的,顶多就是多一块显示屏,工作环境好一些。 但是让我没想到的是回到本部之后也有一个类似的活动室,是北邮人团队、新媒体团队和易班共享的,地方大、平时人也不多。 这在宿舍没有桌子,日常找不到自习教室的本部就显得尤为珍贵了,不在 MSRA 实习的日子里几乎天天都在那里呆着,是一个远超出预期的投资回报。

大学的生活就快要结束了。 记得有人说,教育的意义是激发学生对学科的兴趣,还有人说,大学的意义是帮助学生找到人生的方向。 从这些角度来说,我的大学是圆满的。 在过去的三年里,我从懵懵懂懂的高中生进步了许多,我学会尊重每一个个体,多一些理解,少一些评判。 我相信就算宇宙中的一切都是没有意义的,也要赋予身边的一切我所感知的价值,为生命中的美好而活。 可能我对这个世界的认知会不断改变,但是永远可以信赖的,是不变的逻辑准则,是自己锋利的思维。 高考让我抛弃了高中时代迈向大学,现在似乎缺少一个仪式来步入下一阶段。 这篇总结就是对过去一切的纪念,也是大学之后新生活的开始。


Blog Comments powered by Isso.