Welcome to my journey of going back to the basics. Frustrated with not fully understanding certain computing concepts, I've set an ambitious goal for myself for 2024: to develop my own computer from scratch and create at least two pieces of software for it.
This project is more than just about building a computer; it's about deepening my understanding of the fundamental principles of computing and software development.
- Build a Computer from Scratch: Assembling a computer from the ground up to gain a comprehensive understanding of its workings.
- Develop Two Software Applications: Design and implement at least two original software applications to run on the newly built computer.
- Be a better programmer and problem solver.
- Books:
- Courses:
- Chapter 1: Introduction to Computing Systems
- Chapter 2: Building the Hardware
- Chapter 3: Basic Software Development
- Chapter 4: Advanced Software Projects
- Part 1: Hardware - Building the Nand to Tetris computer
- Part 2: Software - Implementing an OS and higher-level software on the computer
- Part 3: Projects - Developing two unique software applications
- Algebra 1 - Khan Academy
- Algebra 2 - Khan Academy Algebra
- Boolean Algebra
- Calculus 1 - Khan Academy
- Calculus 2 - Khan Academy
To run the hardware simulator from the project fold, run the following commands:
./resource/tools/HardwareSimulator.sh
To run the all the scripts from any where in the system, add the following line to your .bashrc
or .zshrc
file:
export PATH="$PATH:$HOME/<path/to/project>/resource/tools"
Now run the following command to refresh your terminal:
HardwareSimulator.sh
# or
CPUEmulator.sh
# Etc
You can run any of the scripts from any where in the system.
To help visualize and understand the hardware logic gates, I'm using the following tools:
While this is a personal journey, I welcome insights, suggestions, and discussions from fellow enthusiasts. Feel free to fork this project, submit pull requests, or open issues for any ideas or suggestions you might have.
Follow my journey here on GitHub as I update this README with my progress, challenges, and learnings.
Thank you for being a part of this journey!
Douglas Mendes