《函数式编程原理》课程教学大纲一、课程名称:函数式编程原理二、课程性质:选修、专业方向课三、学时与学分:32学时,2学分四、课程先导课:计算机基础,计算思维导论,命令式程序设计原理五、课程简介“函数式编程原理”结合计算机技术发展趋势,以并行编程为导向,培养学生用不同思维模式和程序设计方法进行软件开发的能力,为学生从事程序设计研究与开发及利用并行计算能力进行高效软件设计和开发打下基础。通过ML语言为实例,讲授函数式程序设计的基本概念、原理和方法,常用函数的应用及函数程序的测试方法,重点讨论如何运用函数式语言解决实际问题,培养学生用不同程序设计方法进行软件开发的能力,促进学生的综合编程素质的提高,为学生从事程序设计研究与开发及充分利用并行计算能力进行高效软件设计和开发打下坚实的基础。六、课程目标通过相关教学活动,帮助学生掌握函数式编程的特点和方法,理解并行编程的思想,具备以下几方面的基本能力目标1:了解函数式程序设计的发展历史和作用,理解函数式程序设计与命令式程序设计的差异,掌握函数式程序设计思想、基本概念、原理和方法。目标2:以ML作为教学语言,掌握常用函数的应用及函数程序的测试方法,包括函数的基本使用、求值类型、程序的推理和证明,到串/并行程序的运行及效率分析等,并理解并行编程的思想、掌握并行程序的设计方法。目标3:从函数类型到多态、高阶函数和尾递归,通过一些实例和应用案例,介绍如何运用函数式语言解决实际问题,培养学生用不同程序设计方法进行软件开发的能力,促进学生的综合编程素质的提高。目标4:通过实验验收过程中的汇报和问答、撰写实验报告等活动,培养学生与专业有关的表达能力。七、课程目标对毕业要求的支撑关系:支撑的毕业要求二级指标点对应课程目标1.4能将软硬件知识、相关工程知识和模型方法用于计算机复杂工程目标1问题解决方案进行比较和综合
《函数式编程原理》课程教学大纲 一、课程名称:函数式编程原理 二、课程性质:选修、专业方向课 三、学时与学分:32 学时,2 学分 四、课程先导课:计算机基础,计算思维导论,命令式程序设计原理 五、课程简介 “函数式编程原理”结合计算机技术发展趋势,以并行编程为导向,培养学 生用不同思维模式和程序设计方法进行软件开发的能力,为学生从事程序设计研 究与开发及利用并行计算能力进行高效软件设计和开发打下基础。通过 ML 语言 为实例,讲授函数式程序设计的基本概念、原理和方法,常用函数的应用及函数 程序的测试方法,重点讨论如何运用函数式语言解决实际问题,培养学生用不同 程序设计方法进行软件开发的能力,促进学生的综合编程素质的提高,为学生从 事程序设计研究与开发及充分利用并行计算能力进行高效软件设计和开发打下 坚实的基础。 六、课程目标 通过相关教学活动,帮助学生掌握函数式编程的特点和方法,理解并行编程 的思想,具备以下几方面的基本能力: 目标 1:了解函数式程序设计的发展历史和作用,理解函数式程序设计与命 令式程序设计的差异,掌握函数式程序设计思想、基本概念、原理和方法。 目标 2:以 ML 作为教学语言,掌握常用函数的应用及函数程序的测试方法, 包括函数的基本使用、求值类型、程序的推理和证明,到串/并行程序的运行及 效率分析等,并理解并行编程的思想、掌握并行程序的设计方法。 目标 3:从函数类型到多态、高阶函数和尾递归,通过一些实例和应用案例, 介绍如何运用函数式语言解决实际问题,培养学生用不同程序设计方法进行软件 开发的能力,促进学生的综合编程素质的提高。 目标 4:通过实验验收过程中的汇报和问答、撰写实验报告等活动,培养学 生与专业有关的表达能力。 七、课程目标对毕业要求的支撑关系: 支撑的毕业要求二级指标点 对应课程目标 1.4 能将软硬件知识、相关工程知识和模型方法用于计算机复杂工程 问题解决方案进行比较和综合 目标 1
2.1能综合运用数学、自然科学、工程科学以及计算机科学的基本原目标2理,识别、判断和表达计算机复杂工程问题的关键环节3.2能为计算机复杂工程问题解决方案设计满足特定需求的软/硬件目标3模块10.1能就专业问题,以口头、文稿、图表等方式,准确表达自已的观点,回应质疑,理解与同行和社会公众等不同对象及不同方式交流目标4的差异性八、教学设计及对课程目标的支持第一章概论(1)知识点①函数式程序设计的特点StandardML的演化③函数式语言的元素④名字、函数和声明③自动定理证明(2)教学要求了解命令式编程和函数式编程的差异,了解函数式程序设计的数学理论基础和演化过程,掌握基本的函数式程序设计程序语言类型和编写方法。(3)重点和难点①如何认识函数式程序设计②函数式程序设计的形成与发展③函数式程序设计的特点第二章ML编程基础(1)知识点①ML的基本类型和表达式②声明的概念、作用域及使用③模式和模式匹配ML程序正确性验证和执行性能分析(2)教学要求掌握ML语言的基本类型和表达式,了解声明的概念、作用域及使用,掌握模式和模式匹配,掌握程序分析方法。(3)重点和难点①关于表结构的重要函数:length,::,@和rev的理解②递归的数据类型声明可以定义树,二叉树可以表示多种数据结构
2.1 能综合运用数学、自然科学、工程科学以及计算机科学的基本原 理,识别、判断和表达计算机复杂工程问题的关键环节 目标 2 3.2 能为计算机复杂工程问题解决方案设计满足特定需求的软/硬件 模块 目标 3 10.1 能就专业问题,以口头、文稿、图表等方式,准确表达自己的 观点,回应质疑,理解与同行和社会公众等不同对象及不同方式交流 的差异性 目标 4 八、教学设计及对课程目标的支持 第一章 概论 (1) 知识点 函数式程序设计的特点 Standard ML 的演化 函数式语言的元素 ④名字、函数和声明 ⑤自动定理证明 (2) 教学要求 了解命令式编程和函数式编程的差异,了解函数式程序设计的数学理论基础 和演化过程,掌握基本的函数式程序设计程序语言类型和编写方法。 (3) 重点和难点 如何认识函数式程序设计 函数式程序设计的形成与发展 函数式程序设计的特点 第二章 ML 编程基础 (1) 知识点 ML 的基本类型和表达式 声明的概念、作用域及使用 模式和模式匹配 ④ ML 程序正确性验证和执行性能分析 (2) 教学要求 掌握 ML 语言的基本类型和表达式,了解声明的概念、作用域及使用,掌握 模式和模式匹配,掌握程序分析方法。 (3) 重点和难点 关于表结构的重要函数:length,::,@和 rev 的理解 递归的数据类型声明可以定义树,二叉树可以表示多种数据结构
③用数学归纳法重现ML程序的执行逻辑,判断或证明代码的正确性④以数学归纳法的推导过程为基础分析程序的执行性能第三章ML编程进阶及扩展(1)知识点①基于表结构和树结构的排序算法设计及分析②多态类型,类型检测与推导作为值的函数④高阶函数与柯里化(2)教学要求通过对表和树两种数据结构的分析和算法的分析,掌握函数式程序的分析方法,以及如何对数据类型的调整将串行程序改造为并行程序,并分析其并行性。介绍多态性的原理,包括类型推导和多态函数,以及如何把函数作为数据的基本程序设计技术。(3)重点和难点①不同结构的排序算法设计与分析②任何有两个参数的函数都可以表达成只有一个参数的“柯里”函数③高阶函数封装了通用的计算形式,减少了单独的函数声明第四章ML编程实践知识点①通过val,as,case等进行模式匹配②异常处理(2)教学要求通过实际案例的程序设计了解高阶函数和柯里化的应用,掌握用柯里化思路进行程序开发的思路和方法,同时对异常处理的使用有一定了解和认识。(3)重点和难点①模式有构造子和变量构成,模式匹配可以表达逻辑公式的变换②异常是响应运行时错误的一般机制,异常的声明和抛出课程实验实验一基本编程与递归调用1、实验内容ML基本编程,以及用递归实现斐波那契等算法。2、实验类型综合性、设计型实验
用数学归纳法重现 ML 程序的执行逻辑,判断或证明代码的正确性 ④ 以数学归纳法的推导过程为基础分析程序的执行性能 第三章 ML 编程进阶及扩展 (1) 知识点 基于表结构和树结构的排序算法设计及分析 多态类型,类型检测与推导 作为值的函数 ④ 高阶函数与柯里化 (2) 教学要求 通过对表和树两种数据结构的分析和算法的分析,掌握函数式程序的分析方 法,以及如何对数据类型的调整将串行程序改造为并行程序,并分析其并行性。 介绍多态性的原理,包括类型推导和多态函数,以及如何把函数作为数据的 基本程序设计技术。 (3) 重点和难点 不同结构的排序算法设计与分析 任何有两个参数的函数都可以表达成只有一个参数的“柯里”函数 高阶函数封装了通用的计算形式,减少了单独的函数声明 第四章 ML 编程实践 知识点 通过 val,as,case 等进行模式匹配 异常处理 (2) 教学要求 通过实际案例的程序设计了解高阶函数和柯里化的应用,掌握用柯里化思路 进行程序开发的思路和方法,同时对异常处理的使用有一定了解和认识。 (3) 重点和难点 模式有构造子和变量构成,模式匹配可以表达逻辑公式的变换 异常是响应运行时错误的一般机制,异常的声明和抛出 课程实验 实验一 基本编程与递归调用 1、实验内容 ML 基本编程,以及用递归实现斐波那契等算法。 2、实验类型 综合性、设计型实验
3、实验的目的和要求(1)掌握ML编程的基本语法及使用方法:(2)学会用fun,case,if等编写ML程序;(3)掌握递归函数的书写和函数的应用。4、实验形式课外准备、课内4学时单独完成。5、实验考核现场验收并对实验内容进行提问,根据设计方案、实验结果、作熟练程度、现场检查和回答情况及实验报告质量等内容综合评定成绩。实验二表和树结构的ML实验1、实验内容利用表结构和书结构分别撰写不同的数据重组或解析程序。2、实验类型综合性、设计型实验3、实验的目的和要求(1)掌握多态函数实际应用;(2)掌握程序性能分析方法。4、实验形式课外准备、课内4学时单独完成。5、实验考核现场验收并对实验内容进行提问,根据设计方案、实验结果、作熟练程度、现场检查和回答情况及实验报告质量等内容综合评定成绩。实验三高阶函数编程1、实验内容应用所学知识用高阶函数编写程序。2、实验类型综合性、设计型实验3、实验的目的和要求(1)了解多态和高阶的特点;(2)掌握高阶函数的编写方法。4、实验形式课外准备、课内4学时单独完成。5、实验考核
3、实验的目的和要求 ⑴掌握 ML 编程的基本语法及使用方法; ⑵学会用 fun,case,if 等编写 ML 程序; ⑶掌握递归函数的书写和函数的应用。 4、实验形式 课外准备、课内 4 学时单独完成。 5、实验考核 现场验收并对实验内容进行提问,根据设计方案、实验结果、作熟练程度、 现场检查和回答情况及实验报告质量等内容综合评定成绩。 实验二 表和树结构的 ML 实验 1、实验内容 利用表结构和书结构分别撰写不同的数据重组或解析程序。 2、实验类型 综合性、设计型实验 3、实验的目的和要求 ⑴掌握多态函数实际应用; ⑵掌握程序性能分析方法。 4、实验形式 课外准备、课内 4 学时单独完成。 5、实验考核 现场验收并对实验内容进行提问,根据设计方案、实验结果、作熟练程度、 现场检查和回答情况及实验报告质量等内容综合评定成绩。 实验三 高阶函数编程 1、实验内容 应用所学知识用高阶函数编写程序。 2、实验类型 综合性、设计型实验 3、实验的目的和要求 ⑴了解多态和高阶的特点; ⑵掌握高阶函数的编写方法。 4、实验形式 课外准备、课内 4 学时单独完成。 5、实验考核
现场验收并对实验内容进行提问,根据设计方案、实验结果、作熟练程度、现场检查和回答情况及实验报告质量等内容综合评定成绩。实验四综合实践1、实验内容针对实际需求应用所学知识编写程序。2、实验类型综合性、设计型实验3、实验的目的和要求(1)掌握分析问题、解决问题的方法和思路:(2)编程实现数据分析功能。4、实验形式课外准备、课内4学时单独完成。5、实验考核现场验收并对实验内容进行提问,根据设计方案、实验结果、作熟练程度、现场检查和回答情况及实验报告质量等内容综合评定成绩。九、教与学1.教学方法函数式编程语言课程主要的教学环节包括课堂授课、课后作业、课程论文、课堂测验等环节。以ML编程语言为例,理论教学和动手实践相结合开展教学工作:1)采用PBL(基于问题)教学方法进行理论知识教学。在实际案例的分析中融入对基本理论知识的讲解,引导学生积极、深入思考,加深对所学重、难点知识的理解和应用。2)强调动手实践。实施课内和课外相结合的学习方式,配备足量的课程实验环节巩固所学知识,加深对理论知识的理解,提升学生应用理论知识解决复杂问题的能力。2.学习方法“函数式编程原理”是一门理论性、实践性都很强的专业选修课程,要学好这门课程,必须做到以下几点。(1)深入理解教学内容学习过程中,不能只放在语言语法知识点的学习上,要了解串/并行程序设计的不同点,了解并行计算的思想,将并行计算的思想融入到课程的知识点以中。(2)独立完成练习题
现场验收并对实验内容进行提问,根据设计方案、实验结果、作熟练程度、 现场检查和回答情况及实验报告质量等内容综合评定成绩。 实验四 综合实践 1、实验内容 针对实际需求应用所学知识编写程序。 2、实验类型 综合性、设计型实验 3、实验的目的和要求 ⑴掌握分析问题、解决问题的方法和思路; ⑵编程实现数据分析功能。 4、实验形式 课外准备、课内 4 学时单独完成。 5、实验考核 现场验收并对实验内容进行提问,根据设计方案、实验结果、作熟练程度、 现场检查和回答情况及实验报告质量等内容综合评定成绩。 九、教与学 1. 教学方法 函数式编程语言课程主要的教学环节包括课堂授课、课后作业、课程论文、 课堂测验等环节。以 ML 编程语言为例,理论教学和动手实践相结合开展教学工 作: 1)采用 PBL(基于问题)教学方法进行理论知识教学。在实际案例的分析 中融入对基本理论知识的讲解,引导学生积极、深入思考,加深对所学重、难点 知识的理解和应用。 2)强调动手实践。实施课内和课外相结合的学习方式,配备足量的课程实 验环节巩固所学知识,加深对理论知识的理解,提升学生应用理论知识解决复杂 问题的能力。 2. 学习方法 “函数式编程原理”是一门理论性、实践性都很强的专业选修课程,要学好这 门课程,必须做到以下几点。 (1) 深入理解教学内容 学习过程中,不能只放在语言语法知识点的学习上,要了解串/并行程序设 计的不同点,了解并行计算的思想,将并行计算的思想融入到课程的知识点以中。 (2) 独立完成练习题