Unit 0 Course Overview - birdybro/Nand2Tetris_MiSTer GitHub Wiki
The first course will be to design the hardware. The second course is to design the software. Seems like fun.
In general people are not taught in programming classes the lowest level of how it all works from the hardware level, things like how the code you are typing on the screen is displayed on yoru screen, how the computer interprets the letters that are in your code, etc... Programming 101, computer science 101 starts without worrying about the "how", it's enough to worry about the "what" does it do.
How = Implementation
What = Abstraction (You don't have to know how, it's by design that computer science doesn't go over the how, it's not a big deal, just what needs to get done)
He explains layers of abstraction I already understand this, but this course looks specifically like this from highest layer of abstraction to lowest:
- Human thought --> Write a program
- High Level Language --> Compiler
- VM Code --> VM Translator
- Low Level Code --> Assembler
- Computer Architecture --> Digital Design
- CPU, RAM, chipset --> Gate Logic
- Elementary Logic Gates --> Electrical Engineering
- CPU, RAM, chipset --> Gate Logic
- Computer Architecture --> Digital Design
- Low Level Code --> Assembler
- VM Code --> VM Translator
- High Level Language --> Compiler
Course structure is like so each week:
- Worry about a single level
- Take the lower level as given
- Implement the higher level
- Test that it works
Two parts to the course, 14 weeks total:
- Start with Nand
- Create the HACK computer
- Start with the HACK computer
- Create a full software hierarchy that runs applications like Tetris
I might do it a little faster than 7 weeks each since they were expecting only 2 days a week of a short amount of time, we'll see...
Hack computer:
ROM <-> CPU <-> RAM
ez, right? :P
layer of abstraction for nand2tetris was reiterated for repetition learning, good teaching method guys :)
The first step is electrical engineering but it won't b eall the physics and all that, it's going to focus on nand. Using combinational logic you can make multiple nand turn into logic gates. Then you take those logic gates and use combinational + sequential logic to build registers, ram, cpu. Then when that is built we will build out the computer architecture, in this case named "HACK". Apparently we will also make an assembler in this first part which is a little surprising, but whatevs.
Nowadays people build computers by using computers, they use what he calls hardware simulators. (for this project I'm going to stray away from their software and use quartus instead to force myself to learn the toolset of MiSTer and a more professional toolset in general, but also because this makes me more comfortable)
Week 1 = elementary logic gates
- Nand (primitive)
- Not
- And
- Or
- Xor
- Mux
- Dmux
- Not16
- And16
- Or16
- Mux16
- Or8Way
- Mux4Way16
- Mux8Way16
- DMux4Way
- DMux8Way
Week 2 = Arithmetic-Logic Unit:
- HalfAdder
- FullAdder
- Add16
- Inc16
- ALU (wut, isn't that just the same thing as an Arithmetic-Logic Unit??)
Week 3 = Registers and Memory:
- Bit
- Register
- RAM8
- RAM64
- RAM512
- RAM4K
- RAM16k
- PC
Week 5 (wtf? why is it on week 5 all of a sudden?? why did he skip??) = Computer Architecture
- Memory
- CPU
- Computer
Week 4 (wtf???? why did he not list the weeks in the proper sequence lmao???) = Writing Low Level Programs
Week 6 = Developing an assembler.
Pre-Req knowledge = drumroll NOTHING NADA ZILCH (coolio cuz that's basically perfect for me lol)
At the end of Part I, we will be making an assembly language, low level that converts the programming code sent into it, into binary that the computer you are building can use. High level language in part II will be JACK (lol hack and jack? lol)
Plug their book on amazon, part II is in the book, but did they ever finish it on coursera? lol i dunno
Unit 0.4 - Project 0 is coming up, it will be like the 101 how to use a website and think like an IT guy (coolio)
I will probably get the software suite they want me to get anyways just in case I need it if I get confused or something. Might not need it since I'm relatively familiar with some of the basic IDE concepts and stuff already, but I'd better not UNDERESTIMATE THIS! :P
zzz they are saying click the link and download and install, I actually like how verbose they are being for total newbies to computers and installing things on windows, but it's zzz to me lol.
tools folder = hw sim, cpu emu, assembler, vm emu, jack compiler, os
projects folder = 13 projects (00-13 actually 14 lawl, but that's some 13:0 for ya winky)
I submitted the file.txt zipped up because they don't trust people to do things right (good call, I'm in IT, people don't know how do thing good and stuff). success I got an A+!