比较推荐的学习路线
计算机专业所涉及的课程以及方向非常 多,HackWay会尽可能详实地整理6大CS名校的所有关键课程,但这些课程对于个人学习者来说未免过于庞杂;而且相同的课程不同学校都有授课,到底该如何取舍?而且不少课程资源配套以及开放的程度不一,哪一门课提供的更加丰富...等等,在这里综合多方面的考量为大家提供一个值得参考的学习路线,既做到循序渐进,又不缺失核心的经典课程,而且课程的资源也比较容易获取。
大一上学期
进学校的第一门课对学生来说是非常重要的,尤其是不少同学之前完全没有接触过代码,甚至计算机的基础操作都不熟悉,
① 计算机科学导论
计算机科学到底是指什么,新入学的新生需要一本比较宏观简明的教材来对计算机科学有一个全景式的讲解,通常这样的入门课在计算机科学教育中被称之为"CS0" (Computer Science 0) ,旨在为没有任何计算机科学背景的学生提供基础。它通常不涉及深入的编程,而是介绍计算思维、基础的计算概念和计算机的日常应用。
这里推荐大家购买一本国外(或翻译版)的计算机科学概论或导论的教材,你可以像看“故事书”一样把这本书当成“课外读物”,顺便思考一下每个章节的课后习题。国外这样的书有好几个版本,比如以下这本,同时也比较建议学有余力的同学直接看英文版。
英文版电子书:计算机科学概论 第13版 英文 提取码: qs72
类似的还有机械工业出版社的《计算机科学概论(原书第7版)》、《计算机科学导论(原书第4版)》。这本书零基础可学,可以和后面的课程并行学习,非常推荐你在大一的时候能够通读整本书的内容。注意:不要死记硬背这本书里面的内容。
此外,还非常推荐大家观看《计算机科学速成课》的视频,共40集,每集10分钟左右,讲解的非常精炼而又清晰,可以和计算机科学概论一起配套学习。
学习地址: 计算机科学速成课
② Python
美国大多数计算机名校入门的第一课都是Python,而不是国内普遍采用的C语言。这是因为Python不仅有着直观、简洁的语法,能够让初学者更容易上手,而且它有着非常强大的社区生态和广泛的应用,能够让新手做出有用而且实用的功能,同时也为日后的各个领域的深入学习 打下基础。
Python入门课在美国各大计算机名校也都是全校乃至全社会的“明星课”,校园内外参与学习的人数众多,和国内十数年都不会更新课程内容不同,这些课程都与时俱进,课程非常贴合企业、科研对编程方面的需求。
Python相关的知识,推荐大家学习哈佛大学的CS 50系列课程以及伯克利的CS61A,这两门课对外都提供了完整的学习资料,CS50入门相对来说更加简单,建议深入学习一下Web开发的分支课。
学习地址: CS50 计算机科学导论
伯克利的CS61A课程相对来说更难,它和哈佛CS50搭配的很好,具有比较一致的学习内容,两门课可以一起来学习。
学习地址: CS61A 计算机程序的结构和解释
③ C语言与Linux
尽管哈佛大学CS50就已经涉及到C语言的基础,但这样的基础仍然不足以让你在大二的时候能够开始学习CSAPP这门课,你还需要进一步学习C语言、Linux命令行以及汇编基础知识,推荐学习普林斯顿的COS217这门课。
学习地址: COS217 编程系统导论
与此同时,你需要在学习Linux的过程中掌握一些基础的工具,比如shell、git等,当然这些内容在COS217也有所提及。
学习地址:MIT 计算机教育中缺失的一课
大一下学期
① C++或Java
此外,你还需要根据自身的情况来选择一门相对而言更加复杂的面向对象的编程语言Java、C++或OCaml等。对于国内大多数计算机专业的学生来说,也就是如果你是普通985以下或本科毕业后就想找到工作,更加推荐学习Java;但是如果你是顶级985以及理工科强校,尤其是你有意读研深造,更加推荐C++,而追求更高一点且学有余力的同学则可以在C++基础上再了解一下OCaml的课程。
一般来说,Java和C++也是算法课最常用的编程语言,两者并没有优劣,不过不同的学习路线采用的教材和课程也会有所不同。
选择Java的同学,推荐先学习普林斯顿的COS216,由于之前已经学习过Python,你应该能够很快掌握Java的语法,因此你可以和后面的数据结构与算法一起同步学习。
学习地址:COS126 计算机科学:跨学科方法
而如果选择学习C++,则非常推荐你学习Standford的CS106B/CS106X.
学习地址:CS106B/CS106X 程序抽象
