计算机学生到底应该学什么?

发布于 2022-03-22  116 次阅读


形势

计算机可以说是交叉学科与应用技术最为宽泛的学科。(没有之一)前端,后端,机器学习,ACM,创业,实习,lab,项目竞赛。。。无数的选择。究竟选择哪一个才是最优解?

按照目前的就业形势,绝大多数的学生都会选择web相关的技能进行学习。web项目学习成本低,容易做出项目,因此很多学生简历上都有不少web项目。但到了校招的时候,甚至2k5都没人要。这是为什么?

相反的,ACM选手往往没有或者有很少的项目经验,但却能收获一个2w的offer。这又是为什么?

因为ACM选手往往具备更好的计算机科学素养

素养

什么是计算机科学素养?是能够按甲方要求做出一个网站,一个app,还是具备良好的数学素养,懂并能够运用算法,懂得逻辑电路,对计算机系统,数据库,编译原理,计算机网络有自己的见解?答案不言而喻。

怎么做

幸运的是,计算机科学已是一门成熟的科学。国内外都对如何学计算机科学这个问题有了明确而共同的见解。

按照我校的课程,是由这些科目来学习计算机科学的:
- 数学
- 高等数学
- 线性代数
- 离散数学
- 概率论
- 算法
- 算法
- 数据结构
- 计算机网络
- 数据库原理
- 计算机系统原理
- 编译原理

通过罗列出这些主要的课程,不难发现上面提及的一些方向都是这些课程的应用罢了。

但是,并不是说计算机科学适合每一个学生,就像数学家并不是每个数学专业应当从事的职业一样。对我来说,我更热爱计算机科学,并且希望借由这份能力来谋取更多的金钱与权力等利益。

素质

计算机科学,作为一门科学,他需要良好的科学素质。而这正是我们通过长久以来在国内环境下的学习而欠缺的。

攀比,隐藏,内卷,抄袭,图捷径,好的没学到,坏的毛病全都有。这样的人如何自称计算机科学家?

真正搞一门科学,需要我们以开放的心态看待他人的言论,能够辩证接纳一些非专业的言论。能够静心分析、钻研枯燥的学科,真正地理解。

道路

目前处于大二下的阶段,而我目前具备的是
- 入门/进阶的ACM算法能力
- 较差的数学素养
- 对计算机科学最基本的理解
- 基本的项目能力

在接下来的阶段,我想要
- 提高ACM能力到银牌水平
- 良好的高数、线性代数水平,理解离散数学与概率论的基本理论
- 对计算机网络更深入完善的了解
- 对数据库原理更深入完善的了解(甚至实现)
- 对编译原理更深入完善的了解(甚至实现)
- 对计算机系统更深入完善的了解(甚至实现)

这其实是比较有野心的目标。但我相信朝这个目标前进是正确的。

所以接下来的一个阶段,我会尽力提高自己的计算机科学素养,不因为周围同学的项目能力而焦虑,而是潜下心专心做自己的研究。

当然,我无法同时进行这么多的学习。就经验来说,选择其中一门与ACM同时进行学习效果是比较好的。(题刷累了就学点别的休息一下)

在长时间的实践中,已经能够说明我在专门做一件事情时,是能够做好的。所以就算那些科目看起来很难,但只要不分心就一定能够学好。

目前,高数,线代,电路,这三门基础学科对于后面的课程是比较重要的。


盛夏日落迟 灯火未夜匆匆明