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.
This was so much fun, so satisfying and I learned a lot. I'm a software engineer. We do so much work in high-level languages that it's great to be reminded how computing machinery gets the job done.
by Fabrice L•
Incredible course!! I still can't believe that I was able to design all these hardware chips, including a CPU in 6 weeks, knowing nothing about it in the first place. It was exactly what I was looking for, a good introduction to hardware without having to take a 6 month class on Computer Architecture.
The material is extremely well done (book, lectures, assignment), the only part I liked less was the forum, mentors reply often by repeating what was said in the lecture which is not helpful.
I learned a great deal, I understand more computer, and I believe I will help me writing better code.
by Curt B•
While it might be argued that this course is analogous to "building a computer" in a similar way that "painting by numbers" is creating art (meaning that the author's knowledge of computer architecture is akin to the printed and numbered cells; it obscures a level of complexity the student is exposed to, but not required to generate from first principles) there is plenty to learn (and do!) in this short course. It was fun to learn about how transistors help us execute modern life, and have a chance to 'discover' the layers of complexity between Nand-gates and high level programming languages.
by Apar B•
I would highly recommend this course for anyone interested in any level of abstraction between Computer Architecture to Logic gates. I would highly recommend it to senior undergrad or first-year Masters Computer Science/Engineering students. Being a Masters student of Computer Engineering, I loved this course. The only problem is that we cannot use any industrial HDL (like Verilog) for most of the projects. The syntax for the HDL was a nightmare, especially the sub-bus parts. However, any programming language may be used to build the last project, Assembler. I did it in C++.
by Samuel P K•
Excellent course! I have an undergrad degree in Electrical and Computer Engineering and I still feel that I got a lot out of it. It was a great refresher on what goes into making a computer. I took a similar course to this one in college. My college course was a bit more technical but it didn't cover as much breadth or do nearly as good a job of making the connections between the layers of abstraction. I preferred this one much more. I especially appreciated the perspective section at the end of each unit. It always tied a lot together and answered any lingering questions.
by Shriharsh M•
Thoroughly enjoyed learning how a computer and its hardware parts are built. The course content is very close to reality and one gets to develop a computer from Nand gates. This might sound outlandish but the beauty of this course is that it shows how a complex concept can be explained with sufficient details using hardware simulation. Of course a lot of details are ignored about the hardware world and focusing on such nitty-gritty isn't needed. Thanks Shimon and Noam for building this course! I recommend this course to everyone who works on software or hardware.
by Joseph B•
By constructing a computer from its foundational components, this course demystifies how computers work. You gain insight into how your code is executed by the CPU, how the CPU manipulates memory, even how it works with additional hardware components such as your monitor and keyboard. After going through the first part of the course, you'll gain a deeper understanding of how the code you write runs on hardware. If you are the curious sort and enjoy peeling back layers in order to figure out how things work, you should definitely go through this course.
by Akshat A•
Fantastic course. We build up a computer, starting from the NAND gate as the smallest unit, and building all further logic gates, computational units, storage units, input-output devices present in a basic computer. We learn to write assembly language, build hardware which runs on machine language (0s and 1s), and finally finish by writing an assembler to convert the assembly language into machine language.
The assignments are hands-on through the use of multiple simulators which are pretty easy to work with, and I learned a lot through this course.
by Ali A•
I love this course, I think it's one of the best I did in the past few years, most of the content are material that I read over twenty years ago, but the style and projects in this course bring the subject to another level.
The course is fun, and by the end of it I had a working virtual computer from the components I built, running machine code from the assembler I wrote. The course is fun, it's clear, simple to follow, and the instructor are great.
The truth is I felt a little sad that the course ended :). Looking forward for the second part of it.
by Tim S•
This was a fantastic learning opportunity, even as someone with a degree in computer science and many years experience as a professional in the field. I loved the way this course taught from first principles and encouraged you to think about the abstraction layers behind a computer system. While the chip and assembler created here are somewhat primitive, the course leaves you understanding the principles behind more sophisticated hardware. Huge credit to the team for the thoughtful exercises: they caught me out repeatedly!
by Heiko M•
Just the course I always wanted to take. I've been working for some 5 years in IT as a programmer with a background in mathematics. Since my education in university did not cover the low level details of how things really work deep down, I was always befuddled by the mystery of computers. This course helped to clear things out for me! There is a bit less mystery to it now, but even more admiration. Thank you very much Noam and Shimon for making things so accessible. I am looking forward to building a compiler in part II!
Great course that teaches you the basics of the technology from which computers are built. The instructors carefully walk you through the concepts such that the problems feel relatively easy and simple compared to some other courses. If you like challenges, you might not like this approach, but I think it's appropriate for this course (as an introductory course) so that you can pick up the main points and not get frustrated from getting stuck on problems you don't have sufficient knowledge/experience to handle.
by Himanshu T•
I am eternally grateful for everything you both faculty Shimon Schocken, Noam Nisan taught me.Really before the commencement of course I was thinking that this course will be boring.But after I started watching videos, the ultimate guidance and effort done by all the members of this course inspired me a lot.The course content is awesome. I am very happy that I build the computer. It was really amazing experience.Once again millions of thanks to teaching and non teaching staff.
This introductory course to computer architecture is just excellent.
It gives you a clean overview of the hardware and software architecture of a computer (albeit, a simple one). Everything you need is provided to you, the content (given in multiple forms) is clear and concise, the exercises give you just enough challenge to enjoy the reward of completing them. It just hits the mark between complexity, understanding and entertainment.
Thousand thanks to the professors/authors for giving this course!
by Sana D•
This is a brilliant course for those who want to learn how computers really work. It takes a bottom up approach to build a computer all the way from logic gates to the CPU and the complete architecture. You get a tremendous sense of satisfaction running a program on a computer that you built.
This course is especially useful for people interested in working in computer architecture or systems, but I would recommend it for everyone studying or working in computer science and engineering.
by Thassilo H•
This is one of the best CS courses I've taken so far. It's great to see how easy it is to build a simple yet powerful computer on your own, and it has given me for the first time the feeling of really understanding what's going on at the low level.
The complete course is centered about the project of building a computer, so there are no quizzes and only few theoretical background lectures here. If you want a hands-on introduction to computer engineering, this is the way to go.
by Nidal F•
I think this is the greatest course ever!
Now, I can understand how the hardware layers play that divine role in our computers!
I've understood how machine languages are designed with the hardware, and a lot more!
Maybe the best thing this course introduces is: You conquer new obstacles every week which are totally new knowledge to you = you gain a lot of self confidence as well as this inner feeling that you are born to do something GREAT!
Can't wait to start the 2nd part!
by Mandava K K•
I really appreciate this course as one of the best in my life. I am familiar with programming and various specializations of computer science and engineering along with information technology, but still, have a lack of knowledge on how computers are built, with practical sense. This course did take me through some interesting concepts which can be learned with hands-on experience. I admire the Professors for their hard work and dedication to offer us such a great course
by Philip O•
This course was challenging. The project-oriented nature of the class is what made it interesting for me. I spent a few days learning Java (nothing like having a challenge to motivate me) so I could write the assembler, rather than just "translate by hand" assembly code. This helped solidify the connection between hardware and software by making me really think about what happens to all the bits in those A, C and L commands. I look forward to part 2 of the course.
by Aye A M•
Simply awesome. By no means does this course teach you everything about building a computer but it introduces you to the subject better than any other course that I have ever come across. It gives a voluminous amount of detail about low-level computing but the instructors took great pains to do so in a very accessible and easy manner. Thereby, the magic of low-level computing is made available for everyone regardless of who they are. Beautiful.
cool and understandable, however the heart of computer –– Data Flip-Flop –– I think is must to be explained. Without it, I couldn't get fundamentals, for which we're here. If you aren't going to lie for yourself, please spend time, it's one of the most important thing that runs computer. After really understanding this, the feeling of the computer system's greatness will hold you quite enough time.
But many-many thanks. The course is awesome.
by Akhil K•
I think this course is very well made from the ground up. Although it might be difficult for starters in the beginning, what you end up in the end is a computer that you could program anything on, which is very cool. This is a great course for starting out in the world of Computer Science, and is something different compared to other Programming 101 or Computer Science 101 courses. I would love to see how the second part of the course holds!
by Ahmed m i e•
I built my own computer and I really enjoyed it.
They calculated every thing for you, you only need to put your hdl files through their suit programs
and every thing is going to be okay.
Project by project you will feel that you now now more about computers.
I learnt Asm language, Computer Architecture, logic gates ,machine language , sequential logic and Combinational logic gates .
I'm really glad that I had the chance to take that course
by Raghav T•
Honestly, Nand to Tetris is not just a course, it's a beautiful journey. Like a beautifully made game, it assumes nothing about the learner, teaches them the wise ways of playing the game, and delicately guides the player through an infinite world, never making it seem for once that you have no direction. I made my final submission with a heavy heart, but definitely look forward to embarking on this journey again with the second part.
by diwakar b•
the best course for people who are interested in learning how computers work and their inner most workings. I wont lie and say that it is easy at the end since i took programming approach and completed the course but it was exciting,intersting and felt so damn good when i completed the course. I will complete the part two of this course as well. I can't recommend this course enough just go for it; it is worth the struggle.
by Eric B•
Thank you for this amazing course, you two gentlemen are incredible teachers. The material is well organized, engaging and super challenging. I work with such high level languages and software nowadays that it was quite a challenge to dig deep to the essence of it all.. zeros and ones. I remember seeing some of it in school about 25 years ago but actually coding it for real was so satisfying! Looking forward to part 2 :)