It took me much longer than expected to finish the course and sometimes it made me feel stupid and helpless. Diving into functional programming was a mind bending experience, totally worth time spent!
As expected Martin is awesome in explaining principle of functional programming. I have started reading the book as well to make sure I keep up with the knowledge which I have gained from this course.
By Michael W•
By Oren Z B M•
By David S•
Excellent intro course, but not without issues.
In general, pro's include reasonable length lectures, provided by _the_ leading expert in the field, and designer of the Scala language. Focus on functional programming techniques versus syntax nuance is a significant benefit - Scala is easy to get bogged down in. Pro's also include the fact that lectures have had at least some amount of post-production work done, and manage to make voiceover/slides/whiteboard consistent and coherent better than most similar online classes/tutorials.
The assignments are reasonable, and the time estimates of ~3 hrs each was about right on the average, at least in my case (senior programmer with deep background in C/C++, and just enough Java to be dangerous and dislike boilerplate).
Some drawbacks - there was no clear segue from "basic syntax" to "collections framework". That's _IMPORTANT_. In 20/20 hindsight, I would have benefitted from a big, bold slide before the first mention of "foreach" that said "stop here, go to the text, and skim the chapters on collections for 'foreach' and other common operations. This is a building block for everything to follow, and NOT unique to just lists."
The major factor keeping this from being a '5' in my mind were that the assignments didn't always make sense as written, and I had to go back and forth between the assignment writeup, the source code and the test cases to really sort out what was required. The assignments could become _much_ more effective if they were provided with more test cases, including expected FAILURE cases and not just bare minimal acceptance cases.
By Reece S•
My background: Physics PhD, background in Matlab and some limited Python.
Brief review: A decent course, very difficult at first but gets fun, especially the final Anagram assignment. Expect it to take longer than the estimated time if you're not familiar with Java. Could do with more examples in lectures to drill home tools introduced.
Verbose Course Review: I found the learning curve on the first few weeks very steep coming from non-java background, and the references to java methods and types weren't helpful. But once I got past the first two weeks, which I found the most difficult of the whole course, I started to really enjoy the lectures and assignments.
Took me much longer to complete than the estimated times as I had to do a lot of reading around the topic to really get my head around the tools introduced. On top of that I found the order in which things are introduced a hinderance. We jump straight into recursive functional programming and only later introduce the object and class structures. As the object structures appear in the examples at the start, I found this confusing as a fresh-eyed learner.
Lectures really lack enough examples, and expect you to learn from one very simple example and expand on that in the assignments with much harder implementations. Found the instructions on how to test and debug code challenging, but once I worked it out then my learning really accelerated. It's impossible to write a course which is accessible to all prior coding backgrounds, but I think this course could have a better introduction so it's not such a hurdle on the first week.
By Ezequiel D D D•
This course is very good and helped me to dive into functional programming and Scala language.
Teacher is very clear and videos are good. The idea of mixing functional style programming with a language like Scala makes it a good challenge to learn and/or strength two skills in one course.
At some points I found some of the assignments more focused on algorithmic problems more than functional programming or Scala itself, which can feel a bit complex.
On the other hand classes do not mention almost anything about the performance issues that can arise when using recursion at this level, which leads to overflow or timeout problems when submitting and grading assignments or if they are used in real work situations. I understand for a first course it could be reasonable.
Finally, many exercises in the assignments depend on the previous ones so if you get blocked at one, you may not be able to continue.
Overall, I recommend and It's a good course which will for sure improve your programming skills, and combined with other courses in the specialization can be an interesting challenge.
By James M•
Good introduction to functional programming and Scala. Although, the lectures and assignments can get rather mathy (pointless proof of refactoring using maths, Pascals Triangle, Huffman Coding, Counting Change, etc) If you don't have a mathematical background, I would suggest getting the basics of programming down before starting this course so you have less to worry about.
I found myself reading up about the maths behind some of the assignments before tackling them, when this could've been avoided with less mathematical assignments. I looked into the first assignment of the next module in the specialization and thought to myself: "Why bother" as it just continues the trend of solving more complex mathematical problems -- something rarely tackled as a professional developer.
I would've liked to see the standard collection functions taught and used more frequently: map, flatmap, fold, etc.
By Jim N•
I don't really have any experience in any of these languages except perhaps C from many years ago. However, I do have experience in Lisp and I found that the languages are extremely similar. In many cases I could think in Lisp and write in Scala, which is sort of like Lisp with type annotations, not always, but often. There are a couple of places in the course where the author assumes you know java. I think this is a mistake. You basically need to know the names of some java methods to work the exercise. But I just asked in the forum and someone gave me the correct method names.
By Erin H•
I would echo the other reviews about how it took a long time to get the environment set up. I feel like those videos should be redone since they are a couple years out of date.
Otherwise, the content and instructor was great. You should be familiar with core computer science concepts before doing this course as you jump into concepts like binary trees. The assignments were definitely challenging. Scala is really strict on data types, structures, etc. so some stuff you can get away with in scripting languages commonly used in data (like Python, R, etc.), you cannot get away with here. This probably was the toughest hurdle for me as I have become so accustomed to scripting languages. That being said, the challenge was worth it and you will learn a lot about Scala in this course.
By Alejandro S M•
Great course and very helpful. The following details prevent me from giving it a 5 stars review:
* the explanation of the tools to use during the course is very messy. It may discourage people that are less used to work their way around searching working tools.
* The audio of the videos sometimes loses A LOT of quality.
* For me it seemed like all the assignments were on spot with the balance between theory and standalone thinking. However, I really noticed the jump of time invested for the last assignment. I think the course would highly benefit from having an assignment on Week 5, instead of having that pause in between.
Anyway, the course was greatly structured and interesting. Can't wait to go on with the whole specialization!
By Anirudh J•
I think it's a fine course with some amazing concepts that has brought me to appreciate functional programming. I would not view it as a beginner's course on Scala since I think this course can be better appreciated only after having been introduced to Scala at a beginner's level. I am someone who had to struggle with the programming assignments and spent several hours on them because I do not come from a computer science / traditional programming background. My earlier experience with coding has only been from a statistician's point of view with fluency in Python and R. Material could have been better presented, but I guess, who cares when it's coming from the man who invented the language itself!
By Jared T•
It's a good course,although it starts a little slowly and then really builds up a lot of steam towards the end. I think it should be paced out to be an 8-week course and include shorter, less ambitious assignments. I personally found that the assignments lead to onerous difficulty unless one actively seeks out different aspects of the language other than what was taught in this course (particularly native list methods), and once that has begun, then the last two weeks of it seem like a long-winded slog.
It's nice to be able to learn programming style from Odersky himself. I recommend the text "Functional Programming in Scala" to read and work through during the course.
By Elyasin S•
Great course about functional programming and Scala.
The lectures are well constructed and well explained with some exercises in between. The sound is unfortunately sometimes low, but I used headphones for that.
The assignments are challenging and help you deepen your knowledge effectively. However, the forum is not very lively. You might not find it difficult to do assignments on your own. I suggest to use StackOverflow in that case.
It is not taught how to do debugging, though this course is not meant for beginners I think, and as such probably understanding and debugging a Scala program might be expected to be learned autonomously.
By Choi L•
This course was a big challenge for me. It was such an opportunity to recall the Scala I had studied over the past year and try it out.
This course is never easy. This is an intermediate course, and the topic is Scala because it is difficult to get a running curve. In addition, the intermediate evaluation problems of considerable difficulty are really difficult. Unless you are familiar with functional programming, folding, and reducing, this is a difficult problem to solve. So it would be difficult to give five stars.
I'm very happy to finish all the assignments and complete this course, but I plan to see one more time later.
By Cesar A M•
Good topics coverage, well explained.
I think the only think that this could be improved is regarding the assignments-practices. Practices could be short and quick exercises, for instance, in data structures module a set of quick exercises for list (Given a unsorted list, sort it. Or replace all items starting with specific character and its length grater than the ASCII of the given character), regarding strings, one quick exercise ofr the most of all the functions from String API. This in order to try to think about solution with all the knowledge that we got from the course.
Thanks for the knowledge!!
By Edward G•
Enjoyable and informative. The assignments were workable, though they were not always super-well coordinated with the course material. The in-lecture exercises are of uneven quality. The course material is obviously spliced together from other sources in places.
All this notwithstanding, the lectures are interesting, and the exercises help a lot to cement in the concepts. As an experienced programmer, but a newcomer to functional techniques, this was satisfying. I'm aware that the other courses in this sequence suffer from similar issues to what I outlined, but I'm moving ahead anyway.
By David B•
Very good course. I was new to FP and Scala and didn't have a Java background. I have to agree with previous reviewers who say this course is not for Scala beginners. I had to learn the language with a book alongside taking the course so it ended up being quite time consuming (more than 10 hours/week). The material was well presented and I found the programming exercises challenging, fun, and educational. Only taking off a star because of a few very minor glitches in the video. Highly recommended but again, not for beginner programmers as some of the concepts discussed are quite advanced.
By Kenny V•
Background: Test Analyst with 3 years using Scala for test automation. Despite this, the course itself was still engaging and challenging. I guess in large part the complexity of programming for test automation isn't as complex (or at least hasn't been for my projects so far) as development, so there was a lot of new content for me. Having said that, we are always encouraged to KISS (Keep it stupidly simple) haha!
I'm sure that for those who have had 1 year of programming in development would not find it as difficult as I have. Overall, it has been a good and exciting experience.
By Anas A•
IMHO the difference of functional programming to imperative programming wasn't very clear. On the other hand, this course gives a good grasp on handling and writing Scala code. Martin does a great job in his videos.
NOTE: the programming excerises need some scruitinization. They are a bit misleading here and there. In particular some important tests are missing and it takes big effort to understand what is going wrong sometimes. Tests as such are just a translation of functional specifications into code and should hence be as comprehensive as possible.
By Arpit S•
The course starts slow and might appear to teach trivial concepts at the start but don't be fooled. The instructor's way of building up basic blocks that will key to understanding the concepts later on.
The assignments test a basic understanding of the concepts and are not focused on optimization. There is a lot more theoretical knowledge offered that remains untested by the assignments. It is left to the students to decide how much they want to learn from that.
Overall, this was a good introductory course to both functional programming and Scala.
By Carlton S•
I really enjoyed the assignments, and thought they were a good way to get to know the basics of the language. They were similar to the type of "toy problem" that I like to do myself when learning another language, and were at a reasonable level of difficulty.
I could have done without the proofs; I sort of skipped over these parts (about an hour of lecture, I guess). That's just my preference - I guess I'm not super proofy.
There were very minor parts of the course that need updating, but nothing that required additional effort to get past.
By Ananya P•
Very helpful course for beginners, and congratulations for putting up such a great work together!
But a few suggestions -
1) Most importantly, the assignments were very VERY hard for starters in functional programming and Scala. It would be much more enjoyable to many more if it's made a little easier.
2) The content was great, but I believe a little more (both in breadth and depth) was needed to be covered. Moreover the categorization can be rethought and a little re-organized.
Nevertheless, a great course! Will surely recommend this one.
By Mashfir M•
This course is very challenging for those uninitiated in data structures and algorithms. The 1+ year programming experience prerequisite is a little loose but is technically correct. As someone with little formal CS background, this course was quite challenging due to the requirement of learning data structures and algorithms alongside functional programming. Ultimately though, this course definitely expanded my thinking in terms of programming and the dozens of hours spent have made me feel more comfortable working in FP paradigms.
By Karina C•
Some parts of the homework was really difficult because not enough examples to explain what was happening-- additionally, because there are so many different ways to execute something, it would be nice to have more guided suggestions on what path to take (i.e. your solution might have an awful complexity, but there is no guidance really on how to improve it...). Odersky's videos have some points that are not very efficient, would be nice to clarify that in the video that this is not an optimal solution to be using in practice.
By Mitchell S•
I learned a lot about scala, but some of it was a little too abstract for my learning purposes. Defining our own set of boolean operators is a great way to show how the scala language works but in the end can be a frustrating exercise, especially for people who are new to functional programming. Once the course got into the last 2 projects I started to have a lot of fun and really learn about the Scala language, the projects became more practical and "codey" instead of being very abstract and "mathy".
By Ulrika W•
Lots of practical examples. Good links to more info on the web. Interesting mix of programming theory and practical learning of Scala.
It would have been interesting with some applications of functional programming that were less mathematical. Can it be as useful in more data-oriented, administrative systems?
The estimated time needed to complete each week was very low. I had to spend at least two or three times as much time as estimated even though I am accustomed to Java and all the tools used.