计算机专业 | 程序猿的世界你真的懂?
本文首发于计算机专业 | 程序猿的世界你真的懂?
作者屈同学,本科就读于哈尔滨工业大学信息安全专业,现研究生就读于浙江大学数据可视化方向。
1、专业是什么?
清华大学的网站是这样定义“计算机科学与技术”这门学科的:从事计算机科学理论、计算机系统结构、计算机网络、计算机软件及计算机应用技术等方面的科研、开发与教育工作。这个定义还是比较具体的,在计算机领域,科研和开发是有区别的。科研是研究这个问题是否可解,最优解是多少,而开发工作更多的是在可解问题上得到最贴近工业应用的算法。计算机科学与技术专业的培养重点也是注重学生在计算机硬件与软件以及计算机应用的全面训练,强调科学理论与实际应用的相互结合,努力造就适应研究、设计和应用开发的”复合型”人才。
从名字到内涵
在大部分高等院校中,计算机学院仅仅只有1到3个专业,但实际上计算机科学与技术的小方向太多了。每个方向适合的人群不同,比如像图形学,密码学需要比较高的数学基础,而体系结构,嵌入式系统对硬件的要求比较高。无论哪个小方向的学生都需要比较高的编程能力,这种能力通过实验课,网上在线评测系统(Online Judge)等都能够提高。
因此,对一个计算机的学生而言,最后真正重要的反而是自制力和自学能力。对于有志于学习计算记得高中生,我推荐他们多上网看看,接触最新的技术,因为在计算机这个大圈中今早找到自己想努力的方向是非常重要的。
看张图缓解一下因此,对一个计算机的学生而言,最后真正重要的反而是自制力和自学能力。对于有志于学习计算记得高中生,我推荐他们多上网看看,接触最新的技术,因为在计算机这个大圈中今早找到自己想努力的方向是非常重要的。
从理论到实践
计算机是个和数学关系很大的学科,特别是人工智能,机器学习这些听起来高大上的方向,主要是靠数学系和统计学的人提出的算法,计算机的教授都很欢迎具有数学背景的学生。
这是我们大学四年主要的课程及简单介绍
课表1 课表2数据结构是一门偏软件,很有计算机特色的课程。这门课程在一些电子电信专业也会开设,主要的内容是数据的表达,比如在某个算法中,需要用到一些数据,如何把它们组织起来以便更快更好的实现功能。这门课也会讲到如何用数学量化地评价一个算法的优劣,算是计算机的基础。我们需要上机编程来训练,我觉得最好的学习方法是把各个典型的数据结构和算法实现一遍,这样能更好的理解课堂知识。
计算机组成原理是一门偏硬件的课程,它主要描述计算机的硬件连接。它的先修课是数字逻辑,我们都知道“与或非”这种逻辑运算,在电子实现中也有“与或非”的门电路,数字逻辑课程就是讲逻辑运算和实现逻辑运算的电路以及在此之上更为复杂的,比如选择电路。在数字逻辑课程之上,我们会探究真正的电脑是怎么运作的,CPU是如何理解我们输入在电脑中的命令(转换成二进制之后)。这门课很有意思,也不难学,学完之后就可以自己尝试用FPGA做一个CPU。
操作系统是软件方向上的一个拔高,从语言写程序,到语言写管理程序运行的程序,内容非常有挑战性,也很有意思,相信很多同学也跟我一样想过windows的桌面系统这么是如何内部运行的,这门课就是打开了这个黑匣子。课程内容比较抽象,在学习过程中需要多想多问,因为大多操作系统都封装好了,无法看到内部的情况,自己实现一个小型操作系统很花时间,但是也是很有趣很挑战的一件事情。
一般来说课程分为理论课和实验课,理论课一般为考试加编程项目,实验课主要以每节课的小编程作业和最后的大编程作业组成。但是就算是有这些实验必修课,兼得学习成绩好和编程能力强也是很难很难的。计算机专业需要我们在课后需要花很多时间,编程能力的提高需要编写代码这些实际操作的经历来提高。我的建议就是上课认真听讲,课后多编程练习。这个过程可能很枯燥,但是一定要坚持。如果可能的话,在大二大三就可以进入实验室跟老师做项目。大学里也有很多比赛,比赛获奖对以后保研,找工作都有很大的作用。大部分同学在大三的暑假都会去各大公司实习,不仅仅提升了自身素质还为找工作打下了良好的基础。
另外,英语在计算机领域也是很重要的,如果要去一些国际公司工作,或者参加国际会议,使用英语交流和看英语论文的能力是必不可少的。
2、专业发展路径
计算机专业有很大的伸缩性和潜力,能给人非常宽阔的视野,现如今的云存储 ,搜索引擎 ,移动通讯 ,自动化 ,物联网 ,大规模集成电路 ,图像处理 ,数据挖掘 ,高速交换机等各行各业都和计算机交叉。
从校内到校外
从我的观察来看,计算机专业能够覆盖相当广泛的数字化和网络化带来的新兴工作机会而且这个方向会有非常多的创业机会,和诸多领域都有交叉,将来想转行要补足该方向的知识就好,比如弄通了企业内部的运作,那就可以从企业信息系统开始做起来逐步进入该行业。
在计算机这个工程类学科中,我学校(哈工大)本科毕业之后只找工作和继续求学大概比例是65:35。
(一)硕博深造:在计算机专业中,硕士还是比较偏向实际,大部分硕士毕业后都会去各大公司工作,而硕士的这两年到三年里,为他们攒下了做项目的经验,同时也会对某方向有更加深入的研究。所以很多公司也指明要硕士生以上。同时,对于工作还是科研犹豫不决的同学也会在这2-3年中对博士的科研生活有更加深入的了解,在硕士毕业期间,也有不少人选择硕转博士。而计算机博士生活则是完全以科研为主,走学术路线,因为论文的数量和质量是明确要求,博士的毕业年限也是不确定的。而毕业后的博士必然在某一方向有很深入的研究,他们有的为了当教授而出国去读博士后,有的进入公司成为公司的技术骨干,有的自主创业,也有的去研究所工作。
发展路径求职创业:不得不提到,学计算机的同学很多去创业的。现在大学都很支持创新创业,据我所知,浙大和哈工大都有给大一的新生安排创新项目,让初入的新生接触一个真正项目的流程,让学生们敢想能做,当然因为是新生对技术还不够了解,项目的难度和成功率不一定很高,但是给同学们以后自己做项目打下了基础。除了大一项目之外,不同学校在不同的时期也有不同的项目,还有一些创新比赛,比如浙大的RSTP等等,这都给学生很多的机会去想新的点子并实现它。创业方面,不仅仅有些创业比赛,学校对一些毕业生的创业也是很支持的,会提供一些资金和指导。
从事计算机行业,一般薪资高于平均水平,国内本科生年薪在10万到20左右。但是长时间面对电脑屏幕,加班现象很常见,对身体状况影响比较大。这个专业也很难学好,编程的过程比较苦闷,需要耐心和兴趣,我也见过很多人想从计算机专业转出去。在渐渐人才饱和的市场,需要很强的能力,才能进入顶尖的公司。计算机技术更新换代很快,需要一直保持学习新技术新方法。
发展路径23、学习体验与展望
我认为,高考是人生一个很大的转折点,我从湖南省的一个小县城以一个仅仅高过录取分数线5分的成绩来到2956公里之外的哈尔滨,专业是工业设计。我并不觉得大学就是像很多人想的那样尽情的玩,大学能够做自己想做的事情,学到很多有用的东西,那么就很美好了。因为还是很想试试第一志愿计算机专业,于是通过大一的基础课的努力,大二初期,以专业第一转专业到了计算机系的信息安全专业。
学海泛舟
转专业并不轻松,要补课还要和努力赶上第一年落下的编程技能。同时,大二下学期的时候申请了大三去韩国高丽大学交流一年的项目,算是幸运的选上了。大三在韩国交流的一年里,不仅仅让我的英语交流能力有了很大的提高,对于出国的意义也算是有了真正的理解。交流的利在于去一个新的国家,可以跟不同国籍的同学交流,学业也相对轻松。而弊在于,很难进入实验室,一些国内的比赛无法参加,保研的信息也无法得到,同时,课业的轻松也代表着学到东西的有限。
为了弥补这一点,在回国之后去香港大学带薪实习了一个半月。实习的职位是学生研究助理,做的工作也和大学上课不一样,导师给个目标然后自己去找论文找解决方法解决,每周跟导师见面报告进展,遇到的问题导师也会给出一个较好的方向,现在想来和研究生的生活很像。认识了很多很优秀的同学,但是一个半月的实习时间太少,做的东西也不够多,算是初步了解了科研生活。
大四的时候参加了浙大的保研面试,顺利的被录取后就来到了浙大。身边的同学有的考研去了上海交大,有的保研了本校,有的选择了出国,也有去工作的。保研本校的同学早早参与了实验室项目。考研的在大四上学期过着有规律的类似高三生活。出国的同学在上学期积极准备着英语考试以及一些材料。
不同的人在不同的学校过着不同的生活,我认为计算机专业最出彩的地方也在于,无论你在哪里,无论你的出身,只要努力,在这个到处都能学习的网络上,你就能做到最好。当然同时,找准方向的指明灯也是必要的。
关于转行
一般来说从计算机转去别的专业也是很吃香的。毕竟现在各个领域都会用到计算机,和计算机结合。比较热门的一些转专业有经济学,电子,通信等。现在很多大学也开设一些交叉学科,比如计算机加经济得到的计算金融学。
在求学过程,计算机专业对于自学能力有很大的提升,因为课本上的都是系统的基本的东西,而真正实用的都需要自己去网上学习。不仅仅是学习,还是自己在网上找到东西来学习,这种能力是其他专业也都需要的。
在找工作中,也有很多计算机的同学找管理或者销售,策划类的工作。在一些互联网公司,销售,策划等有一定的知识背景也是很有优势的。同时,在各行各业都计算机化的今天,学习软件的成本在有计算机基础下也是降低了很多。
关于兴趣
兴趣对于计算机专业来说是很必要的,虽然做出来的东西很绚丽,但是写代码,调试,提高编程能力的过程是很枯燥无味的,如果没有足够的兴趣支持很有可能在中途就会放弃,比如说很多学生最后会选择去做产品经理或者去银行来避免写代码。而那些大神们都是对计算机有着极高的兴趣,课余觉得看源码做项目都是很有意思的人。
关于幸福感
程序员最大的幸福感大概是来自对自己程序的认可,如果自己的程序有很大的价值,被很多人用,就会有很大的成就感和幸福感。