操作系统
书籍
- 《操作系统导论》 系统地学习操作系统,最硬核最权威的书籍
- 《深入理解计算机系统》 加深你对计算机系统本质的认识
- 《现代操作系统:原理与实现》 备选
- 《30 天自制操作系统》 手把手教你编写一个操作系统。
extra
- 《自己动手写操作系统》:不光会带着你详细分析操作系统原理的基础,还会用丰富的实例代码,一步一步地指导你用 C 语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。
- 《现代操作系统》:内容很不错,不过,翻译的一般。如果你是精读本书的话,建议把课后习题都做了。
- 《操作系统真象还原》:这本书的作者毕业于北京大学,前百度运维高级工程师。因为在大学期间曾重修操作系统这一科,后对操作系统进行深入研究,著下此书。
- 《深度探索 Linux 操作系统》:跟着这本书的内容走,可以让你对如何制作一套完善的 GNU/Linux 系统有了清晰的认识。
- 《操作系统设计与实现》:操作系统的权威教学教材。
- 《Orange’S:一个操作系统的实现》:从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。配合《操作系统设计与实现》一起食用更佳!
视频
-
《操作系统》:慕课平台,主讲是哈工大李治军老师;主要讲了一个基本操作系统中的六个基本模块:CPU 管理、内存管理、外设管理、磁盘管理与文件系统、用户接口和启动模块 。课程难度较大。
-
《深入理解计算机系统 》:国外课程,B站大学
计算机网络
书籍
计算机网络的 OSI 七层模型或 TCP/IP 五层模型,即应用层(应用层、表示层、会话层)、传输层、网络层、数据链路层、物理层。
机械工业出版社的《计算机网络——自顶向下方法》。该书目录清晰,按照 TCP/IP 五层模型逐层讲解,对每层涉及的技术都展开了详细讨论。
比较枯燥的话,搭配下面这两本非常有趣的网络相关的书籍:
- 《图解 HTTP》:讲漫画一样的讲 HTTP,很有意思,不会觉得枯燥,大概也涵盖也 HTTP 常见的知识点。因为篇幅问题,内容可能不太全面。不过,如果不是专门做网络方向研究的小伙伴想研究 HTTP 相关知识的话,读这本书的话应该来说就差不多了。
- 《网络是怎样连接的》:从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。
补充实践
- 哈工大计算机网络实验
- 《计算机网络-自顶向下方法(原书第 6 版)》编程作业,Wireshark 实验文档的翻译和解答。
- 计算机网络的期末 Project,用 Python 编写的聊天室
- CMU 的计算机网络课程
视频
哈工大的计算机网络课程:国家精品课程
算法
书籍
- 《我的第一本算法书》:配图以及讲解优秀,没有代码示例
- 《算法图解》
- 《啊哈!算法》
- 《算法》:内容非常清晰易懂,适合数据结构和算法小白阅读
经典神书:
下面这些书籍都是经典中的经典,但是阅读起来难度也比较大 仅仅准备算法面试的话,不建议阅读
- 《编程珠玑》
- 《算法设计手册》: GitHub 上的爆火的计算机自学项目 Teach Yourself Computer Science 强烈推荐的一本算法书籍。
- 《算法导论》
- 《计算机程序设计艺术(第 1 卷)》 。
面试书籍
- 《剑指 Offer》:《剑指 Offer》 对应的算法编程题部分的开源项目解析:CodingInterviews 。
- 《程序员代码面试指南(第 2 版)》:里面的大部分题目相比于《剑指 offer》 来说要难很多,题目涵盖面相比于《剑指 offer》也更加全面。全书一共有将近 300 道真实出现过的经典代码面试题。
视频
程序设计与算法(二)算法基础:把七种基本的通用算法(枚举、二分、递归、分治、动态规划、搜索、贪心)都介绍到了。各种复杂算法问题的解决,都可能用到这些基本的思想。并且,这个课程的一部分的例题和 ACM 国际大学生程序设计竞赛中的中等题相当,如果你能够解决这些问题,那你的算法能力将超过绝大部分的高校计算机专业本科毕业生。
数据结构
书籍
- 《大话数据结构》:入门类型的书籍,读起来比较浅显易懂,适合没有数据结构基础或者说数据结构的用来入门数据结构。
- 《数据结构与算法分析:Java 语言描述》:质量很高,介绍了常用的数据结构和算法。
- 《数据结构与算法分析:C 语言描述》
- 《数据结构与算法分析:C++ 描述》
视频
《数据结构》 :浙江大学的国家精品课程;有难度
计算机专业基础课
数学
微积分(高等数学)
微积分对于计算机专业学生的重要性,主要体现在计算机图形学中的函数变换,机器学习中的梯度算法,信号处理等领域。
书籍
《普林斯顿微积分读本》:这本书详细讲解了微积分基础、极限、连续、微分、导数的应用、积分、无穷级数、泰勒级数与幂级数等内容。
线性代数(高等代数)
线性代数的思维模式就更加复杂了一些,它定义了一个全新的数学世界,所有的符号、定理都是全新的,唯一能尝试的去理解的方式,大概就是用几何的方式去理解线性代数了。由于线性代数和几何学有着密不可分的关系,比如空间变换的理论支撑就是线性代数,因此,网上有着各种“可视化学习线性代数”的学习资源,帮助理解线性代数的意义,有助于公式的记忆。
书籍
《线性代数学习指导》 :中科大李尚志老师
概率论与数理统计
对于计算机专业的小伙伴来说,这门课可能是概率论更有用一点,而非数理统计。概率论的学习路线和微积分相似,就是一个个公式辅以实例,不像线性代数那么抽象,比较贴近生活。这门课程是数据分析的重要前置课程,概率论在机器学习中的重要性不言而喻。
书籍
《概率论与数理统计教程》 :这本书共八章,前四章为概率论部分,主要叙述各种概率分布及其性质,后四章为数理统计部分,主要叙述各种参数估计与假设检验。
离散数学(集合论、图论、近世代数等)
离散数学是计算机专业的专属数学,但实际上对于本科毕业找工作的小伙伴来说,离散数学还并没有发挥它的巨大作用。离散数学的作用主要在在图研究等领域,理论性极强,需要读研深造的小伙伴尽可能地扎实掌握。
英语
对于计算机专业的小伙伴来说,英语能力还是比较重要的,虽然应聘的时候不会因为没有雅思托福成绩卡人,但是你起码要能够:
- 熟练使用英文界面的软件、系统等
- 对于外网的一些博客、bug 解决方案等,阅读无压力
- 熟练阅读英文文献
- 具备一定的英文论文的撰写能力 毕竟计算机语言就是字符语言,听说读写中最起码要满足读写这两项
编译原理
编译原理相比于前面介绍的专业课,地位显得不那么重要了。编译原理的重要性主要体现在:
- 底层语言、引擎或高级语言的开发,如 MySQL,Java 等
- 操作系统或嵌入式系统的开发
- 词法、语法、语义的思想,以及自动机思想 编译原理的重要前置课程就是形式语言与自动机,自动机的思想在词法分析当中有着重要应用,学习了这门课后,应该就会发现许多场景下,自动机算法的妙用了。
书籍
《编译原理》 :辅助自己学不懂的地方(大家口中的龙书,想要啃下来还是有一定难度的)。
extra
视频
哈工大的编译原理视频课程:国家精品课程,美女老师主讲