6
$\begingroup$

I am interested in how computers work but I have no idea how the concept of 0's and 1's converts to making possible for people to control a computer by programming. I would like to understand from very fundamental levels of computer and continue studying more in depth until I am satisfied. Where should I start? Is there a name for this topic? What books should I read?

**Edit: This was my first post and I think I got a lot of good suggestions on where to start. I will be looking up all the answers posted here. Thanks a lot for everyone who answered on this post.

$\endgroup$
  • 9
    $\begingroup$ nand2tetris.org $\endgroup$ – Yuval Filmus Jun 6 at 9:34
  • 1
    $\begingroup$ ... not to mention abstraction. $\endgroup$ – Pål GD Jun 6 at 14:46
  • 2
    $\begingroup$ In addition to NAND2tetris, eater.net/6502 is a good video introduction to how binary code is executed by physical hardware, and also how an assembler works. You can even buy a kit and follow along, for better understanding. If you want to learn about programming languages, SICP has a project where you create a Scheme interpreter from scratch. And compilers are a natural next step once you have an interpreter. $\endgroup$ – Jacob Krall Jun 6 at 22:52
  • 1
    $\begingroup$ nandgame.com is a free “game” version of NAND 2 Tetris, if lectures aren’t your style. $\endgroup$ – Jacob Krall Jun 6 at 22:54
  • 1
    $\begingroup$ @D.W. I can hardly agree this question is a duplicate of the other one. This one is about "where to start?", while the other one is about "how computers work?". None of the answers here fits for the other question, while the answers to the other question can hardly fit for this question. $\endgroup$ – John L. Jun 7 at 1:51
11
$\begingroup$

You're asking a very broad question that isn't particularly easy to answer "correctly".

What you are describing is what you learn if you follow through with a degree in computer science or maybe more precisely in electrical engineering and computer science.

So I would recommend you to do exactly that: Go to you favorite university websites and look up what the content of a degree in EE/CS is.

For example, I've heard that MIT has a degree in EECS, so I looked it up, and found a long list of courses.

There I found a course called 6.01 — Introduction to Electrical Engineering and Computer Science I which even has a downloadable lecture notes document:

6.01 Course Notes, Spring 2011 (PDF - 4.9MB)

in which the basics of circuits are covered in Chapter 1.


Summa summarum you're asking for what goes into a degree in electrical engineering and computer science, and the best way to find the answer to that is to go to the source.

Universities and schools exist for a reason. :)

| cite | improve this answer | |
$\endgroup$
5
$\begingroup$

Three books:

1. Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

Using everyday objects and familiar language systems such as Braille and Morse code, author Charles Petzold weaves an illuminating narrative for anyone who’s ever wondered about the secret inner life of computers and other smart machines.

2. But How Do It Know by J. Clark Scott

But How Do It Know? really explains how computers work. They are far simpler than anyone has ever permitted you to believe. It contains everything you need to know, and nothing you don't need to know. No technical background of any kind is required.

3. Elements of Computing Systems by Noam Nisan and Shimon Schocken.

Available online to read for free, and also as a free video course by the authors on Coursera: Part 1, Part 2 famously called Nand To Tetris. The course website is nand2tetris.org. While the first 2 books can be read through, this has exercise that you must go through to understand the material. A pre-requisite of a basic programming course in any language.

I recommend picking either of 1 or 2 and then proceeding to 3. Code is more detailed, but How Do it know covers a bit more topics. Both the first books cover fairly similar ground, which is mostly the first half of the nand2tetris course.

| cite | improve this answer | |
$\endgroup$
3
$\begingroup$

Depending on how narrow we understand the question, the answer might be (parts of) a single university course instead of a whole degree.

A course on the design of digital circuits as taught at ETH Zurich includes how to get from boolean logic (i.e. conceptual ones and zeros, but not their physical implementation) to modern computers that you can program - although only in assembly, i.e. a very simple programming language. The link goes to a lecture website including recorded lectures and practice material.

To get from physics to the boolean logic (conceptual zeros and ones) you would need an electrical engineering or even physics course (depending on the level of detail you want) on semi conductors and transistors in particular.

To go from the simple programming language to more advanced ones you would need a course on compiler design like this one.

| cite | improve this answer | |
$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.