Functional Program Design in Scala

  • 4.5
Approx. 36 hours to complete

Course Summary

This course teaches advanced programming concepts using the Scala language, including functional and object-oriented programming.

Key Learning Points

  • Learn to program in the functional programming paradigm
  • Understand advanced programming concepts such as type inference, type classes, and abstract data types
  • Develop skills in using the Scala programming language

Related Topics for further study


Learning Outcomes

  • Develop advanced programming skills using Scala
  • Understand functional and object-oriented programming paradigms
  • Apply advanced programming concepts in real-world scenarios

Prerequisites or good to have knowledge before taking this course

  • Basic programming knowledge
  • Familiarity with programming concepts such as data types, variables, and functions
  • Access to a computer with an internet connection

Course Difficulty Level

Advanced

Course Format

  • Online
  • Self-paced

Similar Courses

  • Functional Programming Principles in Scala
  • Functional Programming in Haskell
  • Functional Programming in Java

Related Education Paths


Notable People in This Field

  • John A. De Goes
  • Erik Osheim
  • Jon Pretty

Related Books

Description

In this course you will learn how to apply the functional programming style in the design of larger 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.

Outline

  • For Expressions and Monads
  • Tools Setup for Linux
  • Tools Setup for Mac OS X
  • Tools for Setup for Windows
  • Tutorial: Working on the Programming Assignments
  • Recap: Functions and Pattern Matching
  • Recap: Collections
  • Lecture 1.1 - Queries with For
  • Lecture 1.2 - Translation of For
  • Lecture 1.3 - Functional Random Generators
  • Lecture 1.4 - Monads
  • Troubleshooting
  • Grading Policy
  • Tools Setup
  • Sbt Tutorial
  • IntelliJ IDEA Tutorial
  • Scala Tutorial
  • Cheat Sheet
  • Reactive Cheat Sheet
  • Scala Style Guide
  • Learning Resources
  • Lazy Evaluation
  • Lecture 2.1 - Structural Induction on Trees
  • Lecture 2.2 - Streams
  • Lecture 2.3 - Lazy Evaluation
  • Lecture 2.4 - Computing with Infinite Sequences
  • Lecture 2.5 - Case Study: the Water Pouring Problem
  • Type-Directed Programming
  • Motivating Example
  • Type-Directed Programming
  • Type Classes
  • Conditional Implicit Definitions
  • Implicit Conversions
  • Conditional Implicit Definitions
  • Functions and State
  • Lecture 4.1 - Functions and State
  • Lecture 4.2 - Identity and Change
  • Lecture 4.3 - Loops
  • Lecture 4.4 - Extended Example: Discrete Event Simulation
  • Lecture 4.5 - Discrete Event Simulation: API and Usage
  • Lecture 4.6 - Discrete Event Simulation: Implementation and Test
  • Timely Effects
  • Lecture 5.1 - Imperative Event Handling: The Observer Pattern
  • Lecture 5.2 - Functional Reactive Programming
  • Lecture 5.3 - A Simple FRP Implementation
  • Conclusion

Summary of User Reviews

Learn functional programming concepts and techniques with this online course on Coursera. Students praise the course for its challenging yet rewarding content and hands-on approach to learning. One key aspect that many users thought was good is the interactive programming assignments that challenge students to apply what they've learned in real-world scenarios.

Pros from User Reviews

  • Challenging yet rewarding content
  • Hands-on approach to learning
  • Interactive programming assignments
  • Clear and concise explanations
  • Great community support

Cons from User Reviews

  • Some programming assignments can be too difficult for beginners
  • Course can be time-consuming
  • Not enough focus on object-oriented programming
  • Lack of feedback on programming assignments
  • Some course materials can be outdated
English
Available now
Approx. 36 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