A couple of days ago I gave my last lecture at TU Graz. I had the pleasure to talk to first-semester bachelor students in Information and Computer Engineering. One of the students asked me about which books I consider to be worth reading and/or buying for the benefit of getting ahead with studying.
I take this opportunity to propose a couple of books I consider an excellent help to advance into a fast-track beginner in computer engineering.
Here is my pick:
For a proper beginning, I suggest that you try to find “your” favorite book on programming. It could be any. Check out the many free sources you can find on the web. A popular start for many is “How to Think Like a Computer Scientist“. There are several versions of this book: for Python, for Java, for C++, and several more.
Maybe you want a book you buy for real money. After all, the author invested a lot of work in writing it. Here is an example:
John V. Guttag: Introduction to Computation and Programming Using Python, MIT Press, 2016.
The main language in your first semester will be C, however. Best is to start with “the original book”:
Brian W. Kernighan, Dennis M. Richie: The C Programming Language, Prentice Hall Software Series
Lots of students have been reading this text before you. To my mind, it is a “must-read”, even for those who never read. It is kind of visiting the Eiffel tour, the Niagara falls, or the St. Stephan’ s Cathedral in Vienna, if you wish. The real programmers always keep a copy of this book at their desk; just to show off to visitors.
Right after the C programming language you will expose yourself in C++. Christmas is right ahead, so why not wish yourself a book written by the creator of C++, Bjarne Stroustrup. You can find all his books here: http://www.stroustrup.com/books.html
I would pick “Programming — Principles and Practice Using C++ (Second edition)”
I am a firm believer of the fact that studying material from the originators, and not from epigones is best. Unfortunately, I can see a lot of young people who go for “hear-say” and seem to be content.
As computer engineers, you will also dive deeply into hardware. A must-read is
David A. Patterson/ John L. Hennessy: Computer Organisation and Design —
The hardware/software interface, Risc-V edition, Morgan Kaufmann, 2017.
You should read this book in conjunction with your hardware courses like “Computer Organisation” in the second semester.
Another beautiful book goes even deeper into electronic design. Check it out, you will love it:
Paul Horowitz, Winfield Hill: The Art of Electronics, 3rd edition, 2015.
When I first found this book, I was about to throw away all the other written material I had on electronics. It quickly became apparent to me that electronics is beautiful engineering. An art, indeed.
I suggest that you also try to find out about the beauty of math. A good start in your first semester could be this one:
Kurt Meyberg, Peter Vachenauer: Höhere Mathematik 1, Differential- und Integralrechnung, Vektor- und Matrizenrechnung, 2. Auflage, Springer-Lehrbuch.
By studying this book, you will learn all the necessary ground work for becoming a competent engineer. Moreover, I promise you: You will easily master your first math exams.
Quickly you will hear that “operating systems” is a tough topic. Why don’t you try
to check out this book:
Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau: Operating Systems — Three Easy Pieces.
Start with one of the chapters: You will easily get hooked to this text.
You might also want to check out this book:
Thomas Anderson, Michael Dahlin: Operating Systems — Principles & Practice, 2nd edition, 2014.
This is the book suggested for the course at TU Graz.
Another useful book is this one:
Larry L. Peterson, Bruce S. Davis: Computer Networks — A Systems Approach, 5th edition.
This book provides a text for your course on computer networks.
For your course in signal processing, I suggest this book:
James H. McClellan, Ronald W. Schafer, Mark A. Yoder: DSP First, 2nd edition.
As a final suggestion comes the following text written by yours truly. This text is free of charge:
Karl C. Posch: A Lesson on Programming, 2017
As a summary, I would like to comment on the price of books. If you are young and have grown up in Austria, you quite likely have a view that the world should be for free — at least for you. Most likely, your parents have been paying for your expenses. Or the taxpayer. So why should you spend, say, 40 Euros for a book?
My viewpoint over the years became the following: I have noticed that a good book not only provided intellectual fun, but also quite often helped me to save time when trying to achieve a goal; like to prepare for an exam, for instance.
Let’s therefore do a simple computation: If a good book saves you 3 hours of time compared to reading foolish material downloaded from some tertiary source on the web, you could become a productive engineer three hours earlier in your life. As a young engineer you might earn 20 Euros per hour after tax; this amounts to roughly 32 000 Euros per year. Thus, by spending 40 Euros for a book you might earn 60 Euros in a couple of years. Try it out: A good book is a profit. I have experienced this effect over and over again throughout my professional life.