Introduction to Computing Systems: From bits & gates to C & beyond, now in its second edition, is designed to give students a better understanding of computing early in their college careers in order to give them a stronger foundation for later courses. The book is in two parts: (a) the underlying structure of a computer, and (b) programming in a high level language and programming methodology. To understand the computer, the authors introduce the LC-3 and provide the LC-3 Simulator to give students hands-on access for testing what they learn. To develop their understanding of programming and programming methodology, they use the C programming language. The book takes a "motivated" bottom-up approach, where the students first get exposed to the big picture and then start at the bottom and build their knowledge bottom-up. Within each smaller unit, the same motivated bottom-up approach is followed. Every step of the way, students learn new things, building on what they already know. The authors feel that this approach encourages deeper understanding and downplays the need for memorizing. Students develop a greater breadth of understanding, since they see how the various parts of the computer fit together.

Salient Features

Chapter 1: Discussions have been added on the nature and importance of abstraction and the interplay of hardware and software.
Chapter 3: A new section has been added on finite state control and its implementation as a sequential switching circuit to underline the importance of this topic.
Chapter 4: This chapter now contains a section giving a preview of the underlying micro architecture of the LC-3, which is spelled out in detail in the extensively revised Appendix C.
Chapter 5: This chapter has been completely overhauled to accommodate two major improvements. First, the LC-2 has been replaced by the LC-3. Three more years of experience teaching this course has convinced the authors that the ISA studied in this book could be improved in several ways. The LC-3 is the result. Second, the explanations of each of the topics have been expanded to include more figures and more extensive explanations.
Chapters 8 & 10: These chapters now include major new sections on interrupt-driven I/O.
Chapters 11-14: These chapters are now more focused on the essential aspects of the language useful to a beginning programmer with more examples. [Specialized features like the C switch construct are now at the ends of chapters or in Appendix D.] There is a heavier emphasis on ?how to program? via problem solving examples that demonstrate how newly introduced C constructs can be used in C programming.
Recursion: The chapter on recursion (now Chapter 17) has been moved after the chapter on pointers and arrays in order to allow the students to gain more experience with basic programming concepts before making the leap to programming recursive functions.
Bottom-Up Organization: For Patt and Patel, the bottom level abstraction is the switch level representation of a MOS transistor. From there, they quickly move to logic gates, latches, logic structures (MUX, decoder, full adder, and gated latches) finally culminating in an implementation of memory. Then the book moves on to finite state control, its implementation as a sequential circuit, the von Neumann model of execution, a simple computer (the LC-3), machine language programming and assembly language programming of the LC-3, the high level language C, recursion, and finally elementary data structures.
Debugging: Because students are taught debugging techniques from the first program they write and are required to use the LC-3 Simulator's debugging tools from the start, they are better able to master the art of programming and can complete their programming assignments with a lot less help from the TA. (See expanded coverage in Chapter 15.)
The LC-3 Simulator: Central to the student?s learning is hands-on access to the LC-3 Simulator, which has been created specifically to aid the student?s mastery of the concepts. Students can download the LC-3 simulator from the book website at no cost.
Programming Methodology: Students are provided with numerous meaningful, simple examples on how to take a problem and transform it into a computer program via systematic decomposition. Students are exposed to the fundamental similarities in programming, whether it be in the LC-3 or in C, which provides the student with the useful ability to quickly understand other programming languages.
Website: An expanded website for the text,, includes for instructors: the complete Solutions Manual, Source Code of the examples, JPEGs of all of the figures, and Test Questions for Efficient Grading. For instructors and students, the site has: the LC-3 Simulator (Windows and UNIX versions), lab manuals for both versions of the LC-3, PowerPoint presentations created by instructors using the book in their course, selected solutions (Appendix F), Appendices A, D & E (for easy reference) and a Message Board.

More Details about Introduction to Computing Systems

General Information  
Author(s)Yale Patt
PublisherMcGraw Hill
Publish YearJanuary 2004