大学应该更偏向技术还是算法和数据结构这类?

经常有学妹问我(其实学弟也爱问):

大家都是成年人了,这还用选吗?

当然是两者都要重点啃下来呀,算法和技术相辅相成的,一定不要有二选一的想法!

我当时大一也是觉得数据结构没啥用,哪有学个JS、CSS写个漂亮的网页炫酷?

这玩意有qsort快吗?

我直接一行就排好序了,你还要写十几行,真菜呀!

但是越学到后面心里越没底,因为这些东西对自己都是黑盒子。

所以如果数据结构与算法掌握不好,那么这些API对于我们就是一堆的黑黑子,连什么时候用Map(红黑树实现)、什么时候用HashMap都分不清。

Redis这种组件,难道只需要了解如何get、set就是算是掌握了吗?

现在还在大一、大二的同学还不抓紧机会,别给自己留下遗憾。当然,不打ACM,我们也是能够学好数据结构和算法的。

所以学习算法有助于我们根据应用场景选择最合适的数据结构。

日常开发中也一定离不开算法,比如小北最近工作中涉及的某种嵌套TLV(Tag-Length-Value)结构编码的解析,就需要用到递归、多叉树等知识。如果不学习算法,那么程序中只能见到大量的if/else、while/for。。。

再来说操作系统、编译原理,这些里面也是蕴含着各种数据结构与算法的,就拿编译原理来说。

一、编译原理遇见算法

当你学完有限状态机以后,你会发现以前觉得很牛逼正则表达式似乎自己也能用DFA、NFA实现一下了。状态机的思想在编程中很多地方都用得上。

比如解析HTTP协议,如果没学过状态机思想,你可能会一行行的if/else去做解析,这里最麻烦的地方在于,if/else需要提前将HTTP头部字段都接收到再来判断,而我们知道HTTP基于TCP,而TCP是流式传输,所以你很有可能是几个字符一组组接收到的,这个时候用if/else写出来就很难看了。

而用状态机编写起来代码就会非常优雅。状态的转移是由规则驱动的,接收到一个字符就判断一个,非常的方便。

继续学完语法分析,你会掌握递归下降分析这样非常重要的思想,你可以使用递归下降快速的实现四则运算计算器。

如果不用递归下降你可能需要先中缀表达式转后缀,然后求值,这是我们大一数据结构课写的,当时用栈写的,有点麻烦。后来学完编译原理,又用递归下降重写了一遍,区区几十行代码遍搞定。

还有一类场景在实际开发中的用的很多,比如淘宝、京东这样的电商,它们的营销规则有很多,比如满减、直减、跨店等等,这样的规则是不可能写死在代码里的。

那是怎么做的呢?

像我们平常经常使用的JSON、SQL、HTML这些都算是一种DSL,你甚至可以尝试用递归下降去写一个JSON、XML解析器,这比写电商网站更有价值的。

继续往下学你会了解到抽象语法树AST如何生成、如何转化为中间代码、如何对中间代码优化、最终又是怎么生成机器指令的。

二、CS基础课

如果你有ACM获奖经历,那BAT是很容易进的,但是也一定要掌握基本的CS基础课程知识,不能只重算法不重基础。

国外可能把题刷好就能拿到offer,但是国内不懂OS、网络这些基础和一些语言八股文也是很难的!

三、CS学习路线

我大学专业学计算机的,对CS本科课程还算了解,也经常了解学习国外CS课程。

CS专业区别于其它专业很大特点就是:

比如你学了数据结构、编译原理、操作系统、计算机网络,如果你从事的是研发岗,那一定离不开这些知识。

主要靠自学

不管是科班还是非科班,想要快速持续的提高技术水平,就得靠自己去钻,尤其离不开自学。

可能唯一差别就是少了一个计算机学士学位。

也有人把这种自学出家的叫做民科,当然没有任何的讽刺意思哈。

四、那么计算机专业该如何自学呢?

最简单的方式就是参考CS科班同学的课程,比如下面这个:

很多,概况起来就是(下面只涉及CS专业课):

算法与数据结构

操作系统

计算机网络

数据库系统

学习的途径就是:

多看国外/国外的CS名校的一些开放课程+看经典的书+多写代码!!!

毕竟现在MOOC、Udemy、B站上学习的资源都是很丰富的。

下面开始上干货:

一、计算机导论

首先建议从计算机导论课程开始,推荐下面这些课程:

MIT的6.001mit-6.001

提到C语言,我这里推荐国内浙大翁凯老师的课,看过的都说好,分为两门:

第一门是面向高考结束想提前自学一点编程的,叫大学先修课:C语言程序设计CAP-大学先修课

虽然叫先修课,但是覆盖了C语言的主要知识点,也适合大一新生~

第二门是C语言程序设计进阶:C语言程序设计进阶

会带你用C语言完成一些有趣的项目,比如一些图形界面小游戏,先修课学习C语言语法基础,进阶课带你项目实操,搭配使用,你就是同学中的大神!

有了语言基础之后建议学数据结构与算法:

数据结构推荐:

StanfordCS106系列

CS106A:ProgrammingMethodologies

算法推荐:

6.046(进阶)DesignandAnalysisofAlgorithms-MIT

MIT的6.006IntroductiontoAlgorithms

Berkeley的CS61A和CS61B

学习完经典的数据结构和算法之后就可以去刷题了。

操作系统推荐:

CMU的15-213

Berkeley的CS162,

这两个都是有视频有lab的好课

还有一个非常经典的MIT6.828,附带一个xv6lab

课程:6.828:OperatingSystemEngineering

组成原理、体系结构:

MIT的6.004,

Berkeley的CS61C

计算机网络:

Stanford的CS144,lab很有意思

五、新手快速自学的方法

一个原则,来自翁凯老师:

学计算机一定要有一个非常强大的心理状态,计算机的所有东西都是人做出来的,别人能想的出来,我也一定能想得出来,在计算机的世界里没有任何的黑魔法,所有的东西只不过是我现在不知道而已,总有一天我会把所有的细节、所有的内部的东西全搞明白的

建立抽象层,我自己的感悟

计算机里,几乎都是人造的概念,大部分的东西,只要你一直深挖下去,几乎都可以搞明白。

“打破砂锅问到底”式的学习虽然精神可敬,但性价比并不划算。

比如学习HTTP,那么就先认可TCP提供的稳定可靠传输,而不继续深挖TCP的内容,等到学习传输层的时候再去深入挖掘TCP具体实现。

也就是我们常说的面向接口/抽象编程。

视频为主,看书为辅

看书学习基本的理论

编程练习、实践

有了新领悟,继续看书

如此反复的循环。

责任编辑:lq6

原文标题:学妹:大学四年以算法为重还是技术为重?

长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)

THE END
1.算法工程师研究生学什么专业随着人工智能技术的不断发展,算法工程师也需要掌握人工智能和机器学习相关的理论和算法。因此,选择人工智能或机器学习专业也是一个不错的选择。 其他相关工程专业 除了上述专业外,还有一些相关工程专业也适合算法工程师,如软件工程、电子工程、信息工程等。这些专业也涉及到算法设计和分析,可以为算法工程师提供更广泛的知http://m.boenyk.com/gaokaozixun/34350.html
2.计算及应用专业好(数学与应用数学和数据计算及应用哪个专业大家好,关于数学与应用数学专业好还是数据计算及应用专业好很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于数学类中的数学与应用数学、信息与计算科学、统计学,哪个专业好发展方向怎样的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助。https://wz.93ta.com/newsView/ACm2GfdWvv9jWo4c0_5045/
3.python哪个专业要学?Worktile社区3. 人工智能:随着人工智能的快速发展,学习Python编程对人工智能专业非常重要。Python在机器学习和深度学习领域有广泛的应用,有许多针对人工智能的库和框架,如TensorFlow和PyTorch。通过学习Python编程,人工智能专业的学生可以更好地开发和实施人工智能算法,并应用到各种实际场景中。 https://worktile.com/kb/ask/89323.html
4.算法工程师是学什么专业出身的?问答计算机科学、数学、统计学、数据科学、人工智能、机器学习、软件工程等相关领域 https://developer.aliyun.com/ask/125334
5.统计学和计算机专业哪个好?附就业前景对比而计算机专业的缺点在于: 1. 学习压力大:计算机专业需要学生具有专业的编程和算法能力,学习内容较多,学习压力也较大。 2. 行业竞争激烈:随着计算机专业就业需求的增加,竞争也变得更加激烈,需要不断提高自己的技能和水平。 综上所述,统计学和计算机专业都有其独特的优势和劣势。从专业学习难度来看,统计学对数学要求较https://www.gk100.com/read_9080238192.htm
6.2021年度软件中心支持服务(机器学习算法及专业模型应用)项目”公中国银行软件中心“2020-2021年度软件中心支持服务(机器学习算法及专业模型应用)项目”公开邀请公告。https://www.boc.cn/aboutboc/bi6/202007/t20200703_18086660.html
7.人工智能未来职业规划书范文(精选10篇)因此,提高专业技术含量,是未来职业稳定和发展的重要途径。不过,在提高技术能力的同时,也要留意行业或职业的发展讯息,注重新知识的学习。一般产业升级并不意味着旧的完全淘汰。例如汽车代替马车,但毕竟都是在公路上行驶,因此车轮,车身等很多部件的制作标准还是一致的。所以旧产业职工只要能及时更新知识结构,依然能在新https://www.ruiwen.com/zhiyeguihua/6557663.html
8.转:2024年展望:未来十大最吃香最具前景专业分析人工智能(AI)和机器学习正在各个行业广泛应用,这个领域的专业人才将在未来几十年内持续需求旺盛。随着技术的快速发展,AI正在重塑我们的生活、工作和社会互动方式。 主要研究方向 1.1 深度学习算法研究 神经网络架构优化:开发更高效、更强大的神经网络模型。 https://maimai.cn/article/detail?fid=1851243312&efid=XSQx0hfK7u4CsISU06jfRw
9.CSDNCSDN是全球知名中文IT技术交流平台,创建于1999年,包含原创博客、精品问答、职业培训、技术论坛、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区.https://www.csdn.net/
10.数据挖掘专业就业方向补齐了这些知识之后,第一件事就是了解大数据生态,Hadoop生态圈,Spark生态圈,机器学习,深度学习(后两者需要高等数学和线性代数基础,如果你的大学专业学这些不要混)。 数据挖掘专业就业方向2 A:做科研(在高校、科研单位以及大型企业,主要研究算法、应用等) https://www.yjbys.com/qiuzhizhinan/show-571958.html
11.《2020科技趋势报告》:AI和中国,成为未来科技世界关键词这项功能对专业摄影师以及所有想拍出更好自拍的人都有实际的应用。图像完成也是执法和军事情报人员的一个有用工具,计算机现在可以帮助他们识别谁或什么是在框架中。考虑到我们已经在机器学习算法和数据集上看到的偏见,图像完成可能成为未来关于隐私和我们设备的争论的一部分。https://www.tmtpost.com/4274113.html