While browsing slashdot the other day, I came across a post linking to a website, NAND to Tetris. This site contains a series of free online lectures that teach you how to build a computer system from the ground up. It starts with logic gates (such as the NAND gate), the basic building block of computers, and works its way up to writing an application that runs on the computer system built during the course. The website course shows the student how to design a computer using gates, write assembly programs to run on the computer, build an assembler and compiler and parts of an operating system. A high-level Java-like language, Jack, is used to create an application (like Tetris) to run on the parts built during the course. The website also includes a series of projects and a free software suite to complete the projects.
I haven’t gone through all of the material yet, as the NAND to Tetris website and corresponding book are designed as a full semester course. I have read the Introduction chapter and about half of chapter 1: Boolean Logic, and find them to be very well written. I’m currently studying for an exam and need to refresh my memory (no pun intended) with regards to computer architecture, and find that the freely-available course material on this website is very helpful. If you’re interested in learning about what goes into creating a computer from the ground up, check this site out. If you’ve already taken related computer science courses, this site seems like a great way to solidify the concepts already studied by applying them from start to finish.