How To Think Like A Computer Scientist: C++ Version

Guidelines to problem-solving as the most important skill for a computer scientist.

**Publication date**: 01 Nov 2012

**ISBN-10**:
1441419055

**ISBN-13**:
9781441419057

**Paperback**:
192 pages

**Views**: 64,136

**Type**: N/A

**Publisher**:
CreateSpace Independent Publishing Platform

**License**:
Creative Commons Attribution-NonCommercial 3.0 Unported

**Post time**: 24 Oct 2004 04:19:25

How To Think Like A Computer Scientist: C++ Version

Guidelines to problem-solving as the most important skill for a computer scientist.

You are free to:

Share — copy and redistribute the material in any medium or format

Adapt — remix, transform, and build upon the material

The licensor cannot revoke these freedoms as long as you follow the license terms.

Click**here** to read the full license.

Share — copy and redistribute the material in any medium or format

Adapt — remix, transform, and build upon the material

The licensor cannot revoke these freedoms as long as you follow the license terms.

Click

Book excerpts:

Allen B. Downey, professor of Computer Science at Wellesley College, originally wrote How to Think Like a Computer Scientist, the JavaTM Version, as a textbook for his computer science class. Over the summer of 1998, he converted the original Java version into C++. Since then, the Java version has undergone several major changes, including the addition of Abstract Data Types such as Stacks, Queues, and Heaps. The C++ version of the open textbook however, did not receive these changes, until Jonah Cohen, Paul Bui and Charles Harrison came along.

Like the original Java version, the C++ version's goal is to teach you to think like a computer scientist. This way of thinking combines 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 tradeoffs 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. That is, 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.

Allen B. Downey, professor of Computer Science at Wellesley College, originally wrote How to Think Like a Computer Scientist, the JavaTM Version, as a textbook for his computer science class. Over the summer of 1998, he converted the original Java version into C++. Since then, the Java version has undergone several major changes, including the addition of Abstract Data Types such as Stacks, Queues, and Heaps. The C++ version of the open textbook however, did not receive these changes, until Jonah Cohen, Paul Bui and Charles Harrison came along.

Like the original Java version, the C++ version's goal is to teach you to think like a computer scientist. This way of thinking combines 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 tradeoffs 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. That is, 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.

Tweet

About The Author(s)

Allen B. Downey (born May 11, 1967) 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.

Book Categories

Computer Science
16
Introduction to Computer Science
32
Introduction to Computer Programming
52
Algorithms and Data Structures
25
Artificial Intelligence
24
Computer Vision
31
Machine Learning
6
Neural Networks
22
Game Development and Multimedia
25
Data Communication and Networks
5
Coding Theory
16
Computer Security
9
Information Security
35
Cryptography
3
Information Theory
17
Computer Organization and Architecture
22
Operating Systems
2
Image Processing
11
Parallel Computing
4
Concurrent Programming
24
Relational Database
3
Document-oriented Database
14
Data Mining
17
Big Data
18
Data Science
23
Digital Libraries
22
Compiler Design and Construction
26
Functional Programming
13
Logic Programming
27
Object Oriented Programming
22
Formal Methods
71
Software Engineering
3
Agile Software Development
7
Information Systems
5
Geographic Information System (GIS)

Mathematics
68
Mathematics
14
Algebra
1
Abstract Algebra
27
Linear Algebra
3
Number Theory
8
Numerical Methods
2
Precalculus
10
Calculus
3
Differential Equations
5
Category Theory
11
Proofs
20
Discrete Mathematics
24
Theory of Computation
15
Graph Theory
2
Real Analysis
1
Complex Analysis
15
Probability
48
Statistics
7
Game Theory
5
Queueing Theory
13
Operations Research
16
Computer Aided Mathematics

Supporting Fields
21
Web Design and Development
1
Mobile App Design and Development
28
System Administration
2
Cloud Computing
12
Electric Circuits
7
Embedded System
28
Signal Processing
4
Network Science
3
Project Management

Operating System
Programming/Scripting
6
Ada
13
Assembly
34
C / C++
8
Common Lisp
2
Forth
35
Java
13
JavaScript
1
Lua
15
Microsoft .NET
1
Rexx
12
Perl
6
PHP
69
Python
12
R
1
Rebol
13
Ruby
2
Scheme
3
Tcl/Tk

Miscellaneous