Undeniably one of the best computer science courses. The advertising isn't false! This course permanently changed my perspective on hardware and software along with the relationship between the two...
An excellent course provided by phenomenal professors! Everything is broken down into simple, easily understandable portions, and leaves you with a clear idea how to proceed to solve a given problem.
By MORIYA P V•
It's been a really nice course. I'm a EE undergrad and I did know most of it but it was a fun experience.
By Jianye S•
It's the best course that I've ever seen. And I'm hoping to participte in the second part of the course!
By VISHAARAD B•
Best Course Ever! Watch its Ted Talk for all you need to know about it. They deliver on their promise.
By Kachireddy S R•
It was really good. It gave me a very good understanding how a computer is built from scratch.
any CS people should take this course. the way it delivers is just amazing.
By Younes B•
Thank you a lot for taking the making the blackbox clear !
By Yishai L•
By Pierre H•
This course is interesting, but it shows why 90% of people never finish their MOOCS
It starts really well, with a bunch of examples, and well designed classes..
Then suddendly, around week 4, everything goes south : the classes become very long, very theoretical, you go from 10 exercises to only 2, and you have to digest an enormous amount of theoretical knowledge before actually trying things out practically.
The ratio of theory/practice should be 30% theory, 70% practice to learn well.
In this course, it's 90% theory and 10% practice, which is disappointing.
By Ju H K•
Great course to go over the basics of how a computer works up to the assembler. This is a great introduction to computer organization (hardware) as it goes through various logic gates and builds up to sequential circuits to be able to implement an ALU, memory which then can be used to build a CPU. The course goes over their own variation of HDL and assembly which is a great introduction to those who are not familiar with it. The assembly may look different from what some may be used to but it's designed to be simple for those without computer science background to be able to learn. In fact the entire course is designed to be simple for anyone with enough dedication to be able to build a computer. Therefore, there are some simplifications and "axioms" that are established (i.e. you don't learn about how transistors work in depth, nor are you expected to implement various flip flops and chips that may be a bit too complex).
I particularly like this course as it helps refresh my memory of what I learned when I was in undergraduate. This is a project centered course which contrasts to my undergrad where it was more theoretical (though we did have lab components which was in some sense more in-depth on implementing certain chips). I never tried building a computer theoretically from what I learnt in University and the computer architecture we studied was either too complex or way too time consuming for the average student to implement virtually. This computer architecture was designed just right.
At this point I don't think there's terribly much I could add to the many other stellar reviews this course has received. However, the development of this course is such a great accomplishment and participating in it such a joy that I feel compelled to further reinforce the opinions of most of the other reviewers here.
The instructors have clearly put in a great deal of thought and effort into designing this course. This means not only writing a book and slides and recording hours of lectures, but also designing an entire computer architecture and corresponding machine language suitable for pedagogy as well as a a suite of software tools (hardware simulator, CPU emulator, etc.) and an automated grader to help students see the results of their efforts.
I would advise anyone with even the slightest interest in understanding how computers work to go ahead and take this course. What's there to lose? There is certainly a good amount of work involved but for the most part, due to the detailed and helpful guiding explanations provided, the tasks are exercises in detailed and precise thinking (as one should expect when building a computer from elementary logic gates).
This course is a model for what educators should strive for.
By Vikram N•
Simply takes your breath away to learn how computers are built from the ground up. This is like an art appreciation course ... but for a crucial technology that permeates every moment of our modern lives.
Starting with the simplest pieces and moving all the way up to a functioning computer you will build nearly all the pieces with your own hands. You will learn how hardware is designed in the real world by actually making your own gates as well as an ALU - an absolutely delightful experience. You will then get your hands dirty with some assembly language - seeing how symbols are translated into bits before moving on to put together your functioning computer.
The course is great because there is very little yak-shaving for you to do ... most of the boring stuff is actually handled by the software provided in the course. You get to focus on the joyous acts of discovering things for yourself and putting together the pieces of the puzzle at every stage.
Many thanks to the professors and their team for taking the time to put this course together and for making something that's very abstract for most of us into something that's concrete and accessible.
By Mohammad G•
I love you guys, Noam Nisan and Shimon Schocken, for this tremendously successful course! I never thought I could acquire even a basic understanding of the inner computer structure in less than 6 weeks and honestly at first I had doubts if I would be able to finish it and now by your help we have created yet another computer!
You are the brilliant example of how a proper education system can hugely intensify the students' learning abilities.
I Surely recommend this course to everybody regardless of their study/educational background in order to "demystify" the computer in their minds.
However, I need to remind others that the course sometimes really challenges you and you might need to think a bit hard to solve the projects. Nonetheless the teaching materials are extremely sufficient for resolving any kind of problem you might have, given you spend enough time on it!
I am eagerly waiting for the second part of the course.
My heartfelt thanks goes to everyone, Coursera and any other individual and instructors, who has made this wonderful course available to the world!
By Nils H•
If your want to understand how computers work THIS is the course you should take. I've started with programming about two years ago. Very often I have asked myself "How does this *magic* all work?"
So I've looked at different programming languages (even read a bit about assembly) but nothing was able to enlighten me ass much as the nand2tetris course.
I'd like to thank the two creators for offering this amazing trip from nand-gates to actually having a usable assembly language that the user even writes and assembler for. Just Wow!
Side-note: Since the course consists of a lot of video material, I'd like to point out, that I watched the videos on 1.5x. By doing so you'll get through the information bits much quicker and for me it still wasn't an issue to follow, because there is always a lot of side material where you can look up stuff, once you get to the exercises.
By Gabriel L•
Fan-freaking-tastic course! Everything is explained in a very thorough, simple, and easy to understand manner. The course authors are great teachers and you cannot notice how much effort they put into making this an accessible, yet informative course. The tools they provide are completely free and of pedagogic design; the projects are interesting and are a ton of fun, everything about the course is awesome. Highly recommended to anybody who has an interest in programming or how computers work, as it does an amazing job in giving you a run-down of how everything operates. However, do not expect high-level and advanced design techniques as this course is breadth over depth. If you want something of that sort, you will need to look for a book or another course that focuses solely on the topic you want.
By Pranav B•
Quoting Richard Feynman - " What I cannot create, I do not understand"
I have done 3 years of computer science in university. This has been better than most of those courses! Don't think twice about taking this course, definitely go for it. It begins from the very basics - building simple chips like AND, OR gates and slowly putting these parts together into a CPU, memory (ROM,RAM) and finally building an assembler. The course was indeed very satisfying. It summed up most things I've learned in college and putting it all together really gives you a feel of how 'real' it is. I have no complaints. The instructors are awesome. Unlike a few courses around here, answers aren't spoon-fed to learners. You will definitely enjoy building these components and watching them work. What are you waiting for?
By Zach W•
This course is incredibly interesting, and I would HIGHLY recommend it to anyone who's remotely interested in computers and technology (which must be the case if you're reading this!). I've been programming for a while and have built a rudimentary GameBoy emulator, so I had some level of familiarity with assembly and machine language going in to this course; but despite all this, the raw mechanics of how a computer works on a logic-gate level were basically indistinguishable from magic to me prior to taking this course.
The course covers an impressively diverse array of topics, which serves not only to keep the course consistently fresh and engaging, but also to give the student solid foundations in many different areas on which they can later choose to build on (I know I will be).
By Christopher H D•
This course is an outstanding survey from logic gates through assembler. At the end you will have the gate level design of an elementary CPU and RAM, and the mysteries of machine code will be revealed. I am an older learner returning to computer science after a twenty-year absence. I had previously been exposed to this material, so I was refreshing my knowledge. It took me about 5-6 hours per week. If someone is brand new to these concepts, the syllabus may move a bit fast for them, and they should expect to spend some additional time to absorb the material. It is an outstanding survey course that together with part II will help you understand how all the hardware and software layers of a computer system fit together. I recommend this course without reservation.
By Pushkar D•
I can't praise this course enough! It transforms your working knowledge of computer systems into a clear picture of what is happening behind the scenes. In this part 1 of the course, I learnt how basic gates are used to make more complex chips such as ALU, CPU and Memory. This helped me understand the application of Boolean Algebra in computer science. Next, I understood how instructions are executed on the computer and that computer architecture design is quite complex (although a simple one is presented here). Week 5 assignment is the toughest, in my opinion. Finally, the course ended with an assignment to write an assembler (something I have been wanting to do at least once in my life i.e writing translators). The satisfaction level for this course is a 10/10.
By Michael D•
While I'm already a software engineer and have taken introductory EE courses, I have never gotten the full picture of how software is interacting with the hardware. When you code, you usually think of branching as choosing to execute one segment of code or another. While this is true for a lot of jump executions, it was also really interesting to see how the hardware is constantly doing multiple execution paths at the same time when working with registers/ram addresses. It starts to paint a better picture of the under-the-hood performance and optimization, and gives an idea of how advanced CPU instructions like SSE might work. All of this is done in such an approachable way in this course. I feel like assembly is more approachable to me now, as well.
By Daniel A•
This is an amazing course. You really get to build a (virtual) computer by yourself and step-by-step. They give you the necesary guidance, but still leave you room to think by yourself when completing each step of the project. It is amazing how they manage to strike this delicate balance.
The conferences and slide presentations are really good, and also the software they provide.
The computer you will build is a masterpiece of simplicity, yet a full-functioning universal computer. Its simplicity allows you to really understand the internal workings of any computer and truly grasp the real power of Boolean logic. Truly awesome.
And the whole project of building this computer develops like a game: It´s realluy fun.
I loved this course.
By Nat S•
Wow. What can I say except for the fact that this course was fantastic. I completed all 6 weeks as an auditor, and thoroughly enjoyed it. Although the design is simple compared to modern day computers, I feel like I have a solid foundation of how the hardware layer of a computer works and interacts. The difficulty level is about right and assumes no knowledge of programming - there is a no programming option for the final week project. I would recommend doing the programming version though. It's a great, rewarding challenge.
Overall, the quality of the lecturing, as well as the tools provided, and the clear passion for the subject from Professors Schocken and Nisan make this a must take course for everyone interested in computers.
By Muthukumar U•
One of the Most Amazing & Admiring Courses in Computer Science that raises a Curtain to take everyone " A Great Journey Inward into the Computer Science". I always had a Zeal to learn how computer works and keen about what happens when a "Hello World" Program gets executed. This Course "Build a Modern Computer from First Principles" is a feast to the all enthusiasts to understand "Computer Architecture" in Practical. Infact , I am Bowing to the Professors "Shimon Schocken and Noam Nisan" for their Outstanding Efforts in crafting this Wonderful Course and Practical Tools and aspiring Everyone and Teaching Complex things at ease. I believe you will too ...
Kitos Coursera !!!! for being Wonderful for such Maverick Courses.
By Lorraine F•
I am up to the last project in this course, so I am almost done. I found the projects challenging but so interesting that I just kept at it until I achieved my projects worked. They provide enough tools and test cases to ensure your project will pass when it gets submitted for grading. The lectures provided a lot of information and guidance, so much so, you don't need the book they recommend. I did buy the book, but found that the course notes had everything I needed. I would recommend this course for anyone who wants to virtually build a computer from one simple gate -> the NAND gate...from there you build everything you need. The computer is not a shabby one. You get to see Pong working and build Tetris!!!
By Christian R•
Very interesting and enjoyable course. It's pretty neat to go from a NAND gate all the way to an ALU and a CPU.
One word of caution: The course says that no prior programming experience is required. And this is true. *But*, if you've never taken a programming course and never taken a math/logic course that covers boolean logic and such, you might struggle a bit. This is not to say it's overly hard, but without this type of background, expect to spend more time on the basics. (This is said from the point of view of someone with this type of background, and how I imagined people without it would do.)
If you have a programming background, or have an interest/background in electronics, you should have no problem.
By Tiago L•
From all courses that I took online, this is by far the best.
While this is a subject which I particularly like, this is not the only factor for me to rate this course very high. The instructors are truly educated in the subject, and from the very first lectures it is clear that they put a lot of effort and time in the preparation of this course.
This course opened my mind to the organization of computers, and from here, I was able to understand and do further research on other architectures and projects.
In all, I strongly suggest that you take the time, put in the effort, and attend this course. It will dramatically increase your understanding of computer architecture.