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.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

A Learning Path to Functional Programming (and What Students can see on the Path)

  • Lidia Gorodnyaya,
  • Dmitry Kondratyev,
  • Nikolay Shilov

摘要

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.