The concept of nondeterminism: its development and implications for teaching

  • Authors:
  • Michal Armoni;Mordechai Ben-Ari

  • Affiliations:
  • Weizmann Institute of Science, Rehovot, Israel;Weizmann Institute of Science, Rehovot, Israel

  • Venue:
  • ACM SIGCSE Bulletin
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

Nondeterminism is a fundamental concept in computer science that appears in various contexts such as automata theory, algorithms and concurrent computation. We present a taxonomy of the different ways that nondeterminism can be defined and used; the categories of the taxonomy are domain, nature, implementation, consistency, execution and semantics. An historical survey shows how the concept was developed from its inception by Rabin & Scott, Floyd and Dijkstra, as well the interplay between nondeterminism and concurrency. Computer science textbooks and pedagogical software are surveyed to determine how they present the concept; the results show that the treatment of nondeterminism is generally fragmentary and unsystematic. We conclude that the teaching of nondeterminism must be integrated through the computer science curriculum so that students learn to see nondeterminism both in terms of abstract mathematical entities and in terms of machines whose execution is unpredictable.