Advertisement

Concurrent Programming from pseuCo to Petri

  • Felix FreibergerEmail author
  • Holger Hermanns
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11522)

Abstract

The growing importance of concurrent programming has made practical concurrent software development become a cornerstone of many computer science curricula. Since a few years, a sound bridge from concurrency theory to concurrence practice is available in the form of pseuCo, a light-weight programming language featuring both message passing and shared memory concurrency. That language is at the core of an award-winning lecture at Saarland Informatics Campus. This paper presents a novel two-step semantic mapping from pseuCo programs to colored Petri nets, developed for the sake of further strengthening the educational concept behind pseuCo. The approach is fully integrated in Open image in new window , our open-source teaching tool for pseuCo, empowering students to interact with the Petri-net-based semantics of pseuCo. In addition, we present a source-level exploration tool for pseuCo, also based on this semantics, that gives users an IDE-like debugging experience while enabling full control over the nondeterminism inherent in their programs. The debugger is also part of Open image in new window , allowing students to access it without any set-up.

Keywords

Concurrency Education Colored Petri nets Programming Semantics 

Notes

Acknowledgments

We would like to thank Bernd Finkbeiner for supervising an earlier phase of this project. Michaela Klauck provided helpful feedback during development of the debugging feature of Open image in new window . This work was partially supported by the ERC Advanced Investigators Grant 695614 (POWVER) and by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) – project number 389792660 – TRR 248 (see https://perspicuous-computing.science).

References

  1. 1.
    Computer Science Curricula 2013. ACM Press and IEEE Computer Society Press (2013).  https://doi.org/10.1145/2534860Google Scholar
  2. 2.
    Best, E., Fraczak, W., Hopkins, R.P., Klaudel, H., Pelz, E.: M-nets: an algebra of high-level Petri nets, with an application to the semantics of concurrent programming languages. Acta Inf. 35(10), 813–857 (1998).  https://doi.org/10.1007/s002360050144MathSciNetCrossRefzbMATHGoogle Scholar
  3. 3.
    Best, E., Hopkins, R.P.: \(B(PN)^{2}\) — a basic Petri net programming notation. In: Bode, A., Reeve, M., Wolf, G. (eds.) PARLE 1993. LNCS, vol. 694, pp. 379–390. Springer, Heidelberg (1993).  https://doi.org/10.1007/3-540-56891-3_30CrossRefGoogle Scholar
  4. 4.
    Biewer, S., Freiberger, F., Held, P.L., Hermanns, H.: Teaching academic concurrency to amazing students. In: Aceto, L., Bacci, G., Bacci, G., Ingólfsdóttir, A., Legay, A., Mardare, R. (eds.) Models, Algorithms, Logics and Tools. LNCS, vol. 10460, pp. 170–195. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-63121-9_9CrossRefGoogle Scholar
  5. 5.
    Dijkstra, E.W.: Letters to the editor: go to statement considered harmful. Commun. ACM 11(3), 147–148 (1968).  https://doi.org/10.1145/362929.362947CrossRefGoogle Scholar
  6. 6.
    ECMA International: ECMAScript\(\copyright \) 2015 Language Specification, 6th edn., June 2015. Standard ECMA-262Google Scholar
  7. 7.
    Eisentraut, C., Hermanns, H.: Teaching concurrency concepts to freshmen. Trans. Petri Nets Other Models Concurr. 1, 35–53 (2008).  https://doi.org/10.1007/978-3-540-89287-8_3MathSciNetCrossRefzbMATHGoogle Scholar
  8. 8.
    Gansner, E.R., Koutsofios, E., North, S.C., Vo, K.: A technique for drawing directed graphs. IEEE Trans. Softw. Eng. 19(3), 214–230 (1993).  https://doi.org/10.1109/32.221135CrossRefGoogle Scholar
  9. 9.
    Garavel, H.: Nested-unit Petri nets. J. Log. Algebr. Methods Program. 104, 60–85 (2019).  https://doi.org/10.1016/j.jlamp.2018.11.005, http://www.sciencedirect.com/science/article/pii/S2352220817302018MathSciNetCrossRefGoogle Scholar
  10. 10.
    The Go Programming Language Specification. http://golang.org/ref/spec
  11. 11.
    Holzmann, G.: The Spin Model Checker – Primer and Reference Manual, 1st edn. Addison-Wesley Professional, Boston (2003)Google Scholar
  12. 12.
    Jensen, K.: Coloured Petri nets and the invariant-method. Theor. Comput. Sci. 14, 317–336 (1981).  https://doi.org/10.1016/0304-3975(81)90049-9MathSciNetCrossRefzbMATHGoogle Scholar
  13. 13.
    Jensen, K.: Coloured Petri Nets - Basic Concepts, Analysis Methods and Practical Use - Volume 1. EATCS Monographs on Theoretical Computer Science. Springer, Heidelberg (1992).  https://doi.org/10.1007/978-3-662-06289-0CrossRefGoogle Scholar
  14. 14.
    Kristensen, L.M., Christensen, S.: Implementing coloured Petri nets using a functional programming language. High. Order Symb. Comput. 17(3), 207–243 (2004).  https://doi.org/10.1023/B:LISP.0000029445.29210.caCrossRefzbMATHGoogle Scholar
  15. 15.
    Meyer, R., Strazny, T.: Petruchio: from dynamic networks to nets. In: Touili, T., Cook, B., Jackson, P. (eds.) CAV 2010. LNCS, vol. 6174, pp. 175–179. Springer, Heidelberg (2010).  https://doi.org/10.1007/978-3-642-14295-6_19CrossRefGoogle Scholar
  16. 16.
    Milner, R. (ed.): A Calculus of Communicating Systems. LNCS, vol. 92. Springer, Heidelberg (1980).  https://doi.org/10.1007/3-540-10235-3CrossRefzbMATHGoogle Scholar
  17. 17.
    Milner, R.: Communicating and Mobile Systems - The Pi-calculus. Cambridge University Press, New York (1999)zbMATHGoogle Scholar

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  1. 1.Saarland UniversitySaarbrückenGermany
  2. 2.Saarbrücken Graduate School of Computer ScienceSaarbrückenGermany

Personalised recommendations