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
Courses : 2
Specification: Functional Program Design in Scala
|
98 reviews for Functional Program Design in Scala
Add a review Cancel reply
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Price | Free |
---|---|
Provider | |
Duration | 13 hours |
Year | 2016 |
Level | Intermediate |
Language | English |
Certificate | Yes |
Quizzes | Yes |
FREE
Siyuan W –
there are a lil bit disordered of the course arrangement
John S –
Very enjoyable course!
Angelos M –
It is a really nice course but a bit dated.
Ignacio G S –
Excellent course from the best professionals in the world. The Futures content should be tested as well.
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.
Marcin Z –
Better than the first part!
Subodh C –
The structure of course could be refined to be more coherent.
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.
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.
Bidhya N S –
The course is not structured well. Also concepts like monads and functors are not covered in detailed way.
Bidhya N S –
The course is not structured well. Also concepts like monads and functors are not covered in detailed way.
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.
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.
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.
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.
Light0617 –
great!!!
Light0617 –
great!!!
Alex L –
Definitely challenging. Sometimes there were some tricky gaps between what the lectures covered and what the assignments were looking for information wise.
Alex L –
Definitely challenging. Sometimes there were some tricky gaps between what the lectures covered and what the assignments were looking for information wise.
Andrius V –
Course material needs reviewing and updates
Andrius V –
Course material needs reviewing and updates
Ankur S –
Very Good. Some parts can be provided with some material to refer . Example reactive programming.
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.
Ankur S –
Very Good. Some parts can be provided with some material to refer . Example reactive programming.
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.
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.
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.
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.
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.
Jonathan S R –
everything was intuitive and enjoyable
Jonathan S R –
everything was intuitive and enjoyable
Tihomir N –
One of the very top courses on Coursera. Prof. Martin Odersky, is truly incredible !
Tihomir N –
One of the very top courses on Coursera. Prof. Martin Odersky, is truly incredible !
Yichun Y –
The last week’s lectures are hard to grasp, but everything else is excellent!
Yichun Y –
The last week’s lectures are hard to grasp, but everything else is excellent!
Sebas O C –
nice
Sebas O C –
nice
Georgreen –
The intructor is very clear and the materail is intresting, enough to capture your attention.
Georgreen –
The intructor is very clear and the materail is intresting, enough to capture your attention.
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.”
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.”
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.
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.
Daniel B –
Good course with a lot of useful material though not quite as polished as the first one
Daniel B –
Good course with a lot of useful material though not quite as polished as the first one
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..
Shi Y –
A bit of confusion about the assignment instruction.
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..
Shi Y –
A bit of confusion about the assignment instruction.
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.
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.
Gabriele A –
Good course but not much coherence between lessons and exercises.
Gabriele A –
Good course but not much coherence between lessons and exercises.
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.
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.
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.
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.
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!
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!
Milan V –
The 2nd part was kind of confusing and less concise.
Milan V –
The 2nd part was kind of confusing and less concise.
Ivan P –
The first week is simply useless 🙁
Ivan P –
The first week is simply useless 🙁
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”.
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”.
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.
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.
Patrik –
Challenging and rewarding
Patrik –
Challenging and rewarding
Max B –
Cool stuff
Max B –
Cool stuff
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”.
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”.
Jiby N –
Homework could be a little tougher, especially the last one (calculator)
Jiby N –
Homework could be a little tougher, especially the last one (calculator)
OLEKSIY B –
It’s was an awesome and amazing journey! Like in my childhood on interschool programmers contests
OLEKSIY B –
It’s was an awesome and amazing journey! Like in my childhood on interschool programmers contests
Akshay A –
Last two weeks are definitely confusing, since the staff seems to have rearranged and removed some ofthe content.
Samir V –
Really great course!
Akshay A –
Last two weeks are definitely confusing, since the staff seems to have rearranged and removed some ofthe content.
Samir V –
Really great course!
Masud H –
Very good.
Masud H –
Very good.
Tomasz N –
In week 4 sudden change of teacher and topic from reactive programming principles to Futures is confusing.
Tomasz N –
In week 4 sudden change of teacher and topic from reactive programming principles to Futures is confusing.
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
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
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
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
Yuan Y –
material for first two weeks are good. third and fourth are not so good. assignment is a bit too simple
Yuan Y –
material for first two weeks are good. third and fourth are not so good. assignment is a bit too simple
Edvinas ` –
Interactive quizzes seem to have been missing from the videos.
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 : )
Peter B –
Great course! Once they work out the bugs with grading the calculator project it will be 5 stars.
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.
Hong C –
Lecture 1.4 Monads is too abstruse.
Aydar U –
That was really amazing!
Taewoo K –
Good