What will I be benefited with on reading the book ''Computer Systems: A Programmer's Perspective''?
As the opening of the preface states:
“This book is for computer scientists, computer engineers, and others who want to be able to write better programs by learning what is going on ‘under the hood’ of a computer system.”
As stated on the home page for the book (CS:APP3e, Bryant and O'Hallaron
):
“We cover data representations, machine level representations of C programs, processor architecture, program optimizations, the memory hierarchy, linking, exceptional control flow (exceptions, interrupts, processes, and Unix signals), virtual memory and memory management, system-level I/O, basic network programming, and concurrent programming. These concepts are supported by series of fun and hands-on lab assignments.”
The book has been used as a textbook at over 300 schools worldwide, and many copies have been purchased by individuals for independent study. Lots of study material, including standalone versions of the labs are available from the home page.
What writing techniques did Randal E. Bryant used when writing the book "Computer Systems: A Programmer's Perspective"?
Literary devices? That may be a bit more sophisticated than anything we did. We don’t do flashbacks or use sarcasm.
But, there are a few ideas and techniques that guided us when writing the book:
- Use real code. All of the code was extracted and formatted directly from source files. We didn’t want any syntax errors to find their way into any code presentations. Almost all of the assembly code shown was generated by a C compiler—we want readers to appreciate the style of code generated by compilers, rather than hand-crafted code designed to be understandable by humans.
- Promote active learning. We intersperse the text with “practice problems”—small exercises intended to let readers test out the concepts on simple examples.
- Make sure readers know what we’re trying to cover. Each chapter has an introductory section summarizing the chapter’s content and its importance. (This is something we learned from an editor when preparing the first edition.)
- Don’t shy away from rigor. We’ve gotten feedback that the second chapter, covering the properties of fixed- and floating-point number representations was too hard for students to understand, even though it requires nothing more advanced than high-school algebra. Rather than watering things down for the third edition, be tried to be very clear when we were providing formal concepts and then back these up with examples. Haven’t heard as many complaints, but I’m not sure if we can assume that means this approach works.
We’ve gotten lots of positive feedback from readers around the world. It’s been exciting to have that kind of impact.
Does the textbook "Computer Systems A Programmer perspective" explain Unix-based systems?
From the preface:
“We consider how these machines [x86–64] execute C programs on Linux. … the material in this book applies to most ‘Unix-like’ operating systems.”
The book does not go into the internal details of any OS, but it generally covers the programming environment for Posix-compliant systems.
When will the Indian edition be available of the book "Computer Systems: a Programmer's Perspective" by Randal and David?
That depends on whether a publisher in India decides it wants to print a version for the South Asian market and negotiates a deal with Prentice-Hall. There was such a version of the first edition (ISBN 12970-026-3), but it didn't sell very well.
By comparison, the adoption in China has been huge. Around 55% of the total sales has been for the Chinese-language versions of the book.
What was the motivation behind writing 'Computer Systems: A Programmer's Perspective'?
For many years, the standard core course in the area of Computer Systems (which spans both ECE and CS) was a watered-down computer architecture course called Computer Organization. Randy Bryant and I were teaching this course at CMU in the mid-1990s and it was not going well. The course was very unpopular with students (average FCEs below 3), and it wasn't preparing them very well for their future systems courses because of the emphasis on hardware.
Sometime in 1997-1998, we came to the realization that there was a fundamental problem with the perspective of the typical Computer Organization course. We were teaching our students how to build computer systems, when in reality very few of them would be system architects. However, almost all of our students would use computer systems. So we decided to create a new systems core course that would be taught from the programmer's perspective, rather than the builder's perspective. During the spring and summer of 1998, Randy and I created a new course from scratch using the following simple filter: If a part of the system (either hardware of OS) affected the correctness, performance, or utility of a C program, then we included it in the course. Otherwise we rejected it. So, for example, bus design was out, but caches were in.
We offered our new systems core course, called 15-213: Intro to Computer Systems (ICS), for the first time in Fall, 1998. There's an old saying in the teaching community that "the first time you teach a course you learn a lot; the second time you teach it your students learn a lot." However, the response from the students to our first offering of the course was astonishing, with mean FCEs around 4.6/5 and a median FCE of 5/5. The course has been offered every semester since then, and continues to get high FCEs, even though it's now become a very large course.
As of 2014, ICS is a required core course is both ECE and CS (even though they are in separate colleges!). Each year, it is taken by over 1,200 CMU undergrad and grad students, from departments all over campus.
The response to the ICS course was so overwhelmingly positive, we realized that we'd hit on something new and potentially important to ECE and CS programs around the world. So we wrote a textbook based on the course, Bryant and O'Hallaron, "Computer Systems: A Programmer's Perspective" (CS:APP), and published it with Prentice Hall in 2003. Since then it's become a bestseller adopted by hundreds of schools around the world, replacing the old Computer Organization course with the new CMU ICS course. Adoptions include elite schools like Stanford, Rice, Harvard, Texas, Washington, Harvey Mudd, Peking University, Seoul National, KAIST, and ETH, as well as many state schools, liberal arts schools and even two-year community colleges.
You can see a partial list of the schools that have adopted CS:APP at http://csapp.cs.cmu.edu/3e/adoptions.html.
Is there any place on the web that has video lectures for the book Computer Systems: A Programmer's Perspective ?