A second year course on data structures based on functional programming

  • Manuel Núñez
  • Pedro Palao
  • Ricardo Peña
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1022)


In this paper, we make a proposal for a second year course on advanced programming, based on the functional paradigm. It assumes the existence of a first course on programming, also based on functional languages. Its main subject is data structures.

We claim that advanced data structures and algorithms can be better taught at the functional paradigm than at the imperative one, and that this can be done without losing efficiency. We also claim that, as a consequence of the higher level of abstraction of functional languages, more subjects can be covered in the given amount of time.

In the paper, numerous examples of unusual data structures and algorithms are presented illustrating the contents and the philosophy of the proposed course.


Hash Table Priority Queue Functional Programming Functional Language Abstract Data Type 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Harold Abelson and Gerald J. Sussman. Structure and Interpretation of Computer Programs. MIT Press, 1985.Google Scholar
  2. 2.
    E. Astesiano and M. Cerioli. On the existence of initial models for partial (higher order) conditional specifications. In Proceedings of TAPSOFT'89. LNCS 351, 1989.Google Scholar
  3. 3.
    E. Barendsen and J.E.W. Smetsers. Conventional and uniqueness typing in graph rewrite systems. In Proceedings of the 13th FST & TCS. LNCS 761, 1993.Google Scholar
  4. 4.
    R. Bird and P. Wadler. Introduction to Functional Programming. Prentice-Hall, 1988.Google Scholar
  5. 5.
    L. A. Galán, M. Núñez, C. Pareja, and R. Peña. Non homomorphic reductions of data structures. GULP-PRODE, 2:393–407, 1994.Google Scholar
  6. 6.
    R. R. Hoogerwood. A logarithmic implementation of flexible arrays. In Proceedings of the 2th Conference on the Mathematics of Program Construction. LNCS 699, 1992.Google Scholar
  7. 7.
    E. Horowitz and S. Sahni. Fundamentals of Data Structures in PASCAL. Computer Science Press, 4th. edition, 1994.Google Scholar
  8. 8.
    P. Hudak. Mutable abstract datatypes or How to have your state and munge it too. Technical Report YALEU/DCS/RR-914, Yale University, 1993.Google Scholar
  9. 9.
    P. Hudak, S. Peyton-Jones, and P. Wadler. Report on the Functional Programming Language Haskell. SIGPLAN Notices, 27(5), 1992.Google Scholar
  10. 10.
    J. Hughes. Why Functional Programming Matters, pages 17–43. Research Topics in Functional Programming. (Ed.) D. A. Turner. Addison-Wesley, 1990.Google Scholar
  11. 11.
    S. Joosten, K. van den Berg, and G. van der Hoeven. Teaching functional programming to first-year students. Journal of Functional Programming, 3:49–65, 1993.Google Scholar
  12. 12.
    D. J. King. Functional binomial queues. In Proceedings of the Glasgow Workshop on Functional Programming, 1994.Google Scholar
  13. 13.
    D. J. King and H. Launchbury. Structuring depth-first search algorithms in Haskell. In Proceedings of POPL'95, 1995.Google Scholar
  14. 14.
    T. Lambert, P. Lindsay, and K. Robinson. Using Miranda as a first programming language. Journal of Functional Programming, 3:5–34, 1993.Google Scholar
  15. 15.
    J. Launchbury and S. L. Peyton Jones. Lazy functional state threads. In Proceedings of the ACM Conference on Programming Languages Design and Implementation, 1994.Google Scholar
  16. 16.
    C. Okasaki. Simple and efficient purely functional queues and deques. Journal of Functional Programming, 1994. To appear.Google Scholar
  17. 17.
    R. Peña. Diseño de Programas: Formalismo y Abstracción. Prentice Hall, 1993. In Spanish.Google Scholar
  18. 18.
    C. M. P. Reade. Balanced trees with removals: an exercise in rewriting and proof. Science of Computer Programming, 18:181–204, 1992.Google Scholar
  19. 19.
    D. Sands. A Naïve Time Analysis and its Theory of Cost Equivalence. The Journal of Logic and Computation, 1994. To appear.Google Scholar
  20. 20.
    D. D. Sleator and R. E. Tarjan. Self-adjusting heaps. SIAM Journal of Computing, 15(1):52–69, 1986.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Manuel Núñez
    • 1
  • Pedro Palao
    • 1
  • Ricardo Peña
    • 1
  1. 1.Dept. de Informática y AutomáticaUniversidad Complutense de MadridSpain

Personalised recommendations