Functional Program Design in Scala

  • 4.5
Approx. 35 hours to complete

Course Summary

This course will teach you how to use the functional programming paradigm in Scala to build robust and scalable applications.

Key Learning Points

  • Learn functional programming concepts such as immutability, recursion and higher-order functions
  • Understand how to use Scala to write functional programs
  • Build applications using functional design principles

Job Positions & Salaries of people who have taken this course might have

  • Scala Developer
    • USA: $116,000
    • India: ₹1,200,000
    • Spain: €43,000
  • Functional Programmer
    • USA: $108,000
    • India: ₹1,100,000
    • Spain: €42,000
  • Software Engineer
    • USA: $96,000
    • India: ₹900,000
    • Spain: €33,000

Related Topics for further study


Learning Outcomes

  • Understand functional programming concepts and how to use them in Scala
  • Learn how to write robust and scalable applications using functional design principles
  • Develop critical thinking and problem-solving skills

Prerequisites or good to have knowledge before taking this course

  • Basic knowledge of programming concepts
  • Familiarity with Scala programming language

Course Difficulty Level

Intermediate

Course Format

  • Online self-paced course
  • Video lectures
  • Hands-on programming assignments

Similar Courses

  • Functional Programming Principles in Scala
  • Functional Programming in Haskell: Supercharge Your Coding

Related Education Paths


Notable People in This Field

  • Erik Osheim
  • Heather Miller

Related Books

Description

In this course you will learn how to apply the functional programming style in the design of larger Scala applications. You'll get to know important new functional programming concepts, from lazy evaluation to structuring your libraries using monads. We'll work on larger and more involved examples, from state space exploration to random testing to discrete circuit simulators. You’ll also learn some best practices on how to write good Scala code in the real world. Finally, you will learn how to leverage the ability of the compiler to infer values from types.

Knowledge

  • 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

Outline

  • For Expressions and Monads
  • Introduction
  • Week 1 Introduction
  • Recap: Functions and Pattern Matching
  • Lecture 1.1 - Queries with For
  • Lecture 1.2 - Translation of For
  • Lecture 1.3 - Functional Random Generators
  • Lecture 1.4 - Monads
  • Lecture 1.5 - Exceptional Monads
  • Working on Assignments
  • Tools Setup (Please read)
  • Grading Policy
  • SBT tutorial and Submission of Assignments (Please read)
  • Cheat Sheet
  • Scala Style Guide
  • Learning Resources
  • Reactive Cheat Sheet
  • Lazy Evaluation
  • Week 2 Intrduction
  • Lecture 2.1 - Structural Induction on Trees
  • Lecture 2.2 - Lazy Lists
  • Lecture 2.3 - Lazy Evaluation
  • Lecture 2.4 - Computing with Infinite Sequences
  • Lecture 2.5 - Case Study: the Water Pouring Problem
  • Type-Directed Programming
  • Week 3 Introduction
  • Lecture 3.1 - Contextual abstractions
  • Lecture 3.2 - Using clauses and given instances
  • Lecture 3.3 - Type classes
  • Lecture 3.4 - Abstract algebra and type classes
  • Lecture 3.5 - Context passing
  • Lecture 3.6 - Implicit function types
  • Motivating Example
  • Type-Directed Programming
  • Type Classes
  • Conditional Implicit Definitions
  • Implicit Conversions
  • Conditional Implicit Definitions
  • Functions and State
  • Week 4 Introduction
  • Lecture 4.1 - Functions and State
  • Lecture 4.2 - Identity and Change
  • Lecture 4.3 - Loops
  • Lecture 4.4 - Extended Example: Discrete Event Simulation
  • Timely Effects
  • Week 5 Introduction
  • Lecture 5.1 - Imperative Event Handling: The Observer Pattern
  • Lecture 5.2 - Functional Reactive Programming
  • Lecture 5.3 - A Simple FRP Implementation
  • Conclusion
  • Conclusion

Summary of User Reviews

Learn functional programming with Scala on Coursera. Highly rated course with great content and engaging lectures.

Key Aspect Users Liked About This Course

The course provides a thorough understanding of functional programming concepts.

Pros from User Reviews

  • Excellent content that covers functional programming in depth
  • Engaging lectures that make the concepts easy to understand
  • Great programming assignments that reinforce the learning
  • Well-structured course with clear explanations and examples
  • Good pace that allows for learning at your own speed

Cons from User Reviews

  • Some users found the programming assignments challenging
  • A few users felt that the course could have covered more advanced topics
  • No certificate offered for free course audit
  • Lack of interaction with instructor or peers
  • Not suitable for beginners who are new to programming
English
Available now
Approx. 35 hours to complete
Martin Odersky
École Polytechnique Fédérale de Lausanne
Coursera

Instructor

Martin Odersky

  • 4.5 Raiting
Share
Saved Course list
Cancel
Get Course Update
Computer Courses