Functional Programming Principles in Scala

Provided by:
9/10 stars
based on  46 reviews
Provided by:
Cost FREE , Add a Verified Certificate for $79
Start Date Upcoming

Key Concepts

lightbulb
We've created a summary of key topics covered in this course to help you decide if it's the right one for you. Click individual badges to see more courses on the same topic.

Course Details

Cost

FREE,
Add a Verified Certificate for $79

Upcoming Schedule

  • Upcoming

Course Provider

Coursera online courses
Coursera's online classes are designed to help students achieve mastery over course material. Some of the best professors in the world - like neurobiology professor and author Peggy Mason from the University of Chicago, and computer science professor and Folding@Home director Vijay Pande - will supplement your knowledge through video lectures. They will also provide challenging assessments, interactive exercises during each lesson, and the opportunity to use a mobile app to keep up with yo...
Coursera's online classes are designed to help students achieve mastery over course material. Some of the best professors in the world - like neurobiology professor and author Peggy Mason from the University of Chicago, and computer science professor and Folding@Home director Vijay Pande - will supplement your knowledge through video lectures. They will also provide challenging assessments, interactive exercises during each lesson, and the opportunity to use a mobile app to keep up with your coursework. Coursera also partners with the US State Department to create “learning hubs” around the world. Students can get internet access, take courses, and participate in weekly in-person study groups to make learning even more collaborative. Begin your journey into the mysteries of the human brain by taking courses in neuroscience. Learn how to navigate the data infrastructures that multinational corporations use when you discover the world of data analysis. Follow one of Coursera’s “Skill Tracks”. Or try any one of its more than 560 available courses to help you achieve your academic and professional goals.

Provider Subject Specialization
Humanities
Sciences & Technology
4733 reviews

Course Description

Functional programming is becoming increasingly widespread in industry. This trend is driven by the adoption of Scala as the main programming language for many applications. Scala fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with both Java and Javascript. Scala is the implementation language of many important frameworks, including Apache Spark, Kafka, and Akka. It provides the core infrastructure for sites such as Twitter, Tumblr and also Coursera. In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically. The course is hands on; most units introduce short programs that serve as illustrations of important concepts and invite ... Functional programming is becoming increasingly widespread in industry. This trend is driven by the adoption of Scala as the main programming language for many applications. Scala fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with both Java and Javascript. Scala is the implementation language of many important frameworks, including Apache Spark, Kafka, and Akka. It provides the core infrastructure for sites such as Twitter, Tumblr and also Coursera. In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically. The course is hands on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. The course is complemented by a series programming projects as homework assignments. Learning Outcomes. By the end of this course you will be able to: - understand the principles of functional programming, - write purely functional programs, using recursion, pattern matching, and higher-order functions, - combine functional programming with objects and classes, - design immutable data structures, - reason about properties of functions, - understand generic types for functional programs 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.
Functional Programming Principles in Scala course image
Reviews 9/10 stars
46 Reviews for Functional Programming Principles in Scala

Ratings details

  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.

Sort By
emediquei profile image
emediquei profile image
9/10 starsCompleted
  • 5 reviews
  • 5 completed
6 years, 10 months ago
This course was a great way to learn Scala. Although I had some contact with functional programming before, this course helped me to refresh that knowledge and better understand functional programming concepts, which are proving very useful on my work as a software developer.
Was this review helpful? Yes0
 Flag
Mayank Singh profile image
Mayank Singh profile image
8/10 starsCompleted
  • 3 reviews
  • 3 completed
6 years, 11 months ago
I took this course to learn concepts from functional programming. Thinking in functional sense is often helpful for a programmer. What also attracted me was the fact that it was being taken by a language design veteran. However, the course used scala which is a hybrid of functional and oop. It was pretty tough to get a hang of the assignments. I used to check up the discussion forums if I got really stuck. What was new for me was a reference to the design of computer programs by peter norvig in a lecture. It was awesome to see courses mentioning other courses in their lectures. I hope to see many such linkings happening among other courses. But overall the course was good.
Was this review helpful? Yes0
 Flag
Alex Perrone profile image
Alex Perrone profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
7 years ago
Absolutely phenomenal course. It taught me the fun, conciseness, and promise of functional programming through learning the Scala language. Scala is very interesting in that it is a fusion of functional and object-oriented programming paradigms. So you can define your own types and classes as in Java, but you can write these in a functional, elegant, and very concise way (many functions in the course are only 1 or 2 lines -- sometimes very hard- earned, however!). Anyone interested should see Martin Odersky's YouTube talk "Working Hard to Keep It Simple." Martin Odersky is a very effective teacher, extremely knowledgeable (not only invented Scala but wrote the most recent Java compiler) and most importantly is very "into" this field. His love of the subject is inspiring to me. Highlights of the course: very good programming assignments, which were creative, non-trivial and really showcased what Scala does well; Scala worksheet; combi... Absolutely phenomenal course. It taught me the fun, conciseness, and promise of functional programming through learning the Scala language. Scala is very interesting in that it is a fusion of functional and object-oriented programming paradigms. So you can define your own types and classes as in Java, but you can write these in a functional, elegant, and very concise way (many functions in the course are only 1 or 2 lines -- sometimes very hard- earned, however!). Anyone interested should see Martin Odersky's YouTube talk "Working Hard to Keep It Simple." Martin Odersky is a very effective teacher, extremely knowledgeable (not only invented Scala but wrote the most recent Java compiler) and most importantly is very "into" this field. His love of the subject is inspiring to me. Highlights of the course: very good programming assignments, which were creative, non-trivial and really showcased what Scala does well; Scala worksheet; combinatorial search, pattern-matching, and built- in functional programming functions like map, filter, fold, anonymous functions, and for-expressions (as opposed to for-loops) are all great to work with. Streams blew my mind. Good automated grading and feedback system. The course left me with the impression that not only can Scala be used in the real world (after the initial steep learning curve, that is) but also it is such a great teaching tool. I learned so much about programming and how low-level frankly a lot of programming in Java is in an undergrad CS curriculum. I think CS students could really benefit from learning Scala. Highly recommended!
Was this review helpful? Yes4
 Flag
Afref Fetter profile image
Afref Fetter profile image
10/10 starsCompleted
  • 12 reviews
  • 12 completed
7 years ago
Prior experience in the field: Tried to learn haskell. Didn't do too well. Like: There were no pointless quizzes, only programming assignments. The programming assignments were very interesting and challenging [the discussion forums helped]. The lectures had assignments in them, with solutions (so that you can see Martin Odersky's approach). Being taught by the inventor of the language meant the language was concisely yet (almost) completely covered. Functional programming is a very exciting paradigm. There was a "cheat sheet" and an "Assignment feedback" section that helped underline and rectify some common errors in students' code. The programming assignment checker was very thorough. The course was very well rounded - as an example, we learned about test suites as well! Dislike: Felt some of the lectures could have been spruced up/made shorter. Suggested improvements: Provide official solutions for the assignments. Overall: Martin... Prior experience in the field: Tried to learn haskell. Didn't do too well. Like: There were no pointless quizzes, only programming assignments. The programming assignments were very interesting and challenging [the discussion forums helped]. The lectures had assignments in them, with solutions (so that you can see Martin Odersky's approach). Being taught by the inventor of the language meant the language was concisely yet (almost) completely covered. Functional programming is a very exciting paradigm. There was a "cheat sheet" and an "Assignment feedback" section that helped underline and rectify some common errors in students' code. The programming assignment checker was very thorough. The course was very well rounded - as an example, we learned about test suites as well! Dislike: Felt some of the lectures could have been spruced up/made shorter. Suggested improvements: Provide official solutions for the assignments. Overall: Martin Odersky gets you up to speed with Scala and functional programming really fast with this short course. It is demanding, but if you have even the slightest interest in functional programming (or want to learn it), a MUST take.
Was this review helpful? Yes3
 Flag
Gavin Conran profile image
Gavin Conran profile image
10/10 starsCompleted
  • 25 reviews
  • 25 completed
7 years, 1 month ago
It is a universal truth that you have to work hard to keep things simple and this is reflected in both this course and the programming language Scala. Having learned the basics of anonymous functions through Ruby this course in Scala pulled back the curtain of functional programming making it clear why Scala is a concise, elegant and scalable language for parallel / concurrent programming. What is equally impressive is Martin's own ability to learn as he and his team have absorbed the best structural aspects from other MOOCs.
Was this review helpful? Yes1
 Flag
Dirk Meister profile image
Dirk Meister profile image
10/10 starsCompleted
  • 2 reviews
  • 2 completed
7 years ago
A really good course. I knew Scala before, but I used it more as a more consise Java. The course intensivly treats the functional programming basics and my Scala code improved a lot. I can only recommend it. However, the initial tool setup of Scala is still tedious.
Was this review helpful? Yes0
 Flag
dan profile image
dan profile image
9/10 starsCompleted
  • 2 reviews
  • 1 completed
7 years ago
This was a nice course. Even for someone with extensive experience in functional programming, it was very interesting to see what Odersky (the father of Scala) thought it was worth emphasizing. For instance, he thought it was worth spending a significant chunk of time talking about call-by-name vs. call-by-value at the very beginning of the class, even though the first couple videos were only a total of half an hour long. I could go on for pages about what he emphasized, but if you're curious, why not just see for yourself? There were some downsides to the course, though. First, the course seems more like a video of some parts of a regular classroom course, as opposed to something like the Udacity courses, which are clearly designed from the ground up to be online courses. Secondly, some of the homework used information that wasn't covered in the class. If you look at the forums for the class, you can see people with less theoretical... This was a nice course. Even for someone with extensive experience in functional programming, it was very interesting to see what Odersky (the father of Scala) thought it was worth emphasizing. For instance, he thought it was worth spending a significant chunk of time talking about call-by-name vs. call-by-value at the very beginning of the class, even though the first couple videos were only a total of half an hour long. I could go on for pages about what he emphasized, but if you're curious, why not just see for yourself? There were some downsides to the course, though. First, the course seems more like a video of some parts of a regular classroom course, as opposed to something like the Udacity courses, which are clearly designed from the ground up to be online courses. Secondly, some of the homework used information that wasn't covered in the class. If you look at the forums for the class, you can see people with less theoretical background struggling with some of the assignments, and none of the background was listed in the pre-requisites for the course. Third, the grading criteria for passing the course wasn't released until after the last assignment had been released. It turned out you only needed 60%, which was trivial, given how the course was run (no quizzes, only programming assignments, and the assignments were very generously graded; you could get 60% on most of the assignments by passing the unit tests for the trivial helper functions for the assignment and not even doing the bulk of the work). You might say that my third complaint obviates my second complaint, but you wouldn't get much out of the course if you only did that, and there was no way to no you'd pass if you did that until you'd already done all the assignments. That being said, I liked the course, and I'm planning on taking the follow-up course that's being planned.
Was this review helpful? Yes0
 Flag
kshmatov profile image
kshmatov profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
7 years, 1 month ago
One of the best courses in coursera. Martin is very good theacher and I get lot of ideas for using functional paradigm and scala. Thank you, Martin!
Was this review helpful? Yes0
 Flag
Chris Simmons profile image
Chris Simmons profile image
10/10 starsCompleted
  • 7 reviews
  • 7 completed
7 years, 1 month ago
This was a great course. Martin clearly has a deep knowledge of the subject matter (he should - he created Scala!), but he is also able to convey this knowledge to students in an easy-to-follow, incremental way. The course's greatest weakness was touched upon in the last lecture - although Martin began the course talking about how functional programming is great because it's easy to take advantage of parallelism, this isn't touched on in the course. I'm excited to hear that he's planning a follow-up course, and will definitely take it once available.
Was this review helpful? Yes0
 Flag
Jeanne Boyarsky profile image
Jeanne Boyarsky profile image
9/10 starsCompleted
  • 33 reviews
  • 29 completed
7 years, 1 month ago
I haven't used any functional programming since college. Having a course taught by the creator of Scala was definitely a draw. The lectures were clear. A good mix of quizzes (think about how you would approach this, what do you think would happen here) and explanation. I like that the homeworks used Scala's junit extensions and sbt (build tool.) Good practices and automation. It also provided a nice way to test the code. The homeworks varied a lot in difficultly. In particular, homework 6 was a lot harder than homework 5. Yet #5 had an extra week to work on it. There were good conversations in the forums. I took off half a star because I felt like we jumped around a lot. I really enjoyed the course though.
Was this review helpful? Yes0
 Flag
Robert Komartin profile image
Robert Komartin profile image
8/10 starsDropped
  • 19 reviews
  • 16 completed
7 years, 1 month ago
I have hesitated quite a lot whether to write a review for this course - so let me start with the disclaimer: I gave up mid-course, after dutifully going through the initial steps of installing the tools and doing the first three (or four, if you count the intro one too) homeworks. Now, I feel the situation here is a bit more complex to evaluate than with most of the other courses I went through (online or offline): it is not that the course or the professor disappointed me - I might say the main problem is just the opposite... Let me explain: the course is absolutely beautiful, and the professor is brilliant - I might even say he's a genius. But... I felt again and again that all this beauty is just art for the sake of the art - and that the aspects related to "programming as a craft" were (maybe deliberately) ignored... In a nutshell - the course convinced me NOT to use Scala as a language of choice for any practical projects: yes,... I have hesitated quite a lot whether to write a review for this course - so let me start with the disclaimer: I gave up mid-course, after dutifully going through the initial steps of installing the tools and doing the first three (or four, if you count the intro one too) homeworks. Now, I feel the situation here is a bit more complex to evaluate than with most of the other courses I went through (online or offline): it is not that the course or the professor disappointed me - I might say the main problem is just the opposite... Let me explain: the course is absolutely beautiful, and the professor is brilliant - I might even say he's a genius. But... I felt again and again that all this beauty is just art for the sake of the art - and that the aspects related to "programming as a craft" were (maybe deliberately) ignored... In a nutshell - the course convinced me NOT to use Scala as a language of choice for any practical projects: yes, it is truly beautiful, and this in a manner only the greatest works of art can be - but this is very far from the "industrial strength", languages which will be used not only by the best and the brightest, but also by armies of average programmers. Maybe the efforts of the language' promoters (in courses like these) should be directed towards showing how Scala (and Akka, and Play) can be used EASILY, and IN A PRODUCTIVE MANNER, to develop large scale projects. But maybe it's just me...
Was this review helpful? Yes0
 Flag
Tejas Bubane profile image
Tejas Bubane profile image
9/10 starsCompleted
  • 1 review
  • 1 completed
7 years, 1 month ago
This course has introduced me to the awesome world of functional programming. I never new recursions could be used this effectively! However the level is not for absolute beginners in programming. You should have a fair amount of pogramming experience to uderstand the material and be able to do the assignments. Overall the course is good, but I feel it is not completely self contained. You need to read from other sources and "understand" the concepts (I am currently lagging a bit in this area due to the lack of time). SICP (Stucture and Interpretation of Computer Programs) is a good book to read along with this course. "This book is an absolute gem" as the instuctor quotes.
Was this review helpful? Yes0
 Flag
Prashidha Kharel profile image
Prashidha Kharel profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
6 years, 8 months ago
I signed up for this course after watching the YouTube video of the Professor's presentation on O'Reilly OSCON Java 2011: "Working Hard to Keep It Simple". Functional Programming had a very different way of approaching problem solving, and it was really fascinating. It's a very nice course, well structured, and easy to grasp all of the new Ideas of Functional Programming. Assignments are also great and so is Scala :)
Was this review helpful? Yes0
 Flag
Alexandru Chirițescu profile image
Alexandru Chirițescu profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
7 years, 1 month ago
It's truly a great introductory course in functional programming and Scala in particular. The lectures are very well structured and the examples from the videos are really helpful on understanding the theoretical concepts. The assignments increase in difficulty as the course evolves and all the assignments are split in small pieces to help you get the hang of it. Even so, the assignments can be quite challenging, especially if you want to write them in an efficient way. Don't get discouraged from the first assignments, try to change your way of thinking, the solution will finally hit you! :-) Besides the templates, the homework also includes some unit tests which you can use to test your code from a functional point of view. The assignments are graded using more unit tests than the ones that are provided to you and also you get part of the points for code style. With a course completion diploma or without, the course is a great resou... It's truly a great introductory course in functional programming and Scala in particular. The lectures are very well structured and the examples from the videos are really helpful on understanding the theoretical concepts. The assignments increase in difficulty as the course evolves and all the assignments are split in small pieces to help you get the hang of it. Even so, the assignments can be quite challenging, especially if you want to write them in an efficient way. Don't get discouraged from the first assignments, try to change your way of thinking, the solution will finally hit you! :-) Besides the templates, the homework also includes some unit tests which you can use to test your code from a functional point of view. The assignments are graded using more unit tests than the ones that are provided to you and also you get part of the points for code style. With a course completion diploma or without, the course is a great resource for people who want to get started with Scala or FP. I recommend it 100%!
Was this review helpful? Yes0
 Flag
tantram profile image
tantram profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
7 years, 2 months ago
Definitely the funnest assignments I've done in any comp sci program
Was this review helpful? Yes0
 Flag
Eran Medan profile image
Eran Medan profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
7 years, 2 months ago
Great course, well structured, the video lectures are to the point the lecturer knows a lot about programming in general, and functional programming specifically (and obviously knows Scala pretty well, he created it) The best part is the assignments, they are really nice. Not trivial on one hand, but harder than they need to.
Was this review helpful? Yes0
 Flag

Rating Details


  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.