Functional Programming Principles in Scala

Start Date: 07/05/2020

Course Type: Common Course

Course Link: https://www.coursera.org/learn/progfun1

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

About Course

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. 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.

Course Syllabus

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

Deep Learning Specialization on Coursera

Course Introduction

Functional Programming Principles in Scala This course teaches you how to use functional programming in the Scala programming environment. It covers Scala's specialized syntax, functions, monads, and monadic transformers. It also covers the standard library, common primitives, and common programming mistakes. You will learn how to use function templates and polymorphic data types, and how to use monads for composing code efficiently and maintainable in Scala. At the end of this course, you will be able to… - use functions effectively - compose code efficiently and maintainable - avoid common programming mistakes Recommended background: You should be comfortable writing small functions (less than 100 lines) in Scala, be able to use common Scala features, and have previous experience using Scala (including implementing Scala code in a JVM or Jupyter notebook).You will need to install the required libraries (e.g. libraries for Java or C++) and run the courses to get the best out of this course. Note: If you have a Java or C++ background, you may need to use the JDK or other JDK for compiling and running Scala programs.Function Names in Scala Monads, Monads, and Monads over Functional Containers More Monads, Functors, and Overloading Ranges and Sampling Overloaded Languages Functional Modeling for Game Design In this course, you will learn

Course Tag

Recursion Scala Programming Array Programming Functional Programming

Related Wiki Topic

Article Example
Martin Odersky He teaches two courses on the massive open online course (MOOC) provider, Coursera, namely "Functional Programming Principles in Scala" and "Functional Program Design in Scala".
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.
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.