灯塔指路 || 计算机科学与技术专业介绍
作者简介
肖天宇,惠州一中2020届毕业生,杏林学社成员,CS专业摸鱼能手,非典型ACG爱好者,怀有探索和创造之心。现就读于南京大学计算机科学与技术系。
01 前言
02 计算机专业是什么
03 专业特点分析
04 计算机专业学什么
05 计算机专业怎么学
06 就业方向
07 计算机学习网站
01
前言
最近咨询我有关计算机专业的同学和家长比较多,然而可以很明显地看出大部分家长和同学并不了解计算机到底学的是什么,只知道这是大热门专业,以后出来工资高(说的也没错),所以想要填报。
高考完志愿填报固然可以随波逐流、追求热门,但是个人觉得,如果完全对CS混沌无知就闯进这个世界,可能会在学习中遇到不少困难。作为一个计算机系学生,我觉得需要一篇科普告诉大家计算机系的学习生活。
温馨提示:本文只针对计算机科学与技术(CS)专业,其他如软件工程(SE)、人工智能(AI)与CS的培养方案有所差异,未来的方向也有所不同,在此不做分析。

02
计算机专业是什么?
以下是百度百科的定义:
计算机科学与技术是一个计算机系统与网络兼顾的计算机学科宽口径专业,旨在培养具有良好的科学素养,具有自主学习意识和创新意识,科学型和工程型相结合的计算机专业高水平工程技术人才。
概括来说就是研究计算机的设计、组成、制造,以及应用计算机处理信息的学科。专业名字包含科学与技术两个词,说明其既有理论研究,比如计算理论、编程语言设计以指导实践技术等;又有实践上的工程应用,比如计算机多媒体技术等。科学性和工程性都是计算机专业学习生活的一个体现。

03
计算机专业特点分析
1
成就感强
学习计算机不是学习传统理科,当你学会了基础的编程语言,你就可以设计计算机小游戏,就可以设计计算机系统跑别人的程序,就可以做html网页,就可以写网络爬虫获取别人的数据……诸如此类的事情都可以通过双手在键盘上翻飞来实现。“You are the god in code world”

2
难度大
难,是计算机专业的最大特点。写代码难,算法分析难,系统分析难,没有一个知识是可以简单掌握的,平时要付出的心血和肝都是超过其他大多数专业的。所以务必做好心理准备。

3
变化性大,基础性强
计算机的世界日新月异,不断有新的工具被推出,也不断有旧的知识被淘汰。学校学的东西作为底层内功是足够的,基础的架构始终不会变化。但是算法、工具的变化需要自己搜集信息去感悟,去学习。
4
可选择性大
具体在就业部分体现。
04
计算机专业学什么?
温馨提示
首先声明,计算机不等于修电脑,也不只等于写代码。根据我个人一年的学习经验,计算机学生知识体系主要是两条线路 – system和algorithm,对应的是硬件和软件。System线是从计算机的最底层研究,从数字逻辑电路、指令集ISA和CPU设计这样的硬件,再到操作系统、编译器等系统级别的软件,这一条线路偏向硬件,主要是做到与机器对话,学好system可以帮助理解计算机工作的原理以及其出现的各种状况。Algorithm线的基础是数学,包括但不限于微积分、线性代数、离散数学、概率论等大学基础必修课,研究的是几十年来计算机科学家们的智慧结晶 – 数据结构和算法,偏向软件,强调的是利用逻辑解决问题和更高效的解决问题,当然这是最大致的概括。


打好基础
Period 1 大一
课程内容:微积分I、微积分II、线性代数、离散数学、程序设计基础、程序设计基础实验、高级程序设计、计算机程序的构造与解释(SICP)、数字逻辑和计算机组成解释:微积分是研究求导、积分的学科,主要的难点是计算。
线性代数引入了矩阵模型,处理的是n元方程求解的问题。
离散数学内容繁多,什么都讲(GPA杀手就是它)。
程序设计基础在大一上教基本的C和C++的用法,教会你写一些小程序比如日历之类的,程序设计基础实验在大一下,要求完成简单计算器难度的项目,目的是提高编程能力,高级程序设计是C++的深入教学。
SICP教授函数式编程语言的基本以及写代码的基本原则,授课语言是Python、scheme,“不要做搞不懂什么是递归这样基础概念的程序员”。
数字逻辑和计算机组成属于硬件课,研究计算机的底层架构 – 从逻辑门到功能部件最后到存储器、输入输出和CPU设计。
(如果以上名词有看不懂的,可以找一本叫计算机科学导论的书读一下,可以对计算机世界有一个初步的了解)。
专业基础课
Period 2 大二
课程内容:计算机系统基础、数据结构、算法分析和设计、操作系统、计算机网络,以及部分选修课
具体如下:
计算机系统基础:接续数字逻辑和计算机组成课程,从程序员的角度和软件底层打交道,研究程序是怎么执行的问题,需要考虑二进制代码等等底层的问题。这门课的特点在于实验难度大,要求用Linux、C语言和汇编完成计算机系统并可以跑仙剑奇侠传的程序。整个实验四个阶段,完全做完的人最多60%。这一门课要求较高的逻辑和过程梳理概括能力,同时需要细节把握。
数据结构、算法分析和设计:数据结构是基本的数据组成结构,算法是处理数据的方法,计算机学科的难点和有趣的点在于此。一方面它需要较好的逻辑思维,另一方面它也要求了较高的写代码能力。这两门课主要在于尝试解决各种问题,注意“写之前先思考“的原则。
操作系统:连接软硬件的桥梁,主要在于操作系统如何控制计算机执行各种程序,分配调度各种内存。可以认为Os实际上承担的是管家的工作,你要学的就是做一个这样的管家。
计算机网络:最简单的说法就是研究一个数据包是怎么通过网络在计算机之间传递的,这门课会用《自顶向下—计算机网络》的黑皮书,分层研究数据传输的过程。

专业选修课
Period 3 大三
大三的专业方向分为五个,分别如下:
一、计算机科学:研究计算机理论的科学,核心课程是概率论,形式语言和自动机以及编译原理。
二、计算机系统方向:研究计算机架构和系统构成,核心课程是计算机体系结构、计算机组成原理和编译原理。
三、网络安全和信息安全:研究信息存储安全、传输安全等,核心课程为操作系统安全、网络安全与检测、密码学原理。
四、软件工程:研究软件开发、维护等,核心课程为软件工程,高级程序设计以及软件质量保障。
五、计算机应用:研究计算机在实际问题的应用,较为热门的有人脸识别、语音识别、图形处理等问题,核心课程是数据库概论,高级程序设计和计算机图形学。
其他
Period 4 大四
完成毕业设计、实习、考研和一些选修课
05
计算机专业怎么学
计算机专业的学业压力是巨大的:任务繁重,很多同学完成作业时常一两点睡觉;容易消磨耐心,写不出代码、de不出bug分分钟让人血压飙升;学习难度大,算法和系统都不是简单可以学会的,需要大量的动脑去理解,去思考。所以在重压之下,希望各位有志于研究计算机科学与技术的同学不要灰心,保持热情,坚定的走下去,总会有收获的。大家也可以参考一下下面的回答,了解计算机学习对我们的要求。
1
打好数学基础
短期利益来看,数学成绩意味着你的GPA(数学菜鸡流下了眼泪),是帮助你保研、出国的基础。
长期发展来看,数学基础好对研究热门的机器学习、NLP、人工智能都是有利的,即使是出去当程序员也可能用到线性代数或者图论的知识。
2
提高搜索和自学能力,
学会STFW和RTFM
STFW,即search the friendly website,RTFM,即read the friendly manual。(个人觉得我觉得friendly太过文雅了,用原版的fxxxing比较可以代表计算机系学生的心声)。计算机学习不会像其他科目一样老师教你什么就只用学会什么,要不断去利用网络等搜寻需要的资源。像只青蛙张大嘴巴等着喂食只会落后于别人,必须学会自学,学会搜索才能够活下来。建议是,搜索引擎推荐使用VPN和谷歌,再不济必应,坚决不要用百度。
3
学好英语
英语是计算机专业的必备工具,毋庸多言。个人经历也告诉我英语多去阅读资料肯定可以增长水平(仅指阅读)。
4
多写代码
但是记住写代码时多思考。这一部分不只针对算法题,进行其他的项目开发同理,写代码时一定要学会多思考、多动脑,不能上来就写代码,写完就忘。多想想是不是应该这样组织数据,是不是应该这样搜索数据等等……你不用记住所有的代码,你需要的是灵活的头脑与思考的方式(该建议并没有指定哪一种编程语言,你可以多尝试,多学习,C++、Java、Python、scala、Haskell等等都值得尝试)。

5
找到有兴趣的点
计算机世界方向众多,你不可能对所有的方向都有兴趣或者都擅长,必须找到自己喜欢的,然后在这个方向深入研究。在大一大二阶段可以多尝试,system设计、算法设计、游戏开发、软件维护、网络黑客……总有一款适合你,“于是你尝试着用自己的双手改变世界”。

06
计算机专业的就业方向
科研:如上,计算机专业的研究方向很多,对研究人员的需求十分大,致力于科研、留校教学是一种选择。技术开发:加入互联网公司,进行技术开发 – 目前需求的开发岗包括前端网页、后端系统、数据库、测试工程师、网络工程师等等;同时需求算法工程师,研究Page-Rank等等算法。目前处于互联网时代,大厂开发岗的薪金远高于其他行业,对应的代价就是996和加班。
除此之外,创业、考公也是计算机专业的就业方向,此处不言。
具体就业情况可参考各大学的计算机就业报告。




07
资源分享
推荐几个比较好的计算机学习网站:
答疑和交流的论坛
https://stackoverflow.com/、https://www.csdn.net/
大型同性(划掉)程序员交友网站
https://github.com/
你想要的网课都在这里
算法刷题网址
https://leetcode.com/
维基百科
http://en.wikipedia.org/
系统学习的指南
https://github.com/keithnull/TeachYourselfCS-、CN/blob/master/TeachYourselfCS-CN.md
英语翻译网站
https://dictionary.cambridge.org/
作者寄语
最后,欢迎报考南京大学计算机科学与技术系(如果我有机会拥有小直系,那我可能还会再出一份NJUCS选课指南)。而对于其他有志于计算机系的同学,也欢迎你们走进计算机世界,开启肝并快乐的旅程。
文案:肖天宇
排版:范立晨、罗弋洋
图片:肖天宇、知乎用户刘淮、Computer organization and design、大话数据结构、南京大学计算机2019PA实验讲义、谷歌、南京大学2020计算机系就业报告,部分表情包来源网络
审核:惠州一中杏林学社理事会