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

333 阅读5分钟
  1. 开始做一些算法和数据结构的练习

看了大佬的分享,了解到学习顺序的重要性。 我英语不熟练但有编程基础,所以准备先从中文讲解的开始。

算法和数据结构 先视频 再书本,练习跟着做

视频:

一定要边看边练

基础:

  1. (漫画算法的作者) www.bilibili.com/video/BV15V…

  2. (练力扣) www.bilibili.com/video/BV1eg…

进阶: ?还没有找到,可以在这里找找 https://csdiy.wiki/

练习:

  1. 力扣
  2. visualgo.net/zh/sorting

书籍:

  • 大话数据结构,
  • 漫画算法
  • 算法竞赛入门经典(第2版),刘汝佳著

算法红宝书 计算机编程的艺术 算法导论


国内CS教学质量一言难尽(尤其是上海邯郸路某大学)。放个北大CS大佬的自学指南,dz看后收获颇丰。 csdiy.wiki/ csdiy.wiki/

CSPrimer_哔哩哔哩 组成原理,操作系统,算法与数据结构


英文为主 转载:www.zhihu.com/question/38…

背景:我是个北美高中留学生,今年毕业,选了CS专业,但在学校没有修过CS的课. 不想到时候开学听课太懵逼,>所以想问问各位CS大佬们有什么办法先自学/预习?

顺便...可以推荐点相关书/视频嘛?


穷码农-知乎:

这个题我碰巧会,而且我是转专业学计算机的。现在也是CS的TA,所以对美国的CS本科课程还算了解。

课程的话,最重要的就是下面五门:

    1. 数据结构,
    1. 算法,
    1. 计算机操作系统,
    1. 计算机网络,
    1. 数据库系统。

外加计算机组成原理


上面的这六门课,无论你是将来找工作,读研,还是读博,都是最最重要的。

而且学习的顺序就是上面的这样,

美国一般会开一门计算机基础,教一门语言,Python和Java居多。

然后就是数据结构,在这之后就学算法。以此类推。


如果你想在美国找工作的话,就需要把时间分配好去刷题刷project

因为如果你到毕业的时候哪怕GPA很高,学校也不错,能过得去简历关,面对你最重要也是最难的一关就是面试。

切记上面这一点。

面试就是算法面试,除了少部分公司,比如Amazon,特别注重behavior question (BQ)之外,其他公司基本一溜的需要你对算法和数据结构掌握得很好才行。

以下的情况都是针对国外,尤其是北美而言的。

GPA有3.5+就好,一定要重视刷project,刷题。

有project才能过简历关,LeetCode熟练才能过面试关。

毕竟读CS或是转CS的大部分人,还是以读书找一份程序员的工作为导向的。 因为国外实习或是new grad找全职,面试主要考察算法和数据结构。

一、 需要熟练掌握一门语言(Python,Java,或是C++),然后用你熟悉的语言来实现基本的算法和数据结构。

二、网课可以跟着这几门来学

  1. 网络课程的话,则是十二分强推UCB的CS61B。他们家的计算机系的CS61 A,B,C课,简直制霸各种课程推荐列表。 CS61B的官网在这里:inst.eecs.berkeley.edu/~cs61b/fa19… 这门课以Java为主。

  2. MIT的算法课,教程用的算法导论,也是强推的网课:www.youtube.com/watch?v=HtS… 这门算法则基本不涉及到语言层面,主要是算法层面,讲得很好。

  3. 然后就是红宝书的网课以及配套官网: algs4.cs.princeton.edu/lectures/ www.youtube.com/watch?v=1QZ…

  4. 斯坦福2018 Winter CS106B: Programming Abstractions,虽然从名字不太能看出来,但其实是用C++讲数据结构,想用C++的小伙伴不容错过,我看了一半了,特别有帮助,尤其是对递归和回溯的讲解,简直醍醐灌顶。 现在因为不可知的原因,Youtube上面已经下架这门课程,但更方便的是, 咱们可以在B站直接看:
    www.bilibili.com/video/av216…
    www.bilibili.com/video/av216…

三、最后来说说练习平台 光学(看书)不练,算法和数据结构是学不会的。

所以推荐一些好的刷算法和数据结构平台,当然另一方面也是为了找工作面试做准备咯。 如果你在北美的话,初级程序员面试基本就是考察数据结构和算法,所以大家一定要勤加训练!

  1. LeetCode。 这是现在刷题找工作最热门的网站了。
    但LeetCode现在题目也太多了,一共1300+了,而且一直在增加!!! 全刷完没必要,也不高效。

  2. Educative Online Coding Courses - Learn Interactively www.educative.io/explore?aff… 它把算法面试中可能遇到的题分成了各种模式,每类题各个击破。

对算法最有帮助的课程对应下面这篇回答: LeetCode按照怎样的顺序来刷题比较好?

下面这个系列是新出的算法课程:通过解决大公司真实场景问题来破解算法面试。

下面是用Java的: Decode the Coding Interview in Java: Real-World Examples - Learn Interactively www.educative.io/courses/dec…

还提供了Python: Decode the Coding Interview in Python: Real-World Examples - Learn Interactively www.educative.io/courses/dec…

C++: Decode the Coding Interview in C++: Real-World Examples - Learn Interactively www.educative.io/courses/dec…

以及JS版本: Decode the Coding Interview in JavaScript: Real-World Examples - Learn Interactively www.educative.io/courses/dec…

专门针对数据结构的课程则有:

C++: Data Structures in C++: An Interview Refresher www.educative.io/courses/dat…

JavaScript: Data Structures in JavaScript: An Interview Refresher www.educative.io/courses/dat…

Java: Data Structures in Java: An Interview Refresher www.educative.io/courses/dat…

Python: Data Structures in Python: An Interview Refresher www.educative.io/courses/dat…