|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/scala-functional-programming
课程评论:没有评论
课程名称:Scala中的函数式编程原则 课程概述:函数式编程在业内越来越普及,这一趋势主要得益于Scala作为许多应用程序的主要编程语言的采用。Scala将函数式编程与面向对象编程融合于一个实用的框架中,并与Java和JavaScript无缝互操作。Scala是多个重要框架的实现语言,包括Apache Spark、Kafka和Akka,为Twitter、Netflix、Zalando和Coursera等网站提供核心基础设施。在本课程中,您将发现函数式编程风格的要素,并学习如何在日常编程任务中有效应用这些要素,例如建模商业领域或实现业务逻辑。同时,您还将通过涉及不变量证明和符号执行跟踪,培养推理函数式程序的坚实基础。 本课程采用实践为主的形式;大多数单元引入简短的示例程序,以说明重要概念,并邀请您进行修改和改进。此外,课程还包括一系列编程项目作为家庭作业。 推荐背景:您应具备至少一年的编程经验。精通Java或C#尤佳,但使用其他语言(如C/C++、Python、JavaScript或Ruby)的经验也足够。您应对命令行操作有一定的熟悉度。 课程大纲: 1. **入门 + 函数与求值**:在您的计算机上安装Scala并开始,完成示例作业以熟悉我们提交作业的独特方式。这一周,我们将学习函数式编程与命令式编程之间的区别。我们将逐步介绍Scala的基础知识,包括表达式、求值、条件语句、函数和递归。 2. **高阶函数**:我们将学习函数作为一等值和高阶函数。同时,还将学习Scala的语法和形式定义,以及通过设计有理数的数据结构来了解方法、类和数据抽象。 3. **数据与抽象**:本周将覆盖traits,并学习如何将类组织成层次结构。我们将了解Scala标准类型的层次结构,并学习如何将类和traits组织到包中。最后,我们将触及Scala中的多态性不同类型。 4. **类型与模式匹配**:本周我们将研究函数与对象之间的关系;函数本身就是对象!我们将详细介绍Scala的类型系统,包括子类型和泛型,后续还将深入Scala类型系统的高级特性,如方差。最后,我们将学习Scala最广泛使用的数据结构——列表,以及Scala强大的工具之一——模式匹配。 5. **列表**:本周我们将深入了解列表,这是Scala中最常用的数据结构。 6. **集合**:在对列表进行详细探讨后,本周我们将探索其他数据结构;如向量、映射、范围、数组等。我们将深入了解Scala强大而灵活的for-comprehensions用于查询数据。
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, Netflix, Zalando, 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 of programming projects as homework assignments. Recommended background: You should have at least one year of 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.