作为知乎上唯一一个不会被劝退的专业——计算机,它是很多数学专业学子向往的专业。很多数学专业的学生可能想:难出天际的数学都拿下了,转到计算机不要太容易。但事实上,术业有专攻,当你们绞尽脑汁证明定理时,计算机专业的同学也在辛苦地调Bug。要想转专业成功,一定要知己知彼,做足准备。今天为大家介绍数学专业跨计算机专业的注意事项和经验。
01、数学专业跨计算机专业有哪些优势和劣势?
在优势方面,数学专业的学生具有扎实的数学基础,计算机领域很多问题离不开大量的数值计算和理论分析研究,这些都需要扎实的数学功底。而且数学专业本科期间的高强度学习锻炼了学生的科研能力、学习能力、缜密思维和对一些问题的洞察能力。
在劣势方面,与其说如何转入计算机专业,不如讨论如何“卷入”计算机专业。计算机专业遍地是卷王,首先你要和计算机科班同学竞争,这是地狱难度。其次,由于计算机是高薪行业,“钱景”光明,是转专业的重要战场,因此竞争压力不言而喻。
你能想象考研400+也有可能落榜吗?
竞争压力大只是一方面,我们更应该关心的是我们本身的缺点。数学非常重视严谨的证明和缜密的思维,但我们缺少的是编程能力。计算机专业的实践要求非常高,比如一个新的算法,数学专业侧重于证明和推到,告诉大家这个算法是怎么来的,它的性能为什么好。而计算机专业侧重于实现和应用,要确保算法可以实现和应用,用它解决实际问题。
数学专业本科专业课程不仅数量多,而且难度大,很多科目要求投入巨量的学习时间,因此大家普遍缺少动手编程的时间以及学习计算机专业知识的精力。
02、数学专业跨计算机专业需要做什么准备?
提前做好规划
如果有转专业的打算,越早准备越好,对于计算机专业而言,要用到的数学知识最多在数学专业的大二会全部完成。因此在大三,有跨计算机专业计划的同学最好修读几门计算机专业的课程,锻炼代码能力,学有余力还可以做一些计算机专业相关的科研,增加自己的竞争优势。当然,数学专业的课程也不能落下,不能顾此失彼影响了成绩。
有时候一个正确的选择远大于努力,要想好自己到底想转到计算机专业的哪个方向?比如数学专业的应用数学偏向解决工程问题、信息与计算科学专业偏向于数值计算和图像处理、统计学偏向运筹统计。那么你转到计算机专业是偏向于大数据(数据挖掘、数据库)还是算法(机器学习、深度学习)或者是网络安全(密码学、信息论)。选择方向时,一方面要考虑自己的知识储备,最大化转专业成功的可能性。另一方面要考虑好未来的职业规划,做科研还是进大厂?做工程师还是当码农?
建议跨考方向
机器学习方向(计算机视觉、自然语言处理等热门问题),也是数学专业转计算机专业最容易的方向,易入门,且研究问题需要用到很多数学知识。在就业方面也有不错的“钱景”,例如无人驾驶正处于风口。
数据挖掘方向(大数据、推荐广告等),随着5G时代的到来,数据及数据处理被越来越多的人重视,无论是科研还是应用,数据挖掘都是不错的选择。
网络安全方向(密码学、信息论),近年来热门领域。
夯实数理基础
前面提到,数学专业学生的优势是基础扎实,有良好的数学功底,因此这一部分也是最容易被考察的,而且作为数学专业学生的看家本领,如果回答不出一些问题真的很掉价。一般来说不用担心这个问题,因为计算机专业的老师不会问一些专业度较高的知识,如《泛函分析》、《实变函数》、《近世代数》等,考察最多的是《线性代数》(数学专业学习的是《高等代数》)、《高等数学》(数学专业学习的是《数学分析》)和《概率论与数理统计》,偶尔还会涉及《矩阵论》或者《数值分析》中关于矩阵计算的一些内容。除了掌握基本的数学概念,还要注意它们的应用,尤其是和计算机专业知识相结合的。比如“矩阵的秩在图像中有何意义?”、“主成分分析法(PCA)的数学原理是什么?”、“损失函数MLE指什么?它和MSE有何区别和联系?”
此外,既然要跨专业,就一定要弥补计算机专业的基础课程,至少要掌握《数据结构》,而且一定要动手编程实现其中的经典算法,如二分查找、冒泡排序、插入排序、堆排序等。这些内容不仅在保研、考研面试中会考察,有些学校还会安排机试,现场考察学生对算法的掌握情况和编程水平。
锻炼编程技能
计算机专业最重要的是什么?编程。编程能力直接决定了你转专业的成败与否。那么多种编程语言(C语言、C++、C#、Java、Python…),该如何学习?首先,编程技能宁缺毋滥,不要想着全部掌握,熟练一门即可。很多编程语言的知识是互通的,当你熟练掌握一门语言后,其他语言手到擒来,学习起来非常容易。对于一般的计算机专业,建议掌握C语言,因为它是最基础的编程语言,而且很多学校都用C语言作为机试语言。如果你以后选择的计算机专业和数据相关性大,建议学习Python,首先是Python非常简单,学习周期短,易于掌握,而且网上有丰富的教学资源。其次,Python中有很多现成的库用于数据处理,无论是当前学习还是未来工作都用得到。
但某些同学编程技能不太强或者已经大三了,没有充足的时间联系,那么要学会扬长避短。即选择学校或者实验室时了解,该学校或实验室是否会考察学生的编程能力?如果有那就果断放弃。数学专业的学生大多数都学习过Matlab或者R语言,写过矩阵运算和数据处理的程序。熟练掌握一些相关的知识也可以作为转专业的资本。
丰富科研竞赛经历
全国大学生数学竞赛、全国大学生数学建模竞赛、美国大学生数学建模竞赛这些知名的数学类专业必备竞赛一定要参加,它们是除了成绩之外可以证明你数学功底和知识运用能力的一条途径。与之类似,计算机专业的一些竞赛,如ACM、蓝桥杯、软件杯、外包大赛等竞赛也可以彰显我们的编程能力和计算机专业知识素养,在参赛过程中,不仅实现了知识积累,锻炼了编程能力,还提高了综合测评分数。
至于科研经历,有条件的同学可以加入老师的实验室参与科研,说不定还可以发表论文。或者参加大创,选一些和计算机专业相关的课题,比如近年来火爆的机器学习,深度学习,数据挖掘等。
除此之外,数学专业的同学还可以尝试开发软件,写软件著作权,大家一听到软著可能觉得非常难,但其实实现其他非常容易,你缺少的只是一个绝妙的想法。软件可以简单理解为一个算法(解决某些具体问题)+操作界面(用户操作)。比如《数值分析》中很多矩阵计算的算法你用Matlab可能实现过,那么学一下Matlab中的GUI编程,就可以实现一个矩阵计算器。同样的,深度学习训练的模型,用PyQt包装一下,可以做成软件,大创、软件杯中实现的项目也可以写软著!在写软著的过程中,你的编程能力会得到极大的锻炼。
如果以上都无法完成,我们还可以读论文复现代码或者在网上学一些经典算法,自己尝试着修改,体会算法背后的原理。总之不要放过任何一个可能提升自己的机会!
数学专业的同学们一定要充满信心,数学这么折磨人都拿下了,只要肯下功夫,一定能实现你的转专业梦想!祝大家转专业成功!