当前位置 博文首页 > 深度学习与计算机视觉:一个不是很了解CS(计算机科学)的人,应
来源:https://www.zhihu.com/question/380375631
编辑:深度学习与计算机视觉
声明:仅做学术分享,侵删
作者:穷码农
https://www.zhihu.com/question/380375631/answer/1091091024
这个题我碰巧会,而且我是转专业学计算机的。现在也是CS的TA,所以对美国的CS本科课程还算了解。
课程的话,最重要的就是下面五门:
数据结构,
算法,
计算机操作系统,
计算机网络,
数据库系统。
外加计算机组成原理。
上面的这六门课,无论你是将来找工作,读研,还是读博,都是最最重要的。而且学习的顺序就是上面的这样,美国一般会开一门计算机基础,教一门语言,Python和Java居多。然后就是数据结构,在这之后就学算法。以此类推。
如果你想在美国找工作的话,就需要把时间分配好,去刷题,刷project。因为如果你到毕业的时候哪怕GPA很高,学校也不错,能过得去简历关,面对你最重要也是最难的一关就是面试。
面试就是算法面试,除了少部分公司,比如Amazon,特别注重behavior question (BQ)之外,其他公司基本一溜的需要你对算法和数据结构掌握得很好才行。
以下的情况都是针对国外,尤其是北美而言的。
GPA有3.5+就好,一定要重视刷project,刷题。
有project才能过简历关,LeetCode熟练才能过面试关。毕竟读CS或是转CS的大部分人,还是以读书找一份程序员的工作为导向的。
因为国外实习或是new grad找全职,面试主要考察算法和数据结构。
需要熟练掌握一门语言(Python,Java,或是C++),然后用你熟悉的语言来实现基本的算法和数据结构。
网课可以跟着这几门来学:
网络课程的话,则是十二分强推UCB的CS61B。他们家的计算机系的CS61A,B,C课,简直制霸各种课程推荐列表。
1.CS61B的官网在这里:
https://inst.eecs.berkeley.edu/~cs61b/fa19/
这门课以Java为主。
2. MIT的算法课,教程用的算法导论,也是强推的网课:https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb?
这门算法则基本不涉及到语言层面,主要是算法层面,讲得很好。
3. 然后就是红宝书的网课以及配套官网:
https://algs4.cs.princeton.edu/lectures/
https://www.youtube.com/watch?v=1QZDe28peZk&list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX
4. 斯坦福2018 Winter CS106B: Programming Abstractions,虽然从名字不太能看出来,但其实是用C++讲数据结构,想用C++的小伙伴不容错过,我看了一半了,特别有帮助,尤其是对递归和回溯的讲解,简直醍醐灌顶。
现在因为不可知的原因,Youtube上面已经下架这门课程,但更方便的是,咱们可以在B站直接看:
https://www.bilibili.com/video/av21620553?p=1
光学(看书)不练,算法和数据结构是学不会的。
所以推荐一些好的刷算法和数据结构平台,当然另一方面也是为了找工作面试做准备咯。
如果你在北美的话,初级程序员面试基本就是考察数据结构和算法,所以大家一定要勤加训练!
1.LeetCode
这是现在刷题找工作最热门的网站了。
但LeetCode现在题目也太多了,一共1300+了,而且一直在增加!!!
全刷完没必要,也不高效,所以推荐看下面的回答:
https://www.zhihu.com/question/32019460/answer/875114975
国外LeetCode大牛们是怎么刷LeetCode的:
https://zhuanlan.zhihu.com/p/98580817
2. Educative
https://www.educative.io/explore?aff=K7qB
他们家还给Github的学生账户提供半年的免费课程,满足条件的小伙伴,可以照着下面的文章流程申请一下,有更详细的课程和相关步骤介绍:
https://zhuanlan.zhihu.com/p/93374358
对算法最有帮助的课程是:
https://zhuanlan.zhihu.com/p/104983442
专门针对数据结构的课程有:
C++:
https://www.educative.io/courses/data-structures-in-cpp-an-interview-refresher?aff=K7qB
JavaScript:
https://www.educative.io/courses/data-structures-in-javascript-an-interview-refresher?aff=K7qB
Java:
https://www.educative.io/courses/data-structures-in-java-an-interview-refresher?aff=K7qB
Python:
https://www.educative.io/courses/data-structures-in-python-an-interview-refresher?aff=K7qB
我上过其中的Java版本,课程是把数据结构里面的基础数据结构都用java实现了一遍,对于用java的同学特别有帮助,java的基础在刷题的过程中,还是要必须掌握的。
课程从复杂度开始讲起,Arrays,LinkedLists, Stacks/Queues, Graphs, Trees, Trie, Heaps, Hash Tables等数据结构,全都实现了一遍。而且还有配套的基础LeetCode题。是一个入门的很棒的教程。选择其他语言的话,内容应该也是差不多的。
项目Project
看到评论区问项目推荐,特意更新一下我自己跟着刷项目的网站。下面这个网站是Java全栈,从Java的基础,前端三件套,以及Java的框架,应有尽有。最好的地方在于,用不同的技术栈实现天猫全栈。这样跟着一套学下来,技术方面就不会太差了。
https://www.zhihu.com/question/56476038/answer/1007722651
如果你想专门学前端,可以去Udemy找几个网课跟着练:
计算机的东西还是比较多,也比较杂的,但先从上面的六门课学起肯定没问题。
共勉。
作者:CelticDruid
https://www.zhihu.com/question/380375631/answer/1088569924
个人认为理论和实操都很重要,所以分为两部分。
理论:
基础:数据结构+算法(二叉树,队列,栈,红黑树)
计算机网络:HTTPS,TSL,Routing Algorithms,TCP/IP,REST API等等。这部分主要研究如何安全、高效地在局域网/互联网节点之间传递信息
数据库/分布式:几种分布式处理的范式(比如数据同步和robustness),关系式/非关系式数据库
计算机架构:内核,内存,CPU/GPU结构,中断等。计算机底层工作原理和网络安全等等
计算机图形学:渲染管道,GPU shader,优化,并行计算,光照算法(个人认为这里数据结构用的非常多)。基本高效进行数据和图形/几何转换
机器学习(大泡沫):线性回归,Multi-Layer Perceptron,梯度下降,深度神经网络,反向传播,卷积神经网络,生成式对抗网络等
实践:
个人认为最常用的语言:C/C++(图形学和系统),Java(服务端和桌面程序),Python(机器学习,数据科学,后端等),C#(.NET和Unity),Ruby/Perl(网络/安全),Javascript/ECMAScript(前后端/全栈/网页游戏)
网络前端:Django,AngularJS,HTML5,JS/Canvas等
网络后端:Node.js,Django,Postgresql等
机器学习/数据科学:SciKit,Pytorch,Tensorflow(不推荐,比pytorch难用),Pandas,Numpy等
图形学:OpenGL,Unreal Engine,Unity。前两个C/C++后面的JS和C#
架构:汇编,好像分NASM和ARM结构;X86和X64会有寻址上的差别,然后不同厂家有不同标准。C和有很广泛的应用,可以内联汇编函数灵活编程
项目管理工具:Maven和gradle。个人感觉gradle更好用,但是基于Java的服务端项目Maven比较合适。
分类可能不是很合适,但大概就这样。我建议选择一两个方向先研究,然后最好先把基础打牢。
作者:吾人为学
https://www.zhihu.com/question/380375631/answer/1087476896
可以先从掌握1~2门语言出发,推荐C、Java。
并不是很推荐一开始就上Python,因为它的语法结构跟其他语言不太相似。
在语言掌握了之后,可以学习数据结构和算法。推荐的书籍可以看我之前的回答。
这些结束了之后,一定要多练习,尝试做几个小项目。
计算机专业最重要的就是动手去做,代码能力一定要强。
作者:张大牙
https://www.zhihu.com/question/380375631/answer/1096151103
如果是科班的话肯定是有一套按部就班的教学流程的,完全不用担心。
如果实在想预习一下的话,可以先学一门开发语言,C语言比较简单,会是一个比较好的入门手段,教材我比较推荐K&R C,就是所谓的The C Programing Language,不要只看书,习题也一并做掉效果最好。
学好了C之后,下一步可以读一下CMU的深度理解计算机系统来对构建对整个CS的体系的一个初步认知,可以考虑配合着网上一些大学的MOOC课件一起学习。
再往后你就可以根据自己的喜好选择一些专业课程逐步深入了,例如数据结构、编译原理等等。Good Luck
作者:lwangls老王老师 https://www.zhihu.com/question/380375631/answer/1094894281
不要先学理论,先学一门程序语言,编各种各样的程序解决你的实际或感兴趣问题,有了一年经验后,再回过头学那些理论。
作者:安先生
https://www.zhihu.com/question/380375631/answer/1094900853
计算机科学导论
大概了解cs各门课都是干什么的
看的时候倒也不需要全部细看
作者:忘言 https://www.zhihu.com/question/380375631/answer/1086737850
先去查一查了解一下你们学校从什么语言入门,确定了就是一个字“干”。学cs一定要多动手多尝试不要怕折腾。
另外,国外好大学有很多公开课,自己去找一找斯坦福、MIT、CMU、Berkeley的公开课。
作者:混乱中立
https://www.zhihu.com/question/380375631/answer/1091475314
信息计算专业大二学生,目前跟着学院实验室老师学习安全。
高考前是乖乖学习高考科目的18年,电脑都很少碰。报志愿也没有想报计算机,所以刚上大学的时候我可以说对CS毫无了解。大一上学期结束时机缘巧合之下进入学院的一个学习安全的实验室,这才被激起了无限的兴趣。
学校课程先安排学习的C语言(但我学的并不好),但也算是打下了代码思维的基础。
然后开始学习python。每周完成老师布置的程序训练,也研究别人的代码开了开眼。
然后是前端HTML、CSS、JavaScript、jQuery的学习,了解网页基本结构,看着那些网页布局能自己写出来一个一样的。
接下来是SQL的学习,只学了语法,没有对数据库进行深入了解。
(这时候大一结束了。)
大一暑假留校期间,我开始接触web安全,了解了文件上传、sql注入等漏洞,也开始着手php的学习,并完成了一个和数据库结合的教务系统。在dvwa、upload-lab、sqli-labs等靶场练习,然后循序渐进接触web安全其他内容,还有一些扫描工具的使用,kali linux的使用等。期间初识CTF,在一些平台(攻防世界,bugku等)练习web&misc。放假去北京玩的时候顺便去北京邮电大学膜拜一下天枢战队,又是机缘巧合之下(实在是过于巧合,可以写成奇遇记了)获得了天枢战队的纪念品。(天枢的学长学姐们都好好啊!)(/ω\)
大二上学期练习CS和MSF,安排阅读的书籍有《C程序设计语言》《操作系统》《计算机网络》《数据库》。花了一段时间用mysql和php做了数据库的课设,也帮同学做了两份课设,仍记得被通宵到五点多支配的恐惧。
学期后期开始php代码审计,得到了几份很久之前大佬写的源码学习人家的思路,如何防止漏洞的产生等。
寒假留校期间开始学习载荷上传、落地、免杀技巧。
寒假回家先沉迷了10天的小说漫画和动画片。然后开始学习汇编语言,并站在汇编的角度理解C语言,很多东西迎刃而解。
现在在看看雪的《加密与解密》,开始re&pwn的学习。
下学期会看《数据结构》《计算机组成原理》《计算机算法分析与设计》和密码学的视频,《加密与解密》也会继续,再后面会看《0day安全》《Windows程序设计》等。
我不是一个聪明的人,安全对学校专业课的学习肯定是有影响的。只要不是上课时间我都在实验室。有时候也会翘掉一些水课(英语、体育、省情、创新创业之类的)。但毕竟还算数学系的,数学专业课没有时间仔细推敲,这点令我很惭愧,但也没有办法兼顾。
能再更高效的利用时间就好了,能再聪明点就好了(>ω<)
作者:匿名用户
https://www.zhihu.com/question/380375631/answer/1090841916
Calculus, Linear Algebra, Probability, Statistics, Information Theory, Algorithms, Network Science, Computational Complexity, Theory of Computation, 面向应用可以学点Machine Learning/Deep Learning应用到CV、NLP,面向未来还可以来点Quantum Computing
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文(无广告)。
↓扫描二维码添加小编↓
cs