A second year course on data structures based on functional programming
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.
KeywordsHash Table Priority Queue Functional Programming Functional Language Abstract Data Type
Unable to display preview. Download preview PDF.
- 1.Harold Abelson and Gerald J. Sussman. Structure and Interpretation of Computer Programs. MIT Press, 1985.Google Scholar
- 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.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.R. Bird and P. Wadler. Introduction to Functional Programming. Prentice-Hall, 1988.Google Scholar
- 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.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.E. Horowitz and S. Sahni. Fundamentals of Data Structures in PASCAL. Computer Science Press, 4th. edition, 1994.Google Scholar
- 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.P. Hudak, S. Peyton-Jones, and P. Wadler. Report on the Functional Programming Language Haskell. SIGPLAN Notices, 27(5), 1992.Google Scholar
- 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.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.D. J. King. Functional binomial queues. In Proceedings of the Glasgow Workshop on Functional Programming, 1994.Google Scholar
- 13.D. J. King and H. Launchbury. Structuring depth-first search algorithms in Haskell. In Proceedings of POPL'95, 1995.Google Scholar
- 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.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.C. Okasaki. Simple and efficient purely functional queues and deques. Journal of Functional Programming, 1994. To appear.Google Scholar
- 17.R. Peña. Diseño de Programas: Formalismo y Abstracción. Prentice Hall, 1993. In Spanish.Google Scholar
- 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.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.D. D. Sleator and R. E. Tarjan. Self-adjusting heaps. SIAM Journal of Computing, 15(1):52–69, 1986.Google Scholar