|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/scala2-functional-programming
课程评论:没有评论
课程名称:Scala中的函数式编程原理(Scala 2版本) 课程概述:函数式编程在工业界日益普及,这主要得益于Scala作为众多应用程序的主要编程语言的广泛采用。Scala将函数式编程与面向对象编程结合,提供了一个实用的开发环境,并能够与Java和JavaScript无缝互操作。Scala是许多重要框架的实现语言,包括Apache Spark、Kafka和Akka,为Twitter、Tumblr等网站提供核心基础设施。本课程将帮助你掌握函数式编程风格的基本要素,并学习如何在日常编程任务中有效应用,如建模业务领域或实现业务逻辑。此外,课程还将为你提供扎实的基础,以便对函数式程序进行推理,包括不变量的证明和符号执行的跟踪。 课程采用实践方式,绝大部分单元将通过简短程序介绍重要概念,并邀请学员对这些程序进行修改和改进。课程还配有一系列编程项目作为家庭作业。 推荐背景:学员需具备至少一年的编程经验。熟悉Java或C#者最佳,但也可接受具备C/C++、Python、JavaScript或Ruby等语言经验的学员。同时,学员应对命令行有一定了解。 课程大纲: 1. **入门与函数与评估** - 安装Scala并完成示例作业,了解功能与命令式编程的区别,涵盖Scala基础,包括表达式、评估、条件语句、函数和递归。 2. **高阶函数** - 学习函数作为一类一等值和高阶函数,了解Scala语法及其正式定义,学习方法、类及通过设计有理数的数据结构实现数据抽象。 3. **数据与抽象** - 学习特征,组织类的层次结构,涵盖Scala标准类型的层次结构,并讨论Scala中的多态性不同类型。 4. **类型与模式匹配** - 理解Scala中函数与对象的关系; Scala的类型系统,包括子类型与泛型,以及变差等高级话题,学习Scala最常用的数据结构——列表,及其强大的模式匹配工具。 5. **列表** - 深入学习列表,这一Scala中最常用的数据结构。 6. **集合** - 在深入研究列表后,探讨其他数据结构,如向量、映射、范围、数组等,深入了解Scala强大而灵活的for-comprehensions进行数据查询的能力。 这个课程将带领您全面了解Scala中的函数式编程理念,并为在现代编程环境中的应用打下坚实基础。
Name:Getting Started + Functions & Evaluation
Description:Get up and running with Scala on your computer. Complete an example assignment to familiarize yourself with our unique way of submitting assignments. In this week, we'll learn the difference between functional imperative programming. We step through the basics of Scala; covering expressions, evaluation, conditionals, functions, and recursion
Name:Higher Order Functions
Description:This week, we'll learn about functions as first-class values, and higher order functions. We'll also learn about Scala's syntax and how it's formally defined. Finally, we'll learn about methods, classes, and data abstraction through the design of a data structure for rational numbers.
Name:Data and Abstraction
Description:This week, we'll cover traits, and we'll learn how to organize classes into hierarchies. We'll cover the hierarchy of standard Scala types, and see how to organize classes and traits into packages. Finally, we'll touch upon the different sorts of polymorphism in Scala.
Name:Types and Pattern Matching
Description:This week we'll learn about the relationship between functions and objects in Scala; functions *are* objects! We'll zoom in on Scala's type system, covering subtyping and generics, and moving on to more advanced aspects of Scala's type system like variance. Finally, we'll cover Scala's most widely used data structure, Lists, and one of Scala's most powerful tools, pattern matching.
Name:Lists
Description:This week we dive into Lists, the most commonly-used data structure in Scala.
Name:Collections
Description:After a deep-dive into Lists, this week we'll explore other data structures; vectors, maps, ranges, arrays, and more. We'll dive into Scala's powerful and flexible for-comprehensions for querying data.
Functional programming is becoming increasingly widespread in industry. This trend is driven by the adoption of Scala as the main programming language for many applications. Scala fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with both Java and Javascript. Scala is the implementation language of many important frameworks, including Apache Spark, Kafka, and Akka. It provides the core infrastructure for sites such as Twitter, Tumblr and also Coursera. In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks, such as modeling business domains or implementing business logic. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically. The course is hands on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. The course is complemented by a series programming projects as homework assignments. Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity using the command line.