
#82 overall
Build a Computer
Coursera
5 recommenders · 5 threads · recommended in 4 years, 2016–2020 · score 5.5
Nand2Tetris (Build a Computer) on Coursera, taught by Shimon Schocken and Noam Nisan, in which learners build a general-purpose 16-bit computer from logic gates up through assembler, virtual machine, compiler, and OS-level pieces. The course is the first half of the book The Elements of Computing Systems.
Commenters call it a gentle, very hands-on introduction to how computers work from first principles, and say the layered approach is valuable even for software people.
CS Fundamentals & Systemsbeginnerfreeinteractive MOOC#nand2tetris#computer architecture#logic gates#assembly#compilers#schocken
Recommendations by year
20062026
On this front, I can highly recommend these two resources, preferably in this order for someone totally new to assembly:
NAND to Tetris, a course that will have you build an emulated general-purpose CPU from first principles even with no prior knowledge. You'll learn exactly about registers and memory by making them. I even recommend this to non-hardware people because the way they divide each layer of complexity is great practice even in software. https://www.coursera.org/learn/build-a-computer
Microcorruption, a series of incrementally difficult MSP430 (an easy-to-understand 16-bit instruction set) exploitation exercises in the browser: https://microcorruption.com
These are both geared towards being a gentle introduction to assembly and CPU architecture principles. They don't touch certain facts of X86/64 processors like pipelining or variable-length instructions, but IMO those are best left until you're comfortable with the basics.
The best MOOC course I have taken this year is the one I'm currently doing. It is called nand2tetris [1] where you actually build a 16 bit computer all the way from nand gate. Along the journey you will be building the memory, operating system and also writing a compiler. You can follow my journey in tweets [2].
Another great course I'd recommend is Big History[3]. Like nand2tetris,it gives you a great overview of the entire history of our being. From Big Bang to 2018.
Also, I am looking for some great online courses on Distributed systems. It would be good if assignments are challenging and where you have to write a lot of code.
[1] Nand2tetris: https://www.coursera.org/learn/build-a-computer
[2] My Nand2tetris journey in tweets: https://twitter.com/abiduzz420/status/1076192382398357505
[3] Big History Project: https://polymathgoodies.xyz/big-history-project/
Edit: added extra spaces
I have spent a lot of time taking online courses. Here are my favorites.
CS50 (https://www.edx.org/course/cs50s-introduction-computer-scien...) - Best Intro to Computer Science
Nand2Tetris I and II (https://www.coursera.org/learn/build-a-computer) - Build a computer from logic gates up to a compiler, this is the best class I've ever taken.
Agile Development Using Ruby on Rails (https://www.edx.org/professional-certificate/agile-developme...) - Great introduction to web development and software engineering principles
I've also been reading some technical books. Would definitely recommend
Modern Operating Systems - Tanenbaum Designing Data-Intensive Applications - Kleppmann
I am taking a great coursera course on the very basics of a computer (uses a hardware simulator to build the chipsets necessary to build a computer). It is VERY intro-friendly and gentle, including teaching basic Boolean algebra. Also can be very hands on, which is what I really like about it. Might be a good fit!
https://www.coursera.org/learn/build-a-computer/
The authors also created a course on Coursera [1] which is also worth a look. Although it only covers the first half of the book (up to Assembler Language.) The authors have promised part 2 but it hasn't been released yet.
[1] https://www.coursera.org/learn/build-a-computer