Functional Program Design in Scala (Scala 2 version)
- Offered byCoursera
Functional Program Design in Scala (Scala 2 version) at Coursera Overview
Duration | 34 hours |
Start from | Start Now |
Total fee | Free |
Mode of learning | Online |
Official Website | Explore Free Course |
Credential | Certificate |
Functional Program Design in Scala (Scala 2 version) at Coursera Highlights
- Flexible deadlines Reset deadlines in accordance to your schedule.
- Shareable Certificate Earn a Certificate upon completion
- 100% online Start instantly and learn at your own schedule.
Functional Program Design in Scala (Scala 2 version) at Coursera Course details
- 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.
- Several parts of this course deal with the question how functional programming interacts with mutable state. We will explore the consequences of combining functions and state. We will also look at purely functional alternatives to mutable state, using infinite data structures or functional reactive programming.
- Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity with using the command line. This course is intended to be taken after Functional Programming Principles in Scala:
Functional Program Design in Scala (Scala 2 version) at Coursera Curriculum
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
Tools Setup (Please read)
Troubleshooting
Grading Policy
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
Type-Directed Programming
Conditional Implicit Definitions
Implicit Conversions
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