大学专业丨计算机科学与技术相关专业学习路线,让大学不迷茫!

无论你是如何选择了这门专业,我想告诉你的是这是一个很深的领域,没有热爱不如尽早转行。前端

根据百度百科计算机科学与技术专业(如下简称计算机专业)给出的描述,该专业的主干课程有算法、数据结构、操做系统、编译原理、计算机组成原理、计算机体系结构、计算机网络(划重点,这些都是专业基础课,其中的任意一门拿出来都够研究一辈子的,虽然大学的教育基本上都是讲解很是基础的部分,但这不表明它们不重要)java

C语言

只要是计算机相关专业的学生就留不开编程,而提到编程就确定会引起一系列的“最好语言”之争,这里要强调一下:语言的选择并不重要,那是否是说我不须要去学习语言就好了呢?这就比如去美国旅游,你固然能够去,可是没有语言你顶可能是去旅游,哪一个在美国的华裔即使不能讲的一口流利的英语,但基本的交流是确定没问题的。linux

对于语言来讲,大学的入门课程基本上都是以C语言为入门课,固然其余语言也有,只不过C/C++做为基础入门语言更合适。以C语言为例,不要求你C语言学的多好,但必定要学的扎实,它决定了你之后学习任何一门语言的速度与水平。git

数据结构与算法

当你掌握了C语言以后,接下来就会接触到数据结构与算法这种东西,初学者很难分清什么是数据结构、什么是算法,甚至认为这两个是一种东西。这是一门费时费力的专业课,许多普通大学并非很重视,他们认为只要教出来的学生可以找到一个好工做就能够了,的确,对于作一些小的的平台、系统之类的基础的数据结构与算法就足够了,可是工做3-5年后上升会很难,基本都会卡在不熟悉数据结构与算法的瓶颈上。许多大学生都听过ACM大赛,的确ACM算是计算机领域的顶尖级大赛了,可以在比赛中得奖更是高手中的高手才行。不少人都跃跃欲试,最终不过是铩羽而归,这是由于他们根本就并不知道一个ACMer的成长到底有多难。若是要入ACM的坑,必定要莫大的毅力才能够,中途放弃是不会有任何回报的。欲戴王冠,必承其重。程序员

Linux

计算机专业的学生不能不会Linux,无论你的学校开不开这门课程,你都要学,并且要用得和本身的Windows同样熟才行,不少初学者觉得Linux很难,其实否则,既然是操做系统,Linux开发出来也是给用户用的,只不过专业人士用的多一点罢了。不少操做都是很是简单的,并且在学习Linux的过程当中,你会逐渐拓展本身的视野,你会了解到如何挂载镜像,如何配置虚拟机,如何使用命令行(linux下的命令行能够在windows的powershell里使用,很是好用)。并且若是你要学习嵌入式开发,Linux也是必不可缺的要求。github

面向对象语言

很快,大家就会接触到第二门语言,多是C++、JAVA、Python等等,这些语言都有一个共性:面向对象编程。这和C语言的面向过程编程不同,你不会再写一大堆混乱的函数来实现不一样的功能,你要开始经过类与对象来作更好玩的事情了。若是你的C语言基础打得很是好,再学任何一门语言你都会是轻松的。惟一困难的就是思想的转变,面向过程编程思想–>面向对象编程思想。到这个时候你就已经真正进了计算机专业的大门了,虽然这个时候你才大一下学期或者大二上学期。这个时期你必定要多学东西,若是你学了JAVA,我推荐你也去接触一下C++、Python。刚刚入门的小白须要迅速增长知识储备,越普遍越好,你了解的越多,你越能明白你本身之后想要的是什么。算法

数据库与SQL

毋庸置疑,数据库的基本操做都是要会的,不管你之后是作什么方向的工做,全部的工程都是要有后台数据库的。初学者最好使用Mysql+可视化工具Navicat进行学习,固然学校有本身的要求就按学校的来。通常SQL语句的学习都是穿插在理论学习之中的,若是之后你不是专门要作数据库这方面的工做,只要学会基本的SQL语法就足够了。sql

GitHub

计算机专业的学生要学习会使用GitHub,不管是用来保存本身作过的东西,仍是从上面复刻(fork)别的项目都是很是有用的工具。GitHub除了能够当代码仓库,最出色的方面仍是它的版本控制,这对于开发者来讲是很是有用的。GitHub的基本操做很是简单,命令行操做也就几个经常使用的命令,基本上1-2天都能学会,常用,出现了不懂的地方继续充电。大学课程里不会有一门课教授GitHub,这属于自学的内容。shell

前端开发

HTML+CSS 近两年挺火热的一个方向,产生的缘由在于先后端分离的趋势,前端的定义也不只仅局限于切图、美工之类的工做,从基础的HTML+CSS到各类前端框架都是这个方向的学生要学习的。推荐直接学习HTML5+CSS3,它们是HTML+CSS的新标准,虽然有些浏览器(例如ie,前端开发者永远不可避免的浏览器)不兼容新的标准,可是随着时间的推移,新的标准必然会取代旧的标准,尤为是HTML的canvas标签要深刻的学习,没有一个网页出来效果是单纯的文字。数据库

Javs 前端三剑客除了HTML+CSS,固然还有Java,初学者迷惑Java与Java的关系,这里告诉你,它们的关系就和雷锋与雷峰塔,张三与张三丰的关系同样!!!一点关系没有。固然Java也有新的标准那就是ECMA6(ES6),Java自己并非严格的面型对象编程的语言,可是新的标准可以更适应面型对象编程,可以提升开发者的工做效率,固然也是有部分浏览器不能实现彻底支持ES6标准。固然学JS的同时要顺便把Jquery学了,它们大多数是相通的。

前端框架学前端要比学后端更要掌握时代的趋势,不断学习新的事物,才能立足于前端。永远不要认为前端简单而学前端,任何一个深刻学习过前端的人都会告诉你,前端的水比后端深多了。前端三大主流框架Vue、AngularJS、React,不推荐全都学习,每一个公司都有本身的标准,可以有针对性的学习也是很好的。

你觉得这就完了?不不不,这才是开始。

1. 对于一个工程性的大项目,混乱的外部js文件会把工程搞得一团糟,这里就继续学习Webpack打包工具了,不过去年一个新的工具项目parcle在github上得到了很多的star,简单方便,大有超越Webpack的趋势。

2. 如今市面上的ES6标准仍是用的不如ES5,那若是出现了冲突怎么办呢?这时候你就要学习Babel了,这个东西可以帮助你作好两个标准的兼容问题。

3. Java还没学好的同窗,Type如今又火爆起来了,还不赶快加入学习!!!

4. 认为前端只能做页面?NodeJs已经开始作后端的事情了!!!

前端水很深,不是简单几段文字可以描述清楚的,若是真心想学前端,否则认真的如把上面的内容百度一翻,虽然仅仅是了解,可是你已经作到先人一步了。

后端开发

后端开发有不少种形式,Java、Python、Go、PHP都能作。

Java全家桶 这里以Java为例,毕竟如今大学教育都主要以Java为主要课程,授课流程基本都是从Java SE 到Java Web,再到Java EE、Java ME。小白估计又懵了,这里说的Java SE就是咱们平时说的Java,它的英文是Standard Edition,这也是后面全部java技术的基础,一样,若是你要作Java后台开发,Java SE的基础必定要打牢。而Java Web是Web后端的基础,Java Web工程师如今也是就业的热门岗位,是后端开发的重要内容。Jsp+Servlet+Javabean是Java Web的基本组成,这也是MVC的一种基本框架,它能帮助你作出一个简单的系统项目,可是不得不说的是,没有HTML+CSS的前端技术,作出来的东西是在是太丑了。致力于作Web后端的同窗,前端的知识也要有所了解才行。而Java EE,它的英文是Enterprise Edition,它是面向企业级开发的一个语言平台,熟练掌握Java EE的各类特性是后端程序员的必修课。Java ME,英文名称Micro Edition,它是一种面向嵌入式的语言平台,学校开设课程的很少,除非是要专门学习嵌入式,否则不须要过深的研究。

操做系统与计算机网络 这两个课程是计算机专业的基础课程,java开发的一个主要特色就是多线程,而对于操做系统的总体认知都要来源于这门课程,你须要知道什么是并发运行,IO设备究竟是如何管理的,计算机究竟是如何运行的。Java的工程大多规模较大,须要应对高并发的一些状况,一个后端开发者应熟练的使用stream APi控制对象集合,掌握RxJava这种具备函数编程风格的库或者框架。在Java网络编程领域,哈诺德 (Elliotte Rusty Harold) 的那本《Java网络编程》是很是经典的书籍,很是有必要去踏实的学习这一部分的内容。网络开发的经典框架是Netty,它是一种异步的、事件驱动的网络应用框架,可以快速开发高性能的网络服务器和客户端。JVM的底层机制在不少状况下都有很是重要的做用,这时候你必定会接触到Vert.x,这里不须要过深的研究,只要掌握其核心组件就能够了。

后端框架 后端框架的基础就是MVC,也就是以前说的Java Web的三大组成,可是企业中一般会用更方便的SSH(Spring + strtus2 + Hibernate)或者SSM(Spring + SpringMVC + MyBatis),没有好坏之分,不一样的公司也会用不一样的标准,Java框架的发展虽然赶不上前端的速度,但也是不断变化的,天然是要不断学习。

你觉得这就完了?不不不,这才是开始。

1. Java虽然不擅长作桌面应用,这方面仍是C++、JS更强大一点,可是你应该懂一些Swing、ATW的技术,甚至是更加深刻的学习Java Fx技术。

2. 全部的工程都是由数据库的,JDBC都不懂怎么作开发?后端程序员不能局限于Mysql,还于精通Oracle的相关技术才行,最好再去了解一下Redis。

3. 组件式开发可以加快开发,Maven技术可以快速搭建工程框架,开发者应该熟练运用这种技术。

4. 不懂服务器的后端不是好运维,后端开发者不能局限于Java的Tomcat,像Apache、Nginx这样的服务器软件都应该有所了解。

Android与IOS开发

手机已经改变了人类的生活,各类各样的App层出不穷,而手机系统中80%以上都是Android系统,不到的手机系统是20%IOS,还有几乎能够忽略不计的其余系统。因此Android开发已是如今App开发的主力军了,而Android开发一直以来都是基于Java语言的,直到这两年忽然出来的黑马Kotlin。全部学习过Java的人都会了解过Kotlin,他们会惊叹Kotlin的友好,可是不得不说的是,Java仍是如今的主流,Kotlin用在开发中仍是有许多不稳定的状况,新技术的推广估计还要再等几年。要去熟悉Android的SDK,熟悉JNI机制,要不不断用各类项目练手,GitHub上不少不错的项目均可以fork下来本身学习。

IOS开发虽然受众很少,但也是须要App的啊,如今的IOS开发基本上也有两种语言,Objective-C和Swift,其中OC的使用仍是多一点,学习IOS开发必定要紧跟IOS系统的发展,去年9月份苹果公司推出了IOS的第11个版本,不要从很老的版本开始学。

游戏开发

不少学生喜欢打游戏,对于计算机专业的学生,想作游戏的也很多,许多学生想学可是不知道该怎么学。但实际上,国内大学几乎没有开设游戏相关专业的,在这个领域最顶尖的大学是美国南加州大学(USC)。

C++与C# 在图形图像处理这方面,这两中语言是很是优秀的,千万不要觉得Java能作任何事情,在游戏领域真正的老大是这两门语言。游戏开发天然离不开游戏引擎,大的游戏公司通常都有自主研发的游戏引擎,而市面上的主流引擎以Unreal(使用C++语言)和Unity 3D(使用C#语言)为主,而Unity 3D有免费的我的版本,更适合学习与小团队开发,因此市场份额更高。以前Unity还支持JS和Boo,不过已经取消了对Boo语言的支持,JS也大有被取消的趋势。端游这方面,没有基础的同窗能够从C++入门,以后学习C#,并尝试使用Unity引擎开发小的Demo。

计算机图形学与Shader 若是说语言是外功,那么算法就是内功,而图形学就是游戏开发领域的必修内功。各类图形算法可能比数据结构与算法中的内容还要复杂,对数理知识的要求更高。不少开发者不屑于算法学习,认为我只要作出好看的做品就能够了,但实际上不是这样的,计算机这个领域就是这样,只要你想深刻学习一些东西,算法永远是不可避免的。有的大学生作了两、三个Demo就去应聘,可以头头是道的讲出来本身是如何用引擎作出来的,可是一问到底层机制却说不出来,这就是内功修炼匮乏的缘由,并且越是工做的时间长表现的越清晰。这部分你应该熟练的掌握DirectX与OpenGL两个图形接口库,深刻理解图形处理的机制。在图形学领域的另外一个难点就是Shader着色器,这个东西决定了你作出来的做品是基于外表的好看仍是基于内在的好看,前者只要有绚丽的贴图、纹样就能作出来,可是后者确实要深刻理解游戏引擎渲染机制,掌握掌握纹理映射、光栅处理、GPU机制的综合体现。这里推荐siki老师的教程,在游戏教学方面的视频都是很是好的资源。不要觉得这就完了,还有GLSL和HLSL等着你去学,shader真的不是看几个视频就能学好的东西。

手游开发 手机App中必不可少的一类软件就是手机游戏软件,手游开发注定是要走向辉煌的。Unity固然能够作手游,王者荣耀就是用Unity制做的。毕竟王者荣耀同时在线人数可以达到500W,用通常的引擎会很是的吃力。不过对于学习来讲咱们就不用考虑那么多了,像老牌手游引擎cocos2d-x支持C++、Lua、JS三种语言的编程,是国内第一游戏引擎,全球第二游戏引擎(仅次于Unity),除此以外还有Egert、Layabox在国内也是很是受欢迎的引擎。这些引擎大多都支持的一门语言就是JS(包括Type)。

数字媒体

Adobe全家桶 若是想要致力于学习这方面的内容,Adobe系统的Ps(图像处理)、AI(矢量图制做)、Au(音频处理)、Pr(视频处理)、Ae(视频特效处理)都是要会操做的。不须要精通,毕竟不是作专业的美工师。像这些软件不须要去购买高昂的视频去学习,许多网上课程已经足够学会基本操做类,若是想进阶最好是购买一本专业书籍来帮助提高。

FFmpeg 这个软件更偏向与计算机专业,其中的操做不如Adobe的简单,可是对计算机专业的学生仍是很友好的,它是经过命令行来操做的,包含libavcodec(一个用于多个项目中的音视频解码器库)和libavformat(一个音视频格式转换库)。

3dmax与maya 3D图像建模领域的两大巨头,这就偏向于美工的技术了,须要必定的美术功底。这两个软件的基本功能都没有什么差异。

虚拟现实 3D立体技术包括3D建模与3D显示,虚拟现实就是基于3D显示的一种技术,这个领域最基本的语言是C++,与C#,基本都是经过游戏引擎渲染出来的。

人工智能

人工智能不一样于传统的先后端开发,它对线性代数、高等代数的要求很高,许多计算都是经过矩阵来作的。许多小白会对人工智能(AI)、机器学习(DL)、深度学习(DL)感到迷惑,这里总结一下,机器学习的目标是实现人工智能,而深度学习是机器学习的一种方法,除此以外还有决策树学习、贝叶斯学习等方法。

Python 如今最火热的一门语言,在人工智能领域尤其吃香。Python语法简单,各种第三方库可以在许多不一样的领域发挥做用,以致于已经有部分的高校开始尝试用Python做为计算机专业的入门语言来说授。即便是在Web开发方面,Python Web也绝不逊色。不过仍是让Python在属于它的领域大放光彩吧。

CNN(Convolutional Neural Network) 翻译过来就是卷积神经网络,它是一种新型的人工神经网络结结构,利用这种技术在图像和语音识别方面可以获得更优的预测结果,这种技术一般用在深度学习中。Tensorflow它是机器学习领域的一个开源软件库,它可以支持Python、C++、Java、Go等多种语言。咱们在用Python作机器学习的时候大多会用到TensorFlow库和numpy库,想学习人工智能的同窗必定要掌握好TensorFlow,TensorFlow是最流行的,但不必定是最好的,它也有本身的一些缺点,因此不要觉得机器学习只能使用TensorFlow。

OpenCV(Open Source Computer Vision Library) 人工智能天然会涉及图像处理,计算机视觉以及模式识别,而这个视觉库。若是想学习像人脸识别,动做识别等领域的知识,这个库是必定要学好的。这个库主要接口是C++语言,在图形图像处理这部分C++是占有统治地位的语言,固然也有支持Python的接口。

大数据开发

Scala 如今的大数据人才大多仍是以Java语言为主,之因此写Scala是由于在后端开发部分写了Java的相关内容,这里想讨论点别的。这门语言由于有Spark的存在,被使用的几率多了很多。它是一门很是适合函数式编程的语言,并且这种语言兼容Java,可以运行在JVM上,也能够调用Java的类库,是大数据方向的学生不可不学的一门语言。

Hadoop Hadoop是Apache公司下的一个大数据通用处理平台,它是大数据方向的必修课,学习Hadoop不只仅是学会搭建集群,还要掌握使用Hive(Hadoop架构之上的数据仓库)对数据进行精炼、查询、分析,经过HDFS(Hadoop分布式文件系统)来处理大规模的数据集等等。

MongoDB 大数据方向的学生不能局限于结构化的数据库,像MongoDB这样的非结构化数据库才是未来工做使用的主流数据库。

网络安全

密码学 解密与加密永远是网络安全的重要组成部分,密码学必定要系统的学习,由于网络安全的整个学习过程都要围绕密码学展开,不少学校没有专业的密码学课程,或者根本不知道什么是密码学。这就须要多买几本经典的密码学书籍来看看了,并且要多花精力来学习才行。

黑客攻防 网络安全方向的学生必定要以一个黑客的标准来要求本身,这里的黑客是指白帽黑客(不明白的能够参考百度百科黑客),这里就须要深刻的学习Unix/Linux的底层机制了,市面上大多数的服务器都是以Unix/Linux为操做系统的,不多是Windows。要深刻了解计算机网络模型的安全机制,理解防火墙的工做原理。对于Web安全、漏洞分析、0Day攻击、IDS(入侵检测系统)、网络渗透都要有较深的理解、

逆向工程 分为不一样的平台,诸如Windows、Android、IOS等等,逆向工程要深刻了解计算机组成原理,熟练掌握汇编语言,可以用C/C++进行基本的编程。逆向工程有许多分析工具能够用,例如IDA Pro、WinDbg等等,这些调试工具可以大大提升逆向分析的效率,要熟练掌握。

计算机领域如今已经渗透到各行各业,各类计算机相关的岗位层出不穷,上面仅仅罗列了一些博主熟悉的方向,固然热门的方向还有物联网、嵌入式等等,因为博主的知识储备很是有限,对这些领域了解的很少,因此就不班门弄斧了。文章涉及多个领域的专业内容,大可挑选本身感兴趣的部分进行阅读,不少名词可能读者不甚了解,推荐看完文章进行百度或者谷歌。固然,文章仅供参考,每一个人的学习路线仍是要有本身决定的。

谨以此文献给仍然迷失在大学生活中的计算机专业学子!!!

另外若是你想更好的提高你的编程能力,学好C语言C++编程!弯道超车,快人一步!

C语言C++编程学习交流圈子,QQ群【757874045点击进入】微信公众号:C语言编程学习基地

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!

C语言编程学习软件

C语言学习视频

相关文章
相关标签/搜索