Latest Courses
Fundamental Data Analysis and Visualization Tools in PythonCheck course
Easy Widget Development: Code WordPress Widgets from ScratchCheck course
Python Basics for Software DevelopmentCheck course
How to Build a Java Spring Boot Web Application from ScratchCheck course
Blazor in 2020Check course
A Complete Guide to WebSocketsCheck course
React JS For Beginner Convert Any HTML Site To React JSCheck course
Visual C# with WinForms: Step by Step Projects for BeginnersCheck course
DigitalOcean Cloud Platform FundamentalsCheck course
Vue and Laravel AuthenticationCheck course
Fundamental Data Analysis and Visualization Tools in PythonCheck course
Easy Widget Development: Code WordPress Widgets from ScratchCheck course
Python Basics for Software DevelopmentCheck course
How to Build a Java Spring Boot Web Application from ScratchCheck course
Blazor in 2020Check course
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)

FREE

Add your review
Add to wishlistAdded to wishlistRemoved from wishlist 0
Add to compare
9.4/10 (Our Score)
Product is rated as #3 in category Computer Science

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 …

Instructor Details

Shimon is professor of computer science at IDC Herzliya, founding dean of IDC's Efi Arazi school of computer science, and visiting professor at the Hebrew University of Jerusalem. He was also a visiting professor at Harvard University and Stanford university. In addition to computer science education, Shimon is committed to empowering the learning and teaching of early age mathematics, and is co-founder of www.matific.com.

Specification: Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course)

Duration 37 hours
Year 2017
Certificate Yes
Quizzes Yes

46 reviews for Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course)

4.9 out of 5
44
2
0
0
0
Write a review
Show all Most Helpful Highest Rating Lowest Rating
  1. Avatar

    pengwei

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

    Helpful(0) Unhelpful(0)You have already voted this
  2. Avatar

    Max H

    Almost perfect. But writing the compiler and the operating system took me far more than the projected 10 hours. IMHO, part II should be split into two, and a few more words and guides on how to structure a compiler would be preferable. Also, I think that the programming assignments touch project dimensions, so mentioning version control systems might be a good advise. Nevertheless, and without a doubt, a fantastic course given by one of the most ambitious and relentless instructors with great teaching skills and dedication to the topic.

    Helpful(2) Unhelpful(0)You have already voted this
  3. Avatar

    Shuhei K

    This course is life changing, yet the toughest course I’ve ever taken.

    Helpful(0) Unhelpful(0)You have already voted this
  4. Avatar

    Luis G C

    It’s the most amazing course that i’ve ever taken. Thanks Noam and Shimon for your work. I eagerly await the continuation of the course.

    Helpful(0) Unhelpful(0)You have already voted this
  5. Avatar

    Ernesto P

    Excellent course on understanding the fundamental pillars of how computer software works. Great lectures are clear and concise, so much so you can finish the course without using the textbook. Fun and challenging.

    Helpful(0) Unhelpful(0)You have already voted this
  6. Avatar

    foad

    Just as the first part of the course the second course is equally interesting. So much information to learn from this course yet taught in a very student friendly, intuitive and interactive way. Doing the programming exercises makes this course even more exciting. Check it out!

    Helpful(0) Unhelpful(0)You have already voted this
  7. Avatar

    Jun Z

    Great Course! The course becomes so hard for me since week 4 when we started developing compiler. Each assignment I spent 5 hours watching videos and making notes, 10 hours coding, and 10+hours debugging. My feeling: It turns out that although it is: time consuming (I am a master student in environmental management with a full course schedule, projects for week 4,5,6 made me postpone to this section) and mentally challenging (I am not well educated on software design and algorithms so I spent a lot of time debugging my code, fail, edit, fail, edit,..) However, the sense of accomplishment when I finally got 100 for each project (almost) is incomparable, unique, and unparalleled. Love this course! Suggestion Hope we could redesign the week 4,5,6. The workload exponentially increased and reached the maximum in week 5. My strategy was postponing and postponing until I got time to work the assignment out. I hope we could reestimate the workload (maybe separate week 5, 6 into two weeks, perspectively. The videos are 3+ hours long:)) In the end, love this course. Shimon and Noam are excellent instructors, their teaching style is very enlightening, the slide animation is great for illustrating processes clearly.

    Helpful(3) Unhelpful(0)You have already voted this
  8. Avatar

    amosnier

    Fantastic!

    Helpful(0) Unhelpful(0)You have already voted this
  9. Avatar

    Aung H

    actually greatest course ever!

    Helpful(0) Unhelpful(0)You have already voted this
  10. Avatar

    dracula

    Tough, Boring but useful

    Helpful(0) Unhelpful(0)You have already voted this
  11. Avatar

    Marcel S

    This is by far one of the best online courses I have completed. Thumbs up, it was well worth my time and it will definitely help me on my never ending journey of becoming a better software developer.

    Helpful(2) Unhelpful(0)You have already voted this
  12. Avatar

    Qiang K

    This is the life changing course!

    Helpful(0) Unhelpful(0)You have already voted this
  13. Avatar

    Mark V M

    This was a great course which tied together so many loose ends for me. E.g., I knew that OO languages would add a hidden “this” parameter, that compiling would get rid of symbols, that malloc worked with a heap, but now I REALLY know how all that works.

    Helpful(0) Unhelpful(0)You have already voted this
  14. Avatar

    Stephen H

    Great course! Cannot imagine how can I build in two weeks the whole compiling software that translates an OO language down to machine code! Although the part II needs more work than part I, it is still manageable and equally inspiring!

    Helpful(0) Unhelpful(0)You have already voted this
  15. Avatar

    Liudmila N

    Very well structured, you learn a lot, primarily by doing, which is the best learning. The project where you program in Jack is in my opinion unnecessary, and the OS part is just a bag of random stuff, but overall, one of the best courses out there.

    Helpful(0) Unhelpful(0)You have already voted this
  16. Avatar

    James T

    Absolutely phenomenal. One of the best and most instructive courses I’ve taken. This provided a much deeper understanding of computer internals than I’d previously had, and I’m shocked by how much ground was covered in this course. It took a lot of work, and while it is listed as ‘beginner’, I imagine it would be quite challenging to complete without having any experience programming.

    Helpful(0) Unhelpful(0)You have already voted this
  17. Avatar

    Steven G

    This is a brilliant and very challenging project oriented course. Even as a IT professional doing this course for fun the workload can be very demanding. Be prepared to work hard and for long hours to get through this course. But the tremendous feeling of accomplishment at the end makes it all worthwhile. I have not felt this way since my undergraduate days. Thank you for reigniting my passion.

    Helpful(0) Unhelpful(0)You have already voted this
  18. Avatar

    Joe K

    Thank you so much Shimon Schocken!! Part two was tough, but it was very helpful.

    Helpful(0) Unhelpful(0)You have already voted this
  19. Avatar

    TANGELLA L

    Great course

    Helpful(0) Unhelpful(0)You have already voted this
  20. Avatar

    James M

    Overall, it’s an excellent course covering a lot of concepts, definitely the best online course I have done so far. The latter weeks are quite overloaded though, I think it might be better as a slightly longer course, with an additional week focussing on the VM language and the use/history of the stack and heap distinction.

    Helpful(1) Unhelpful(0)You have already voted this
  21. Avatar

    Andrii D

    One of the best computer science courses I ever had. You start understand how actually things like heap, stack, etc. works.

    Helpful(1) Unhelpful(0)You have already voted this
  22. Avatar

    Roshan B

    I’m a 13 year old 8th Grader from California. I loved this course and learned a lot! Thank you Mr.Schocken for putting together such a wonderful course! It was a thrill to finish the course finally!

    Helpful(4) Unhelpful(0)You have already voted this
  23. Avatar

    Benedek R

    It was a bit superficial. Homework helped to practice the basics. I prefer more detailed and more deep lectures.

    Helpful(0) Unhelpful(0)You have already voted this
  24. Avatar

    Ross M

    Challenging but rewarding. About a year ago I started mucking about with code with the aim of becoming a web developing. I started with front end and could get away with knowing next to nothing about how computers actually worked and the big software picture. As my interest grew however I quickly became dispirited because I just didn’t know enough about what was really going on. Now I no longer feel like a fraud teaching myself code. This course was everything I was looking for. My only criticism would be the last project. 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. This led to easily the most frustrating part of the course as I then discovered most of my classes were incompatible. After the best part of another’s weeks work, and several submissions later, I got full marks on the final project. That being said it is probably very difficult to test everything as the classes leave a lot open in terms of implementation. Thanks a lot. It was a great course.

    Helpful(3) Unhelpful(0)You have already voted this
  25. Avatar

    David S

    As great as the first part, although far more demanding.

    Helpful(0) Unhelpful(0)You have already voted this
  26. Avatar

    Brian C

    If it’s not the absolute hardest course you’ve taken, it’ll be one of the hardest courses you’ve taken. The workload is staggering. At an Ivy League University you’ll have an entire semester + winter break to write a compiler. Here you’ll have three weeks. Buckle down & get ready to work hard.

    Helpful(4) Unhelpful(0)You have already voted this
  27. Avatar

    Andrei P

    Great course! Together with part1, it goes through how a computer does what it does, but in a simple way. That is not to say it’s not valuable, it was very cool to see how things work behind the scenes and how they did all that! Best course I’ve done!

    Helpful(0) Unhelpful(0)You have already voted this
  28. Avatar

    Serjey G I

    splendid

    Helpful(0) Unhelpful(0)You have already voted this
  29. Avatar

    Shriharsh M

    What an effort by the teachers! Such complex concepts simplified for a large and varied target audience. I thoroughly enjoyed doing the exercises for this course. I am eager to take up the part 3 whenever it comes out.

    Helpful(0) Unhelpful(0)You have already voted this
  30. Avatar

    Piotr L

    Great, highly recommended.

    Helpful(0) Unhelpful(0)You have already voted this
  31. Avatar

    Chris P

    Excellent, challenging course. Learned way more than I expected!

    Helpful(1) Unhelpful(0)You have already voted this
  32. Avatar

    Graeme G

    This course has been brilliant. I expected to learn a lot, but I got so much more out of this. Its incredible to see such a powerful machine coming out of such a simple design a true mark of elegance.

    Helpful(1) Unhelpful(0)You have already voted this
  33. Avatar

    bao b

    Understand computer is difficult, but this course can help you on this point.

    Helpful(0) Unhelpful(0)You have already voted this
  34. Avatar

    Guillermo S C C

    The best course ever.

    Helpful(1) Unhelpful(0)You have already voted this
  35. Avatar

    Cheng H

    Best ever computer science course I’ve taken. Though it takes me 7 months to complete both parts, it really worth it!

    Helpful(1) Unhelpful(0)You have already voted this
  36. Avatar

    George K O

    passionate professors!

    Helpful(0) Unhelpful(0)You have already voted this
  37. Avatar

    Anran

    A true gem!

    Helpful(0) Unhelpful(0)You have already voted this
  38. Avatar

    mebusy

    I feel that I reviewed more deeply a bunch of courses taught at my university . Thank you.

    Helpful(2) Unhelpful(0)You have already voted this
  39. Avatar

    Benjamin W

    The second part of an extremely rewarding course by instructors who have clearly put a great amount of thought and effort into its design. 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. If not, then I would highly recommend taking the second part in addition to the first as an introduction to these subjects (part 2 should probably not be taken without part 1 since the software hierarchy developed in part 2, particularly the virtual machine, is designed to run on the specialized architecture introduced in part 1). However, note that part 2 is signficantly more work (at least 2 3 times as much) as part 1. 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. 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. Rather, the nand2tetris philosophy is one of “learn by doing”. This means that, while the lectures do give very clear explanations of what it is you are trying to accomplish, as well as examples of how parts or cases of your problem can be solved, you ultimately have to come up with your own solutions. In the end, your solutions may not be optimal or very elegant, but you will gain a very confident understanding of the details. I believe this makes nand2tetris part 2 an excellent course to take prior to a formal course on compilers or operatings systems.

    Helpful(0) Unhelpful(0)You have already voted this
  40. Avatar

    Arun C

    What a fabulous journey the second part was! It was exhilarating to finish off with the operating system. In many years of professional software development, I did not have as much fun as I had in six weeks in this course. Hats off to both Noam Nisan and Shimon Schoken for having conceived, developed, and presented this course in such a nice manner. I did not receive any feedback for the peer graded assignment, which is sort off sad. While I can guess what might have been the reason for the grade given to me, feedback is very useful; I hope Coursera/the instructors can allow access to feedback in the future. I wish part 2 of the book was also available on the web.

    Helpful(0) Unhelpful(0)You have already voted this
  41. Avatar

    Pavneet S T

    Very difficult and rewarding course

    Helpful(0) Unhelpful(0)You have already voted this
  42. Avatar

    Eugene O

    Thanks for the course! I came from the first part and really glad I took it. Though, OS part is pretty difficult. I was forced to look up some hints on the internet for more implementation details.

    Helpful(0) Unhelpful(0)You have already voted this
  43. Avatar

    Chen A

    After 2 years, i still didnt find something so interesting like this.

    Helpful(0) Unhelpful(0)You have already voted this
  44. Avatar

    Julie L

    Incredible course. Thank you.

    Helpful(0) Unhelpful(0)You have already voted this
  45. Avatar

    Li P

    Course materials and project assignment are well organized, demanding but also motivating. I felt so lucky to have taken both of the courses and really enjoyed them! Thanks!

    Helpful(0) Unhelpful(0)You have already voted this
  46. Avatar

    Liming J

    Excellent course!

    Helpful(0) Unhelpful(0)You have already voted this

    Add a review

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    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)

    Price tracking

    Register New Account
    Reset Password
    Compare items
    • Total (0)
    Compare