This repository contains my personal solutions to the From Nand to Tetris course assignments, part of the Computer Science program at The Hebrew University of Jerusalem.
Spanning across 13 intensive weeks, this course covers the full construction of a working computer system—starting from basic logic gates and ending with a custom high-level programming language and operating system. Along the way, we built essential components like an assembler, virtual machine translator, compiler, and OS libraries.
🔗 View Course Syllabus (Shnaton)
| Exercise | Title | Topics |
|---|---|---|
| Exercise 01 | Boolean Logic | Basic logic gates: AND, OR, NOT |
| Exercise 02 | Boolean Arithmetic | Arithmetic operations using logic |
| Exercise 03 | Sequential Logic | Flip-flops, Registers, Counters |
| Exercise 04 | Machine Language | Learning the Hack machine language |
| Exercise 05 | Computer Architecture | Building a complete Hack CPU |
| Exercise 06 | Assembler | Converting assembly to machine code |
| Exercise 07 | VM Translator I | Translating arithmetic commands |
| Exercise 08 | VM Translator II | Implementing functions and branching |
| Exercise 09 | High-Level Programming | Game development in Jack language |
| Exercise 10 | Compilation I | Syntax tree generation in XML |
| Exercise 11 | Compilation II | Jack-to-VM compiler |
| Exercise 12 | Operating System | Building OS-level libraries |
Contributions are encouraged! For any significant changes, it's best to open an issue first and start a discussion.
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 license.