École Polytechnique Fédérale de Lausanne

Effective Programming in Scala

Julien Richard-Foy
Noel Welsh

Instructors: Julien Richard-Foy

14,768 already enrolled

Included with Coursera Plus

Gain insight into a topic and learn the fundamentals.
4.6

(167 reviews)

Intermediate level

Recommended experience

Flexible schedule
Approx. 74 hours
Learn at your own pace
92%
Most learners liked this course
Gain insight into a topic and learn the fundamentals.
4.6

(167 reviews)

Intermediate level

Recommended experience

Flexible schedule
Approx. 74 hours
Learn at your own pace
92%
Most learners liked this course

What you'll learn

  • Leverage Scala idioms to model business domains and implement business logic

  • Fundamental concepts of the language, allowing you to read and understand Scala codebases

  • Best practices and common patterns used in the real world

  • Be comfortable working with asynchronous computations, handling failures, and manipulating recursive data structures

Details to know

Shareable certificate

Add to your LinkedIn profile

Assessments

34 assignments

Taught in English

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

Placeholder
Placeholder

Earn a career certificate

Add this credential to your LinkedIn profile, resume, or CV

Share it on social media and in your performance review

Placeholder

There are 6 modules in this course

First, get up and running with Scala on your computer. Then, learn how to write and evaluate basic expressions and definitions. Last, learn how to model a business domain by defining case classes and sealed traits.

What's included

11 videos4 readings6 assignments2 programming assignments

Manipulate collections of values by using the generic List data type from the standard library. Then, learn about the other generic data structures provided by the standard library (sets, sequences, and maps), and their respective use cases. All the collection classes have a comprehensive set of high-level operations to transform, filter, and iterate over their elements. Last, you will learn a couple of techniques to implement loops in Scala, and their tradeoffs.

What's included

14 videos1 reading9 assignments2 programming assignments

How to write Scala projects larger than a worksheet? Learn how to define an entry point for a Scala project, and discover the tools you can leverage to write, compile, run, and debug your code. Then, use object-oriented programming techniques to break down a complex project into small modular components. Finally, we discuss when to use case classes versus simple classes.

What's included

10 videos7 assignments2 programming assignments

The recommendation in Scala is to use immutable data types by default. Indeed, they have desirable properties such as being thread-safe and allowing local reasoning. However, in some cases, mutable variables lead to simpler code, as you will see in the lectures. We then dive into different testing techniques such as unit testing, property-based testing, integration testing, and mocking.

What's included

10 videos1 reading4 assignments2 programming assignments

Programs automate repetitive tasks. Sometimes, writing a program is a repetitive task. We look into a unique feature of Scala that lets the compiler write some (repetitive) parts of your programs for you! Based on the expected type of a parameter, the compiler can provide a value for this parameter if it finds an unambiguous candidate value. This technique is often used to automatically generate the serializer and deserializer of a data type, solely based on its definition, for instance.

What's included

8 videos1 reading5 assignments2 programming assignments

Scala supports a simple low-level mechanism for error handling: exceptions. We discuss the pros and cons of this mechanism, and we show alternative approaches that you can apply when you want to make it explicit in a method signature that it can fail with an error. We then move to a similar topic, input data validation, where we want to construct nice-looking error messages listing all the errors that the user needs to fix. We conclude with a couple of lectures showing how to work with asynchronous computations, and how to leverage the multiple CPUs of a computer by running tasks in parallel. You will see that the same idioms we used for writing data validation rules can also be used to write graphs of parallel computations.

What's included

10 videos1 reading3 assignments2 programming assignments

Instructors

Instructor ratings
4.8 (92 ratings)
Julien Richard-Foy
École Polytechnique Fédérale de Lausanne
4 Courses30,050 learners
Noel Welsh
École Polytechnique Fédérale de Lausanne
1 Course14,768 learners

Recommended if you're interested in Software Development

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

Learner reviews

4.6

167 reviews

  • 5 stars

    76.64%

  • 4 stars

    15.56%

  • 3 stars

    4.19%

  • 2 stars

    2.39%

  • 1 star

    1.19%

Showing 3 of 167

ML
5

Reviewed on Aug 24, 2022

JR
4

Reviewed on Oct 29, 2021

WW
5

Reviewed on Sep 6, 2021

New to Software Development? Start here.

Placeholder

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