Recently I have been doing some mock interviews with high school students. I have some business cards with a coded message on the backs with a challenge for students to solve the code. For a number of the mock interviews I handed the student one of these cards and asked them “what’s the first thing you would do to solve this?” The first part of the code looks like “8BF3A13B” and some many students say “that looks like hex. so I’ll convert it to decimal.” Others say they will compare it with a table of ASCII codes. But at least one in four says “I’ll search for it on the Internet.” OK some of them say they will “Google it” which of course lets me asks me ask if they are sure Google is the reference they want to use when interviewing with someone who works for Microsoft. :-) I learn a lot from the answers to that question as well. But I digress from the issue of if searching for answers on the Internet is really problem solving.
Of course the Internet is a great resource for looking for information and finding the answers to all sorts of questions. Watching student search the Internet for years now I have to say that many of them do a very poor job at it. They don’t always know how to ask questions or what questions to ask. Now searching for an example of a coded message is easy. I expect that many students who get these coded cards from me or from others in my group will find this blog post in the future. I will be of almost no help to them at all though. Well at least not with decoding the message. False positives on the Internet are common.
Information is only half the battle though. Problem solving may start with what questions to ask but it moves on to knowing what specific information or algorithm must be use to solve general problems. This is where it gets difficult for many people. I think that learning to move from specific to general is the key important thing in teaching computer science. This is what makes the difference, for example, between teaching the syntax for a loop and having students who can use a loop to solve problems. Or for that matter in math the difference between teaching what the Pythagorean theorem is and having students who can look at a problem and think “I need to use the Pythagorean theorem to solve this one.” Students need to exercise the problem solving muscles.
There is a fine line though between making things too easy and too hard. Finding it is the art of teaching.
BTW a related post is Are Your Students Good Problem Solvers, or Good Mimics? on the CSTA blog. And there is a collection of puzzles in the archive of the Microsoft College Student Puzzle Day event.