**Bringing
Algorithms to Life: Cooperative Computing Activities using Students as
Processors**

Gregory F. Bachelis

Department of Mathematics, Wayne State University

David A. James

Department of Mathematics and Statistics, University of Michigan-Dearborn

Bruce R. Maxim

Department of Computer and Information Science, University of Michigan-Dearborn

Quentin F. Stout

EECS Department, University of Michigan

At the beginning of a class, a goal is discussed, such as sorting a list of numbers or adding large numbers. A serial algorithm, in which things occur one step at a time, is put forward. Then the class is challenged to come up with ideas to modify the algorithm so as to speed up the achievement of the goal. Pipelining, in which things are done in "assembly-line" fashion, or, more generally, parallelism, in which many steps can occur at the same time, are introduced as a means of accomplishing this. By the end of the class, the students have been led to one or more efficient parallel algorithms. At each stage, the students "act out" the algorithm at hand, with each student playing the part of an individual switch or processor. Thus the entire class is involved in the activities.

The students "cooperate" in two senses: In the planning stage, the students are cooperating as individuals, each with his or her own ideas and suggestions. When it comes time to act out the algorithm, however, they usually play the role of homogeneous processors, acting in concert as they step through the algorithm. Students learn that successful execution of their plans requires correct and timely action by all of them, and they see that many individual units each performing simple tasks can together achieve a complex goal.

**Keywords:** parallel algorithms, cooperation, sorting, addition,
multiplication, sieving for primes, sorting, efficiency, systolic, pipelining,
computer science

Copyright © 2005-2016 Quentin F. Stout |