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++
- Lippman, C++ Primer 2nd Edition, Addison Wesley
- Stroustrup, The C++ Programming Language Second Edition, Addison Wesley
... 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
- Niemeyer & Peck, Exploring Java, O'Reilly
- Jackson & McClellan, Java by Example, Prentice Hall
- David Flanagan, Java in a Nutshell, O'Reilly
... 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
- Gamma et al., Design Patterns, Addison Wesley
- Taligent, Taligent's Guide to Designing Programs, Addison Wesley
... 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
- Ullman, Elements of ML Programming, Prentice Hall
... 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
- Aho & Ullman, Foundations of Computer Science C Edition, Computer Science Press
- Aho et al., Compilers Principles, Techniques, and Tools, Addison Wesley
... 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
- Patterson & Hennessy, Computer Organization & Design, Morgan Kaufmann
- Hennessy & Patterson, Computer Architecture, Morgan Kaufmann
... 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
- Silverschatz & Galvin, Operating System Concepts Forth Edition, Addison Wesley
- Walrand, Communication Networks, Aksen Associates
... 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
- Thomas & Moorby, The Verilog Hardware Description Language Second Edition, KAP
- Perry, VHDL Second Edition, McGraw-Hill
... I do not know they are good books or not. It worked anyway. Verilog
book comes with simulator.
English
- David Burke, Street Talk 1,2,3 (cassettes available), Optima Books
... 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
- Scott Adams, Dogbert's Management Handbook, Harper Buisiness
- Cringely, Accidental Empires, Harper 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.
- Stroustrup, The C++ Programming Language Second Edition, Addison Wesley
- Patterson & Hennessy, Computer Organization & Design, Morgan Kaufmann
- David Burke, Street Talk 3 (cassettes available), Optima Books
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.