The mutual exclusion problem: part I—a theory of interprocess communication
Journal of the ACM (JACM)
The mutual exclusion problem: partII—statement and solutions
Journal of the ACM (JACM)
A theory for nondeterminism, parallelism, communication, and concurrency
Theoretical Computer Science
A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
Algorithmics: the spirit of computing
Algorithmics: the spirit of computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Z notation: a reference manual
The Z notation: a reference manual
Computability, complexity, and languages (2nd ed.): fundamentals of theoretical computer science
Computability, complexity, and languages (2nd ed.): fundamentals of theoretical computer science
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Algebraic approaches to nondeterminism—an overview
ACM Computing Surveys (CSUR)
Journal of the ACM (JACM)
Some Properties of Predicate Transformers
Journal of the ACM (JACM)
Concurrent Processes and Their Syntax
Journal of the ACM (JACM)
Communicating sequential processes
Communications of the ACM
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
A new solution of Dijkstra's concurrent programming problem
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Multi-tape and infinite-state automata—a survey
Communications of the ACM
Nondeterminism in logics of programs
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Introduction to the Theory of Computation
Introduction to the Theory of Computation
Elements of the Theory of Computation
Elements of the Theory of Computation
A Discipline of Programming
Animating automata: a cross-platform program for teaching finite automata
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
"Sometime" is sometimes "not never": on the temporal logic of programs
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Introduction to Algorithms
Semantics of Unbounded Nondeterminism
Proceedings of the 7th Colloquium on Automata, Languages and Programming
Proceedings of the 7th Colloquium on Automata, Languages and Programming
A Method for Refining Atomicity in Parallel Algorithms
PARLE '89 Proceedings of the Parallel Architectures and Languages Europe, Volume II: Parallel Languages
Refinement Calculus, Part I: Sequential Nondeterministic Programs
Stepwise Refinement of Distributed Systems, Models, Formalisms, Correctness, REX Workshop
The complexity of theorem-proving procedures
STOC '71 Proceedings of the third annual ACM symposium on Theory of computing
Second-order mathematical theory of computation
STOC '70 Proceedings of the second annual ACM symposium on Theory of computing
Deterministic simulation of non-deterministic turing machines (Detailed Abstract)
STOC '69 Proceedings of the first annual ACM symposium on Theory of computing
Invited papers—1: basic concepts of automata theory
ACM '65 Proceedings of the 1965 20th national conference
The Early Search for Tractable Ways of Reasoning about Programs
IEEE Annals of the History of Computing
Learning concurrency: evolution of students' understanding of synchronization
International Journal of Human-Computer Studies
Algorithm Design
Computation: finite and infinite machines
Computation: finite and infinite machines
Formal languages and their relation to automata
Formal languages and their relation to automata
Computer science education in the 21st century
Communications of the ACM - Self managed systems
jFAST: a java finite automata simulator
Proceedings of the 37th SIGCSE technical symposium on Computer science education
Principles of Concurrent and Distributed Programming (2nd Edition) (Prentice-Hall International Series in Computer Science)
Introduction to Automata Theory, Languages, and Computation (3rd Edition)
Introduction to Automata Theory, Languages, and Computation (3rd Edition)
Teaching students to think nondeterministically
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Using control network programming in teaching nondeterminism
Proceedings of the 13th International Conference on Computer Systems and Technologies
Hi-index | 0.00 |
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.