Published on

[READING]Computer Systems: A Programmer's Perspective

Authors

Why Computer Science is so hard to learn?

People say

Most intelligent people research in Physics, the second most research in Math, and the third most (actually, the least) research in computer.

And in order to hide their inability, they attach science to computer, call it COMPUTER SCIENCE. We know it is just engineering.

In order to mask their intelligent disability, computer scientists have separated the original simple thing into many complicated branches, and wrote many obscure books to describe their ideas. Good books are so scarce that every student finds it hard to understand the very basic principles of computer science. Actually, computer science is simple, as simple as the book Computer Systems: A Programmer's Perspective tells, but not less.

Computer Systems: A Programmer's Perspective is such a good book that everyone who wants to program should read. The two authors, Randal E. Bryant and David R. O'Hallaron are professors from Carnegie Mellon University. The language is straightforward and the authors' explanations are incisive.
Anyway, this is a MUST-READ book for CS students.

Why read this book?

In fact, long long time ago, when I was a sophomore student studying software engineering, I heard the book. But at that time, the book was too thick (over 1000 pages) for me, and English was a barrier. Until recently, when I read a book called Dark Time, I did not have the chance to recall the book. In Dark Time, the author mentions a concept KNOWLEDGE STRUCTURE. Put it simply, it means the best way to learn a field is to know the overall structure, but not many single isolated points. I highly agree with this idea. CSAPP is such a book that can help you understand the overall blueprint for computer science, or at least, programming.

Another reason I am planning to read this book is that it has acted as a display stand for too long on my colleague's desk, similar fate as "The Art of Computer Programming". Then one day, I think I should change its fate. It should not only work as a stand, but enrich my understanding in computer programming.

In addition, in the last recent year, as I encountered bottlenecks when solving framework or system level issues on Android, I get an intense desire to totally understand how computer programs work. So one of my expectations from reading the book is to improve my ability to handle system level design and development.

The last enchanting point is from the fame of the authors. They are from CMU, standing for the best computer programming education and research. So it should be worth reading.

Knowledge Structure (GRAPH)

  • COMPUTER SCIENCE

    • Programming

      • Language

        • Use

        • Design

      • Design Pattern

      • Algorithms

      • Data Structures

      • Software Engineering

    • System Design

      • Parallel/Concurrency

      • Distributed System

      • Hardware

    • Security

    • Human Computer Interaction

      • UX

      • UI

    • Statistical Machine Learning

    • Data Mining

    • Artificial Intelligence

What to expect to learn from the book?

  • Computer science knowledge structure

  • hardware, software, OS, how programs work, system design, etc.

What's the prerequisite?

C programming, OS

Output

A series of blogs for reading notes.

Post Plan

  • Android ROM

  • System Architecture

  • Network

  • Programming Language

  • Distributed System

What does the book teach?

Mind Map