BN.com Gift Guide

Think Like a Programmer: An Introduction to Creative Problem Solving

( 3 )

Overview

Rewire your brain

Examples in this book are written in C++, but will improve your ability to think like a programmer in any language.

The real challenge of programming isn't learning a language's syntax—it's learning to creatively solve problems so you can build something great. In this one-of-a-kind text, author V. Anton Spraul breaks down the ways that programmers solve problems and teaches you what other introductory books often ignore: how ...

See more details below
Paperback
$25.59
BN.com price
(Save 26%)$34.95 List Price

Pick Up In Store

Reserve and pick up in 60 minutes at your local store

Other sellers (Paperback)
  • All (17) from $19.46   
  • New (14) from $19.46   
  • Used (3) from $19.83   
Think Like a Programmer: An Introduction to Creative Problem Solving

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac
  • NOOK for Web

Want a NOOK? Explore Now

NOOK Book (eBook)
$15.49
BN.com price
(Save 44%)$27.95 List Price

Overview

Rewire your brain

Examples in this book are written in C++, but will improve your ability to think like a programmer in any language.

The real challenge of programming isn't learning a language's syntax—it's learning to creatively solve problems so you can build something great. In this one-of-a-kind text, author V. Anton Spraul breaks down the ways that programmers solve problems and teaches you what other introductory books often ignore: how to Think Like a Programmer. Each chapter tackles a single programming concept, like classes, pointers, and recursion, and open-ended exercises throughout challenge you to apply your knowledge. You'll also learn how to:

  • Split problems into discrete components to make them easier to solve
  • Make the most of code reuse with functions, classes, and libraries
  • Pick the perfect data structure for a particular job
  • Master more advanced programming tools like recursion and dynamic memory
  • Organize your thoughts and develop strategies to tackle particular types of problems

Although the book's examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular language; in fact, they often reach outside the realm of computer science. As the most skillful programmers know, writing great code is a creative art—and the first step in creating your masterpiece is learning to Think Like a Programmer.

Read More Show Less

Product Details

  • ISBN-13: 9781593274245
  • Publisher: No Starch Press San Francisco, CA
  • Publication date: 8/10/2012
  • Edition number: 1
  • Pages: 256
  • Sales rank: 491,523
  • Product dimensions: 6.90 (w) x 9.20 (h) x 0.80 (d)

Meet the Author

V. Anton Spraul has taught introductory programming and computer science for more than 15 years. This book is a distillation of the techniques he has used and honed over many one-on-one sessions with struggling programers. He is also the author of Computer Science Made Simple (Broadway).

Read More Show Less

Table of Contents

Acknowledgments;
Introduction;
About This Book;
Chapter 1: Strategies for Problem Solving;
1.1 Classic Puzzles;
1.2 General Problem-Solving Techniques;
1.3 Exercises;
Chapter 2: Pure Puzzles;
2.1 Review of C++ Used in This Chapter;
2.2 Output Patterns;
2.3 Input Processing;
2.4 Tracking State;
2.5 Conclusion;
2.6 Exercises;
Chapter 3: Solving Problems with Arrays;
3.1 Review of Array Fundamentals;
3.2 Solving Problems with Arrays;
3.3 Arrays of Fixed Data;
3.4 Non-scalar Arrays;
3.5 Multidimensional Arrays;
3.6 Deciding When to Use Arrays;
3.7 Exercises;
Chapter 4: Solving Problems with Pointers and Dynamic Memory;
4.1 Review of Pointer Fundamentals;
4.2 Benefits of Pointers;
4.3 When to Use Pointers;
4.4 Memory Matters;
4.5 Solving Pointer Problems;
4.6 Conclusion and Next Steps;
4.7 Exercises;
Chapter 5: Solving Problems with Classes;
5.1 Review of Class Fundamentals;
5.2 Goals of Class Use;
5.3 Building a Simple Class;
5.4 Classes with Dynamic Data;
5.5 Mistakes to Avoid;
5.6 Exercises;
Chapter 6: Solving Problems with Recursion;
6.1 Review of Recursion Fundamentals;
6.2 Head and Tail Recursion;
6.3 The Big Recursive Idea;
6.4 Common Mistakes;
6.5 Applying Recursion to Dynamic Data Structures;
6.6 Wrapper Functions;
6.7 When to Choose Recursion;
6.8 Exercises;
Chapter 7: Solving Problems with Code Reuse;
7.1 Good Reuse and Bad Reuse;
7.2 Review of Component Fundamentals;
7.3 Building Component Knowledge;
7.4 Choosing a Component Type;
7.5 Exercises;
Chapter 8: Thinking Like a Programmer;
8.1 Creating Your Own Master Plan;
8.2 Tackling Any Problem;
8.3 Required Operations for Cheating at Hangman;
8.4 Learning New Programming Skills;
8.5 Conclusion;
8.6 Exercises;
Colophon;
Updates;

Read More Show Less

Customer Reviews

Average Rating 4
( 3 )
Rating Distribution

5 Star

(0)

4 Star

(3)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing all of 3 Customer Reviews
  • Posted March 31, 2013

    Is it possible to ¿spoil¿ a technical book? Well, if so, here¿s

    Is it possible to “spoil” a technical book? Well, if so, here’s your spoiler warning.

    The most important lesson from “How To Think Like A Programmer” is simply this: “when faced with a problem you are unable to solve, you reduce the scope of the problem, by either adding or removing constraints, to produce a problem that you do know how to solve.” It’s a simple concept that should be engraved on every surface a beginning programmer sees. Learning to do that is possibly the most important part of turning technical knowledge of a programming language into the ability to solve problems with that knowledge. Every problem can be broken down into smaller pieces, and eventually you’ll get to a point where the problems are simple enough that you can solve them yourself or quickly look up a solution, and then start bolting those solutions together until you have a passable solution to the original problem. (It may not be the most efficient or bug free code, but writing code is like all other types of writing in one fundamental respect: write something, even if it sucks. You can improve it later, but having a first approximation is the most important part of a project.)

    The above quote comes from the first chapter of the book, which focuses on problem solving methodologies rather than actual code. This was the most useful part of the book for me, not just because it laid out several simple strategies for attacking programming problems, but because it was language agnostic. The rest of the book, unfortunately, isn’t.

    The programming examples in the book are all done in C++, and while they’re usually simple enough that anyone with a basic understanding of modern object oriented programming can follow the examples in the book, being able to attack the problems in that language is a completely different matter. I was often able to approximate the exercises in languages I am more familiar with, but in doing so, I didn’t always end up solving the same problems that the exercise was supposed to cover.

    As a programmer who works mostly with web projects, I would have liked to see more variety in the languages used; it would have only added a few pages to provide code examples in javascript or python or java, in addition to C++. Only a small portion of the book deals with issues that are specific to C++. But given Spraul’s apparent belief that “real programmers” only use C++ (he writes in the introduction that “C++ is the real deal—it’s programming without training wheels”) such a change seems unlikely.

    Regardless, the book is still worth a read for programmers looking to break that barrier from having learned about programming to actually being able to program something (and probably hugely useful to programmers looking to make that jump in C++), and the first chapter should be required reading for every introductory programming course.

    (This book was provided to me for review as part of the O’Reilly Blogger Review Program)

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted September 10, 2012

    This book bills itself as an introduction to creative problem so

    This book bills itself as an introduction to creative problem solving and it starts off on the right track. Using a few interesting logical puzzles such as the "fox, goose, and corn crossing the river" puzzle and an alien combination lock puzzle invented by the author, it explains some useful problem solving techniques such as breaking a problem into manageable pieces, looking for analogies to previously solved problems, and attacking the easiest parts of a problem first.

    Unfortunately the author is sometimes rather pedantic, beating a topic into the ground long after it has lost all interest. The book also spends a lot of time on programming-specific topics that aren't really creative problem solving. For example, the book spends six pages explaining what arrays are and how they work, eight pages on string manipulations, and whole sections on basic data structure topics such as linked lists. These are important topics but they really aren't creative problem solving.

    These topics also require a fair amount of C++-specific syntax and manipulation. For example, the sections on string manipulation don't make any sense in languages such as C#, Java, or Visual Basic that treat a string as an entity instead of as a series of bytes. You can still read the text and try to pull out the deeper concepts but they are obscured by the C++ orientation. The book might have been improved by using pseudo-code for everything and focusing only on problem solving tricks and techniques, but perhaps the author wanted to use C++ so readers could write concrete, testable programs.

    This might be a good second book for a beginning C++ programmer, but more experienced programmers will be familiar with most of the topics covered in this book and programmers using other languages will need to make some mental adjustments to convert the C++ examples into a more familiar form.

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted January 15, 2014

    No text was provided for this review.

Sort by: Showing all of 3 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)