
多年来,在计算机科学教育方面,我已经观察到了两个不利的方面。 首先,它通常是不好的,不好的是我的意思是结构错误且不完整。 专注于一件事,却错过了许多其他事情,而这是掌握整体情况所必需的。 如果教育水平很高,它仍然主要集中在一个领域。 我是一个整体思想家
“基础知识越多,您所获得的新知识就越少。”-查理·芒格(Charlie Munger)
我是一个整体思想家,这意味着我总是喜欢理解整个图片。 我不仅想知道如何编写代码或编译器如何工作,还想知道代码如何与硬件交互以及硬件如何在基本层次上工作。 显然,由于没有足够的时间,我无法专注于所有事情,但是至少我仍然可以对每个领域都拥有很好的理解和直觉。 问题是如何? 长期以来,大学和在线课程都提出了这样的观念,即我们必须专注于利基市场,并在智力上仅限于特定的信鸽。 用德语,那个地方叫Fachidiot这个词很不错。 Fachidiot大致上是指一个专家,他是如此专业,以至于他对其他一切都不了解,而愚昧无知的伤害如此之大,以至于使他的专长不复存在。
无论如何,我发现对我来说,一种不屈服于“理想主义”的好方法就是阅读好书。 当我免费收集一些免费的顶级书籍时,我偶然发现了《计算系统的元素:从第一原理构建现代计算机》一书。 我认为它的方法正是计算机科学教育中所需要的。 零散是不好的,对第一原理的了解很多是好的。 如果您认为需要对计算机科学有更全面的了解,强烈建议您在本书的说明下进行阅读。
在计算机科学的早期,硬件,软件,编译器和操作系统之间的交互非常简单,足以使学生了解计算机的工作原理。 随着计算机技术的日益复杂以及由此产生的知识的专业化,这种清晰度常常会丢失。 与仅涵盖该领域一个方面的其他教科书不同,《计算系统的元素》为学生提供了应用计算机科学的完整而严谨的画面,因为它在构建简单而强大的计算机系统中发挥了作用。理解计算机的工作原理是从头开始构建一本计算机。这本教科书引导学生完成十二个章节和项目,这些章节和项目从头开始逐步构建基本的硬件平台和现代的软件层次结构。 在此过程中,学生将获得有关硬件体系结构,操作系统,编程语言,编译器,数据结构,算法和软件工程的动手知识。 本书采用这种建设性的方法,揭示了计算机科学的重要知识,并展示了其他课程中讲授的理论和应用技术如何适应整体情况。该书旨在支持一两个学期的课程,是基于抽象的-实现范例; 每章都介绍了关键的硬件或软件抽象,使之具体化的建议实现以及实际项目。 可以按照这些章节来构建新兴的计算机系统,尽管这只是一个选择,因为项目是独立的,可以按任何顺序完成或跳过。 本书完成了完成项目所需的所有计算机科学知识,唯一的前提条件是要有编程经验。本书的网站提供了构建本书中介绍的所有硬件和软件系统所需的所有工具和材料。十二个项目的200个测试程序。 可以修改项目和系统以满足各种教学需求,并且所有提供的软件都是开源的。
拿书