21 ms·
‘Functional Programming Principles in Scala’ starts today
- coopdog 14y agoCan't recommend this course enough. Martin Odersky is a great lecturer and very passionate about functional programming. Learning Scala was a useful bonus too.
- cdman 14y agoI had the opposite experience: while the lectures were quite good, the exercises were many times confusing and frustrating - they kept refusing my solution because there were hidden assumptions, not stated clearly in the problem definition.
- pramode 14y agoThat's strange - I did not have any difficulty with the exercises and found them to be clearly specified! All the exercise problems were neatly broken down into small functions - you simply had to fill up the body of the functions!
- bazzargh 14y agoThe exercises were not all that difficult (especially given that there were unit tests for almost all of them), but they did have issues. Some of the tests required you to use functions that didn't appear until one or two lectures later. Most likely the GP is complaining about the fact that the server-side tests were on bigger datasets than the ones that shipped with the code; but that wasn't a big issue as you could keep resubmitting up to the deadline. I found it useful to remember that almost all of the solution functions were very short; most were one line, some up to five; if you were writing long functions you're most likely doing it wrong. Similarly, the local tests should finish almost instantaneously. If they take 30s with the local dataset, they'll time out with the larger dataset on the server.
- bad_user 14y agoFrom my experience with the first iteration of this course and with the problems experienced by people on the course forum ... 99.99% of problems came from NOT reading the assignment. I went through all the homework and passed the course with the maximum grade. Except for the last homework where I too was guilty of the above, all submissions took the maximum grade from the first try. I don't remember encountering any confusing problem definition and even if a problem is confusing to you, there were plenty of people available on the forum and all you had to do was to ask for clarifications. Also, in regards to solutions, there were really helpful advices in the assignments' source-code. Sometimes all you had to do was to translate English to Scala.
- Petefine 14y agoAgreed. This course (my first into to functional programming) makes it hard to go back to working in Java. Things that can take a lot of code, such as grouping, filtering and aggregating data, can usually be achieved very naturally and concisely in Scala.
- kyllo 14y agoOh, Java is just excruciating to use after learning functional programming. On the other hand, I don't know if you use Javascript much, but you'll see it in a very different (much better) light after taking a FP course.
- teacr 14y agoOdersky is a truly brilliant language designer. However, he tends to talk slooooowly and methodically (him being German/Swiss is probably related), which makes watching his videos kind of unfun, and there are no slides. There's an hour of lectures, and I'm pretty sure I could say the same stuff in a 10 minute video at most. I mean, this kind of way of teaching is really ancient and outdated; why would you subject yourself to 7 weeks of watching boring videos, when you could just read his whole book RIGHT NOW in 1-2 days, and then read other books, tutorials on websites, etc.?
- microtherion 14y agoYes, I found the class somewhat slow going, and the programming environment fairly unpleasant (I’m not used to working in Eclipse). I ended up dropping the class somewhere in the middle. Generally, I learn better from books than from lectures, but I found that some of the lecturers in online courses are truly outstanding (Prof Agarwal in Circuits and Electronics at MITx, Profs Ng (Stanford, Machine Learning), Egerstedt (Georgia Tech, Control of Mobile Robots), Pattison (Berklee, Songwriting)), so listening to their lectures was worth it. I did not quite find Odersky as strong as a lecturer.
- sampo 14y ago> he tends to talk slooooowly `mplayer -af scaletempo` and then pressing ] to increase the speed of the video, without altering the pitch of the sound, was my solution. (And I hear also the Coursera player lets you to change the video speed.)
- avparker 14y agoI took the course last year, and really enjoyed it a lot. It's a very good introduction to functional programming. For anyone unsure about taking the course, I wrote about my experience on my blog [1], maybe that will be of use. I posted more technical details of the course contents on google+ (links in the blog post). [1] http://www.avparker.com/2012/11/25/functional-programming-principles-in-scala/ http://www.avparker.com/2012/11/25/functional-programming-pr... .
- sampo 14y agoFrom your blog: "a lot of material was explained by Professor Ordesky during the videos, so you’d have a hard time trying to do the course without watching the videos" The Stanford Databases class (http://class2go.stanford.edu/db/ http://class2go.stanford.edu/db/) did that part very well (well it did everything very well): Everything that the professor typed in during video demonstrations, was also provided as text files in the course downloadables.
- boothead 14y agoAnyone who's done some Haskell care to comment on whether scala is worth learning? I read the scala book a few years ago, then I decided to go to the source first and learn Haskell. However, I don't see many Haskell employment opportunities available in my area or industry (London, Hedge funds/algorithmic trading). I have however seen an up tick in FP jobs in general, mainly scala or F#. So, those in the know: What should I learn if I want to land a decent FP job? Scala, F#, something else? Or should I continue to wait for Haskell's inevitable word domination?
- arianvanp 14y agoYou'll definitely catch a job sooner with knowledge of F#/Erlang/OCaml or Scala. Though knowing haskell isn't a con! If haskell is on your CV, they know you've got the right mindset. Learn scala wouldn't be difficult for you except from a few quirks : In scala, you explicitly define the order of evaluation, whilst haskell is lazy (we don't care). But the scala course last year on coursera covered that in the first lecture. I come from a java background, but moved to haskell last year. I like both worlds, so scala was lovely to experiment with. If you come from a functional and also an OO background, you can get the gist of scala in a matter of days. If you want a decent FP job, one shouldn't learn a specific language, but adapt the FP mindset. from there, it shouldn't be difficult to switch languages and adapt to the technology that they use at the company you want to work for. In your spare time, just try experimenting with as many languages as possible.
- boothead 14y agoYes I've definitely seen evidence that Haskell has become a marker language on one's CV of the right attitude (somewhat taking over from python a few years ago). In fact one recruiter reported back that a client said "He's done some Haskell, we'll definitely interview him" (that ended up being the job I landed too).
- papsosouid 14y ago>Erlang/OCaml I have to disagree there. Haskell usage outpaced ocaml's nearly a decade ago now. And ocaml has been sitting at a virtual standstill since then, while haskell is moving at warp speed. Look at how many financial institutions use haskell, look at all the talks at conferences that are about haskell. Ocaml and erlang don't even come close to that level of usage or discussion. F# and scala certainly have big leads over haskell, largely due to their platforms.
- mtgx 14y agoWish it had a Google sign-in button. Don't get me wrong, I hate it when sites force you into signing with one of these sign-on services (or worse - Facebook-only sign-in, like Spotify was for a while), but I also appreciate being able to use that quickly when I don't care that much about the site, and I wouldn't waste my time creating a "full account" to see what's about.
- Petefine 14y agoThere are more details available here https://www.coursera.org/course/progfun https://www.coursera.org/course/progfun .
- vitalique 14y agoThere's a page with a description of the course that doesn't require logging in: https://www.coursera.org/course/progfun https://www.coursera.org/course/progfun
- Zolomon 14y agoYeah, I should've submitted https://www.coursera.org/course/progfun https://www.coursera.org/course/progfun link instead. Too bad I can't edit it now.
- pvillega 14y agoTo anyone doing the course or interested in Scala, 2 recommendations: * the blog of Daniel Westheide (http://danielwestheide.com/ http://danielwestheide.com/) has a series of posts (starting at http://danielwestheide.com/blog/2012/11/21/the-neophytes-guide-to-scala-part-1-extractors.html http://danielwestheide.com/blog/2012/11/21/the-neophytes-gui... and currently at lesson 15) which may be worth reading to complement/expand on the course lectures. Probably not useful for the course itself until you’ve finished week 2 or 3, but relevant anyway. * the book “Scala for the impatient”, probably the best book out there about Scala from beginner to advanced level
- spacemanaki 14y agoI'll politely offer some dissenting opinion regarding Scala for the Impatient. I found that it really doesn't live up to its name if you have done any FP before, ever, even in Scheme or Lisp, because Horstmann treats functional programming like a somewhat advanced topic, and doesn't really address it in the first dozen chapters, instead covering file IO, regular expressions, and packages before higher order functions and pattern matching. When he gets to it, FP is covered at an introductory level at first. Instead I think it would have been better titled "Scala for the Impatient Java developer", because it doesn't really get to the meat of what makes Scala different from ML and Haskell very quickly. Even as a beginner text, I think it's a bit lacking due to hurried presentation. This Coursera class is a far, far better presentation of intro FP, and a much better intro to Scala IMHO.
- ilcavero 14y agoFor those of us waiting for the continuation course, Odersky seems to be planning one for the fall. https://twitter.com/odersky/status/315048673069379585 https://twitter.com/odersky/status/315048673069379585
- dkhenry 14y agoI took this course the first time through and really really enjoyed it. This time I got a bunch of my Coworkers to sign up by promising them I could TA the course for them. It should be a good time had by all. Especially since we can then deep dive into parts of it to show how it applies to real world problems.
- michaelochurch 14y agoFunctional programming is the most important CS topic if you want to become a great (1.5+) engineer. No, you aren't going to be doing pure functional programming very often. In the real world, eliminating mutable state is neither possible nor desirable. It's extremely worthwhile to learn how to manage state, though. Hell, even the Unix philosophy (do one thing, do it well) was directly inspired by functional programming, though it couldn't be purely functional (infeasible at the time, plus semantic mutability). TL;DR: If you don't know what "flatMap that shit" means, then it's worthwhile to learn it.
- jasallen 14y agoThis is very well said. I kind of think of it like learning calculus - if you aren't an engineer of very particular types you likely aren't using it directly, but the thinking patterns influence your analytical thinking tremendously.
- seanmcdirmid 14y agoYou should know it, but don't get all ideological and neglect your advanced object or imperative programming training. You might even want to look at gasp other paradigms like rule based coding to broaden your toolbox a bit. tl;dr scala is the best object-oriented imperative programming language I've ever used.
- spacemanaki 14y agoThis is something I think Martin Odersky did really well in this class... he spent a decent amount of time discussing tradeoffs between FP and OOP and how one might arrive at choosing the different features of Scala, even going so far as to cover the "expression problem" in Scala. I think it was a superbly tasteful presentation of Scala and FP.
- seanmcdirmid 14y agoI prefer the pure OO trait-based solution to the expression problem that isn't supposed to exist; pattern matching is not the only way to do it. Scala is just that good.
- kybernetyk 14y agoThis is great and I signed up. I wish there was such a course with Clojure though. (Just a personal preference.)
- orrsella 14y agoExcellent course – highly recommend it. (for newcomers to Scala, but not only.)
- vbtemp 14y agoI cannot recommend this course enough. The lectures and assignments are very well organized. It was worth every minute, and I look forward to a "level 2" FP course from this instructor.
- Refefer 14y agoFor those who have taken it already, what's the time commitment like? I would hate to sign up to find myself swamped with more hours than I can feasibly handle on top of an already full schedule.
- Zolomon 14y agoAt https://www.coursera.org/course/progfun https://www.coursera.org/course/progfun they state that the workload is around 5-7 hours/week.
- jfim 14y agoIt really depends on how quickly you can wrap around your head around FP; I had done a little bit of Scala before the course and usually could code the assignments in an evening. The assignments are really fun, by the way.
- mark_l_watson 14y agoI would like to add one thing to this discussion: Martin Odersky's class (I took it last year) is also very useful if you use other functional languages rather than Scala. I have been using Clojure for about 2/3 of my development in the last year and I found this course to be useful. The lectures are also fun to watch.
- mogrim 14y agoYou're highlighting one of the most positive things about the course: it's functional programming with Scala, in that order. The Scala part is less important than the ideas behind FP. (And I, too, found the course very useful. It's certainly changed how I think about and develop Java code).
- seandhi 14y agoI have been trying to play with Scala for the past year, and I have made some strides, but I keep falling back to language with which I am comfortable to just get things done. This is largely in part to my lack of familiarity with Scala, but I have really wanted to tackle a large project with it. I have read the book that Martin Odersky wrote, but this will be an awesome addition that will, hopefully, push me over that final hurdle to becoming productive. Thank you for posting this! I signed up today.
- prezjordan 14y agoStarted this course late a few months ago. Very enjoyable, unfortunately I missed the "passing" grade by two tenths of a point :) Check it out, they have a very nice setup for grading homework and the videos are very informative.
- joeygibson 14y agoI took this class the first time it was offered, and it was really good. Martin explains things very well.
- grigy 14y agoThe course also does teach Scala. It made me love Scala and it's definitely worth learning.
- maxk42 14y agoWho?
- recursive 14y agoMartin Odersky. FWIW, you can also just go back and read it again.