一个不是很了解CS(计算机科学)的人,该从哪里开始自学CS?

赵晓


结合我的个人经历,提一下建议,供参考。

1. 选择一门编程语言,迅速上手。

如果一开始就看一堆理论知识,很快就会感觉到厌烦,影响对CS的学习兴趣。学习一门编程语言,边学习,边动手实践,可以实时看到自己的产出,有助于保持学习积极性。

我是高中才接触的编程语言,当时是高中的兴趣小组,老师教的是Pascal,一种非常古老的语言。也就是从那时起,觉得计算机如此有意思,原来除了Word和PowerPoint以外,还可以写程序。

上大学前,知道自己被录取的是CS方向的专业,就在暑假买了一本C语言的书自学,算是开始系统学习一门编程语言,有了一定的编程技术。当时压根不知道什么是CS,只以为编程就是CS。到了大学,期末第一门考试是计算机导论,这门课一行代码都没写过,我只得了七十多分,到现在我还没弄清楚为什么只得了这么点儿分。(还好那个学期通过后面的课程把平均成绩还是提到了班级第一。)后来大学课程里还陆续学习了Java、C++、C#语言,不过应用不多,只是在课程Project里进行简单使用。

到了研究生阶段主要是使用C++,在工程项目及科研实验代码中都得到了实践机会,也了解到,编程语言除了基础的语法外,还有各种高级特性需要学习,有各种库可以使用,工程配置也有很大的学问。

工作以后,没有太多写代码的机会,我利用业余时间看了看Python,并且利用Python学习量化交易。我把学习过程记录在了头条号的系列文章里。(https://www.toutiao.com/i6787638553221267975/)

这里还是推荐选一门类似于Python这样的脚本语言,便于快速上手。

2. 选择一个方向,深入研究。

CS的方面太多太多,计算机图形、图像处理、自然语言处理、语音识别、大数据等等等等。在对编程有了一定的了解后,可以选择一个自己感兴趣的方向或者需要用到的方向,去研究这个方向成熟的第三方库,去研究这个方向背后的数学、物理等知识。

这时候,可以根据自己选择的库的语言,来切换自己的编程语言。学习了一门编程语言后,再切换到另外一门语言就比较容易了。

研究生阶段,我的研究方向是计算机图形学,选择这个方向也是自己的兴趣在于此,成果可以通过图形图像进行直观展示。研究计算机图形学,就需要学习OpenGL、OpenCV、CUDA等等库或者框架,还需要学习三维空间变换等数据知识,学习流体力学等物理知识。

方向选择首要还是按需,有工作推着走,前进得总是会快一些。如果没有工作压力,可以按照自己的兴趣进行选择,实现什么功能能满足自身的成就感,也是学习前进的有效动力。

3. 查漏补缺,不断学习

CS涉及的内容太多,学习一些基础知识,有助于我们对上层应用有进一步的深入理解和认知。

查漏补缺的过程,可以去了解一些基础CS知识。可以参考考研科目学科专业基础综合所包含的四个课程:数据结构、操作系统、计算机组成原理、计算机网络。

算法,是技术类岗位必考的内容,只能看书、刷题慢慢积累了。

CS技术更新迭代快,要保持不断学习,避免被时代淘汰。


我最近在做

Code.org

的少儿编程教育视频(

https://www.ixigua.com/pseries/6803971330308833806_6793624102478283276

),在录制课程的视频中,自己也对什么是算法、什么是程序等知识有了一个重新梳理的过程。我觉得浏览一下

Code.org

还是有很大帮助的,可以了解一下国外的教育是如何进行计算机科学启蒙的。

以上就是我的建议,供参考。

如果您喜欢我的回答,欢迎您留言、点赞、关注,谢谢!


码农甲


哪个行业的平均工资最高?

计算机。

国家统计局的数据显示,2016 年信息传输、软件和信息技术服务业年平均工资为 122478 元,首超金融行业,并于 2017 年再次夺魁。

在互联网和人工智能浪潮的推动下,一大批年轻人选择了 CS(计算机科学) 专业,这里面还包括各种转专业的学生。

此前营长也给大家推荐过很多学习资源,但是大多都是单个资源,比较零散。其实,很多读者需要的是建议,而不仅仅是资源。

特别是对于自学的小伙伴来说,为什么要学习 CS?应该学习什么?如何选择教材或者视频课程?都是让人困扰的问题。

现在,营长特意为这些小伙伴准备了一套大餐,希望能帮你厘清方向,消除困惑。

为什么要学好 CS?

首先,为什么要学习 CS?

我们知道,任何行业的从业人员的专业水平都是参差不齐的。有人将软件工程师也分成了两类:一类是对 CS 这门学科理解透彻,可以胜任各种挑战性和创新性的工作;另一类则仅仅是对一些高级工具比较熟悉而已。

虽然两者都自称为软件工程师,而且一开始的起薪都差不多,但是第一类工程师显然有更大的发展空间。

比如 WhatsApp 一天要处理 420 亿条信息(2016 年 2 月),但当时 WhatsApp 只有 57 名工程师,要完成这个挑战靠第二种类型的工程师是不太可能的。

因此,如果你想成为第一种类型的软件工程师,踏踏实实学好 CS 才是正途。

怎样学好 CS?

在回答了为什么要学习 CS 这个问题之后,接下来要怎么学?

其实 CS 不只是编程,还涉及到很多知识。本文将重点介绍编程、计算机架构、算法和数据结构、数学、操作系统、计算机网络、数据库、计算机语言和编译器、以及分布式系统。接下来我们一一分析。

编程

大多数的 CS 本科课程都是从介绍计算机编程开始的。营长推荐 Structure and Interpretation of Computer Programs 这本书。

视频则推荐伯克利大学 Brian Harvey 的 SICP 课程。建议至少学完 SICP 的前三章,并把练习题做完。如果你觉得 SICP 的课程太难,可以选择 How to Design Programs。



影视频剪辑短视频制作


首先你要清楚,计算机科学是一个十分庞大,分支众多的学科,想要学下去一定要有着十分浓烈的兴趣,过于目的化的去学习反而效果不佳,计算机科学宽泛的来讲由硬件和软件两部分构成,学习的路径通常我比较建议先学习硬件,对硬件有些大致的了解之后,再去学习软件,因为软件是基于硬件来实现的。

【学习阶段,过程】而对于硬件的学习,起初你可以培养自己的兴趣,可以抓自己的电脑“开刀”,去了解自己的电脑的“内脏”“器官”都是什么,将这些都搞清楚了,基本上是入门了,因为你自己的电脑就是计算机中设备的通用模板,随后你去了解手机,路由器等等的会发现和你的电脑结构有些的相似。

随后可以去了解一些软件的知识,这个没有什么捷径,就是不断的去百度,不断的去了解一些概念,才能够在心里有个大致的雏形,往后有能力的可以尝试学习C语言编程,这对于编程是个很好的入门。

完成以上对于计算机体系的大致了解之后,就可以随之深入学习了,这里通常要学习操作系统,系统是计算机的脑子,学了这个你就更加的理解,这些稀奇古怪的硬件都是怎么被连接组合起来的。

通常大学的CS课程安排规划是,大学计算机基础——C语言编程——操作系统——数字逻辑电路,模拟电路——数据库设计等等,以上可能不同学校有先后,但大致都是按照一个逐步深入的过程,其中有了基础知识之后,便是硬件和软件穿插着深入学习。

【学习方法】而学习方法,最重要的就是百度,你可以看一些在线入门教程,书籍之类的,但光凭借那些事不够的,一定要边学边百度,百度自己不理解的地方。如果是大学专业,那就跟随着培养计划好好打好基础,好好学习就是捷径。有一定的基础之后就是实践了,鼓捣自己电脑的阶段了,可以是编程,也可以去焊板子(单片机等)。

之前有很长一段时间你可能学习了之后很懵懂,感觉不知道在学些什么,但学到了一定的阶段之后,你会发现看的通透了起来,所有的内容都好像连接起来了,之前不理解的地方也自然而然的理解了,相信到时候你就会沉醉于计算机的魅力。

加油,祝你成功!


小吉小笨鸡


首先掌握一门语言,知道计算机语言大概是如何编写的。

其次,了解计算机的基本原理和操作系统原理,这会让你从底层掌握计算机运行的过程以及所涉及的各类经典问题。如同步,锁,线程,进程,内存,文件IO等。

同步的,你可以开始数据结构与算法的学习,操作系统的知识点中会涉及数据结构和算法的部分内容,但还需系统学习,掌握不同数据结构的特点和应用场景,算法层面需要熟悉常见算法的使用场景,对于cs来说更重要的是算法的复杂度分析,这会让你充分了解不同算法的优劣,以及如何设计出更高效的算法。

然后,是网络和数据库,这两块也是重头,里面的概念有很多,网络中各层协议规范,数据库的关系代数理论等。

如果对语言本身深入了解,那编译原理是必须要学的。

对cs来说,更多是掌握基础理论,而不是具体实现工具。当然,编码能力还是需要很强的。[赞]


分享到:


相關文章: