Skip to main content

毕业:谈谈我,计算机和哈工业

· 25 min read
Ferdinand Su

我在等待实验结果。或许躺在床上摸🐟,或者陪陪object都是这时不错的选择,但又突然想起来许久没有(公开)写东西了。 只关心大学的计算机学习和哈工业的建议跳过第一章

童年:上大学前的我

启蒙

我第一次接触编程,是在小学机房的电脑上。在大庆这种偏远地区的一般小学,老师当然没有教我们什么,只是我一不小心,点开了桌面上的一款软件,就打开了未知世界的大门。 Visual Basic确实是那种很适合初学者的语言,或者说直接往窗体上拖按钮,是很适合小学生的编程方式。 在互联网上若干教程的帮助下,我认识了整型、字符串、过程、方法。虽然VB6,或者说VB98,在当时那个年代已经是很过时的东西了,我还是要谢谢它对我的启蒙。

幼儿园的科技树

小朋友学习编程能是为了干嘛啊?当然是为了做游戏啦。那是个儿童页游很火热的年代,基于Flash的奥比岛、摩尔庄园、赛尔号之流就是小学生之间谈论的热门话题。那时的我, 和很多人一样,也会幻想着能做出一款热门游戏。那时候我也学了Flash,好在并没有在Flash这个深坑里投入太多精力。

我那时候的游戏都是用Visual Basic做的一些奇怪的尝试。虽然我没有弄Flash,但是却觉得ActiveX挺有意思;现在看来,ActiveX、Flash、Java小程序之流都应该丢进垃圾桶里面。

除了Visual Basic以外,我还试图挑战和它名字很像的Visual C++(VC6),毕竟只差了一个字母嘛(笑)。当时我一直不理解,为什么VC写出来的程序就是个黑框。 不过,学习VC6(或者C++)的教程上的理论知识,确实帮了我很大忙。我面向对象(object-oriented,OO)编程的基础就是从那个时候开始打下的。 有趣的是,VB6并非真正OO的语言,因为它不支持继承;同时,C++也并不是一门好的OO语言,因为它允许了多重继承和private继承(至少我这样认为)。

鸟枪换炮

VB6当然是干不成大事的。那从VB6升级到什么语言呢?当然是VB .NET(VB 7+)了。然而,VB.NET的核心早已不是VB,而是.NET。 在那时,甚至到今天,所有的Windows程序员都会赞叹.NET的强大和便捷。不过那时候的.NET还是闭源的(笑死)。

那个时候.NET的重点似乎还是桌面开发,关键技术是WPF。WPF是个很有意思的东西,使用XAML把界面设计和代码工作分离开,就和今天的前端设计差不多吧, 当时的WPF编程经验,就为我现在的前端能力打下了一定的基础。

接触了.NET,自然就也会我命中注定的编程语言----C#。我的C#实际上是参考C++的教程学的(C++:最终还是错付了),因此其中的小科技树其实点的很歪......

总之,在上大学前我掌握了以下能力:

  • 类型系统:能区分、灵活运用和转换字符串、整型;OO的基本概念和原理
  • WPF和基于描述语言(Markup Language)的界面设计能力
  • VB,C#的基本功能,C++的基本语法(基本只会写Hello word和简单的算术运算吧
  • Visual Studio的使用

尚未掌握:

  • 异步和并发的编程能力,OO的精髓和设计模式,位运算等比较底层的编程技巧
  • Git、命令行本身、markdown等基础和必要(build-essential?)的工具
  • 使用Github
  • C with Class、C#和VB以外的任何其它编程语言
  • 任何其它开发环境

哈工业的计算机课程和我的课内学习

懵懂的大一上学期

18级是哈工业最后一届正三色旗老计院了,又是计院和英才“双重管理”,虽然很多时候觉得混乱,但好在比较自由。 18级英才计院为计算机类大一上学期设置的课程是(☀表示比较有意义,⭐表示英才独有,🌕🌑表示和普通班同名,但是内容不同,晦明描述难度增减,后续同粗体表示考试课,斜体 表示不太重要或者大部分人用不上, 删除线表示意义不大):

  • 军训及军事理论:不多说,懂得都懂。军训的时候按照的计院分的自然班顺序,和后来上课时的英才教学班完全不同;军训的班还把女生拿出去了,非常痛苦
  • ☀计算机专业导论:战神说了,不叫大计基(为此还把我批判了一番)。上完大学觉得这门课挺好的,可惜当时听的不是很认真
  • 🌕高级语言程序设计:后边细说
  • 综合英语:yc是考试课,我参加了强化班免修了
  • 生命科学基础与应用 :填空题:21世纪是____的世纪!
  • 🌕微积分A(1):对大部分计算机人而言,主要作用是稳定学分绩。不过卷一卷90+很容易的(甚至根本不用卷)
  • 🌕☀代数与几何A:A很难,但是真的有用
  • 🌑思想道德修养与法律基础:英才是网课+小班讨论
  • ⭐哲学概论:作为哈工业少有的优质人文类课程,《哲学概论》对我影响比较大,或者说田径老师对我的影响比较大
  • 体育:常年60多飘过,笑死

大一这一年学的废物课是最多的,学分占比超过50%。其中sdl的高级语言程序设计处于有用和没用的叠加态。有用体现在确实写了不少代码,一定程度上训练了C语言能力;没用在讲了一堆实际上用处不大的算法内容, 同时课上的代码风格也非常非常差。我当时写C用的IDE是Visual Studio,得益于它的帮助,我少走了不少弯路、减少了很多痛苦。这门课还差点把我拐进ACM的阴沟,具体情况我放在了下一章。

我翘掉了这学期的大部分课,因为上午(甚至一些下午)起不来,当时的室友打游戏会玩到很晚...... 不过思修的小班讨论、计算机专业导论的翻转课堂和高级语言程序设计都是全勤,哲学去的比较多。当时我甚至很喜欢sdl。

YC当时的英语强化班政策是,参加英语强化班可以免修大一大二的英语课程,周一到周四晚上各一节强化课训练听说读写,用雅思/托福成绩折算免修成绩,同时给报销一次考试费用。这些强化课程的内容呢, 我觉得除了口语课(外教)和听力课都没啥用。考勤很松,实际上后期我翘掉了除了口语课以外的大部分课程。最后的托福成绩为我当年夏天的出国交流提供了重要保障。

入门的大一下学期

18级英才计院为计算机类大一下学期设置且被我选择的课程是(包含了若干小学期的课程):

  • ☀集合论与图论:计算机最重要的专业基础课之一,现代计算机科学的基础。姜守旭老师还是当时小班行请的老师,他本人对我(们)的影响也很大
  • 数字逻辑与数字系统设计:计算机版数电,最没用也最浪费时间的课程了,实验全是自学,学起来很痛苦,英文授课,老师讲的很差,我基本没去过
  • 电路D:计算机的外专业课之一,算是比较水的,虽然没啥用。不过既然都没啥用,为啥不选更水的遗传学呢?
  • 学术英语阅读:yc是考试课,我参加了强化班免修了
  • ⭐学术英语强化训练:外教课,Garrick老师上的,挺有意思的,虽然真的不知道学了啥,但是也真的挺有意思的
  • ⭐文学名篇名著赏析:yc给选的选修,老师讲的挺好的,但是有时候我会因为~~数字逻辑与数字系统设计~~实验写不完翘掉(笑死
  • 🌕微积分A(2):没啥用,但是我免修了,只打了80多,但是后来发现大部分学了一学期的人也只打了80多
  • 形势与政策:懂得都懂
  • 🌑中国近现代史纲要:历史还是要学的,yc仍然是网课+小班讨论的形式,因此这也是唯一一门MOOC考试课
  • 体育:懂得都懂
  • 🌑~~大学物理A(1)~~:虽然完全没用,但是它水啊,张冰老师就是我的神
  • 基于.Net平台的软件开发:小学期五选一之一,五选一讲的都是过时技术,我建议随便选一个然后自学
  • 专业解读:没啥用,因为老师解释了还是不懂(我建议改成让对应专业的学长学姐来讲呢
  • ⭐🌑机器学习:yc组织出国交流互认的课程,导致我至今不会机器学习的罪魁祸首,只能说玩的很开心 idx 大一春夏我过的很开心,认识了一群很好的朋友,其中就有对我在技术上影响最大的人。在二区图书馆,我留下了珍贵的回忆。

不过这学期没用的课是真的多,尤其是~~数字逻辑与数字系统设计~~,既没用,又费时间。这门课是我大一下耗费时间最多的课。也是翘课最多的课。

这学期的课我去的还挺多的,大学物理基本全去了(虽然它们在上午),主要是张冰老师人比较好呢,上她的课比较开心。这学期我印象最深的是上完课直接去看电影那一次,因为老师总是会提前一点下课, 所以我可以在早八后去看十点的《波西米亚狂想曲》。Queen的歌对我影响很大,间接使我入坑了JoJo,不过那是题外话了。

五月份的时候还去参加了中国图灵大会,约等于公费旅游,不过还算是听懂了一点东西吧,当时以为每年都能去一次

姜守旭老师的集合论对我而言是这学期最重要的课,我对计算机科学的真正理解和入门就开始于他和这门课,因此无论后面的人如何评论他,他都是我大学期间最尊敬最喜欢的老师之一。 认清ACM和sdl也是这学期,某件事之后我对XCPC比赛和sdl非常反感,并在往后的日子里始终进行劝退。

高歌猛进的大二上学期

18级英才计院为计算机类大二上学期设置且被我选择的课程是:

  • 数理逻辑:挺有意思的一门课,它最大的现实意义其实是逼我学会了Markdown
  • 计算机系统/CSAPP:计算机最重要的专业基础课之一,真正的C语言课,谢谢WSL 火炬 博客
  • 数据结构与算法:当时老师没有限定语言,因此直接催生了MobileSuit这一利器
  • ⭐国际交流英语:免修
  • 沟通与交流:yc给的选修,没啥用,主要是因为yc的男女比太夸张了......
  • 概率论与数理统计B:有用也没用的课,很后悔没有听🍐🐲🔒老师的话......虽然最后分都很高(
  • 毛泽东思想和中国特色社会主义理论体系概论:毛泽东思想就一点,笑死了
  • 体育:......
  • 🌕大学物理实验A(1):当然没用,不过考试有手就能过;选实验的时候记得优先选电学和光学的

仍然是出勤率比较低的一个学期。因为很多课也都没啥用。

数理逻辑这门课中规中矩吧,算不上有用也算不上没用;概率论这个课,其实还是很有用的,但是考察的重点很奇怪,考计算和脑筋急转弯,这不就没意思了? 说起来这门课的老师🍐🐲🔒老师比较古板,不让我们上课玩手机,所以我一共就去了半节课,不过我得承认我做的不对,因为学生确实应该认真听课; 数据结构与算法对于大部分人而言,难点其实在不让用C以外的编程语言,但是我们老师让用其它语言,我直接上C#,那自然是非常轻松, 顺便开发出了一个轻量级的命令行框架MobileSuit。☀计算机系统/CSAPP则是最重要的专业课,算是正经的计算机系统入门吧,那本书写的真好呀。

最漫长的寒假暨大二下学期

18级英才计院为计算机类大二下学期设置且被我选择的课程是:

  • ⭐学术英语听说:免修
  • 近世代数:有一定意义的离散数学课 博客
  • 算法设计与分析:最难最恶心的专业课,还算有用,但是考核很奇怪 博客
  • 软件构造:工业大学提供的最有价值课程之一
  • 形式语言与自动机:很重要的专业课。sdltql。
  • 计算方法:数值分析。就是求复杂表达式的数值解,还算有点用,而且修完了研究生就不用学了。 火炬
  • 心理与心理健康:yc给的选修,没啥用
  • 信息安全概论:有点用,讲了些常见的安全漏洞,对我影响很深
  • 马克思主义基本原理概论:懂得都懂
  • 德国文化入门:我自己选的选修,老师很好
  • 大国兴衰规律与中国崛起:我自己选的选修,老师很好,助教很美(?)
  • 体育:线上课,爽死了
  • 独立学习与技术交流:一点也没听,不知道讲啥了
  • 领导力训练:PUA训练(?),没啥用的水课;任务是邀请老师来讲座,结果只锻炼了组长的领导力,乐

2020年春节,新冠疫情开始,持续至今。古人云:大疫不过三年。希望早日结束吧。伴随新冠而来的是七个月大寒假,这段时间比起计算机科学与技术上,我学习更多的是厨艺(论如何在家呆着不被赶出去)。 因为都是线上课,学习效率懂得都懂。⭐心理与心理健康,计算方法和近世代数几乎完全没听。 不过计算方法和近世代数算是有点用的工具课。

这一学期其实是最重要的一学期,☀软件构造,☀算法设计与分析和☀形式语言与自动机都是非常重要的专业课。 英才的☀软件构造和软件学院同等配置,由rainywang亲自传授。这门课学习OOP和JVAV, 是工业大学的课程里唯一专门训练代码能力的课程。虽然JVAV很垃圾,课程还是好的;而不出意外的话,明年我会成为这门课的助教。在这门课我移植了MobileSuit到java平台(JMobileSuitLite),并创建了本博客。☀算法设计与分析非常的难(是我分数最低的考试课),由时任英才院长zhwang亲自传授。课上算法思想和基础知识讲的很到位,但是写算法能力的训练其实还在自己。期末考试题出的非常恶心,给分也低。☀形式语言与自动机由sdl亲自传授(今年的他给分居然很高)。如果这门课学不好,一年后的编译原理会让你倍加痛苦,好在它的难度不是很大。

小学期三门必选中的两门独立学习与技术交流领导力训练是真正意义上意义不大课程,还好在线上不用听。

夏季学期结束时分流到方向,我选择了B1:计算机科学与技术/自然语言处理;请注意,18级的NLP是计算机科学与技术专业下的方向。

忙碌的大三上学期

18级计部为NLP方向大三上学期设置且被我选择的课程是:

  • 习近平新时代中国特色社会主义思想专题辅导:dddd
  • 计算机网络:重要的专业课 火炬 博客
  • 认知神经科学原理:专业选修。马老师人超级好!
  • 演化计算:国际化课程,外教课,很水 火炬
  • 自然语言处理:NLP专属专业课,这门课上我遇到了工业大学里最讨厌的老师ymy 博客
  • 视听觉信号处理:CV专属专业课,我是选修 博客
  • 生物化学B:外专业课
  • ACM图灵奖与计算机科学简史:素质选修,挺有意思的
  • 基于大数据高级数据结构与算法的设计与实践:创新实验,挺有意思的,也很有用,老师人也不错

这个学期是我上课最多的一学期。值得翘的课比较少,我也没什么翘课的原因。或许是因为太久没能坐在教室了吧。

旅游的大三下学期

  • 数据库系统:重要的专业课,老师讲的极差(似乎是深圳校区的普遍现象 火炬1 火炬2 博客
  • ⭐分布式系统:工业大学提供的最有价值课程之一,老师讲的不错 火炬 博客
  • 歌曲演唱:我自己选的选修
  • 短期实训:找个实验室/公司写代码

这学期我去深圳校区旅游交换了。

实习非常不建议去学部安排的几家公司,事多还不给钱。找得着的就去企业,不想去企业或者没找到企业就随便找个老师打工,也很轻松的。

伪研究生的大四上学期

  • 语言与认知:NLP专业课,全程不知道要讲啥,再遇ymy
  • ⭐矩阵分析:研究生课,线性代数Pro Plus 博客
  • ⭐高级数据库:研究生课,数据库Pro Plus,战神亲自传授
  • 毕业设计:论文

这学期先修两门研究生课

伪大三的大四下学期

  • 编译系统:专业课,其实没啥用 火炬 博客
  • 信息检索:NLP专业课,比较有用。赛尔号的🐙老师亲自传授 火炬 博客

这学期补修本部大三下的两门课,剩下时间忙毕设

累了,以后哪天再心血来潮了可能会为后几个学期多补充一些内容吧(话说我不少课程的开源代码还没加过来呢