Skip to main content

Teaching How to Derive Correct Concurrent Programs from State-Based Specifications and Code Patterns

  • Conference paper
Teaching Formal Methods (TFM 2004)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 3294))

Included in the following conference series:

Abstract

The fun of teaching and learning concurrent programming is sometimes darkened by the difficulty in getting concurrent programs to work right. In line with other programming subjects in our department, we advocate the use of formal specifications to state clearly how a concurrent program must behave, to reason about this behavior, and to be able to produce code from specifications in a semi-automatic fashion. We argue that a mild form of specification not only makes it possible to get programs running easier, but it also introduces students to a quite systematic way of approaching programming: reading and understanding specifications is seen as an unavoidable step in the programming process, as they are really the only place where the expected conduct of the system is described. By using formal techniques in these cases, where they are undoubtedly appropriate, we introduce formality without the need to resort to justifications with artificial or overly complicated examples.

This research was partly supported by the Spanish MCYT project TIC2002-0055 and by EU projects FET IST-2001-33123 and FET IST-2001-38059.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Andrews, G.R., Schneider, F.B.: Concepts and notations for concurrent programming. In: Gehani, N., McGettrick, A.D. (eds.) Concurrent Programming, Addison-Wesley, Reading (1989)

    Google Scholar 

  2. Andrews, G.: Concurrent Programming: Principles and Practice. Benjamin/Cummings (1991)

    Google Scholar 

  3. Bruynooghe, M., Lau, K.-K. (eds.): Program Development in Computational Logic. LNCS, vol. 3049. Springer, Heidelberg (2004)

    MATH  Google Scholar 

  4. Burns, A., Wellings, A.: Concurrency in Ada. Cambridge University Press, Cambridge (1998)

    Google Scholar 

  5. Cohen, N.H.: Ada as a Second Language. McGraw-Hill, New York (1995)

    Google Scholar 

  6. Hanus, M., Kuchen, H., Moreno-Navarro, J.J., et al.: Curry: An integrated functional logic language. Technical report, RWTH Aachen (2000)

    Google Scholar 

  7. Feldman, M.B., Bachus, B.D.: Concurrent programming can be introduced into the lower-level undergraduate curriculum. In: Proceedings of the 2nd conference on Integrating technology into computer science education, pp. 77–79. ACM Press, New York (1997)

    Chapter  Google Scholar 

  8. Gehani, N.H.: Capsules: a shared memory access mechanism for Concurrent C/C++. IEEE Transactions on Parallel and Distributed Systems 4(7), 795–811 (1993)

    Article  Google Scholar 

  9. Hermenegildo, M., Bueno, F., Cabeza, D., Carro, M., García de la Banda, M., López García, P., Puebla, G.: The Ciao Multi-Dialect Compiler and System: An Experimentation Workbench for Future (C)LP Systems. In: Parallelism and Implementation of Logic and Constraint Logic Programming, April 1999, pp. 65–85. Nova Science, Commack (1999)

    Google Scholar 

  10. Herranz, A., Moreno, J.J.: On the design of an object-oriented formal notation. In: Fourth Workshop on Rigorous Object Oriented Methods, ROOM 4, March 2002, King’s College, London (2002)

    Google Scholar 

  11. William Higginbotham, C., Morelli, R.: A system for teaching concurrent programming. In: Proceedings of the twenty-second SIGCSE technical symposium on Computer science education, pp. 309–316. ACM Press, New York (1991)

    Chapter  Google Scholar 

  12. Hoare, C.A.R.: Monitors, an operating system structuring concept. Communications of the ACM 17(10), 549–557 (1974)

    Article  MATH  Google Scholar 

  13. Jackson, D.: A Mini-Course on Concurrency. In: Twenty-second SIGCSE Technical Symposium on Computer Science Education, pp. 92–96. ACM Press, New York (1991)

    Chapter  Google Scholar 

  14. Jones, C.B.: Systematic Software Development Using VDM. Prentice-Hall, Upper Saddle River (1995)

    Google Scholar 

  15. Morales-Fernandez, R., Moreno-Navarro, J.J.: CC-Modula: A Modula-2 Tool to Teach Concurrent Programming. ACM SIGCSE Bulletin 21, 19–25 (1989)

    Article  Google Scholar 

  16. The Joint Task Force on Computing Curricula IEEE-CS/ACM. Computing Curricula (2001), http://www.computer.org/education/cc2001/

  17. Persky, Y., Ben-Ari, M.: Re-engineering a concurrency simulator. In: Proceedings of the 6th annual conference on the teaching of computing and the 3rd annual conference on Integrating technology into computer science education, pp. 185–188. ACM Press, New York (1998)

    Google Scholar 

  18. Robbins, S.: Using remote logging for teaching concurrency. In: Procs. of the 34th SIGCSE Technical Symposium on Comp. Sci. Education, pp. 177–181. ACM Press, New York (2003)

    Chapter  Google Scholar 

  19. Taft, T.S., Duff, R.A., Brukardt, R.L., Ploedereder, E. (eds.): Consolidated Ada Reference Manual. Language and Standard Libraries International Standard ISO/IEC 8652/1995(E) with Technical Corrigendum 1. Springer, Heidelberg (2001)

    MATH  Google Scholar 

  20. van Lamsweerde, A.: Formal Specification: a Roadmap. In: Finkelstein, A. (ed.) The Future of Software Engineering, pp. 147–159. ACM Press, New York (2000)

    Google Scholar 

  21. Yeager, D.P.: Teaching concurrency in the programming languages course. In: Proceedings of the twenty-second SIGCSE technical symposium on Computer science education, pp. 155–161. ACM Press, New York (1991)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2004 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Carro, M., Mariño, J., Herranz, Á., Moreno-Navarro, J.J. (2004). Teaching How to Derive Correct Concurrent Programs from State-Based Specifications and Code Patterns. In: Dean, C.N., Boute, R.T. (eds) Teaching Formal Methods. TFM 2004. Lecture Notes in Computer Science, vol 3294. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-30472-2_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-30472-2_6

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-23611-5

  • Online ISBN: 978-3-540-30472-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics