Latest Courses
DVC and Git For Data ScienceCheck course
CMake, Tests and Tooling for C/C++ ProjectsCheck course
Build A Professional Responsive Portfolio Website : React JSCheck course
Django | Build a Chatbot as a Personal Assistant Using AICheck course
Jq Command Tutorials for Bash Shell ScriptingCheck course
Learn API First Development With Open API Spring Boot KotlinCheck course
Advanced Reinforcement Learning: policy gradient methodsCheck course
Computational Linguistics - Beginner CourseCheck course
Design & Code Twitter Home Page with JavaScript, CSS & FigmaCheck course
Data Science: Transformers for Natural Language ProcessingCheck course
DVC and Git For Data ScienceCheck course
CMake, Tests and Tooling for C/C++ ProjectsCheck course
Build A Professional Responsive Portfolio Website : React JSCheck course
Django | Build a Chatbot as a Personal Assistant Using AICheck course
Jq Command Tutorials for Bash Shell ScriptingCheck course
Functional Program Design in Scala

Functional Program Design in Scala

FREE

Add your review
Add to wishlistAdded to wishlistRemoved from wishlist 0
Add to compare
8.5/10 (Our Score)
Product is rated as #10 in category Scala

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 …

Instructor Details

Martin Odersky is a professor at EPFL in Lausanne, Switzerland. He has been working on programming languages for most of his career. He first studied structured and object-oriented programming as a PhD student of Niklaus Wirth, then fell in love with functional programming while working as a post doc at IBM and Yale. When Java came out, he started to add functional programming constructs to the new platform. This led to Pizza and GJ and eventually to Java 5 with generics. During that time he also developed javac, the current reference compiler for Java. Over the last 10 years, Martin worked on unifying object-oriented and functional programming in the Scala language. Scala quickly escaped from the research lab and became a popular open source tool and industrial language. He now oversees development of Scala as head of the programming group at EPFL and as chairman of the Typesafe company.

Specification: Functional Program Design in Scala

Duration

13 hours

Year

2016

Level

Intermediate

Certificate

Yes

Quizzes

Yes

98 reviews for Functional Program Design in Scala

4.2 out of 5
37
39
20
2
0
Write a review
Show all Most Helpful Highest Rating Lowest Rating
  1. Siyuan W

    there are a lil bit disordered of the course arrangement

    Helpful(0) Unhelpful(0)You have already voted this
  2. John S

    Very enjoyable course!

    Helpful(0) Unhelpful(0)You have already voted this
  3. Angelos M

    It is a really nice course but a bit dated.

    Helpful(0) Unhelpful(0)You have already voted this
  4. Ignacio G S

    Excellent course from the best professionals in the world. The Futures content should be tested as well.

    Helpful(0) Unhelpful(0)You have already voted this
  5. Antoine L

    This course felt a bit less fundamental than the Functional Programming Principles but offered some nice introduction to more advanced concepts that feel to bridge the gap between theoretical advantages and real world use cases. On the other hand the Monad concept which I often hear about still feels a bit fuzzy, I felt like less time was dedicated to theory in this course. This time again the exercises are challenging but fun and above all really help internalizing the concepts, although it feels like it will take me more work to really grok Signals not to mention Future which are not used in any exercises.

    Helpful(0) Unhelpful(0)You have already voted this
  6. Marcin Z

    Better than the first part!

    Helpful(0) Unhelpful(0)You have already voted this
  7. Subodh C

    The structure of course could be refined to be more coherent.

    Helpful(0) Unhelpful(0)You have already voted this
  8. Joel V

    Provides an interesting theoretical bird view on: monads & its relation to for expressions, streams & lazy evaluation, elegant examples of mixing mutable and immutable data structures for stateful programs, and finally signals for event management. The exercises are fun ; ) and illustrative although not too challenging.

    Helpful(0) Unhelpful(0)You have already voted this
  9. Joel V

    Provides an interesting theoretical bird view on: monads & its relation to for expressions, streams & lazy evaluation, elegant examples of mixing mutable and immutable data structures for stateful programs, and finally signals for event management. The exercises are fun ; ) and illustrative although not too challenging.

    Helpful(0) Unhelpful(0)You have already voted this
  10. Bidhya N S

    The course is not structured well. Also concepts like monads and functors are not covered in detailed way.

    Helpful(0) Unhelpful(0)You have already voted this
  11. Bidhya N S

    The course is not structured well. Also concepts like monads and functors are not covered in detailed way.

    Helpful(0) Unhelpful(0)You have already voted this
  12. Patrik M

    I’ve enjoyed some lectures. But overall, this course was less educative than the first one in the Scala specialisation. I do appreciate Erik Meijer as a professional and a scientist. But, in my humble oppinion, he is not a great lecturer.

    Helpful(0) Unhelpful(0)You have already voted this
  13. Patrik M

    I’ve enjoyed some lectures. But overall, this course was less educative than the first one in the Scala specialisation. I do appreciate Erik Meijer as a professional and a scientist. But, in my humble oppinion, he is not a great lecturer.

    Helpful(0) Unhelpful(0)You have already voted this
  14. Malhar J

    The course was good but not as good/detailed as the first one. Martin did an excellent job as usual though. I felt the course content was interesting but got very dull towards the end. The assignments were not really challenging.

    Helpful(0) Unhelpful(0)You have already voted this
  15. Malhar J

    The course was good but not as good/detailed as the first one. Martin did an excellent job as usual though. I felt the course content was interesting but got very dull towards the end. The assignments were not really challenging.

    Helpful(0) Unhelpful(0)You have already voted this
  16. Light0617

    great!!!

    Helpful(0) Unhelpful(0)You have already voted this
  17. Light0617

    great!!!

    Helpful(0) Unhelpful(0)You have already voted this
  18. Alex L

    Definitely challenging. Sometimes there were some tricky gaps between what the lectures covered and what the assignments were looking for information wise.

    Helpful(0) Unhelpful(0)You have already voted this
  19. Alex L

    Definitely challenging. Sometimes there were some tricky gaps between what the lectures covered and what the assignments were looking for information wise.

    Helpful(0) Unhelpful(0)You have already voted this
  20. Andrius V

    Course material needs reviewing and updates

    Helpful(0) Unhelpful(0)You have already voted this
  21. Andrius V

    Course material needs reviewing and updates

    Helpful(0) Unhelpful(0)You have already voted this
  22. Ankur S

    Very Good. Some parts can be provided with some material to refer . Example reactive programming.

    Helpful(0) Unhelpful(0)You have already voted this
  23. Santiago A

    The course is great. I put 4 stars because week 4 is very hard to follow up and may take more than one week.

    Helpful(0) Unhelpful(0)You have already voted this
  24. Ankur S

    Very Good. Some parts can be provided with some material to refer . Example reactive programming.

    Helpful(0) Unhelpful(0)You have already voted this
  25. Santiago A A

    The course is great. I put 4 stars because week 4 is very hard to follow up and may take more than one week.

    Helpful(0) Unhelpful(0)You have already voted this
  26. Dmytro S

    This is actually a very good course. There are some inconsistencies but it’s actually good: when I fix them I have realized that I’ve learned more deeply. Anyway, this is a “must” course for someone who is learning Functional Programming Design.

    Helpful(0) Unhelpful(0)You have already voted this
  27. Dmytro S

    This is actually a very good course. There are some inconsistencies but it’s actually good: when I fix them I have realized that I’ve learned more deeply. Anyway, this is a “must” course for someone who is learning Functional Programming Design.

    Helpful(0) Unhelpful(0)You have already voted this
  28. Zeb S

    I suspect I am not alone in finding the fourth week of this course to be somewhat lacking. I agree with the majority of the feedback regarding the shortcomings of the final week; however, as a whole this was a fun course and I learned a lot.

    Helpful(0) Unhelpful(0)You have already voted this
  29. Zeb S

    I suspect I am not alone in finding the fourth week of this course to be somewhat lacking. I agree with the majority of the feedback regarding the shortcomings of the final week; however, as a whole this was a fun course and I learned a lot.

    Helpful(0) Unhelpful(0)You have already voted this
  30. Jonathan S R

    everything was intuitive and enjoyable

    Helpful(0) Unhelpful(0)You have already voted this
  31. Jonathan S R

    everything was intuitive and enjoyable

    Helpful(0) Unhelpful(0)You have already voted this
  32. Tihomir N

    One of the very top courses on Coursera. Prof. Martin Odersky, is truly incredible !

    Helpful(0) Unhelpful(0)You have already voted this
  33. Tihomir N

    One of the very top courses on Coursera. Prof. Martin Odersky, is truly incredible !

    Helpful(0) Unhelpful(0)You have already voted this
  34. Yichun Y

    The last week’s lectures are hard to grasp, but everything else is excellent!

    Helpful(0) Unhelpful(0)You have already voted this
  35. Yichun Y

    The last week’s lectures are hard to grasp, but everything else is excellent!

    Helpful(0) Unhelpful(0)You have already voted this
  36. Sebas O C

    nice

    Helpful(0) Unhelpful(0)You have already voted this
  37. Sebas O C

    nice

    Helpful(0) Unhelpful(0)You have already voted this
  38. Georgreen

    The intructor is very clear and the materail is intresting, enough to capture your attention.

    Helpful(0) Unhelpful(0)You have already voted this
  39. Georgreen

    The intructor is very clear and the materail is intresting, enough to capture your attention.

    Helpful(0) Unhelpful(0)You have already voted this
  40. Martiniano J

    In order to save time I will quote this other review By Abhinav P. that reflects 100% what I think: “I was optimistic about this course based on the previous course, because that course was consistent, self contained, and systematic. On the other hand, this course was clearly put together by throwing together, rather haphazardly, bits and pieces of other courses, some of which no longer even exist. This is outrageous; a course like this would never be taught at a prestigious institution like EPFL, and it is highly deceptive to give us a course, put together in a arbitrary, incoherent, Frankensteinish fashion, right after a course that was quite systematic and coherent. Week one and two were not bad, hence why I gave two stars instead of one. But week three involves a programming project that has literally nothing to do with the lectures at all. To be sure, I didn’t mind learning about Scala Check, but I had to do it pretty much entirely on my own; it was mentioned for about five seconds in the lecture videos. If I wanted to just read documentation without any actual teaching, why would I sign up for a course like this? And week 4! Coursera/whoever put this course together isn’t even trying anymore. The videos are clearly from multiple different courses, and Odersky himself makes references entire weeks worth of content that simply doesn’t exist anymore. This is a damn mess. In its current state, the course is simply not worth publishing.”

    Helpful(0) Unhelpful(0)You have already voted this
  41. Martiniano J

    In order to save time I will quote this other review By Abhinav P. that reflects 100% what I think: “I was optimistic about this course based on the previous course, because that course was consistent, self contained, and systematic. On the other hand, this course was clearly put together by throwing together, rather haphazardly, bits and pieces of other courses, some of which no longer even exist. This is outrageous; a course like this would never be taught at a prestigious institution like EPFL, and it is highly deceptive to give us a course, put together in a arbitrary, incoherent, Frankensteinish fashion, right after a course that was quite systematic and coherent. Week one and two were not bad, hence why I gave two stars instead of one. But week three involves a programming project that has literally nothing to do with the lectures at all. To be sure, I didn’t mind learning about Scala Check, but I had to do it pretty much entirely on my own; it was mentioned for about five seconds in the lecture videos. If I wanted to just read documentation without any actual teaching, why would I sign up for a course like this? And week 4! Coursera/whoever put this course together isn’t even trying anymore. The videos are clearly from multiple different courses, and Odersky himself makes references entire weeks worth of content that simply doesn’t exist anymore. This is a damn mess. In its current state, the course is simply not worth publishing.”

    Helpful(0) Unhelpful(0)You have already voted this
  42. Alan A C

    I have the sensation that this second part is not so well explained as the first one. Week 3 was confusing. The assignment is not related to the video contents. Week 4 was confusing too. The mix between Martin and the other guy’s videos is weird. Also I expected much more reactive stuff.

    Helpful(0) Unhelpful(0)You have already voted this
  43. Alan A C

    I have the sensation that this second part is not so well explained as the first one. Week 3 was confusing. The assignment is not related to the video contents. Week 4 was confusing too. The mix between Martin and the other guy’s videos is weird. Also I expected much more reactive stuff.

    Helpful(0) Unhelpful(0)You have already voted this
  44. Daniel B

    Good course with a lot of useful material though not quite as polished as the first one

    Helpful(0) Unhelpful(0)You have already voted this
  45. Daniel B

    Good course with a lot of useful material though not quite as polished as the first one

    Helpful(0) Unhelpful(0)You have already voted this
  46. Joaquin D R

    Too short, In my opinion i would spend more time on future and async. I dont like too much, when the teacher changes..

    Helpful(0) Unhelpful(0)You have already voted this
  47. Shi Y

    A bit of confusion about the assignment instruction.

    Helpful(0) Unhelpful(0)You have already voted this
  48. Joaquin D R

    Too short, In my opinion i would spend more time on future and async. I dont like too much, when the teacher changes..

    Helpful(0) Unhelpful(0)You have already voted this
  49. Shi Y

    A bit of confusion about the assignment instruction.

    Helpful(0) Unhelpful(0)You have already voted this
  50. Alexey P

    The topic very interesting as well as course assignments. But not so good as progfun1. It looks like some topics were thrown away. E.g. quick check assignment is not in a right place. Assignment about Streams is too complicated and does not illustrate streams well. There is not enough information about design e.g. more patterns and guidance when to use mutable state with oop princilpes and when to use fp.

    Helpful(0) Unhelpful(0)You have already voted this
  51. Alexey P

    The topic very interesting as well as course assignments. But not so good as progfun1. It looks like some topics were thrown away. E.g. quick check assignment is not in a right place. Assignment about Streams is too complicated and does not illustrate streams well. There is not enough information about design e.g. more patterns and guidance when to use mutable state with oop princilpes and when to use fp.

    Helpful(0) Unhelpful(0)You have already voted this
  52. Gabriele A

    Good course but not much coherence between lessons and exercises.

    Helpful(0) Unhelpful(0)You have already voted this
  53. Gabriele A

    Good course but not much coherence between lessons and exercises.

    Helpful(0) Unhelpful(0)You have already voted this
  54. Pedro C P P

    A little less content than the first course. Also the videos and materials of the second professor are way worst than the first one.

    Helpful(0) Unhelpful(0)You have already voted this
  55. Pedro C P P

    A little less content than the first course. Also the videos and materials of the second professor are way worst than the first one.

    Helpful(0) Unhelpful(0)You have already voted this
  56. Ishan

    Assignments 3 and 4 can be improved. They are a bit hard to get started with and at the end only require a handful of lines of code to implement. It does not match the learning outcome of the difficult topics taught in the lectures.

    Helpful(0) Unhelpful(0)You have already voted this
  57. Ishan

    Assignments 3 and 4 can be improved. They are a bit hard to get started with and at the end only require a handful of lines of code to implement. It does not match the learning outcome of the difficult topics taught in the lectures.

    Helpful(0) Unhelpful(0)You have already voted this
  58. Michael R

    This course was a bit of a mixed bag some great bits and some really badly designed bits! Seems it was originally two courses which have been mashed together, and the joins are pretty rough… First week on Streams/Lazy Lists was great, but seemed to actually have originally been the final week of the functional programming principles course. The circuits example was interesting, but could have done with an assignment to bed in the knowledge the actual assignment had little bearing on this material. The futures section was interesting, but there appeared to be some missing sections due to the course reorganisation, so it didn’t flow especially well. Again, some more concrete examples and an associated assignment would have been appreciated. Definitely a useful course, but be prepared to put up with the rough edges!

    Helpful(0) Unhelpful(0)You have already voted this
  59. Michael R

    This course was a bit of a mixed bag some great bits and some really badly designed bits! Seems it was originally two courses which have been mashed together, and the joins are pretty rough… First week on Streams/Lazy Lists was great, but seemed to actually have originally been the final week of the functional programming principles course. The circuits example was interesting, but could have done with an assignment to bed in the knowledge the actual assignment had little bearing on this material. The futures section was interesting, but there appeared to be some missing sections due to the course reorganisation, so it didn’t flow especially well. Again, some more concrete examples and an associated assignment would have been appreciated. Definitely a useful course, but be prepared to put up with the rough edges!

    Helpful(0) Unhelpful(0)You have already voted this
  60. Milan V

    The 2nd part was kind of confusing and less concise.

    Helpful(0) Unhelpful(0)You have already voted this
  61. Milan V

    The 2nd part was kind of confusing and less concise.

    Helpful(0) Unhelpful(0)You have already voted this
  62. Ivan P

    The first week is simply useless 🙁

    Helpful(0) Unhelpful(0)You have already voted this
  63. Ivan P

    The first week is simply useless 🙁

    Helpful(0) Unhelpful(0)You have already voted this
  64. David S

    This is a great course with a clear exposition of some of the more complex topics in FP such as Monads. However, I feel the treatment of concurrency left me with more questions than answers (though I also understand the next course will explore it in more detail). I would have also liked some more excercises about building a Scala program “from scratch”.

    Helpful(0) Unhelpful(0)You have already voted this
  65. David S

    This is a great course with a clear exposition of some of the more complex topics in FP such as Monads. However, I feel the treatment of concurrency left me with more questions than answers (though I also understand the next course will explore it in more detail). I would have also liked some more excercises about building a Scala program “from scratch”.

    Helpful(0) Unhelpful(0)You have already voted this
  66. Roman A

    The course covers a range of interesting and important topics and the quality of lectures and exercises is pretty high. However, it is organized in a less coherent way than the first course in the specialization. Exercises do not match their weeks, lecturer suddenly changes in Week 4 and delivers something not clearly following from the previous lectures.

    Helpful(0) Unhelpful(0)You have already voted this
  67. Roman A

    The course covers a range of interesting and important topics and the quality of lectures and exercises is pretty high. However, it is organized in a less coherent way than the first course in the specialization. Exercises do not match their weeks, lecturer suddenly changes in Week 4 and delivers something not clearly following from the previous lectures.

    Helpful(0) Unhelpful(0)You have already voted this
  68. Patrik

    Challenging and rewarding

    Helpful(0) Unhelpful(0)You have already voted this
  69. Patrik

    Challenging and rewarding

    Helpful(0) Unhelpful(0)You have already voted this
  70. Max B

    Cool stuff

    Helpful(0) Unhelpful(0)You have already voted this
  71. Max B

    Cool stuff

    Helpful(0) Unhelpful(0)You have already voted this
  72. Nikolas V

    The course material about the futures, although interesting should have been developed further and at least with an extra week in the course (and have an assignment associated to it). As things are, week 4 didn’t flow as well as the previous ones, or any of the weeks from the course “Functional programming in Scala”.

    Helpful(0) Unhelpful(0)You have already voted this
  73. Nikolas V

    The course material about the futures, although interesting should have been developed further and at least with an extra week in the course (and have an assignment associated to it). As things are, week 4 didn’t flow as well as the previous ones, or any of the weeks from the course “Functional programming in Scala”.

    Helpful(0) Unhelpful(0)You have already voted this
  74. Jiby N

    Homework could be a little tougher, especially the last one (calculator)

    Helpful(0) Unhelpful(0)You have already voted this
  75. Jiby N

    Homework could be a little tougher, especially the last one (calculator)

    Helpful(0) Unhelpful(0)You have already voted this
  76. OLEKSIY B

    It’s was an awesome and amazing journey! Like in my childhood on interschool programmers contests

    Helpful(0) Unhelpful(0)You have already voted this
  77. OLEKSIY B

    It’s was an awesome and amazing journey! Like in my childhood on interschool programmers contests

    Helpful(0) Unhelpful(0)You have already voted this
  78. Akshay A

    Last two weeks are definitely confusing, since the staff seems to have rearranged and removed some ofthe content.

    Helpful(0) Unhelpful(0)You have already voted this
  79. Samir V

    Really great course!

    Helpful(0) Unhelpful(0)You have already voted this
  80. Akshay A

    Last two weeks are definitely confusing, since the staff seems to have rearranged and removed some ofthe content.

    Helpful(0) Unhelpful(0)You have already voted this
  81. Samir V

    Really great course!

    Helpful(0) Unhelpful(0)You have already voted this
  82. Masud H

    Very good.

    Helpful(0) Unhelpful(0)You have already voted this
  83. Masud H

    Very good.

    Helpful(0) Unhelpful(0)You have already voted this
  84. Tomasz N

    In week 4 sudden change of teacher and topic from reactive programming principles to Futures is confusing.

    Helpful(0) Unhelpful(0)You have already voted this
  85. Tomasz N

    In week 4 sudden change of teacher and topic from reactive programming principles to Futures is confusing.

    Helpful(0) Unhelpful(0)You have already voted this
  86. Pavel O

    Some stuff was weird, like the quickcheck task, too much weird syntax, hard to understand what’s going on, especially because there was no explanation for binomial heap

    Helpful(0) Unhelpful(0)You have already voted this
  87. Pavel O

    Some stuff was weird, like the quickcheck task, too much weird syntax, hard to understand what’s going on, especially because there was no explanation for binomial heap

    Helpful(0) Unhelpful(0)You have already voted this
  88. Daniel Z

    The course is much better than the first one it give much more real hands one experience. Would be nice to have: lecture slides, assignments with futures

    Helpful(0) Unhelpful(0)You have already voted this
  89. Daniel Z

    The course is much better than the first one it give much more real hands one experience. Would be nice to have: lecture slides, assignments with futures

    Helpful(0) Unhelpful(0)You have already voted this
  90. Yuan Y

    material for first two weeks are good. third and fourth are not so good. assignment is a bit too simple

    Helpful(0) Unhelpful(0)You have already voted this
  91. Yuan Y

    material for first two weeks are good. third and fourth are not so good. assignment is a bit too simple

    Helpful(0) Unhelpful(0)You have already voted this
  92. Edvinas `

    Interactive quizzes seem to have been missing from the videos.

    Helpful(0) Unhelpful(0)You have already voted this
  93. Razertory

    Martin is smart and knowledgeable. This course really helped me on Scala Programming. Personally, I’d like something more on algebraic design lectures and code assignments such as monoid, functors, applicative functors and many kinds of monads. Anyway, it’s my 1st experience on coursera, thanks a lot : )

    Helpful(0) Unhelpful(0)You have already voted this
  94. Peter B

    Great course! Once they work out the bugs with grading the calculator project it will be 5 stars.

    Helpful(0) Unhelpful(0)You have already voted this
  95. Max S

    Just like the first course in the specialization this one teaches valuable insights into quite a lot of concepts. However more than the first one you realize in this course that initially the entire specialization was taught as one coherent course. In this course this sometimes show and confused me a bit. Additionally there where almost no exercises in the lectures.

    Helpful(0) Unhelpful(0)You have already voted this
  96. Hong C

    Lecture 1.4 Monads is too abstruse.

    Helpful(0) Unhelpful(0)You have already voted this
  97. Aydar U

    That was really amazing!

    Helpful(0) Unhelpful(0)You have already voted this
  98. Taewoo K

    Good

    Helpful(0) Unhelpful(0)You have already voted this

    Add a review

    Your email address will not be published.

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    Price tracking

    Java Code Geeks
    Logo
    Register New Account
    Reset Password
    Compare items
    • Total (0)
    Compare