计算机科学与技术专业核心课程与学习路线指南
不管你是如何选择了这门专业,我想告诉你的是这是一个很深的领域,没有热爱不如尽早转行。根据百度百科计算机科学与技术专业(以下简称计算机专业)给出的描述,该专业的主干课程有算法、数据结构、操作系统、编译原理、计算机组成原理、计算机体系结构、计算机网络。这些都是专业基础课,其中的任意一门拿出来都够研究一生的,虽然大学的教育基本上都是讲解非常基础的部分,但这不代表它们不重要。
C语言
只要是计算机相关专业的学生就离不开编程,而提到编程就肯定会引发一系列的'最好语言'之争,这里要强调一下:语言的选择并不重要,那是不是说我不需要去学习语言就行了呢?这就好比去美国旅游,你当然可以去,但是没有语言你顶多是去旅游,哪个在美国的华裔即便不能讲的一口流利的英语,但基本的交流是肯定没问题的。 对于语言来说,大学的入门课程基本上都是以C语言为入门课,当然其他语言也有,只不过C/C++作为基础入门语言更合适。以C语言为例,不要求你C语言学的多好,但一定要学的扎实,它决定了你以后学习任何一门语言的速度与水平。重点掌握指针操作、内存管理、结构体以及预处理命令,这些是理解底层机制的关键。
数据结构与算法
当你掌握了C语言之后,接下来就会接触到数据结构与算法这种东西,初学者很难分清什么是数据结构、什么是算法,甚至认为这两个是一种东西。这是一门费时费力的专业课,许多普通大学并不是很重视,他们认为只要教出来的学生能够找到一个好工作就可以了,的确,对于做一些小的的平台、系统之类的基础的数据结构与算法就足够了,但是工作3-5年后上升会很难,基本都会卡在不熟悉数据结构与算法的瓶颈上。 许多大学生都听过ACM大赛,的确ACM算是计算机领域的顶尖级大赛了,能够在比赛中得奖更是高手中的高手才行。很多人都跃跃欲试,最终不过是铩羽而归,这是因为他们根本就并不知道一个ACMer的成长到底有多难。如果要入ACM的坑,一定要莫大的毅力才可以,中途放弃是不会有任何回报的。欲戴王冠,必承其重。 建议重点掌握数组、链表、栈、队列、树、图以及常见的排序和查找算法,并理解时间复杂度与空间复杂度的分析方法。
Linux
计算机专业的学生不能不会Linux,不管你的学校开不开这门课程,你都要学,而且要用得和自己的Windows一样熟才行,很多初学者以为Linux很难,其实不然,既然是操作系统,Linux开发出来也是给用户用的,只不过专业人士用的多一点罢了。很多操作都是非常简单的,而且在学习Linux的过程中,你会逐渐拓展自己的视野,你会了解到如何挂载镜像,如何配置虚拟机,如何使用命令行(linux下的命令行可以在windows的powershell里使用,非常好用)。而且如果你要学习嵌入式开发,Linux也是必不可缺的要求。 常用命令包括文件操作(ls, cd, cp, mv)、权限管理(chmod, chown)、进程管理(ps, kill)、网络配置(ifconfig, netstat)等,熟练掌握Shell脚本编写能极大提升工作效率。
面向对象语言
很快,你们就会接触到第二门语言,可能是C++、JAVA、Python等等,这些语言都有一个共性:面向对象编程。这和C语言的面向过程编程不一样,你不会再写一大堆混乱的函数来实现不同的功能,你要开始通过类与对象来做更好玩的事情了。如果你的C语言基础打得非常好,再学任何一门语言你都会是轻松的。唯一困难的就是思想的转变,面向过程编程思想–>面向对象编程思想。到这个时候你就已经真正进了计算机专业的大门了,虽然这个时候你才大一下学期或者大二上学期。这个时期你一定要多学东西,如果你学了JAVA,我推荐你也去接触一下C++、Python。刚刚入门的小白需要迅速增加知识储备,越广泛越好,你了解的越多,你越能明白你自己以后想要的是什么。
数据库与SQL
毋庸置疑,数据库的基本操作都是要会的,无论你以后是做什么方向的工作,所有的工程都是要有后台数据库的。初学者最好使用Mysql+可视化工具Navicat进行学习,当然学校有自己的要求就按学校的来。一般SQL语句的学习都是穿插在理论学习之中的,如果以后你不是专门要做数据库这方面的工作,只要学会基本的SQL语法就足够了。 除了增删改查,还需了解索引优化、事务处理(ACID特性)、锁机制以及范式理论,这些是保证数据一致性和性能的基础。
GitHub
计算机专业的学生要学习会使用GitHub,无论是用来保存自己做过的东西,还是从上面复刻(fork)别的项目都是非常有用的工具。GitHub除了可以当代码仓库,最出色的方面还是它的版本控制,这对于开发者来说是非常有用的。GitHub的基本操作非常简单,命令行操作也就几个常用的命令,基本上1-2天都能学会,经常使用,出现了不懂的地方继续充电。大学课程里不会有一门课教授GitHub,这属于自学的内容。 掌握Git的核心工作流,包括clone, add, commit, push, pull, merge, rebase等操作,理解分支管理策略如Git Flow。
前端开发
HTML+CSS 近两年挺火热的一个方向,产生的原因在于前后端分离的趋势,前端的定义也不仅仅局限于切图、美工之类的工作,从基础的HTML+CSS到各种前端框架都是这个方向的学生要学习的。推荐直接学习HTML5+CSS3,它们是HTML+CSS的新标准,虽然有些浏览器(例如ie,前端开发者永远不可避免的浏览器)不兼容新的标准,但是随着时间的推移,新的标准必然会取代旧的标准,尤其是HTML的canvas标签要深入的学习,没有一个网页出来效果是单纯的文字。 JavsScript 前端三剑客除了HTML+CSS,当然还有JavaScript,初学者迷惑JavaScript与Java的关系,这里告诉你,它们的关系就和雷锋与雷峰塔,张三与张三丰的关系一样!!!一点关系没有。当然JavaScript也有新的标准那就是ECMAScript6(ES6),JavaScript本身并不是严格的面型对象编程的语言,但是新的标准能够更适应面型对象编程,能够提高开发者的工作效率,当然也是有部分浏览器不能实现完全支持ES6标准。当然学JS的同时要顺便把Jquery学了,它们大多数是相通的。 前端框架学前端要比学后端更要掌握时代的趋势,不断学习新的事物,才能立足于前端。永远不要认为前端简单而学前端,任何一个深入学习过前端的人都会告诉你,前端的水比后端深多了。前端三大主流框架Vue、AngularJS、React,不推荐全都学习,每个公司都有自己的标准,能够有针对性的学习也是很好的。 你以为这就完了?不不不,这才是开始。


