Algorithmic Problem Solving

Stc
ComputingScienceColloquium

Date: October 15

Time: 10:00 - 11:30

Room: BBL room 420

Speaker: Roland Backhouse (Nottingham University)

Title: Algorithmic Problem Solving

Abstract

The modern world is critically dependent on the reliable functioning of computer software. The sheer scale of software systems makes their design and implementation a highly demanding intellectual activity. The level of rigour, accuracy and effectiveness required in reasoning about software is unprecedented, even when compared with reasoning in mathematics.

Computing scientists (particularly in the Netherlands) have responded to this challenge by developing novel reasoning techniques for designing efficient computer algorithms. These "correct-by-construction" techniques emphasise the process of algorithm design, rather than the result. That is, they are about the problem-solving skills that are used in extracting, from an initial, informal, set of requirements, a formal program specification, which is then transformed by a series of design steps to a working, provably correct implementation of the specification. Reliability of the process is ensured by emphasising calculational skills.

The insight that has been gained has the potential of causing a revolution in the art of effective reasoning, with immense benefits for the way that problem solving is taught in schools and universities.

This talk is about how I am trying to introduce first-year undergraduates to these skills in a module entitled "Algorithmic Problem Solving" at the University of Nottingham http://www.cs.nott.ac.uk/~rcb/G5AAPS/G5AAPS.html.

The problems I have chosen to present in the module are typically challenging but easily understood, and involve some sort of construction. I use, for example, simple two-person games, where what is to be constructed is a winning strategy. The problems are deliberately non-mathematical in the sense that they are expressed in natural language, without the aid of mathematical formulae. Nevertheless, my goal is to demonstrate how the use of the mathematics of algorithm design is truly effective in their solution. The problems are not new ---a Dutch audience will recognize many as having appeared in the "Vierkant Voor Wiskunde" calendars in 1999 and 2000--- but the focus is.

The talk uses an overview of the module as a basis for a discussion of good and bad problem-solving skills, and how they can be taught. I will draw on my own experience (including as a student of mathematics) and offer some views on how to make radical improvements in mathematics education.