强烈推荐的两个神级教学项目: nand2tetris 与 MIT6.828

nand2tetris

  • 难度:★★★★☆
  • 推荐:★★★★★

nand2tetris 项目有一本书叫《计算机系统要素》,也有英语的视频教程。若是英语很差的能够看书,内容是同样的。html

这本书主要讲解了计算机原理(1-6章)、编译原理(7-11章)、操做系统相关知识(12章)。不要看内容这么多,其实这本书的内容很是通俗易懂,翻译也很给力。每一章背后都有对应的练习,须要你手写代码去完成,堪称理论与实践结合的经典。git

这里引用一下书里的内容简介,你们能够感觉一下。github

本书经过展示简单但功能强大的计算机系统之构建过程,为读者呈现了一幅完整、严格的计算机应用科学大图景。本书做者认为,理解计算机工做原理的最好方法就是亲自动手,从零开始构建计算机系统。
经过12个章节和项目来引领读者从头开始,本书逐步地构建一个基本的硬件平台和现代软件阶层体系。在这个过程当中,读者可以得到关于硬件体系结构、操做系统、编程语言、编译器、数据结构、算法以及软件工程的详实知识。经过这种逐步构造的方法,本书揭示了计算机科学知识中的重要成分,并展现其它课程中所介绍的理论和应用技术如何融入这幅全局大图景当中去。

全书基于“先抽象再实现”的阐述模式,每一章都介绍一个关键的硬件或软件抽象,一种实现方式以及一个实际的项目。完成这些项目所必要的计算机科学知识在本书中都有涵盖,只要求读者具有程序设计经验。本书配套的支持网站提供了书中描述的用于构建全部硬件和软件系统所必需的工具和资料,以及用于12个项目的200个测试程序。

全书内容普遍、涉猎全面,适合计算机及相关专业本科生、研究生、技术开发人员、教师以及技术爱好者参考和学习。

并且,这本书的门槛很是低,只要你能熟练运用一门编程语言便可。算法

本书从与非门开始教你一步步构建一个完整的计算机(1-6章);从第 7 章开始一直到第 11 章,须要完成三个编译器(汇编编译器、VM 编译器、Jack 语言编译器);最后一章则须要完成操做系统部分功能。编程

若是你完成了本书全部的项目,则会得到如下成就:网络

  • 构建出一台计算机(在模拟器上运行)
  • 实现一门语言和相应的语言标准库
  • 实现一个简单的编译器

我已经把这本书全部项目都完成了,耗时两个月(天天 3 小时)。答案放在 github 上,还创建了一个 QQ 交流群,若是有不懂的能够加群里探讨一下。数据结构

MIT6.828

  • 难度:★★★★★
  • 推荐:★★★★★

这个项目是 MIT 大学开源的一个操做系统课程,官网是 https://pdos.csail.mit.edu/6....。该项目主要有如下几个优势:编程语言

  • 按部就班,从浅到深,让人更容易接受
  • 理论与实践结合,每讲解一个知识点都有对应的练习须要完成
  • 作这个项目的人不少,网上资料和答案很是多

只要你跟着项目走,从 Lab1 开始,一步一步的作到 Lab6,就能实现一个简单的操做系统内核。如下是 6 个实验的内容简介:工具

  1. 引导PC,讲解 bootloader
  2. 内存管理
  3. 用户进程及中断
  4. 抢占式多任务处理
  5. 文件系统
  6. 网络驱动程序

不过这个项目比起 nand2tetris 要难,门槛较高。若是没什么基础的话,建议作这个项目以前先看看下列资料:学习

这个项目也花了两个月才完成,不过只作了 Lab1-6 实验,挑战任务和家庭做业都没作。答案放在 github 上,有兴趣能够看看。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息