Recent Topics |
Abstraction when facing html/css problems
by Paul Vickers
July 23, 2013, 12:07:36 PM
|
Slides for the book
by admin
April 25, 2013, 12:43:17 PM
|
Build a Windows Form Softphone in VB.NET
by brendonwalsh490
December 04, 2012, 02:48:25 PM
|
Android application development
by Morrowind
September 13, 2012, 10:24:44 AM
|
Getters and Setters: why?
by Paul Vickers
March 30, 2012, 03:07:18 PM
|
New Member Welcomes
by admin
February 17, 2012, 02:43:01 PM
|
MOVED: CM0427 Lab exercises: Question 5
by Brian Wildebeest
December 23, 2011, 07:56:04 PM
|
Video!
by Paul Vickers
April 05, 2011, 08:32:43 PM
|
|
Board News |
|
Recent Members |
|
Members Online |
1 Guest, 0 Users
|
|
Welcome! |
Welcome to the How To Think Like A Programmer web site and discussion forum!
UPDATE: November 2013 People seem to be having trouble getting hold of "How To Think Like A Programmer" at the moment. I am in discussion with the publisher to resolve the issue. In the meantime, if you have any questions about availability, please do email me at paul @ howtothinklikeaprogrammer.com.
To learn more about the book, see below. For links to the publisher's web site where teachers can register to download slides for teaching, sample exam papers, etc., and students can get solutions to all the exercises plus more stuff, then see the bar on the right. To buy the book from Amazon see the links below the publisher's resource information on the right or visit our book store by clicking on the appropriate button in the menu above.
To use the discussion forum where you can ask questions about the book in particular, discuss computer programming in general, get information about other recommended or affiliated web sites, or even talk about the weather then just click on the 'Forum' link in the menu bar above. Make sure to register if you want to post replies.
Why this book?
Over the past decade-and-a-half of teaching introductory computer programming I have noticed increasingly that students have difficulty with solving problems. It is common to see learners read a programming problem description and immediately try to write the programming language source code (usually whilst sitting at a PC typing straight into the editing window of the compiler environment). When they ask for help it is often the case that their difficulty lies not with manipulating the programming language syntax (C, Pascal, Java, or whatever) but in understanding what it is they're trying to solve. In fact, many times they confuse their syntax-handling difficulties with their problem-solving difficulties and blame their frustration on programming itself or on the chosen programming language. Some of them then become so downhearted that they decide they cannot do computer programming and transfer to a course that doesn't require them to study it.
The How To Think Like A Programmer project came about after years of seeing learners struggle with fundamental problem-solving concepts. How To Think Like A Programmer provides the bewildered, apprehensive, and anxious with an accessible introduction to programming by focusing on solving real-world problems in an algorithmic way in an environment free of programming-language syntax.
The focus in How To Think Like A Programmer is on developing skills in developing algorithmic solutions to real-world problems. The up-front emphasis is on problem solving as a discipline without direct reference to technological/computer-domain issues. The book focuses on developing an understanding of the processes involved in examining and analyzing problems; in understanding the component parts of a problem, in understanding what is required. It then teaches how to solve problems, check the solutions for mistakes, inconsistencies, and limitations, and express those solutions as algorithms in such a way that the solution can be repeated by others. Treatment of programming language syntax and low-level data abstractions is deferred to other books (though the larger version of the book does briefly touch upon this aspect).
Top Features
- A real problem-solving strategy: The book uses an underlying six-stage problem-solving strategy which is derived from George Pólya’s heuristic strategy for solving mathematical problems. The strategy is used throughout the text to show how following it can help to understand and solve real-world problems.
- Real-world domain: The book stays largely in the real-world domain in order to develop the ability to think algorithmically about problems in general. The use of real-world problems (such as making coffee) keeps the text firmly in a domain that is familiar to the reader. Many programming novices become bewildered because they try to tackle learning how to solve problems at the same time as understanding programming language technology. By staying the real-world domain we (as far as possible) defer issues of programming language syntax until after the algorithmic problem-solving skills have been acquired.
- No language syntax: A true language-free text. The use of pseudo-code means the book a) is appropriate for any student of programming and b) does not confuse problem-solving with learning a languages’ syntax. The abstraction level of the pseudo-code starts out high as the learner focuses energy on the general attributes of problem solving. As the problems become more refined so the abstraction level of the pseudo-code is lowered so that by the end of the book the pseudo-code has many features common to programming languages. The advantage of not using a programming language, however, is that at any time high-level structured English can be used by the learner such that there is no intrinsic necessity to learn to use specialist symbols.
- True learner-centred approach: This text is aware of the difficulties the bewildered learner can have understanding the fundamental concepts of programming & problem-solving. Through the used of the Brian B. Wildebeest character’s FAQ feature and detailed, step-by-step worked examples of primitive concepts, this book aims to explain basic concepts in a way learners can grasp. Many texts make cognitive leaps assuming the learner can keep up: this text walks the learner gently through each concept explaining exactly how it works and how solutions can be derived.
The benefit of each of these to the teacher
- Provides a structured framework that can be used to teach programming/problem solving. Polya’s framework works well for mathematics problems and this book shows how it can be adapted to suit programming problems.
- Having used the problems in the book to teach the principles, the teacher can draw on other real-world problems that will be familiar to his/her particular class and use the same problem-solving strategy to work on the problems with the students.
- The language-free approach allows the book to be used in the first 4-6 weeks of the semester to focus solely on problem-solving and then a book using a specific programming language can be used as a follow-on for applying the newly acquired problem-solving skills to implementing executable solutions.
- The detailed and gentle explanations of concepts mean the learner should follow the course more easily and spend more time solving more problems and less time asking the teacher to repeatedly explain very basic concepts.
The benefit of each of these to the learner
- The formalized problem-solving strategy introduced in chapter 2 offers a structured framework that the student can apply to every algorithm-design/program-design problem. The built in reflective questions of the strategy encourage systematic and critical thinking and promote a more disciplined approach to learning how to program.
- The real-world domain means that the problems to be solved are couched in language and terms that are likely to be familiar to the learner. There is little talk of the more esoteric problems beloved of traditional computer science texts (such as bubble-sorting, the towers of Hanoi, finding prime numbers, etc) and much more of a focus on showing how algorithms can be developed to express solutions to everyday problems such as making coffee.
- By not using a programming language syntax the student can focus on solving problems. The pseudo-code provides a structured and formalized way to express algorithms but without the attendant fear of getting a symbol in the wrong place and thus generating lots of the dreaded “syntax error” messages. The formality of the pseudo-code develops at the same pace as the learner and so gradually brings the student to a point where they can not only solve problems algorithmically but are also ready to then begin learning a programming language proper in which those algorithms can be implemented.
- This book understands the problems a great many novice programmers face. By recognizing that not everybody understands the subtleties of the fundamental building blocks of algorithms (sequence, iteration, selection, and data) straight away, the reader is introduced in a gentler, more sympathetic, and non-patronizing way to the concepts that are key to understanding how to write algorithms. The book’s strategy is repeatedly applied to worked examples so that the learner can follow along seeing it applied to real problems.
Don't just take my word for it: REVIEWS
Here's what was said about How To Think Like a Programmer in Times Higher Education (December 2009):
One could be forgiven for imagining that this may be yet another title joining the throngs of indistinguishable (but always yellow) introductory programming books, but now there is a new kid on the block.
Paul Vickers builds his book on two powerful insights. First, many students confuse problem solving and programming, because they are often taught on their course as one. Second, he teaches programming, rather than programming in a particular language, which often gives students an unmotivated view of the wider ideas. And contrary to popular belief, programming is easy and fun.
However, the two final chapters take the student into hands-on programming via the language Processing, an open-source multi-platform language from MIT that also leads nicely into Java.
Who is it for? Ideal for first-year programming courses.
Presentation: Engaging, clear and talks directly to the reader.
Would you recommend it? Anybody teaching programming should check it out; students will find it more useful than it looks, precisely because it will support their learning in any programming language.
And here is a review from a teacher who uses it:
This review is from: How to Think Like a Programmer: Program Design Solutions For The Bewildered (Paperback)
This book is, perhaps the best that I read about this topic. This is easy to read and simple to understand! I'm a computer science teacher and I use the book in my classes. Thank you Paul for your excelent work!
And here\'s one from somebody who bought it to help her with her university Java course:
This review is from: How to Think Like a Programmer: Program Design Solutions For The Bewildered (Paperback) …
The book itself is great, I match all the critera listed for whom the book is intended. I have being trying to learn Java, as both part of a uni course and now as a personal mission in my own time, and although I understood the syntax etc I couldn't quite get a grasp on the reasoning behind some of the logic and why programs are contructed the way that they are. This book explains all.
I recommend that if you are new to programming you would be wise to read this book first and then you will have a greater understanding of the logic behind programming which makes it easier to learn and apply a language to it. |
|
|