Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)

所在平台: Coursera

课程主页: https://www.coursera.org/learn/build-a-computer

课程评论:没有评论

第一个写评论        关注课程

课程简介

课程名称:从基本原理构建现代计算机:从Nand到Tetris(项目中心课程) 课程概述: 在这个以项目为中心的课程中,您将逐步构建一个现代计算机系统。课程将分为六个实践项目,从构建基本逻辑门到创建一个全面功能的通用计算机。在这个过程中,您将以最直接和建设性的方式了解计算机的工作原理及其设计。 课程要求: 本课程是自成体系的,无需任何计算机科学或工程背景,所有必要的知识将在学习过程中提供。您将无需物理材料,因为您将在自己的电脑上使用基于软件的硬件模拟器构建计算机,仿佛是在真实环境中由计算机工程师设计计算机。课程注册后,将提供免费的硬件模拟器及其他软件工具。 课程格式: 课程由六个模块组成,每个模块包括一系列视频讲座和一个项目。观看每个模块的讲座大约需要2-3小时,完成每个项目则需要5-10小时。整个课程可以在六周内完成,但您也可以根据自己的节奏学习。您可以通过搜索“nand2tetris TED talk”观看有关本课程的TED演讲。 课程大纲: 1. **介绍**:课程简介和概述,系统设计中的抽象和实现的角色,未来的学习路线。 2. **布尔函数和门逻辑**:学习布尔代数及其物理实现,指定逻辑门和芯片,并使用硬件描述语言(HDL)模拟芯片的行为,构建和测试15个基本逻辑门,为后续项目奠定基础。 3. **布尔算术和算术逻辑单元(ALU)**:构建加法器和算术逻辑单元,ALU是计算机的计算核心,此模块将为构建中央处理单元(CPU)做准备。 4. **内存**:构建计算机的主内存单元(RAM),从基本翻转门到比特寄存器,再到RAM芯片的逐步构建。 5. **机器语言**:设计计算机的低级机器语言,编写模拟程序及执行低级程序,获得低级编程的体验。 6. **计算机架构**:整合之前模块构建的逻辑门、ALU和RAM,创建一个通用的16位计算机 Hack,将 CPU 与 RAM 集成,形成完整的计算机系统。 7. **汇编程序**:学习如何构建汇编程序,翻译符号 Hack 程序为机器可执行的二进制代码,并选择使用高层语言或纸笔模拟来完成汇编器的实现。 通过参与本课程,您将完成一个个人化的、有意义的项目,掌握计算机构建的核心概念。完成后,您将拥有一个值得骄傲的项目,能够用于分享和展示。

课程大纲

Name:Introduction

Description:Course introduction and overview, the roles of abstraction and implementation in systems design, the road ahead.

Name:Boolean Functions and Gate Logic

Description:We will start with a brief introduction of Boolean algebra, and learn how Boolean functions can be physically implemented using logic gates. We will then learn how to specify gates and chips using a Hardware Description Language (HDL), and how to simulate the behaviour of the resulting chip specifications using a hardware simulator. This background will set the stage for Project 1, in which you will build, simulate, and test 15 elementary logic gates. The chipset that you will build this module will be later used to construct the computer's Arithmetic Logic Unit (ALU) and memory system. This will be done in modules 2 and 3, respectively.

Name:General Course Information

Description:General Course Information

Name:Boolean Arithmetic and the ALU

Description:Using the chipset that we've built in the previous module, we will now proceed to build a family of adders -- chips designed to add numbers. We will then take a big step forward and build an Arithmetic Logic Unit. The ALU, which is designed to perform a whole set of arithmetic and logical operations, is the computer's calculating brain. Later in the course we will use this ALU as the centerpiece chip from which we will build the computer's Central Processing Unit, or CPU. Since all these chips operate on binary numbers (0's and 1's), we will start this module with a general overview of binary arithmetic, and only then delve into building the ALU.

Name:Memory

Description:Having built the computer's ALU, this module we turn to building the computer's main memory unit, also known as Random Access Memory, or RAM. This will be done gradually, going bottom-up from elementary flip-flop gates to one-bit registers to n-bit registers to a family of RAM chips. Unlike the computer's processing chips, which are based on combinational logic, the computer's memory logic requires a clock-based sequential logic. We will start with an overview of this theoretical background, and then move on to build our memory chipset.

Name:Machine Language

Description:A critically important aspect of building a new computer system is designing the low-level machine language, or instruction set, with which the computer can be instructed to do various things. As it turns out, this can be done before the computer itself is actually built. For example, we can write a Java program that emulates the yet-to-be-built computer, and then use it to emulate the execution of programs written in the new machine language. Such experiments can give us a good appreciation of the bare bone "look and feel" of the new computer, and lead to decisions that may well change and improve both the hardware and the language designs. Taking a similar approach, in this module we assume that the Hack computer and machine language have been built, and write some low-level programs using the Hack machine language. We will then use a supplied CPU Emulator (a computer program) to test and execute our programs. This experience will give you a taste of low-level programming, as well as a solid hands-on overview of the Hack computer platform.

Name:Computer Architecture

Description:Let's recap the last four modules: we've built some elementary logic gates (module 1), and then used them to build an ALU (module 2) and a RAM (module 3). We then played with low-level programming (module 4), assuming that the overall computer is actually available. In this module we assemble all these building blocks into a general-purpose 16-bit computer called Hack. We will start by building the Hack Central Processing Unit (CPU), and we will then integrate the CPU with the RAM, creating a full-blown computer system capable of executing programs written in the Hack machine language.

Name:Assembler

Description:Every computer has a binary machine language, in which instructions are written as series of 0's and 1's, and a symbolic machine language, also known as assembly language, in which instructions are expressed using human-friendly mnemonics. Both languages do exactly the same thing, and are completely equivalent. But, writing programs in assembly is far easier and safer then writing in binary. In order to enjoy this luxury, someone has to translate our symbolic programs into binary code that can execute as-is on the target computer. This translation service is done by an agent called assembler. The assembler can be either a person who carries out the translation manually, or a computer program that automates the process. In this module and final project in the course we learn how to build an assembler. In particular, we'll develop the capability of translating symbolic Hack programs into binary code that can be executed as-is on the Hack platform. Each one of you can choose to accomplish this feat in two different ways: you can either implement an assembler using a high-level language, or you can simulate the assembler's operation using paper and pencil. In both cases we give detailed guidelines about how to carry out your work.

课程评论(0条)

课程详情

What you’ll achieve: In this project-centered course* you will build a modern computer system, from the ground up. We’ll divide this fascinating journey into six hands-on projects that will take you from constructing elementary logic gates all the way through creating a fully functioning general purpose computer. In the process, you will learn - in the most direct and constructive way - how computers work, and how they are designed. What you’ll need: This is a self-contained course: all the knowledge necessary to succeed in the course and build the computer system will be given as part of the learning experience. Therefore, we assume no previous computer science or engineering knowledge, and all learners are welcome aboard. You will need no physical materials, since you will build the computer on your own PC, using a software-based hardware simulator, just like real computers are designed by computer engineers in the field. The hardware simulator, as well as other software tools, will be supplied freely after you enroll in the course. Course format: The course consists of six modules, each comprising a series of video lectures, and a project. You will need about 2-3 hours to watch each module's lectures, and about 5-10 hours to complete each one of the six projects. The course can be completed in six weeks, but you are welcome to take it at your own pace. You can watch a TED talk about this course by Googling "nand2tetris TED talk". *About Project-Centered Courses: Project-centered courses are designed to help you complete a personally meaningful real-world project, with your instructor and a community of learners with similar goals providing guidance and suggestions along the way. By actively applying new concepts as you learn, you’ll master the course content more efficiently; you’ll also get a head start on using the skills you gain to make positive changes in your life and career. When you complete the course, you’ll have a finished project that you’ll be proud to use and share.

课程标签

0人关注该课程

主题相关的课程