计算机基础完全自学指南(下)
大家好,我是柠檬哥。
上次在星球分享了计算机基础学习路线开篇:计算机组成原理自学指南 ,得到了许多小伙伴的点赞认可,咱们书接上回,今天继续来讲计算基础自学指南下篇。
操作系统
啥是操作系统
操作系统也是一种软件。大家熟悉的微软 Windos 操作系统,开发同学熟悉的各种发行版的 Linux 系统,都是通过软件的形式安装在计算机上。
只不过这个软件和我们平常接触的应用程序软件不同,它比较特殊,因为它向下和计算机硬件(就是我们在计算机组成原理中学习的那些硬件)打交道,向上给其他应用程序和用户提供通用的交互的接口,说白了操作系统就是个中介和管家的角色。它帮我们做了下面这些事情:
- 进程管理(柠檬说:你写的程序运行起来才能干活,运行起来的程序称为进程,进程是资源的最小单位)
- 内存管理(柠檬说:计算机内存又贵又少,动不动又要来个高并发,内存管理大有学问)
- 文件管理(柠檬说:计算机中的资料和信息需要通过文件系统来保存、管理)
- 输入输出管理(柠檬说:各种外部设备如何接入计算机和接入之后又如何管理)
书籍推荐
《现代操作系统》
《操作系统导论》
《深入理解计算机系统》
《自己动手写操作系统》
《操作系统真象还原》
MIT 6.828 Operating System Engineering
核心就是 xv6 实验,带你完成一个 mini os 小型操作系统,MIT 6.828 Operating System Engineering 公开课是一门由麻省理工学院(MIT)提供的关于操作系统设计和实现的课程,主要涵盖了操作系统的基本概念、内存管理、进程管理、文件系统、网络等方面。这门课程以实践为主,要求学生通过编写和修改一个名为xv6的简化版Unix操作系统来掌握操作系统的原理和技术。课程适合有一定编程基础和对操作系统感兴趣的学习者,可以帮助深入理解操作系统的工作机制和性能优化。
这门课程在网上有很多同学推荐和赞誉,因为它不仅讲解了操作系统的核心知识和技巧,而且通过丰富的实验和项目,让我们能够深入地理解和应用操作系统。在这门课程中,需要从零开始构建一个名为 JOS 的操作系统,并在此基础上实现一些高级功能。这门课程也不是轻松易懂的,它有一定的难度和挑战性,需要学习者付出时间和努力才能掌握。
公开课链接:MIT 6.828
清华大学操作系统公开课
学堂在线上清华的操作系统,配套实验基于 UCore,B 站关于操作系统课程资源很多,我在里面也看了不同老师讲的课程,觉得比较好的入门级课程是《操作系统 - 清华大学》,该课程由清华大学老师向勇和陈渝授课,虽然我们上不了清华大学,但是至少我们可以在网上选择听清华大学的课嘛。
公开课链接:操作系统 - 清华大学 - 学堂在线
该清华大学的视频教学搭配的书应该是《现代操作系统》,你可以视频和书籍两者结合一起学,比如看完视频的内存管理,然后就看书上对应的章节,这样相比直接啃书相对会比较好。
哈工大李治军老师操作系统
这个课程和清华大学操作系统公开课的区别是,哈工大课程会结合Linux内核源码实例,展示了操作系统的设计和实现。
哈工大李治军老师的操作系统公开课是一门深入浅出、通俗易懂的计算机课程,涵盖了操作系统的六个基本模块,即 CPU 管理、内存管理、外设管理、磁盘管理与文件系统、用户接口和启动模块。
课程不仅讲解了操作系统的原理和算法,还结合了 Linux 开源操作系统的实例,展示了操作系统的设计和实现。该课程适合有一定编程基础和计算机组成原理知识的学习者,可以帮助他们深入理解操作系统的工作机制和功能,提高他们的编程能力和问题解决能力。
公开课链接:哈工大李治军老师的操作系统
数据结构与算法
数据结构大家最熟悉,即使毫无计算机基础或是想转行计算机,第一个遇到的就是数据结构,因为面试刷的算法题本质就是考察候选人对各种数据结构的运用。
所以单纯对面试功利的角度来说,数据结构也是必须要掌握的计算机基础,数据结构要学到:
- 线性表(链表、数组、循环链表)
- 栈和队列
- 树和各种二叉树(二叉排序树、平衡二叉树、哈夫曼树、B树、B+树、Trie树)
- 图(图的存储结构、BFS、DFS、最短路径、最小生成树、拓扑排序、关键路径)
- 查找算法(二分查找、B树查找、HASH表、KMP字符串模式匹配)
- 排序算法(插入排序、冒泡排序、归并排序、基数排序、堆排序)
- 贪心算法
- 位运算
- 分治算法
- 动态规划
书籍推荐
入门书籍,推荐两本:
《大话数据结构》
《算法图解》
刚入门的同学建议不要一味追求大而全的经典算法著作,很容易劝退,建议从简单有趣的算法图书入门。
如果你想系统地学习数据结构和算法,那么《大话数据结构》和《算法图解》是两本不错的入门书籍。它们都能用通俗易懂、像小说一样有趣的语言来讲解抽象复杂的理论知识。它们都能用生动形象、贴近实际的例子来展示数据结构和算法在编程中的应用。它们都能用精美清晰、一目了然的图解来帮助你理解数据结构和算法背后的逻辑。
《大话数据结构》这本书有 400 多页,但是内容并不枯燥。作者用幽默风趣、充满智慧的语言将数据结构讲得深入浅出。每个章节都有一个小故事作为引子,让你在阅读中产生共鸣。每个知识点都有一个生活中常见或者惊奇有趣的例子作为说明,让你在学习中开拓思维。如果你之前完全不懂数据结构,那么这本书可以带你从零开始建立基础。
《算法图解》这本书只有不到 200 页,但是精华十足。作者用简单明了、直击要点的语言将算法讲得通俗易懂。每个章节都有一个精彩纷呈、令人眼前一亮的图解作为辅助,让你在观看中掌握要领。每个知识点都有一个实际可行、令人受益匪浅的案例作为应用,让你在实践中提升技能。如果你想快速地了解算法原理和优势,并且能够运用到自己编程中去,那么这本书可以带给你最直接有效地指导。
当然,《大话数据结构》和《算法图解》只是两本入门级别地书籍,并不能涵盖所有地内容和细节。如果你想要更深入地学习数据结构和算法,并且掌握更多地高级技巧和方法,那么还需要阅读更多地专业书籍或者网络资源。
算法基础,推荐一本:
《数据结构和算法分析》
是一本很全面、精确、易懂的书籍,适合有编程基础和算法初步了解的同学。作者用心地用三种语言写了三个版本,分别是 C、C++ 和 Java。代码对阅读的影响并不大,但如果你喜欢看自己熟悉的语言,也可以选择相应的版本。
算法面试,推荐三本:
《剑指 offer》
《编程珠玑》
《编程之美》
如果你想准备算法面试,这里有三本书可以推荐给你。
《剑指 offer》是一本专门为面试而写的书,涵盖了大部分经典面试题。只要你掌握了这本书里的内容,通过一般公司的面试应该不成问题。
《编程珠玑》是一本在豆瓣上有 9 分的高评分书籍,它讲了很多处理海量数据的技巧,这是其他算法书籍很少涉及的。海量数据处理也是面试中常见的问题,特别是校招面试。无论是拓宽视野,还是应对面试,这本书都很有用。
《编程之美》是由多位微软工程师合著的一本书,质量很高,但难度也比较大,不太系统。如果你有一定基础,喜欢挑战些难题,或者要面试 Google、Facebook 这样的公司,可以用这本书里的题来自测一下。
浙江大学陈越老师数据结构
数据结构公开课首推浙大陈越姥姥和何应钦老师的公开课,当初自学数据结构的时候对照着看完了。
浙江大学陈越老师数据结构公开课是一门非常受欢迎的在线课程,涵盖了数据结构的基本概念、线性结构、树、图、排序和查找等内容。这门课程以C语言为例,讲解了数据结构的实现和应用,同时也提供了很多经典的算法问题和习题,帮助大家提高编程能力和逻辑思维。
这门课程在中国大学MOOC和B站上都能找到资源,受到了很多计算机专业或非专业的同学的好评。如果你想系统地学习数据结构,并且有一定的C语言基础,这门课程是一个很好的选择。
公开课链接:数据结构浙江大学中国大学MOOC(慕课)
北京大学张铭数据结构与算法C++版公开课
公开课链接:https://www.icourse163.org/course/PKU-1002534001?tid=1003136008
北京大学张铭数据结构与算法C++版公开课是一门国家级精品课程,由北京大学信息科学技术学院张铭教授主讲,涵盖了数据结构与算法的基本概念、原理、方法和应用。该课程以问题求解为导向,强调数据结构与算法的抽象过程,关注数据结构与算法的时间空间效率,培养学生编写出高效程序从而解决实际问题的综合能力。
该课程是一门优秀的公开课,具有以下几个特点:
内容丰富、系统、全面。该课程涉及了线性表、栈与队列、字符串、二叉树、树、图、内排序、外排序、检索、索引等多种常用的数据结构与算法,并且给出了详细的定义、性质、操作和实现方式。该课程不仅介绍了经典的数据结构与算法,还介绍了一些高级的数据结构如Trie树、AVL树、伸展树等,以及一些实际应用中常用的技术如Huffman编码、倒排索引等。
形式生动、形象、易懂。该课程采用了多种教学手段,如动画演示、代码演示、案例分析等,来帮助学生理解抽象的概念和复杂的过程。
风格严谨、逻辑清晰。张铭教授是一位资深的计算机科学家和优秀的教育家,他在讲授时既注意理论基础又注重实践应用,既关注知识传授又重视能力培养。他用简洁明了的语言阐述了每一个知识点,并且给出了充分的证明和分析。他还经常提出一些思考题和拓展题来激发学生的兴趣和创造力。
武汉大学李春葆教授数据结构公开课
公开课链接:https://www.icourse163.org/course/WHU-1001539003
武汉大学春葆教授数据结构李公开课是一门系统地介绍数据结构基本概念、存储结构、运算和算法的课程,共有14周,涵盖了线性表、栈和队列、串、递归、数组和稀疏矩阵、树和二叉树、图、查找和排序等内容。该课程的特点是:
- 内容丰富,覆盖了数据结构的主要知识点,既有理论讲解,又有算法设计和实现,还有大量的例题和习题。
- 形式多样,采用视频讲解、PPT展示、代码演示等方式,增加了学习的趣味性和效果。
- 风格清晰,李春葆教授讲解深入浅出,语言简洁明了,逻辑严谨有序,能够帮助学生理解和掌握数据结构的核心思想和方法。
清华大学邓俊辉老师数据结构
还有清华邓俊辉老师的,分为上下两篇,要稍微难一点。
邓老师讲解深入浅出,逻辑清晰,语言风趣幽默,课程涵盖了数据结构和算法的基础知识、重要概念、典型应用和优化技巧,采用C++语言进行编程实践,配有丰富的教材、视频、习题和在线评测平台。
课程配套的代码设计得很好,使用了向量和列表等抽象数据类型来封装底层细节,提高了代码的可读性和可复用性。而且邓老师是学数学出身,所以他的课程和讲义有种数字味浓重的别样美感。
邓老师还运用了多种编程语言(C++/Java/Python等)进行对比分析,让学生能够从不同角度理解数据结构的特点和优劣,是一门值得推荐的高质量课程!
如果你英文足够好,建议去看一些国外的算法与数据结构公开课,老外讲课比较风趣和幽默,注重理论和实践的结合,下面柠檬哥就推荐几个国外的数据结构与算法公开课:
Stanford: Algorithms
这门课由斯坦福大学计算机科学系教授Tim Roughgarden授课,适合至少掌握一种编程语言的编程学习者。斯坦福的课强调理论和概念上的理解。学完这门课后,对你今后面对技术面试时将会非常有利。
UCSD:数据结构与算法
Daniel M Kane、Pavel Pevzner等五位老师共同授课,这门课程的最大特点是理论和实践的结合,你将学习到解决各种计算问题的算法技巧,并实现大约100个算法编码问题。
Prin:Algorithms Part I
Kevin Wayne和Robert Sedgewick共同授课,涵盖了有关算法和数据结构的基本信息,重点是Java实现的应用程序和科学性能分析。第一部分包括基本数据结构、排序和搜索算法。第二部分重点讨论了图形和字符串处理算法。
计算机网络
世界上第一台通用计算机「ENIAC」于 1946 被发明出来,如其名字一样仅仅是用于计算,在后来计算机越来越多,如果没有网络每台计算机都将成为一个孤岛,也不会有现在互联网的繁荣,「计算机网络」这门课程的学习路线非常清晰,就是围绕着如何让地理位置上不同的计算机连接起来,并高效可靠的交换数据信息,实现人在家中做,天下事尽知。
计算机网络有分层次,根据各层属性和特点,分为:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 应用层
这个层次划分从上到下就是一个网络数据包的接收路径,反之就是发送路径。既然要交换信息肯定得商量一套通用的协议,就像我们和老外交流,要么他们学中文要么我们学英文,反正得统一出一个标准语言出来,这在计算机网络中称之为「通信协议」。如上述的网络分层,每层都有各自适配的协议,所以计算机网络的学习基本就是围绕着分层协议的学习。
计算机网络应该是除操作系统与算法之外,另一个面试常考的方向。
书籍推荐
《网络是怎么连接的》
《计算机网络-自顶向下方法》
《图解HTTP》
哈工大的计算机网络
公开课链接:https://www.icourse163.org/course/hit-154005
哈工大李全龙老师的计算机网络公开课是一门内容丰富、深入浅出、实用性强的课程。该课程分为三个单元,分别介绍了计算机网络的基本概念、网络应用、传输层、网络层、数据链路层、物理层以及网络安全的原理和技术。该课程不仅讲解了计算机网络的理论知识,还结合了大量的实例和演示,帮助学习者理解和掌握计算机网络的运行原理和应用编程技术。还提供了丰富的作业和测验,检验学习者的学习效果,并给出了详细的讲解和答疑。
计算机网络微课堂-湖科大
强烈推荐 B 站 up 湖科大教书匠的《计算机网络微课堂》,这门公开课的 PPT 的动图制作精良,绝对是我看过最用心的!自从高军老师将自己的计算机网络微课堂视频上传到B站以来,就有很多“自来水”强推,被很多网友认为是“最好的计算机网络在线课程”,他的计算机网络,配有直观的PPT动画,讲课语言短小精炼,把枯燥的知识变得简单易懂。
“湖科大教书匠”高军老师,不愧为一位“匠人”,在20年的教学生涯中,他坚持以教学为中心,教师为主导,学生为主体的教学思想,积极钻研新的教学方法,听取学生的反馈,不断反思如何讲才能把计算机网络这门抽象难懂的课程讲得通俗易懂而又生动有趣,他先后对自己的“计算机网络”课件进行了6次改版,不断创新,还学习新的动画制作软件、辅以素材软件和思维导图软件,注重运用现代化信息教学手段,及时灵活地调整教学方法,尽最大努力提高教学水平。同时注重培养学生分析问题和解决问题的能力,为了加强学生理论联系实际的能力,他不惜花费大量时间对计算机网络相关仿真软件进行汉化,还配套理论教学视频制作了一套详细的计算机网络仿真实验系列视频,让学生进行线上学习,弥补实践空白。在教学过程中,高军老师还首次尝试“我在b站交作业”,将传统的书面作业,改为仿真实验录屏作业,让学生们进行仿真实验,全程需进行作业录屏,配合音频讲解,高军老师会仔细察看大家的作业,并在视频下方进行详细点评。正是这样年复一年的优化、改进,让高老师的课成了学生们最喜爱的一门课。
公开课链接:https://www.bilibili.com/video/BV1c4411d7jb
CS 144 Introduction to Computer Networking
当然,如果你不满足国内的计算机网络课程,同样的柠檬哥给你准备了国外计算机名校的计算机公开课,注重培养学生动手能力。
计算机网络公开课CS 144 Introduction to Computer Networking是斯坦福大学的一门课程,由Keith Winstein教授主讲。该课程介绍了互联网的基本原理和技术,包括TCP/IP协议栈、数据包交换、路由、拥塞控制、应用层协议等。该课程的特点是从实践出发,让学生通过编写网络软件来理解网络的工作机制。
课程地址:Introduction to Computer Networkingcs144.github.io/
以上就是今天分享的所有内容啦,如果对你有帮助,轻轻点个赞同呀~
#计算机基础# #学习指南# #教程#
