Abstract
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.
In the next page, a short description of the course is given.
Preview
Unable to display preview. Download preview PDF.
References
Harold Abelson and Gerald J. Sussman. Structure and Interpretation of Computer Programs. MIT Press, 1985.
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.
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.
R. Bird and P. Wadler. Introduction to Functional Programming. Prentice-Hall, 1988.
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.
R. R. Hoogerwood. A logarithmic implementation of flexible arrays. In Proceedings of the 2th Conference on the Mathematics of Program Construction. LNCS 699, 1992.
E. Horowitz and S. Sahni. Fundamentals of Data Structures in PASCAL. Computer Science Press, 4th. edition, 1994.
P. Hudak. Mutable abstract datatypes or How to have your state and munge it too. Technical Report YALEU/DCS/RR-914, Yale University, 1993.
P. Hudak, S. Peyton-Jones, and P. Wadler. Report on the Functional Programming Language Haskell. SIGPLAN Notices, 27(5), 1992.
J. Hughes. Why Functional Programming Matters, pages 17–43. Research Topics in Functional Programming. (Ed.) D. A. Turner. Addison-Wesley, 1990.
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.
D. J. King. Functional binomial queues. In Proceedings of the Glasgow Workshop on Functional Programming, 1994.
D. J. King and H. Launchbury. Structuring depth-first search algorithms in Haskell. In Proceedings of POPL'95, 1995.
T. Lambert, P. Lindsay, and K. Robinson. Using Miranda as a first programming language. Journal of Functional Programming, 3:5–34, 1993.
J. Launchbury and S. L. Peyton Jones. Lazy functional state threads. In Proceedings of the ACM Conference on Programming Languages Design and Implementation, 1994.
C. Okasaki. Simple and efficient purely functional queues and deques. Journal of Functional Programming, 1994. To appear.
R. Peña. Diseño de Programas: Formalismo y Abstracción. Prentice Hall, 1993. In Spanish.
C. M. P. Reade. Balanced trees with removals: an exercise in rewriting and proof. Science of Computer Programming, 18:181–204, 1992.
D. Sands. A Naïve Time Analysis and its Theory of Cost Equivalence. The Journal of Logic and Computation, 1994. To appear.
D. D. Sleator and R. E. Tarjan. Self-adjusting heaps. SIAM Journal of Computing, 15(1):52–69, 1986.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1995 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Núñez, M., Palao, P., Peña, R. (1995). A second year course on data structures based on functional programming. In: Hartel, P.H., Plasmeijer, R. (eds) Funtional Programming Languages in Education. FPLE 1995. Lecture Notes in Computer Science, vol 1022. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-60675-0_39
Download citation
DOI: https://doi.org/10.1007/3-540-60675-0_39
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-60675-8
Online ISBN: 978-3-540-49252-8
eBook Packages: Springer Book Archive