How to Think Like a Computer Scientist: C++ Version
Allen B. Downey
Copyright Year: 2012
Publisher: Green Tea Press
Conditions of Use
Text starts with definitions of what a program is and how to proper syntax a program for creation but it should also supplement as to why everyone should learn to code. That said, the flow of the language follows a common method used by many... read more
Text starts with definitions of what a program is and how to proper syntax a program for creation but it should also supplement as to why everyone should learn to code. That said, the flow of the language follows a common method used by many authors.
Accuracy for C++ is a major concern, but reading through the text, I could not detect any inaccuracies in examples.
The relevance to the student and the language is paramount. I have interviewed many programming departments with many businesses to seek out what they want in a new hire. C++ is one of the languages most prefer.
The author used language for the common people; the clarity of the text is for everyone to easily understand. But, maybe, some real-life jargon in terminology could be inserted.
I did not detect any consistency issues within this text.
The chapters are definitely modularized. Each aspect of the language is presented in a separate chapter. The modulated chapters follow a simple flow when first learning the language; very helpful for the student.
The books' organization of topics follows the chapter modularity. It is well formatted to allow learning from easy first program creation to complex programming. This allows the student to grab the concepts in an orderly manner.
The examples of code is hard to distinguish from the main text. Maybe if the author had indented more and used a grey background the interface would be clearer.
I did not detect grammatical errors within this text.
As expected, I did not detect any cultural references within this text.
I would prefer more emphases on I/O with file creation as most industrial programs would require file input and/or file output.
Additionally, some fun things like time pauses and countdowns, etc. could make it more enjoyable for the student, Any professor can implement these fun things within there course.
Overall, this seems to be a great book to introduce C++ in a curriculum. Highly recommended.
Table of Contents
- Chapter 1: The way of the program
- Chapter 2: Variables and types
- Chapter 3: Function
- Chapter 4: Conditionals and recursion
- Chapter 5: Fruitful functions
- Chapter 6: Iteration
- Chapter 7: Strings and things
- Chapter 8: Structures
- Chapter 9: More structures
- Chapter 10: Vectors
- Chapter 11: Member functions
- Chapter 12: Vectors of Objects
- Chapter 13: Objects of Vectors
- Chapter 14: Classes and invariants
- Chapter 15: File Input/Output and apmatrixes
About the Book
The goal of this book is to teach you to think like a computer scientist. I like the way computer scientists think because they combine some of the best features of Mathematics, Engineering, and Natural Science. Like mathematicians,computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating trade offs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.The single most important skill for a computer scientist is problem-solving. By that I mean the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That’s why this chapter is called “The way of the program.”
About the Contributors
Allen B. Downey is an American computer scientist, professor of computer science at the Franklin W. Olin College of Engineering and writer of free textbooks.
Downey received in 1989 his BS and in 1990 his MA, both in Civil Engineering from the Massachusetts Institute of Technology, and his PhD in Computer Science from the University of California at Berkeley in 1997.
He started his career as Research Fellow in the San Diego Supercomputer Center in 1995. In 1997 he became Assistant Professor of Computer Science at Colby College, and in 2000 at Wellesley College. He was Research Fellow at Boston University in 2002 and Professor of Computer Science at the Franklin W. Olin College of Engineering since 2003. In 2009-2010 he was also Visiting Scientist at Google Inc.