Save for later

Build a Modern Computer from First Principles

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.

Get Details and Enroll Now

OpenCourser is an affiliate partner of Coursera and may earn a commission when you buy through our links.

Get a Reminder

Send to:
Rating 4.9 based on 66 ratings
Length 8 weeks
Effort 7 weeks, each week entailing about 3 hours of video lectures and 10-15 hours programming project.
Starts Jun 26 (46 weeks ago)
Cost $49
From Hebrew University of Jerusalem via Coursera
Instructor Shimon Schocken
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development

Get a Reminder

Send to:

Similar Courses

What people are saying

operating system

This is an excellent course giving good view of operating system, compiler and fitting the pieces together.

My implementation of the operating system classes passed the tests however it turned out I had let in some really stupid bugs which the tests didn't pick up.

If you already feel quite comfortable with compilers and operating systems (for instance, you've previously implemented your own compiler from scratch), then maybe it suffices only to take the first part of nand2tetris as a course in computer architecture.

At the time of this writing (September 2019), the auto-grader supports the following languages: C, C++, C#, Elixir, Erlang, Go, Haskell, Java, Lua, Node.js, Perl, PHP, Python 2.7, Python 3, Ruby, Rust, Scala, Swift.One thing to note about this course is that it is not the result of combining ordinary courses on compiler construction and operating systems and many of the standard topics taught in these courses are not touched upon at all.

Read more

programming language

Unlike in Part I, you are expected to be proficient in a high-level programming language such as Python or Java.

I loved making my own programming language and building my own OS!

Note also that part 2 requires familiarity with a programming language; if you wish to have your assignments graded by the auto-grader, then this language should come from the list of supported languages.

Read more

computer science

The best introduction of computer science course forever, I will recommend it to others.

Best ever computer science course I've taken.

Read more

10 hours

Each assignment I spent 5 hours watching videos and making notes, 10 hours coding, and 10+hours debugging.

But writing the compiler and the operating system took me far more than the projected 10 hours.

Read more

part ii

Although the part II needs more work than part I, it is still manageable and equally inspiring!

IMHO, part II should be split into two, and a few more words and guides on how to structure a compiler would be preferable.

A lot of the assignments in Part II are similar to Project 6 in Part I (building the assembler).

If you did the programming track for that assignment and enjoyed it, then you're ready for Part II.

Read more

second part

What a fabulous journey the second part was!

The second part of an extremely rewarding course by instructors who have clearly put a great amount of thought and effort into its design.

Read more

operating systems

high level programming

The second part of Nand2Tetris is a magical illuminating journey to the inner depths of computer systems including virtual machines, compilers, high level programming and operating systems covering some of the main concepts in computer science such as dynamic memory management, text and graphic representations using input/output devices, math, strings and arrays library implementations...Like the first part of Nand2Tetris it is magnificently taught and I recommend it to anybody who wants to demystify (some of) the magics of computers for themselves.However I should warn you that it requires a great deal of commitment and many hours of study, research and programming each week in order to be able to complete the course; Specifically the high level programming project would require some well thought application/game so you might be able to implement it in Jack High Level Language in time and only in one week.Basic knowledge of a high level programming language like Python or Java is required in order to accomplish the programming tasks of writing an Assembler, a Virtual Machine, a Compiler and also would be helpful when writing the OS in Jack (the native Hack High Level Language).Finally the last two projects (compiler part 2 and OS) are extremely challenging, specially the second part of the compiler in which I literally was crying for help :DExcellent job Prof. Shimon Shocken!

Careers

An overview of related careers and their average salaries in the US. Bars indicate income percentile.

Platform Usher $66k

Platform Coordinator $75k

Platform Strategist $75k

Platform Technician $84k

C++ Platform Developer $90k

Platform Exec $107k

Hardware 2 $120k

Platform Programmer $121k

Platform Engineering $124k

Hardware Architect - Autonomous Driving Platform $125k

Platform Producer $149k

Platform Planner $185k

Write a review

Your opinion matters. Tell us what you think.

Rating 4.9 based on 66 ratings
Length 8 weeks
Effort 7 weeks, each week entailing about 3 hours of video lectures and 10-15 hours programming project.
Starts Jun 26 (46 weeks ago)
Cost $49
From Hebrew University of Jerusalem via Coursera
Instructor Shimon Schocken
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development

Similar Courses

Sorted by relevance

Like this course?

Here's what to do next:

  • Save this course for later
  • Get more details from the course provider
  • Enroll in this course
Enroll Now