很多刚打算学计算机的人都摸不清门路,不知道计算机课程有哪些科目,只会笼统地以为就是学电脑、敲代码,我当初刚入学的时候也是这个想法,凭着片面认知选课、预习,走了不少没必要的弯路。真正接触完整的学习体系后,才发现计算机的科目是分层的,从基础通识到硬核专业课,每一类科目对应的学习方向和用处都完全不一样,混着学只会越学越乱。
最开始接触的是大一的公共基础科目,这部分内容不算难,却是所有计算机方向的打底内容。高等数学、线性代数、概率论是必学的三门数学科目,一开始特别不理解,学计算机为什么要啃枯燥的数学公式,上课经常走神划水,甚至偶尔会逃课摸鱼。直到后来学编程算法的时候才发现,代码里的逻辑运算、数据建模、概率分析,全部都离不开数学基础。很多同学写算法题卡壳,不是代码语法不会,是数学逻辑跟不上,这也是我当初基础薄弱的主要原因。除了数学,还有大学英语、计算机导论,导论算是入门启蒙课,简单讲了计算机发展史、硬件组成和行业基础概念,算是给整个专业学习开了个头。
大二开始正式进入核心专业基础科目,这是整个计算机学习最关键的阶段,内容多、难度大,也是最容易拉开差距的时期。程序设计基础是入门核心,我们当时学的是C语言,从零开始认识变量、循环、条件语句,一点点练习手写代码,改掉依赖复制粘贴的坏习惯。紧接着就是数据结构、计算机组成原理、操作系统、计算机网络这四门硬核科目,圈内人都叫它们“计算机四大基石”。
这几门课的学习节奏完全不一样,不能用死记硬背的方式应付。计算机组成原理讲硬件底层,CPU、内存、总线的工作逻辑,抽象又晦涩,我当初只会死背知识点,考试能拿分,但完全不懂实际用处。操作系统跟进系统运行机制,进程管理、内存调度这些内容,听起来空洞,实操的时候才知道是所有软件运行的核心。计算机网络是我最感兴趣的科目,从IP地址、TCP协议到网络分层,能实实在在看懂上网、传数据的全过程,实操性特别强。数据结构更是重中之重,数组、链表、栈队列、排序算法,所有后端、算法开发的核心逻辑都源于这门课。
熬过基础科目,大三就会分流学习细分方向科目,不同主攻领域的课程差异很大,不用全部精通,按需学习就够了。选择软件开发方向的,会重点学Java、Python、前端开发、数据库原理、软件工程,主打项目实操,学完就能做简单的网站、小程序和管理系统。走网络运维方向的,侧重网络安全、路由交换、防火墙配置,更多是设备调试和网络维护的实操内容。如果偏向人工智能、大数据方向,会新增机器学习、数据挖掘、大数据处理等科目,对数学和算法能力要求极高。
还有一部分容易被忽略的实操必修科目,贯穿整个大学学习。微机原理、汇编语言、编译原理偏向底层开发,难度偏高,适合深耕硬件和底层算法的人。除此之外,实训课程、课程设计每学期都有,要求独立完成小型项目,把书本上的理论落地,这也是检验学习成果最直接的方式。
身边不少同学的误区就是,只盯着代码类科目,忽略了底层基础课。有人练了一年编程,代码写得很熟练,但遇到程序卡顿、运行报错的问题,完全找不到根源,就是因为没吃透操作系统和计算机组成原理的内容。
收拾书桌的时候,翻出了大一写满涂鸦的高数笔记本,纸页边角都已经泛黄卷边了。