Nand2Tetris: Building a Modern Computer from First Principles
Noam Nisan, Shimon Schocken
What youâll achieve: In this project-centered course* you will build a modern computer system, from the ground up. Weâll divide this fascinating journey into six hands-on projects that will take you from constructing elementary logic gates all the way through creating a fully functioning general purpose computer. In the process, you will learn - in the most direct and constructive way - how computers work, and how they are designed. What youâll need: This is a self-contained course: all the knowledge necessary to succeed in the course and build the computer system will be given as part of the learning experience. Therefore, we assume no previous computer science or engineering knowledge, and all learners are welcome aboard. You will need no physical materials, since you will build the computer on your own PC, using a software-based hardware simulator, just like real computers are designed by computer engineers in the field. The hardware simulator, as well as other software tools, will be supplied freely after you enroll in the course. Course format: 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 5-10 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.
More resources on Programming Fundamentals
Nand2Tetris
Free course website for hardware/software fundamentals
CS50 Harvard
Official site with free course materials
freeCodeCamp
Free coding bootcamp with fundamentals tracks
Teach Yourself Computer Science
Curated guide to CS fundamentals with free resources
freeCodeCamp - Programming for Everybody
Python for beginners, fundamentals focus
CS61A: Structure and Interpretation of Computer Programs
Learn programming fundamentals with CS61A, taught by John DeNero. Explore structure & interpretation of computer programs.
