Functional Programming in Scala

5 min read Original article ↗

École Polytechnique Fédérale de Lausanne

Functional Programming in Scala Specialization

Ends soon: Grow your skills with Coursera Plus for $239/year (usually $399). Save now.

École Polytechnique Fédérale de Lausanne

Functional Programming in Scala Specialization

Program on a Higher Level.

Write elegant functional code to analyze data that's big or small

77,039 already enrolled

Included with Coursera Plus

Get in-depth knowledge of a subject

from 10,658 reviews of courses in this program

5 months to complete

at 10 hours a week

Flexible schedule

Learn at your own pace

Get in-depth knowledge of a subject

from 10,658 reviews of courses in this program

5 months to complete

at 10 hours a week

Flexible schedule

Learn at your own pace

See how employees at top companies are mastering in-demand skills

 logos of Petrobras, TATA, Danone, Capgemini, P&G and L'Oreal

Specialization - 5 course series

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.

Applied Learning Project

Learners will build small to medium size Scala applications by applying knowledge and skills including: functional programming, parallel programming, manipulation of large data sets, higher-order functions, property-based testing, functional reactive programming.

Functional Programming Principles in Scala

What you'll learn

  • Understand the principles of functional programming

  • Write purely functional programs, using recursion, pattern matching, and higher-order functions

  • Design immutable data structures

  • Combine functional programming with objects and classes

Skills you'll gain

Category: Scala Programming

Category: Functional Design

Category: Data Structures

Category: Object Oriented Programming (OOP)

Category: Programming Principles

Category: Unit Testing

Category: Integrated Development Environments

Category: Algorithms

Category: Computer Programming

Category: Computational Thinking

Functional Program Design in Scala

What you'll learn

  • Recognize and apply design principles of functional programs

  • Design functional libraries and their APIs

  • Write simple functional reactive applications

  • Understand reasoning techniques for programs that combine functions and state

Skills you'll gain

Category: Scala Programming

Category: Functional Design

Category: Software Design Patterns

Category: Algorithms

Category: Event-Driven Programming

Category: Software Design

Category: Java

Category: Data Structures

Category: Performance Tuning

Category: Programming Principles

Parallel programming

What you'll learn

With every smartphone and computer now boasting multiple processors, the use of functional ideas to facilitate parallel programming is becoming increasingly widespread. In this course, you'll learn the fundamentals of parallel programming, from task parallelism to data parallelism. In particular, you'll see how many familiar ideas from functional programming map perfectly to to the data parallel paradigm. We'll start the nuts and bolts how to effectively parallelize familiar collections operations, and we'll build up to parallel collections, a production-ready data parallel collections library available in the Scala standard library. Throughout, we'll apply these concepts through several hands-on examples that analyze real-world data, such as popular algorithms like k-means clustering.

Skills you'll gain

Category: Algorithms

Category: Data Structures

Category: Scala Programming

Category: Performance Tuning

Category: Distributed Computing

Category: Other Programming Languages

Category: Scalability

Category: Functional Design

Category: Java Programming

Big Data Analysis with Scala and Spark

What you'll learn

Manipulating big data distributed over a cluster using functional concepts is rampant in industry, and is arguably one of the first widespread industrial uses of functional ideas. This is evidenced by the popularity of MapReduce and Hadoop, and most recently Apache Spark, a fast, in-memory distributed collections framework written in Scala. In this course, we'll see how the data parallel paradigm can be extended to the distributed case, using Spark throughout. We'll cover Spark's programming model in detail, being careful to understand how and when it differs from familiar programming models, like shared-memory parallel collections or sequential Scala collections. Through hands-on examples in Spark and Scala, we'll learn when important issues related to distribution like latency and network communication should be considered and how they can be addressed effectively for improved performance.

Skills you'll gain

Category: Apache Spark

Category: Scala Programming

Category: Data Processing

Category: Data Manipulation

Category: Distributed Computing

Category: Performance Tuning

Category: Big Data

Category: SQL

Category: Data Transformation

Functional Programming in Scala Capstone

What you'll learn

In the final capstone project you will apply the skills you learned by building a large data-intensive application using real-world data.

Skills you'll gain

Category: Scala Programming

Category: Geospatial Mapping

Category: Apache Spark

Category: Big Data

Category: Data Manipulation

Category: Spatial Data Analysis

Category: Heat Maps

Category: Data Visualization Software

Category: User Interface (UI)

Category: Geospatial Information and Technology

Category: Interactive Data Visualization

Category: Data Transformation

Earn a career certificate

Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.

Instructors

Martin Odersky

École Polytechnique Fédérale de Lausanne

6 Courses236,510 learners

Prof. Heather Miller

École Polytechnique Fédérale de Lausanne

2 Courses104,695 learners

Offered by

Coursera Plus

Open new doors with Coursera Plus

Unlimited access to 10,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription

Advance your career with an online degree

Earn a degree from world-class universities - 100% online

Join over 3,400 global companies that choose Coursera for Business

Upskill your employees to excel in the digital economy

Frequently asked questions

Time to completion can vary based on your schedule, but most learners are able to complete the Specialization in 4-5 months.

Each course in the Specialization is offered on demand, and may be taken at any time.

At least one year of programming experience is recommended. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, JavaScript, or Ruby is also sufficient.

More questions

Financial aid available,