前言

本人计算机科学与技术专业,已经要上大四,想想这三年学的乱七八糟。好多次学完一个东西,不知道接着该干点啥,也有好多次学一个东西学到一半学不下去,才发现这个东西不是我现在的水平能学的,浪费很多时间,学习也不够系统。希望写下一篇学习路线,让自己剩下的一年有点规划,同时也希望给一些对计算机有兴趣的却不知道从何入手的同志一些借鉴。

(本人只是学生,技术经验有限且已后端javaEE学习为主,此篇仅是本人自己的想法,希望浏览此篇的同学可以多参考几篇,避免被本篇观点误导)

本人因观看一篇此类博文:关于大学计算机相关专业学习路线的见解与分析,才有感决定写下此篇,在此贴出链接,以此也算注明出处。

导论

以我个人的理解,计算机科学与技术专业可以分为计算机科学、计算机技术(真像句废话。。),计算机科学指的就是计算机基础,也就是我们的专业课,而计算机技术应该就是指的编程技术。 计算机专业需要学习的课程大致如下:

  • 计算机所需基础课程
    • 离散数学
    • 模拟电子技术
  • 计算机理论课程
    • 计算机组成原理
    • 操作系统
    • 计算机网络
    • 数据库系统概论
  • 编程基础
    • c语言
    • 数据结构与算法
    • javaSE
    • 设计模式
  • 编程实践
    • javaEE
      • ssm
      • springboot
    • 消息中间件
    • 数据库
      • mysql
      • redis
    • linux

计算机专业的学习要有一定的先后顺序,需要有一些其他的基础,才更容易学,同时单纯学习理论可能太过枯燥,所以可以两门课程(理论和编程各一门)同时学,只需要安排好每天的时间。若读者为学生,并且老师水平讲授课程不够深入浅出,认真负责,可以无需听课,全凭网络课程或买书自学即可。在此篇会推荐一些讲授不错的网课以及一些学习的平台,如B站,mooc,百度网盘资源。同时本人认为在入门的时候看视频比较好,但是当有了基础之后想更好学知识,还是看书好一点。

学习中配合做笔记效果会更好。在此推荐使用Markdown语言写笔记,推荐使用typora软件,或者也可以直接在csdn,简书上面写博客作为笔记。在学习计算机理论知识时,可以用思维导图来整理思路。

以下课程顺序,即为本人推荐学习顺序:

离散数学

学习离散数学是学好计算机的基础,以后学习中,会用到很多离散数学的东西,像数据结构中的图。个人理解,因为计算机很多东西都是离散的而不是线性的,因为计算机存储容量有限。如计算机中的浮点数仍无法表示出无穷多个的数。又例如计算机屏幕显示的颜色种类也是可数的,无法像自然界中的颜色一样是无穷的。

模拟电子技术

模拟电子技术,是计算机组成原理的基础。学习其中一些电路可以让我们更好的理解计算机的组成,例如主存中的基本电路都需要用到模电中的知识才能更好理解。以及模电中的一些逻辑电路知识,会在计算机组成原理,编程语言中用到相关东西。

c语言

c语言是学习编程的基础。在学习过程中,一定要多动手写代码。但是学习计算机有一个特点,可能越基础的东西越难,如c语言中指针,指向数组的指针,会让人难以理解,却很重要。应努力去尝试理解,若实在理解不了,可以先跳过。因为c语言可以说是最接近硬件和操作系统的一门高级语言,所以指针的概念与硬件和操作系统有很大联系。同时C语言是基础,以后必须复习,可以在那时在进行理解(一定记住

计算机组成原理

计算机组成原理是计算机理论课程中最基础的一门课,也是与硬件接触最大的一门,所以学习过程中,有机会一定要找台电脑拆一拆,看一看,如果是学生,一般上计算机上机课,老师就会安排学生拆电脑。如果对计算机或者电子产品特别感兴趣,很有必要学习一下模电和计组。

个人推荐b站的计算机组成原理视频计算机组成原理(哈工大),我们可以在学习的同时看一看b站的装机视频、电脑选购视频、电脑配件相关信息。毕竟学计算机的难免被朋友叫上去选电脑,要是这些不懂,难免被朋友鄙视。要是有兴趣的,甚至可以学习修电脑。

javaSE

因为本人主要学习javaEE后端开发,javaSE作为java基础,是很重要的。一定要学好,本人强烈推荐毕向东的javaSE视频(网上很多毕向东35天视频的网盘资源,b站上也有),很多人都是看毕老师的视频入门的。毕老师一定可以让你对编程有极大兴趣。

操作系统

操作系统中的处理机管理可以说是整个编程体系的重中之重,这部分学好了,在以后的的学习过程中,可以发现很多地方都会用到这儿的思路,同时这部分面试几乎必问。一般上考研的人都会看王道的视频来学习操作系统,但是我觉得王道讲的只是一个一个的知识点(考点),整体知识框架不够连贯,只是适合考研的人看。目前我也没找到好点的视频,我是看课本学的。

linux

linux与windows相比,具有更好的稳定性和安全性,一般会作为服务器使用。在后续的学习和工作中,也会经常使用。作为程序员,必须熟练使用linux。我是在菜鸟教程上面看视频学习的linux教程,学完基础之后,也有必要学习一下shell脚本(在求职时公司一般会要求这个,其实我到目前为止还没有用过shell编程)。各种软件在linux上的安装和在linux上部署应用这些操作在以后的学习过程中再进行学习。同时本人推荐学习一下docker。

数据结构

数据结构,一般上是用c语言来学习的,但是我们可以用java来实现这些结构或者用于理解java中封装的一些集合。这里我们就可以复习到c语言和javaSE,事实上,这些东西是需要一遍一遍的去学,一次一次学的更深,理解更深。数据结构我本人看的是《大话数据结构》,这本书我觉得还是很不错的,推荐一字一句的好好看完,并且把其中的数据结构和一些算法自己实现一遍,同时可以做个思维导图,一目了然所有常用的结构。

算法

算法是程序员的重中之重,在学算法之前,一定要学好数据结构,然后学习常用的算法,深入理解那些经典算法的思想,利用这些思想,可以做出很大一部分算法题了,如果不好好学习数据结构和经典算法的思路,直接刷算法题会劝退99%的人。我看的是剑指offer这本书,讲的很不错,使用C语言实现的,我们可以自己动手用java实现一遍。同时算法是必须动手练的,可以在leetcode上面刷一刷算法题。这个时候应该就到了大二下学期了,可以参加一些关于算法的竞赛,在备赛的时候也更有动力去学习。也有一些关于linux的竞赛,感兴趣也可以参加一下。

设计模式

在java中,用到了很多设计模式,尤其是javaEE中。学习设计模式,就算我们达不到能在任何场景下合理利用设计模式的程度,起码可以让我们更容易理解java中的源码,我本人推荐《head first 设计模式》,这本书讲的真心好,虽然没有把23种设计模式都讲出来,但是讲设计模式的思路讲的极为透彻。在学习设计模式之前,需要学习UML的知识,方便我们看懂类图。我们可以在学习过程中,自己画一画类图,用java实现一下设计模式。

数据库系统概论

数据库是学习编程几乎必学的一门知识,我们尽量学好数据库系统概论,,知道数据库系统的整个体系,这样在之后学习数据库的时候就会变得很得心应手。还有多多练习sql语句。

mysql

mysql数据库可以说是最常用的数据库,也是比较适合入门的关系型数据库。在学习过程中,应该尽量往深学,多了解了解底层和原理。不要只是止步于会用这个数据库。

计算机网络

计算机网络对于web编程是一门极为重要的学科,应该尽可能了解。对于TCP/IP协议,应该尽可能的梳理知识,做做笔记或者思维导图。在面试过程中,几乎必问三次握手,四次挥手。

javaEE

javaEE就是关于开发的编程技术了,有了前面的学习,这一部分的难度相对来说不算高,现在的话可以学一下web基础,然后学ssm框架,在B站上面找一套视频,跟着视频做一个ssm的小项目。然后学习springboot框架,我看的视频是传智播客的乐优商城这套视频来学习的,在B站就可以搜到,但是在写简历中项目经验的时候,千万别把乐优商城写上。这一部分也是,不要只想的会用就够了,应该尽量多学一学底层实现,多看一看各种技术博客。

redis

redis也是编程几乎必学的数据库,尽可能的多学redis相关的知识和原理,对于面试来说是有很大优势的,包括缓存的知识,redis的几种用途。在我们实践一些项目的时候,也尽量用上redis.

更多推荐

计算机专业 学习路线