我们死在热情之前(节选)
本文节选前几天写的德育报告文中对于学术回顾的部分。那篇文章原标题是《如何毁掉当代大学生》,不过同学们一致认为太爆了,所以换了名字。那篇文章的主题大概就是吐槽人都对事物漠不关心导致世风日下之类的,有些幼稚,而且涉及的比较多,就不全放上来。
学术
我在大学期间学习了相当多的知识,但是众所周知,大学的学习包括课程,自己找的活和基于兴趣的自学。很不幸,课程内容占比极低。但是,既然是对大学生活的总结,我要总结这三年来的大学课程。
大学三年中,学校的课程总结,我将其归类为:大部分课程无效,部分必修课程有点拨作用,少部分课程有益,极少课程有用。同学们应该曾经听我吐槽过这句话“偌大一个985大学,竟教不出一门有用的课程”。我作为一名略有基础的计算机专业学生,只能对北理工的课程安排感到失望与绝望,在这种课程安排下学习的零基础学生,是绝不可能成为行业中能够拥有能力的人才的。
下面来以具体课程为例来讲解。
先来谈论一下明显为无效的课程:首先必须指出,我对类似工科制图,数学和物理的课程并不抵触,因为这些课程对于培养任何一名工科学生的(工程素养)都是非常必要的,尤其是工图和物理实验的课程,非常有助于学生理解熟悉工程的概念。非常可惜的是,这种对基础能力的培养也仅限于这些课程了,丝毫没有延续到更加重要的,真正的计算机科目的学习,这令我感到非常可悲。即使抛开以上,这些基础课程仍然是对未来的学习必要的。
无效课程,例如网络与通信、计算机组成与体系结构、物联网安全与隐私保护等。这些课程要么教授及其过时(上世纪)的内容,要么就是和其他的课程内容完全重叠,还有部分授课者水平完全不达标,完全没有学习的必要性。
有点拨作用的部分必修课程,特指大一和大二时期的部分编程课。这些课程的确可以算作对零基础学生的编程入门,但是就其实际的授课效果来看,收益及不理想。这些课程的内容主要以在乐学平台刷题为主(即俗称的刷OJ),高度依赖题库训练,缺乏系统讲解与原理梳理。换言之,这些课程是彻头彻尾的“应试教育”,只需要知道怎么做题,不需要掌握编程原理,不要求掌握问题建模、程序设计等基础思维,说句难听的话:这是我初中时被拉去打信息竞赛时做的事情,这也是我初期开始对大学授课产生怀疑的地方。而教授们普遍对学生实际水平不关心(这不能怪罪教授们,因为学生众多,不可能去具体考察每个学生的实际水平),但是可以明显看出,这些问题在很长的一段时间内都无人在意,许多OJ中有问题的题目甚至是10年甚至13,14年前的老题目,不知道有多少人曾和我一样对这些题目产生异议,但结果呢?我还在这种失败中上课,这就是结果。

有益的课程,可以大体分为三类。一种是内容有益,但技术细节太过过时,例如数据库课程,我非常认真的上完了该课程,但在之后的作业里,我发现该课程几乎只有理论部分仍在通用,而具体的技术早已更新迭代。我在和LTSlw同学开发后续课程的作业,需要使用除去MySQL以外的数据库时,才意识到学习的内容早已不再通用。另一种是内容有用,但过于空谈理论,不切实际。以“数字图像处理为”为例,同名的课程,我浙大的同学和我均上过,鲜明的对比令我留下深刻印象。浙大的课程,课上讲解理论,课下进行实操,在对图片的实验中理解算法理论,而我们的课程呢?几乎仅仅停留在了理论阶段,整个课程的作业和考试部分甚至没有出现任何一张图片,更无需谈论算法理论的实操了(番外:这门课程甚至不允许写题解博客,因为分数是从OJ里直接出的,要“防止作弊”,要知道这是一门“重在实践”类的课程,对于这种课,最最重要的就是彼此间对对方的问题进行经验的共享,这不仅是一种学习氛围,更是计算机学界近百年来得以流传和进步的关键,而这种有益的想法,却妄图要在极端压抑的氛围中被扼杀,令人心碎)。




而我们的作业长这样:

最后一种是拥有操作,但囫囵吞枣,重点不明,不考察技术实际水平。典型案例:小学期的Qt实践课程。没有课程内容,只有两周的时间自学并且搓一个所谓的“车载系统”。为了实现两周的时间让人自学Qt并且搓一个应用出来,这个“车载系统”里甚至只要求必须有个视频播放器和音频播放器。在最终的答辩打分环节,令所有人都诧异的事情是,车载功能全面完整并不能拿到高分,而是界面美观,“咋一看很唬人的”作业能够粉饰太平(亲眼所见:某对着黑屏部分表示“你想象一下这个部分长什么样”和切换功能需要把车熄火再打火的小组拿到了和我组不相上下的分数,而LTSlw同学的小组使用了Qt较新的qt quick,并且功能完善也获得了相同的分数。不禁令人怀疑授课者真的懂他教的东西吗)。并且这种课程往往设置一个装模做样的“互助打分系统”,让学生之间互相给出一个分数,作为最终分数的参考。稍微思考一下就会觉得可笑:2025年了,竞争如此激烈,这不是一个零和问题吗?
对于有用的课程,只能列出三个:操作系统(陆慧梅),安卓和web开发(均为金旭亮教授的课程)。因为只有这三门课程从技术的发展出发,在教授具体的技术的同时,鼓励用最新且通用的技术来完成实际的作业。可以说是我在大学中从大学学到东西最多的课程。
综上,BIT的课程设计,有如下非常显著的问题:
其一:课程安排极不合理。
来看看我们专业的教学计划吧,仅限计算机专业相关:
- 大一上:计算机基础
- 大一下:C语言程序设计
- 大二上:数据结构与算法设计,程序设计方法与实践,离散数学
- 大二下:数据库原理与设计,知识工程,网络与通信,数字逻辑
- 大三上:计算机专业基础实习(小学期),物联网应用系统开发与实践(小学期),操作系统,汇编语言与接口技术,计算机网络与工程
- 大三下:略
很明显就能发现一些问题:
- 计算机专业最重要,也是最难掌握的三门课程(操作系统,汇编语言,计算机网络),汇聚在了同一学期内。这种安排,不仅仅是在其他学校闻所未闻,更是在北理工其他专业都绝无二例的存在。尤其是计算机网络课程,作为大部分实操课程的前置课程,居然放到了大三上如此晚的一个时间点(我认为应该在大一下就学习),这也引出了接下来的问题。
- 部分课程前后矛盾,内容覆盖。以计算机网络为例,大部分同学在大一大二为了完成实践性的作业,基本都已经完成了对网络部分的学习。而教学安排上在大二下安排的网络与通信,恕我直言,完全是一门无意义的课程(参见上文)。
- 以上两个问题,仍可以算作是“不合理”的范畴,但接下来的问题,不只针对BIT,更是全国教育的通病,即完全没有对计算机素养方面的培养。来讲一个地狱笑话:《The Missing Semester of Your CS Education》。是的,我们的计算机教育没有任何关于计算机这些最基础的部分,相当于我们都没有告诉孩子怎么握笔写字,就开始让他刷题。name1110同学曾经吐槽我带过小组的一个留学生:“一个大学生,你别说会不会用Git了,你至少得知道GitHub吧,不然作业都没法抄”。是的,一个从985大学毕业的大学生,进入工作后大概第一要学的是这些。但这些东西真的需要大量时间来学吗?即便是看一下链接里的教程,不到一周就能掌握这些技巧,那么为什么不开设一门课程,不把这些内容汇总后让学生自习。我至今记得在安卓课程上,金教授苦口婆心的让学生们注意版本管理,即使不会Git,也要每天保存一份项目的压缩包(这个方法后来被我们戏称为金氏版本管理)。但到了安卓课程的最后答辩,有一个女学生却因为昨天能打开的项目今天打不开了而在教室哭。
其二:大部分授课者,对课程内容,教学的投入度和学生掌握情况毫不关心。
这并不是个例,而是我们在这三年内看到的普遍现象。数据结构与算法设计课上,主讲教授花了20分钟,用dev-c++(公认谁用谁傻逼的ide)写好了一个swap。知识工程课程中,主讲教授在课上只念公式,而作业中需要涉及的模型,轮子只字不提,更是在我们私信询问后,直到作业ddl过期才回复“作业已经过期了”。
这些教授或许在我们不为所知的学术方面有所成就,但是就教学方面来看,他们只是把学生当负担、讲台当义务、只知挂名授课,而毫无实际投入,只配得到愧为人师的评价。
比用技术当饭碗的畜生们更热爱技术,是一种痛苦。
其三:学术环境乌烟瘴气,严重学术不端现象屡见不鲜。
向远了说,在北理工亲亲教授的光头就能混个phD、把屁股撅起来让同性恋教授射进去就能怀孕生论文小宝宝。往近了说,来聊一个我们班众所周知的例子。
数字逻辑考试,形式为上机做41道选择题。暂且抛开为什么一门内容完全是设计电路系统的课程,考试内容没有主观设计题的问题。这门课程的考试系统由于一条“试题做完接着做下一道,不能回看”是完全混乱的。也导致我在考试中由于跳过了20道题(是的,我点一下就跳过去了)还不能回看直接少做了20道题,最后豪取58分的好成绩。这种考试系统的错误,我也尝试反馈过,但是结果是只能我自己承担。如果不是我发现了这个问题,那么下一年,下下年,总会有人遇到。直到前几天我重考这门考试时,还是那个考试系统,一点没改。反馈全部没用。哦对了,那场考试还有个拿手机请代考做题的人来着,我记得是叫安娜吧。
还有我前几天去考试还发现考场能连到宿舍的Rdp,顿时令我感到诚信就是一张保鲜膜,绝了!
权威和规则即便是谎言,也需要装模做样的掩饰虚伪,维持体面吧。
失去诚信的环境还没那么不可怕,而是管理者,实行者对一切的不关心,不作为,令当代一代人失去了对学术,对威权带来的秩序与规范,以及对社会规则的信任。