23 March 2009

What students need to know to solve Math / CS problems?

According to Richard Mayer, there are four essential stages one needs to go through to solve a typical mathematical problem like the following:
Floor tiles are sold in squares 30 centimeters on each side. How much world it cost to tile a rectangular room 7.2 meters long and 5.4 meters wide if the tiles cost $.72 each?
The four stages are: problem translation which converts each sentence into an internal representation, problem integration which involves putting the different pieces of information into a coherent whole, solution planning which involves the selection of the most appropriate strategy to solve the problem, and solution execution which involves carrying out the procedures to derive the solution.

The same four stages of problem solving can be applied to solving Computer Science problems. Problem translation involves a good data representation, usually in the form of a data structure, database design, or file structure. Once we have a good data representation, the flow of data and its transformation need to be analyzed. A good strategy usually in the form of a good algorithm needs to be selected next, and finally, the problem can be coded in a programming language for execution.

In CS, we have at least a course for each of these steps: Data Structure, Systems Analysis and Design / Software Engineering, Algorithm Design, and Programming Languages. The process of solving problems in computer science is indeed non-trivial, but yet, in many CS1 courses, we expect our students to be able to do all these while the primary focus of the course is probably just getting students to learn a programming language. Since the first course in CS usually determines whether a student will continue into the discipline, care must be taken not to overwhelm the students with too much material and frustrate them in their learning.


Mayer, R. (2007) Learning and Instruction. Prentice Hall.

No comments: