# Good beginner source to learn about how computers work [duplicate]

I am a senior year high school student. I love programming and my chosen language is Java. I'm very much into high-level programming and Object Oriented design.

Recently, I started to show first interest in the low-level side of things. Especially the most basic level of how computers work (the more theoretical level, not the hardware side).

For example, how computers make basic calculations has always been a mystery to me. How is it that a computer can even come up with the result for 5 + 2? (As a kid I used to think that every computer stores the answers for all of the possible calculations.. lol)

I am also interested in the most basic level of how computers, well, generally do things internally. Again, at the most basic and fundamental level.

As you can see it's hard for me to phrase what I'm interested in learning, probably because I know almost nothing in computer science. But I hope you get the idea.

Could you direct me to a good source that I can learn from - at the most beginner level - this kind of knowledge? (A website or a book [preferably a website]).

Thanks

• The book The Elements of Computing Systems: Building a Modern Computer from First Principles seems popular. – Yuval Filmus Mar 5 '14 at 21:03
• – vzn Mar 6 '14 at 3:18

What I have got for you is :

These books should help you understand how computer works. A bit knowledge of computer hardware is a must and it will surely speed up your learning process.

• This is more on the practical side. You can dip into the real theory, but it is quite rough going (and probably not what you are looking for, anyway). – vonbrand Mar 6 '14 at 17:27
• I would add Digital Design and Computer Architecture to your list. – Isaac Kleinman Mar 10 '14 at 1:12

Recently, I started to show first interest in the low-level side of things. Especially the most basic level of how computers work (the more theoretical level, not the hardware side).

Well, actually it is the opposite: the more theoretical, the more high-level, since you deal with abstract notions.

To understand the theory behind computers, the best book I have read is Introduction to the Theory of Computation by M. Sipser. You have everything: Turing machine, automata, grammars and languages, complexity, etc. It is very well written and fairly accessible, considering the topic.

I am also interested in the most basic level of how computers, well, generally do things internally. Again, at the most basic and fundamental level.

The reference remains for me A. Tanenbaum's books: Structured Computer Organization for hardware and Operating Systems: Design and Implementation for OS. Old books but still standing. Caution however: these are reference books, and not always very "undergrad-friendly" (since you are soon an undergrad, right? :) ).

You could start off with Java at http://www.learnjavaonline.org/. And once you are clear with syntax of Java, you could try http://codingbat.com/java. Its got some really good programming exercises.

• Thanks for your answer. Maybe you didn't understand my question exactly. Java is high level programming, and it's also my chosen language which I already have a pretty good grasp of. My interest is in starting to learn the basic of CS, mostly how compters work fundamentaly on the theoretical side. – Aviv Cohn Mar 6 '14 at 6:01
• Aka, the most low level side of things (except for the electronics part. I'm only intersted right now in the theory). – Aviv Cohn Mar 6 '14 at 6:02