4 ms·
In a similar vein, I highly recommend the nand2tetris online course. You begin by combining electrical logic gates into gradually more complex chips, then asse
by Chriky 9y ago
In a similar vein, I highly recommend the nand2tetris online course.
You begin by combining electrical logic gates into gradually more complex chips, then assemble the components of a computer, write an assembler, then a compiler for a high level toy language a bit like Java. Finally you program a game (such as Tetris) in that high level language.
It is available on Coursera, you can access it for free but have to pay to have your work marked, which is definitely worth it.
It really demystified that magical bridge between hardware and software for me - "How does typing text on this keyboard physically alter the flow of an electrical circuit?"
- tenaciousDaniel 9y agoI got a little ways into the Nand2Tetris course but gave up b/c of the intense logic stuff involved. I never took college-level logic or math and it made the material muuucchh harder to understand. Maybe I should give it another shot though, who knows.
- castle-bravo 9y agoHard, intimidating things get easier and less intimidating the more you expose yourself to them (at least in maths; can't say the same for bears).
- lorenzq 9y agoWhat does implementing the cpu with logic gates entail? Does the compiler run on top of that metal you build? I’ve been thinking about how best to start from the bottom and I was thinking of getting a cheap fpga to build a cpu and compiler on. How does this course compare?
- Chriky 9y ago(everything is done in simulators, you don't physically build anything) Basically you start with only NAND gates available. Using this you have to connect together inputs/outputs etc to make NOT, AND, OR, XOR gates. Then you use these to make gradually more complex chips, such as MUX, HALF-ADDER, ADDER. Then you make an APU etc, eventually making a CPU. At each stage they tell you the design, but not the implementation. The assembler targets the CPU you build. The compiler targets the assembly language etc. You understand the whole stack, and it is a real computer, although simplified as much as possible.