1. 概述
在本章中,我们将提供课程的大纲,以及简要的动机和主要的学习成果。
1.1. 课程信息
1.2. 动机
您想学习编程语言的原因有很多。举几个例子:
了解几个编程 paradigms 将帮助你以更好的方式思考更多的问题。
了解几个编程 languages 将帮助您以更好的方式实施您的解决方案。
主题是激动人心的,也是智力上的挑战。
越来越多的本地、全国和全球雇主喜欢它!
1.3. 主要学习成果
我们特意选择了本课程的学习结果,以补充您的计算机科学或软件工程课程中的其他课程。进入本课程后,您将已经熟悉命令式和面向对象的范例,这些范例来自Java、C++、C#或Python等语言。很可能,您还会熟悉使用C或C++的基本机器体系结构和内存管理。
在本课程中,我们将追求两个主要的学习成果和三个更具体的学习成果:
编程范型概述
对程序设计语言设计空间的理解
精通函数式编程
对程序表示和解释/执行的理解
具备并发编程的基本能力
鉴于从移动设备到企业服务器的多核硬件的广泛可用性,人们对利用这种硬件的编程范例和技术的兴趣与日俱增。函数式编程特别有用,它不强调可变状态,并结合适当的并发构造。我们还将通过研究如何表示程序以及解释、执行或以其他方式处理这些表示来“深入了解”。
1.4. 函数式编程的几个起点
您可能会发现以下资源对了解函数式编程思维很有用:
马丁·奥德斯基的演讲:有风格的Scala (YouTube)
就函数式编程和Haskell采访Simon Peyton-Jones (SE Radio audio podcast)
L、Thiruvathukal和Kayler的演讲:静态类型函数式编程的前景:更广泛的上下文和语言比较 (visual presentation)
待处理
在此合并视觉演示
1.5. 课程大纲
这里有一份更详细的课程大纲(视情况而定)。
业务和软件工程背景(1周)
软件要求
功能需求
非功能需求
发展过程
测试
重构
自动化
设计原则和模式
关注点分离
参数化性
SOLID
戈夫/波萨
命令式和面向对象编程(2周)
控制台应用程序
恒定空间复杂性
测井
领域建模
使用特征实现模块化和依赖项注入
函数式编程(4周)
定义代数数据类型
标量:枚举
次线性结构:数字,选项
线性结构:列表、地图
非线性结构:树
在代数数据类型上实现行为
模式匹配
递归
高阶函数
预定义类型及其行为
递归模式
更高级的类型
编程语言表示和解释/执行(4周)
语言设计空间
扫描仪(词法分析器)
解析器(语法分析器)
解释器和编译器
特定于领域的语言
并发和并行编程(3周)
并行集合
期货和承诺
进度报告和取消
异步编程/反应式扩展(Rx)
先进机制
显式线程
演员
软件事务存储器
任务并行库
函数式数据结构
1.6. 布鲁姆分类学
这些字母指的是从认知领域学习的连续水平 Bloom's taxonomy :
K:知道/记住这个术语
C:理解/理解概念
A:应用这项技术
分析/评估/创建(高级)
待处理
将开花级别映射到课程大纲