Functional Programming in Scala Specialization

Start Date: 07/05/2020

Course Type: Specialization Course

Course Link: https://www.coursera.org/specializations/scala

Explore 1600+ online courses from top universities. Join Coursera today to learn data science, programming, business strategy, and more.

About Course

Discover how to write elegant code that works the first time it is run. This Specialization provides a hands-on introduction to functional programming using the widespread programming language, Scala. It begins from the basic building blocks of the functional paradigm, first showing how to use these blocks to solve small problems, before building up to combining these concepts to architect larger functional programs. You'll see how the functional paradigm facilitates parallel and distributed programming, and through a series of hands on examples and programming assignments, you'll learn how to analyze data sets small to large; from parallel programming on multicore architectures, to distributed programming on a cluster using Apache Spark. A final capstone project will allow you to apply the skills you learned by building a large data-intensive application using real-world data.

Course Syllabus

Functional Programming Principles in Scala
Functional Program Design in Scala
Parallel programming
Big Data Analysis with Scala and Spark

Deep Learning Specialization on Coursera

Course Introduction

Program on a Higher Level. Write elegant functional code to analyze data that's big or small Functional Programming in Scala Specialization This course is a continuation of the course "Functional programming in Scala", which is the second half of a two-part specialization. In this specialization, we will introduce a number of new functional concepts and techniques, including: Synthesis recursion (partial application of functions, recursion via foldr and recursion via foldl) Recursion via foldl, depth-first and depth-last evaluation Parentheses, anonymous functions, and function composition Higher-order functions, and lambda expressions And much, much more! This course is intended for advanced learners who are looking to enhance their skills in functional programming by adding new functional paradigms and techniques; for those learners, it will be the beginning of a journey towards learning more advanced functional programming techniques. Note: This is not a beginner's course, so if you are used to working with more structured programming approaches like C++ or Java, you may find some of the concepts and techniques introduced in this course may seem very familiar. If you are new to procedural programming, this course may seem very heady and exciting.On the other hand, if you are used to working with more declarative programming techniques like Haskell, you may find this course slightly overwhelming.Procedural programming by recursion Synthesis recursion (partial application of functions, recursion via foldr and recursion via foldl) Recursion via foldl, depth-first and depth-

Course Tag

Scala Programming Parallel Computing Apache Spark Functional Programming

Related Wiki Topic

Article Example
Functional programming Other functional programming languages that have seen use in industry include Scala, F#, (both being functional-OO hybrids with support for both purely functional and imperative programming) Wolfram Language, Lisp, Standard ML and Clojure.
Functional programming Programming in a functional style can also be accomplished in languages that are not specifically designed for functional programming. For example, the imperative Perl programming language has been the subject of a book describing how to apply functional programming concepts. This is also true of the PHP programming language. C++11, Java 8, and C# 3.0 all added constructs to facilitate the functional style. The Julia language also offers functional programming abilities. An interesting case is that of Scala – it is frequently written in a functional style, but the presence of side effects and mutable state place it in a grey area between imperative and functional languages.
Functional specialization (brain) Functional specialization suggests that different areas in the brain are specialized for different functions.
Scala (programming language) While supporting all of the object-oriented features available in Java (and in fact, augmenting them in various ways), Scala also provides a large number of capabilities that are normally found only in functional programming languages. Together, these features allow Scala programs to be written in an almost completely functional style, and also allow functional and object-oriented styles to be mixed.
Scala (programming language) Regarding programming paradigms, Scala inherits the object-oriented model of Java and extends it in various ways. Groovy, while also strongly object-oriented, is more focused in reducing verbosity. In Clojure, object-oriented programming is deemphasised with functional programming being the main strength of the language. Scala also has many functional programming facilities, including features found in advanced functional languages like Haskell, and tries to be agnostic between the two paradigms, letting the developer choose between the two paradigms or, more frequently, some combination thereof.
Functional programming Functional programming is very different from imperative programming. The most significant differences stem from the fact that functional programming avoids side effects, which are used in imperative programming to implement state and I/O. Pure functional programming completely prevents side-effects and provides referential transparency.
Functional programming Functional programming languages have largely been emphasized in academia rather than in commercial software development. However, prominent programming languages which support functional programming such as Common Lisp, Scheme, Clojure, Wolfram Language (also known as Mathematica), Racket, Erlang, OCaml, Haskell, and F# have been used in industrial and commercial applications by a wide variety of organizations. Functional programming is also supported in some domain-specific programming languages like R (statistics), J, K and Q from Kx Systems (financial analysis), XQuery/XSLT (XML), and Opal. Widespread domain-specific declarative languages like SQL and Lex/Yacc use some elements of functional programming, especially in eschewing mutable values.
Functional programming John Backus presented FP in his 1977 Turing Award lecture "Can Programming Be Liberated From the von Neumann Style? A Functional Style and its Algebra of Programs". He defines functional programs as being built up in a hierarchical way by means of "combining forms" that allow an "algebra of programs"; in modern language, this means that functional programs follow the principle of compositionality. Backus's paper popularized research into functional programming, though it emphasized function-level programming rather than the lambda-calculus style which has come to be associated with functional programming.
Functional programming Functional programming has its origins in lambda calculus, a formal system developed in the 1930s to investigate computability, the Entscheidungsproblem, function definition, function application, and recursion. Many functional programming languages can be viewed as elaborations on the lambda calculus. Another well-known declarative programming paradigm, "logic programming", is based on relations.
Functional logic programming Functional logic programming is the combination, in a single programming language, of the paradigms of functional programming (including higher-order programming) and logic programming (Nondeterministic programming, unification). This style of programming is embodied by various , including Curry and Mercury.
Scala (programming language) Scala ( ) is a general-purpose programming language providing support for functional programming and a strong static type system. Designed to be concise, many of Scala's design decisions were designed to build from criticisms of Java.
Functional programming Similarly, the idea of immutable data from functional programming is often included in imperative programming languages, for example the tuple in Python, which is an immutable array.
Total functional programming Total functional programming (also known as strong functional programming, to be contrasted with ordinary, or "weak" functional programming) is a programming paradigm that restricts the range of programs to those that are provably terminating.
Scala (programming language) Although Scala had extensive support for functional programming from its inception, Java remained a mostly object oriented language until the inclusion of lambda expressions with Java 8 in 2014.
Purely functional programming Purely functional programing consists in restricting programming to its functional paradigm.
Functional programming SequenceL is a functional, concurrent, general-purpose programming language. The Fibonacci function can be written in SequenceL as follows:
Purely functional programming A purely functional language is a language which only admits purely functional programming. Purely functional programs can however be written in languages which are not purely functional.
Scala (programming language) As of January 2016, the TIOBE index of programming language popularity shows Scala in 30th place (as measured by internet search engine rankings and similar publication-counting), but–as mentioned under "Bugs & Change Requests"–TIOBE is aware of issues with its methodology of using search terms which might not be commonly used in some programming language communities. In this ranking Scala is ahead of functional languages Haskell (39th), Erlang (35rd) and Clojure (>50), but below Java (1st).
Scala (programming language) Scala is often compared with Groovy and Clojure, two other programming languages also using the JVM. Substantial differences between these languages are found in the type system, in the extent to which each language supports object-oriented and functional programming, and in the similarity of their syntax to the syntax of Java.
Functional programming R is an environment for statistical computing and graphics. It is also a functional programming language.