Functional Program Design in Scala

2.5 rating

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.

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.

Learning Outcomes. By the end of this course you will be able to:

- recognize and apply design principles of functional programs,
- design functional libraries and their APIs,
- competently combine functions and state in one program,
- understand reasoning techniques for programs that combine
functions and state,
- write simple functional reactive applications.

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 using the command line. This course is intended to be taken after Functional Programming Principles in Scala:

13 hours to complete
For Expressions and Monads
We'll start by revisiting some concepts that we have learned from Principles of Functional Programming in Scala; collections pattern matching and functions. We'll then touch on for-comprehensions a powerful way in Scala to traverse a list process it and return a new list. We'll see how to do queries with for-comprehensions as well as how the for-comprehension is desugared into calls to higher-order functions by the Scala compiler. Finally we'll discuss what monads are and how to verify that the monad laws are satisfied for a number of examples.
10 videos (Total 164 min) 10 readings 3 quizzes

7 hours to complete
Lazy Evaluation
This week we'll revisit performance issues caused by combinatorial search and we'll discover an important concept in functional programming that can these issues: laziness. We'll also learn a little bit about proofs on trees; in particular we'll see how to extend structural induction to trees.
5 videos (Total 80 min)

7 hours to complete
Type-Directed Programming
This week we’ll learn how to make the compiler write programs for us! We’ll see how the compiler can summon program fragments based on their type and how this mechanism can be used to implement a new form of polymorphism (type classes).
5 readings

1 hour to complete
Functions and State
This week we'll learn about state and side-effects. Through a rich example we'll learn programming patterns for managing state in larger programs. We'll also learn about for-loops and while-loops in Scala.
6 videos (Total 72 min)

Tham gia đánh giá khóa học

Nếu bạn đã học qua khóa học này thì mời bạn tham gia đóng góp ý kiến và đánh giá để cộng đồng bạn học có thêm thông tin tham khảo.

Thời lượng: 36 giờ
Ngôn ngữ giảng dạy: Tiếng Anh
Chi phí: Miễn phí / 0
Đối tượng: Intermediate

Thông tin về nhà cung cấp

Coursera (/ kərˈsɛrə /) là một nền tảng học tập trực tuyến toàn cầu được thành lập vào năm 2012 bởi 2 giáo sư khoa học máy tính của đại học Stanford là Andrew NgDaphne Koller, nền tảng này cung cấp các khóa học trực tuyến (MOOC) cho cộng đồng người học online.

Coursera hợp tác với các trường đại học danh tiếng tại Bắc Mỹ và trên khắp thế giới, cùng với nhiều tổ chức khác để cung cấp các khóa học trực tuyến chất lượng, theo chuyên ngành và được cấp chứng chỉ trong nhiều lĩnh vực như kỹ thuật, khoa học dữ liệu, học máy, toán học, kinh doanh, khoa học máy tính, tiếp thị kỹ thuật số, nhân văn, y học, sinh học, khoa học xã hội , và nhiều ngành khác.

Các khóa học cùng chủ đề

Visual Perception for Self-Driving Cars

This course will introduce you to the main perception tasks in autonomous driving, static and dynamic object detection, and will survey common computer vision methods for robotic perception. By the...

Motion Planning for Self-Driving Cars

This course will introduce you to the main planning tasks in autonomous driving, including mission planning, behavior planning and local planning. By the end of this course, you will be...

Capstone: Autonomous Runway Detection for IoT

This capstone project course ties together the knowledge from three previous courses in IoT though embedded systems: Development of Real-Time Systems Web Connectivity & Security and Embedded Hardware and Operating...

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to Top