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

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

Advance your subject-matter expertise
- Learn in-demand skills from university and industry experts
- Master a subject or tool with hands-on projects
- Develop a deep understanding of key concepts
- Earn a career certificate from École Polytechnique Fédérale de Lausanne

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.
![]()
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
![]()
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

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

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

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

École Polytechnique Fédérale de Lausanne
6 Courses236,510 learners

École Polytechnique Fédérale de Lausanne
2 Courses104,695 learners
Offered by

Why people choose Coursera for their career

Felipe M.
Learner since 2018
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."

Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."

Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."

Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."

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,