Computer Science Books

The followings are the book list I have. Most of them are recommended in the lectures of the Computer Science Department. They are quite nice selections to feed you both theoretical and practical backgrounds.

C++

... Yes, you have to learn C++. I learned C++ by Lippman's primer, but I don't think it is a good idea. It takes too long to read, and it takes too long to find out I want to know later. I recently bought Stroustrup's Second Edition and found that its is improved a lot. Especially, its index is very detailed.

Java

... Now it is time to learn Java because it is available and stable enough. I do not know it already tuned enough to be used for real application, but it is stable enough to play with. Exploring Java is my most favorite book because its explanation is interesting. Try examples in Chapter 2 and then enjoy Gosling's adventure story in Chapter 1. Java by Example does not cover Java's functionarity enough, but it comes with a nice CD-ROM. Java in a Nutshell is a good reference book.

OOP

... Adding to learn grammar of C++ or Java, you have to learn about Object Oriented Programming. Grammar is like a rule of chess, and programming methodology is like basic strategies of chess. You cannot say you can play chess without knowing basic strategies. Gamma's book tells about some patterns of OOP, but what amazed for me is I could not have imagined most of the patterns before reading the book! Read Chapter 2 and see if you already know them anyway. Taligent's guide seems like a more practical dictorines. I have not read it yet.

ML

... ML is fun and his book is always exciting. I do not agree that ML is practically useful, but it is worth to learn because it gives you lots of basic knowledge of languages such as types, signatures, functions, modules, functors etc. And now it is one of my thinking tools.

Foundamental Theories

... FCS is very thick and heavy. Very thick and heavy because it is designed to be read without any difficulties. You can read it in a cafeteria after lunch, or in a park on Sundays. Carry around this well-bound heavy duty book and learn theoretical aspect of CS. You will know that theory is fun and useful, especially for your mental satisfaction. Compilers book is also heavy, and it is written with much smaller letters. You have to attack it after finishing FCS. It is not just a book of compilers. It tells you advanced topics of CS by using compiler as an example.

Architectures

... They are very thick again. Computer Organization book is excellent. It shows how to design MIPS R2000 step by step. Lots of figures most of which is colored, nice columns, and funny episodes. You can read this book without pain. It has reviews where they are necessary. I read most of this book in my favorite tea house as Sunday reading. Computer Architecture book is more advanced and it is not as concrete as the Computer Organization book.

OS and Network

... They are boring. You cannot tell how UNIX can change between threads, how DOS's FAT is like, or how TCP/IP is actually designed, even after reading them. Read real codes instead.

HDL

... I do not know they are good books or not. It worked anyway. Verilog book comes with simulator.

English

... We have to learn that "uont too bee" is actualy pronounced like "wanna be". Start from vol.3 because it is the best edition. Vol.1 has a nice list of "wanna be", "gotta", etc. Buy with cassettes, copy it into your digital recorder, and repeat it as many as you want. Skip boring word lists in vol.1 and vol.2.

Buisiness

... If you are frustlated by daily tiny mish-mush, they are books for you.

Summary

Probably, this list is too much for you. I could read most of them because I had an oppotunity to study for 18 month here at Stanford. But if you want to study while you are working, here is a reduced list for you. I want you to read ALL of these books (or equivalents). I know it is still too much, but take it easy. It is going to be a long way to the eternity. I give you TWO years for these books. Concentrate on one book, and try to finish Chapter 1, and then try to finish a whole book. After finishing a book, you will get a skill to attack computer books.