Skip to content

My completed files from Part I and Part II of the course: nand2tetris (Build a Modern Computer from First Principles)

Notifications You must be signed in to change notification settings

awwkl/nand2tetris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

nand2tetris - my completed files

Attribution

In early-2020, I completed two courses: Part I and Part II of nand2tetris (Build a Modern Computer from First Principles: Nand to Tetris). I completed Part I a few years ago, but wanted to re-do it because (a) it is wonderful, (b) to re-establish my foundation to tackle Part II.

I wrote programs in Python to complete the assignments, but most of the files in this repository originated from the course.

Admiration for the Course

The course was great for the following reasons:

  • Broad. The course promised and delivered great breadth, progressively building in complexity from a single NAND gate to a simple 'operating system'. The high-level overview afforded by zooming out gave me a greater understanding of how computers work.
  • Deep. The course assignments required the building of a (simple) 'computer' in software: RAM, CPU, increasingly complex logic gates and structures; and a simplified versions of an assembler, Virtual Machine (VM) translator, and compiler to translate from a high-level language to machine language. Those assignments were really tough and interesting.
  • Practice programming. Assignments allow you to practice programming, solidifying understanding of the concepts.
  • Challenging and Rewarding. Build your own compiler! And assembler! And 'operating system'! (albeit simplified versions, of course)
  • Fantastic Resources and Great Dedication. The course lectures are supplemented with a well-written book, great assignments, their own hardware description language (HDL), assembly language, high-level language, simulator programs etc. The professors built a complete ecosystem to administer this course.
  • Engaging Teaching. The professors are passionate and articulate in conveying concepts that are necessary to begin building complex tools like the assembler, VM translator, compiler, and 'operating system'. Their lectures are just as engaging (and necessary) as their assignments.
  • Well-designed. The professors went to great lengths to 'teach from first principles', providing an understanding of how computers work at each level of abstraction and complexity, beginning from the elementary logic gates. Each chapter is meticulously crafted to progressively take you from logic gate to operating system.

Conclusion

This has been my favorite course, and I enjoyed every part of the many full-day weeks I spent on it. (~1 week+ for Part I, ~2 week+ for Part II). I cannot extol this course's merits enough. Every course should be built this way: engaging, broad and deep.

About

My completed files from Part I and Part II of the course: nand2tetris (Build a Modern Computer from First Principles)

Resources

Stars

Watchers

Forks