skip to main content
column

The concept of nondeterminism: its development and implications for teaching

Published:25 June 2009Publication History
Skip Abstract Section

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.

References

  1. Abrial, J.R. (1996). The B Book: Assigning Programs to Meanings. Cambridge, UK: Cambridge University Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Armoni, M. & Gal-Ezer, J. (2006). Introducing non-determinism. Journal of Computing in Mathematics and Science Teaching 25(4), 325--359.Google ScholarGoogle Scholar
  3. Armoni, M. & Gal-Ezer, J. (2007). Non-determinism -- an abstract concept in computer science studies. Computer Science Education, 17(4) 243--262.Google ScholarGoogle ScholarCross RefCross Ref
  4. Armoni, M., Lewenstein, N., & Ben-Ari, M. (2008). Teaching students to think nondeterministicaly. In Dougherty, J.D., Rodger, S., Fitzgerald, S., & Guzdial, M. (Eds.), Proceedings of the 39 th SIGCSE Technical Symposium on Computer Science Education (Portland, OR, March 12 - 15, 2008). New York: ACM Press, 4--8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Back, R.J.R. (1980). Semantics of unbounded nondeterminism. In de Bakker, J.W. & van Leeuwen, J. (Eds.), Proceedings of the 7th Colloquium on Automata, Languages and Programming, and in Goos, G. and Hartmanis, J. (Eds.), Lecture Notes in Computer Science 85, 51--63. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Back, R.J.R. (1981a). On correct refinement of programs. Journal of Computer and System Sciences 23(1), 49--68.Google ScholarGoogle ScholarCross RefCross Ref
  7. Back, R.J.R. (1981b). Proving total correctness of nondeterministic programs in infinitary logic. Acta Informatica 15(3), 233--249.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Back, R.J.R. (1983). A continuous semantics for unbounded nondeterminism. Theoretical Computer Science 23, 187--210.Google ScholarGoogle ScholarCross RefCross Ref
  9. Back, R.J.R. (1989a). A method for refining atomicity in parallel algorithms. In Odijk, E., Rem, M. & Syre, J.-C. (Eds.), Proceedings of PARLE '89, Parallel Architectures and Languages, Europe, the 22nd Annual Hawaii International conference on System Sciences, and in Goos, G. and Hartmanis, J. (Eds.), Lecture Notes in Computer Science 366, 231--242. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Back, R.J.R. (1989b). Changing data representations in the refinement calculus. In Shriver, B.D. (Ed.), Proceedings of the 22nd Annual Hawaii International conference on System Sciences, Washington, DC: IEEE Computer Society Press, 231--242.Google ScholarGoogle Scholar
  11. Back, R.J.R. & von Wright, J. (1989). Refinement calculus, part I: sequential nondeterministic programs. In de Bakker, J. W., de Roever, W.-P. & Rozenberg, G. (Eds.), Stepwise Refinement of Distributed Systems, Models, Formalisms, Correctness, REX Workshop, and in Goos, G. and Hartmanis, J. (Eds.), Lecture Notes in Computer Science 430, 42--66. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. de Bakker, J.W. (1976). Semantics and termination of nondeterministic recursive programs. In Michaelson, S. & Milner, R. (Eds.), Proceedings of the 3rd Colloquium on Automata, Languages and Programming, Edinburgh, Scotland: Edinburgh University Press, 435--477.Google ScholarGoogle Scholar
  13. Behm, P., Benoit, P., Faivre, A., & Meynadier, J. (1999). Méétéor: A successful application of B in a large project. In Wing, J.M., Woodcock, J. & Davies, J. (Eds.). Proceedings of the Wold Congress on Formal Methods in the Development of Computing Systems-Volume I (September 20-24, 1999). Lecture Notes In Computer Science 1708, 369--387. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Ben-Ari, M. (2006). Principles of Concurrent and Distributed Programming (Second Edition). London: UK, Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Ben-Ari, M. (2008). Principles of Spin. London, UK: Springer.Google ScholarGoogle Scholar
  16. Ben-David Kolikant, Y. (2004a). Learning concurrency: Evolution of students' understanding of synchronization. International Journal of Human Computers Studies 60(2), 243--268. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Ben-David Kolikant, Y. (2004b). Learning concurrency as an entry point to the community of CS practitioners. Journal of Computers in Mathematics and Science Teaching 23(1), 21--46.Google ScholarGoogle Scholar
  18. Broy, M. (1986). A theory for nondeterminism, parallelism, communication, and concurrency. Theoretical Computer Science, 45(1), 1--61. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Broy, M., Gnatz, R., & Wirsing, M. (1978). Semantics of nondeterministic and noncontinuous constructs. Lecture Notes in Computer Science 69, 553--592.Google ScholarGoogle ScholarCross RefCross Ref
  20. Chomsky, N. (1962). Context-Free Grammars and Pushdown Storage. RLE Quarterly Progress Report 65, MIT Research Laboratory in Electronics, 187--194.Google ScholarGoogle Scholar
  21. Chomsky, N. & Schüützenberger, M.P. (1963). The algebraic theory of context-free languages. In Braffort, P. & Hirchberg, D. (Eds.), Computer Programming and Formal Systems, Amsterdam: North-Holland, 118--161.Google ScholarGoogle Scholar
  22. Cook, S.A. (1971). The complexity of theorem-proving procedures. In Proceedings of the Third Annual ACM Symposium on Theory of Computing (Shaker Heights, OH, May 03 - 05, 1971). STOC '71. New York: ACM Press, 151--158. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Cormen, T.H., Leiserson, C.E., Rivest, R.L., & Stein, C. (2001). Introduction to Algorithms, Second Edition. Cambridge, MA: MIT Press and Boston, MA: McGraw-Hill. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Davis, M. (1958). Computability & Unsolvability. New-York: McGraw-Hill.Google ScholarGoogle Scholar
  25. Davis, M.D., Sigal, R., & Weyuker, E.J. (1994). Computability, Complexity, and Languages, Fundamentals of Theoretical Computer Science (Second Edition). San-Diego, CA: Academic Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Dijkstra, E.W. (1968). Cooperating sequential processes, in F. Genuys (Ed.) Programming Languages, New York: Academic Press.Google ScholarGoogle Scholar
  27. Dijkstra, E.W. (1975). Guarded commands, nondeterminacy and formal derivation of programs. Communications of the ACM 18(8), 453--457 (EWD472). Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Dijkstra, E.W. (1976). A Discipline of Programming. Englewood Cliffs, NJ: Prentice-Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Dijkstra, E.W. (1980). A programmer's early memories. In Metropolis, N., Howlett, J. & Rota, G. (Eds.), A History of Computing in the Twentieth Century: a Collection of Essays, New York: Academic Press, 563--573.Google ScholarGoogle Scholar
  30. Fischer, P.C. (1965). Multi-tape and infinite-state automata -- a survey. Communications of the ACM 8(12), 799--805. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Floyd, R.W. (1967). Nondeterminstic algorithms. Journal of the ACM 14(4), 114--125. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Frances, N., Hoare, C.A.R., Lehmann, D.J., & de Roever, W.P. (1979). Semantics of nondeterminism, concurrency, and communication. Journal of Computer and System Sciences 19, 290--308.Google ScholarGoogle ScholarCross RefCross Ref
  33. Gallier, J.H. (1981a). Nondeterministic flowchart programs with recursive procedures: semantics and correctness I. Theoretical Computer Science 13(2), 239--270.Google ScholarGoogle ScholarCross RefCross Ref
  34. Gallier, J.H. (1981b). Nondeterministic flowchart programs with recursive procedures: semantics and correctness II. Theoretical Computer Science 13(3), 193--223.Google ScholarGoogle ScholarCross RefCross Ref
  35. Grinder, M.T. (2002). Animating automata -- a cross-platform program for teaching finite automata. SIGSCE Bulletin 34(1), 63--67. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Harel, D. (1981). On the total correctness of nondeterministic programs. Theoretical Computer Science 13(2), 175--192.Google ScholarGoogle ScholarCross RefCross Ref
  37. Harel, D. (1987). Algorithmics: The Spirit of Computing. Reading, MA: Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Harel, D. & Pratt, V.R. (1978). Nondeterminism in logics of programs. In Proceedings of the 5th Annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, (Tucson, Arizona, January 23 - 25, 1978). POPL '78. New York: ACM Press, 203--213. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Hoare, C.A.R. (1969). An axiomatic basis for computer programming. Communications of the ACM 12(10), 576--583. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Hoare, C.A.R. (1978a). Communicating sequential processes. Communications of the ACM 21(8), 666--677. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Hoare, C.A.R. (1978b). Some properties of predicate transformers. Journal of the ACM 25(3), 461--480. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Hoare, C.A.R. (1985/2004). Communicating Sequential Processes. Hemel Hempstead, UK: Prentice Hall International. http://usingcsp.com/cspbook.pdf (accessed 6 March 2007).Google ScholarGoogle Scholar
  43. Holzmann, G.J. (2004). The Spin Model Checker: Primer and Reference Manual. Boston, MA: Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Hopcroft, J.E., Motwani, R., & Ullman, J.D. (2007). Introduction to Automata Theory, Languages and Computation (Third Edition). Boston, MA: Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Hopcroft, J.E. & Ullman, J.D. (1969). Formal Languages and their Relation to Automata. Reading, MA: Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Hopcroft, J.E. & Ullman, J.D. (1979). Introduction to Automata Theory, Languages and Computation. Reading, MA: Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. IEEE Computer Society/ACM (2001). Computing Curricula 2001: Computer Science-Final Report. http://www.sigcse.org/cc2001/ (accessed 1 March 2007).Google ScholarGoogle Scholar
  48. INMOS (1988). Occam 2 Reference Manual, Hemel Hempstead, UK: Prentice Hall International.Google ScholarGoogle Scholar
  49. Jones, C.B. (2003). The early search for tractable ways of reasoning about programs. IEEE Annals of the History of Computing 25(2), 26--49. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Kennaway, J.R. & Hoare, C.A. R., (1980). A theory of nondeterminism. In Proceedings of the 7th Colloquium on Automata, Languages and Programming, Lecture Notes in Computer Science 85, 338--350. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Kleinberg, J. & Tardos, ÉÉ. (2006). Algorithm Design. Boston, MA: Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Kuroda, S.-Y. (1964). Classes of languages and linear bounded automata. Information and Control 7(2), 207--223.Google ScholarGoogle ScholarCross RefCross Ref
  53. Lamport, L. (1974). A new solution of Dijkstra's concurrent programming problem. Communications of the ACM 17(8), 453--455. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Lamport, L. (1980). "Sometime" is sometimes "not never": On the temporal logic of programs. In Proceedings of the 7th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, (Las Vegas, NV, January 28 - 30, 1980). POPL '80. New York: ACM Press, 174--185. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Lamport, L. (1986a). The mutual exclusion problem: Part I--a theory of interprocess communication. Journal of the ACM 33(2): 313--326. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Lamport, L. (1986b) The mutual exclusion problem: Part II--statement and solutions. Journal of the ACM 33(2): 327--348. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Lewis, H.R. & Papadimitriou, C.H. (1981). Elements of the Theory of Computation. Englewood Cliffs: NJ: Prentice-Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Manna, Z. (1970a). Second-order mathematical theory of computation. In Proceedings of the Second Annual ACM Symposium on Theory of Computing (Northampton, MA, May 4-6, 1970). STOC '70. New York: ACM Press, 158--168. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Manna, Z. (1970b). The correctness of nondeterministic programs, Artificial Intelligence 1, 1--26.Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. McCarthy, J. (1963). A basis for a mathematical theory of computations. In Braffort, P. & Hircshberg, D. (Eds.), Computer Programming and Formal Systems, Amsterdam: North-Holland, 33--70.Google ScholarGoogle Scholar
  61. Milne, G. & Milner R. (1979). Concurrent processes and their syntax. Journal of the ACM 26(2), 302--321. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Minsky, M.L. (1967). Computation: Finite and Infinite Machines. Englewood Cliffs, NJ: Prentice-Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Morgan, C. (1988). The specification statement. ACM Transactions on Programming Languages and Systems 10(3), 403--419. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Morris, J.M. (1987). A theoretical basis for stepwise refinement and the programming calculus. Science of Computer Programming 9(3), 287--306. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Nelson, R.J. (1965). Invited papers--1: Basic concepts of automata theory. In Winner, L. (Ed.), Proceedings of the 1965 20th National Conference (Cleveland, OH, August 24-26, 1965). New York: ACM Press, 138--161. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Patterson, D.A. (2006). Computer science education in the 21 st century. Communications of the ACM 49(3), 27--30. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Plotkin, G.D. (1976). A powerdomain construction, SIAM Journal on Computing 5(3), 452--487.Google ScholarGoogle ScholarCross RefCross Ref
  68. Rabin, M.O. & Scott, D. (1959). Finite automata and their decision problems. IBM Journal of Research and Development 3(2), 636--644.Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. de Roever, W.P. (1976). Dijkstra's predicate transformers, non-determinism, recursion and termination. Proceedings of the Conference on Mathematical Foundations of Computer Science, Lecture Notes in Computer Science 45, 472--481.Google ScholarGoogle Scholar
  70. Rodger, S.H. & Finley, T.W. (2006) JFLAP: An Interactive Formal Languages and Automata Package. Sudbuy, MA: Jones and Bartlett. Ross, P.E. (2005). The Exterminators. IEEE Spectrum 42(9), 36--41.Google ScholarGoogle Scholar
  71. Savitch, W.J. (1969). Deterministic simulation of non-deterministic Turing machines (Detailed Abstract). In Proceedings of the First Annual ACM Symposium on Theory of Computing (Marina del Rey, CA, May 5-7, 1969). STOC '69. New York: ACM Press, 247--248. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Schützenberger, M.P. (1963). On context-free languages and pushdown automata. Information and Control 6, 246--264.Google ScholarGoogle ScholarCross RefCross Ref
  73. Sipser, M. (1997). Introduction to the Theory of Computation. Boston, MA: PWS Publishing. Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Spivey, J.M. (1992). The Z Notation: A Reference Manual, 2nd edition. Hemel Hempstead, UK: Prentice Hall International. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Tucker, A.B., Barnes, B.H., Aiken, R.M., Barker, K., Bruce, K.B., Cain, J.T., Conry, S.E., Engel, G.L., Epstein, R.G., Lidtke, D.K., Mulder, M.C., Rogers, J.B., Spafford, E.H., & Turner, A.J. (1991). Computing Curricula '91. Association for Computing Machinery and the Computer Society of the Institute of Electrical and Electronics Engineers.Google ScholarGoogle Scholar
  76. Warwick, W. (2001). The Conceptual Development of Nondeterminism in Theoretical Computer Science. Unpublished Ph.D. thesis, Indiana University.Google ScholarGoogle Scholar
  77. Walicki, M. & Meldal, S. (1997). Algebraic approaches to nondeterminism: An overview, ACM Computing Surveys 29(1), 30--81. Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. White, T.M. & Way, T.P. (2006). JFast: A Java finite automata simulator. In Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education, SIGSCE Bulletin 38(1), 384--388. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. The concept of nondeterminism: its development and implications for teaching
        Index terms have been assigned to the content through auto-classification.

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader