A Learning Path to Functional Programming (and What Students can see on the Path)
摘要
The paper presents and discusses our experience of teaching functional programming which has evolved during many years of teaching at different departments of Novosibirsk State University. We suggest students to learn, comprehend, and master the functional programming issues and topics via solving research problems of applied mathematics and system programming. In our approach students use functional methodology at different stages of the program life-cycle, especially for problem analysis and high-level design of variants of its solution. We stress some special issues such as implicit functional parallelism and functional modeling in problem solving. Students become acquainted with main parallel constructs experimenting with map and reduce, use and elimination of tail and linear recursion, selection and iteration spaces (from the Sisal programming language), cloud programming (using a cloud programming system for Sisal). We also introduce the basics of program deductive verification for recursive as well as iterative programs.