Build a Modern Computer from First Principles Nand to Tetris Part II (project-centered course)
Build a Modern Computer from First Principles Nand to Tetris Part II (project-centered course)
In this project-centered course you will build a modern software hierarchy, designed to enable the translation and execution of object-based, high-level languages on a bare-bone computer hardware platform. In particular, you will implement a virtual machine and a compiler for a simple, Java-like programming language, and you will develop a basic operating system that closes gaps between the high-level …
Build a Modern Computer from First Principles Nand to Tetris Part II (project-centered course)
In this project-centered course you will build a modern software hierarchy, designed to enable the translation and execution of object-based, high-level languages on a bare-bone computer hardware platform. In particular, you will implement a virtual machine and a compiler for a simple, Java-like programming language, and you will develop a basic operating system that closes gaps between the high-level language and the underlying hardware platform. In the process, you will gain a deep, hands-on understanding of numerous topics in applied computer science, e.g. stack processing, parsing, code generation, and classical algorithms and data structures for memory management, vector graphics, input-output handling, and various other topics that lie at the very core of every modern computer system.This is a self-contained course: all the knowledge necessary to succeed in the course and build the various systems will be given as part of the learning experience. The only prerequisite is knowledge of programming at the level acquired in introduction to computer science courses. All the software tools and materials that are necessary to complete the course will be supplied freely after you enrol in the course.
This course is accompanied by the textbook “The Elements of Computing Systems” (Nisan and Schocken, MIT Press). While not required for taking the course, the book provides a convenient coverage of all the course topics. The book is available in either hardcopy or ebook form, and MIT Press is offering a 30% discount off the cover price by using the discount code MNTT30 at https://mitpress.mit.edu/books/elements-computing-systems .
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 15 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.
None
Syllabus
Syllabus - What you will learn from this course
Week 1
Getting Started
Machine Language
Virtual Machine I: Stack Arithmetic
Week 2
Virtual Machine II: Program Control
Week 3
High-Level Language
Week 4
Compiler I: Syntax Analysis
Week 5
Compiler II: Code Generation
Week 6
Operating System
Week 7
Postscript: More Fun to Go
FAQ
When will I have access to the lectures and assignments?
Access to lectures and assignments depends on your type of enrollment. If you take a course in audit mode, you will be able to see most course materials for free. To access graded assignments and to earn a Certificate, you will need to purchase the Certificate experience, during or after your audit. If you don't see the audit option:
What will I get if I purchase the Certificate?
When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile. If you only want to read and view the course content, you can audit the course for free.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.
Do I have to take Nand to Tetris Part I before taking Nand to Tetris Part II?
Nand to Tetris Part I and Nand to Tetris Part II are two separate and stand alone courses. Although it is recommended to take Part I before taking Part II, you can take any of these courses, in any order that suites you.
How much computer science do I have to know before taking this course?
The only requirement is programming ability at the level acquired in typical introduction to computer science courses.
Which programming language do I have to use in order to complete the assignments in this course?
We expect learners to submit assignments in any version of Java, or Python. We will assume that you have basic programming ability in these languages, including a basic ability to understand and write simple object-based programs.
How many assignments do I have to submit in order to pass the course?
The course consists of 6 projects (programming assignments), numbered 7, 8, 9, 10, 11, 12, and an optional project, numbered 4. In order to pass the course you must submit at least 5 projects out of projects 7, 8, 9, 10, 11, and 12. (The project numbering scheme maintains consistency with the project numbers in the Nand to Tetris Part I course)
Reviews
It was a bit superficial. Homework helped to practice the basics. I prefer more detailed and more deep lectures.
One of the best classes I've ever taken, better than most of my college classes. It was fantastic every step of the way.
This is a lot harder than Part 1, and parts of a it were a bit tedious but the bulk of (writing the Jack compiler) was very good. I will be recommending it to friends.
I extremely enjoyed this course. It's very recommended to those how wanna know about how computers work indeed.
Start your Free Trial
Self paced
52,462 already enrolled
4.9stars Rating out of 5 (438 ratings in Coursera)
Go to the Course