6 ms·
Stanford CS240h, Functional Systems in Haskell
- Toshio 14y agoAt first I thought "Oh wow, video lectures a la Coursera, awesome", unfortunately these are just written materials. I'm a little surprised at how little love FP gets at the Courseras, EDXs and Udacities of the world. The only thing that's going on at the moment is Martin Odersky's FP principles in Scala.
- rohshall 14y agohttp://dterei.blogspot.sg/2011/10/stanford-haskell-course.html http://dterei.blogspot.sg/2011/10/stanford-haskell-course.ht... He hints that it may become available online.
- nightowl03d 14y agoThat is funny, every time I see a course with a bunch of video lectures and no notes and reading list I move on. My strong preference for on-line learning is a reading list, ideally spread between no more than 3 or 4 books, a syllabus, and list of exercises. If there are videos I listen to them while I am doing the homework associated with the video, but usually I get the homework done before the video finishes. Disclaimer: I can probably get away with this because I already have a PhD and so I have a lot of practice in learning things
- dlo 14y agoIt's really cool how you're able to complete homework while you're watching video. Can you get into more detail about how you're able to do this? My roadblocks to doing this would be that I wouldn't be able to pay attention to what's going on while thinking about a homework problem, that some things need to turn over in my head before I understand it at the level needed to apply it, and that solutions often take a long time to type up, especially proofs and programming assignments.
- nightowl03d 14y agoWhen I was an undergrad and graduate student I got into the habit of always doing the readings pencil in hand, which involves filling in the details of the important proofs, and doing some simple problems of my own devising before going to the lecture. I still do that before I work the exercises for an online course. Of course whether I finish the exercises before the lecture completes really depends on the course. If it is implementing a simple algorithm and devising some test cases for it then it is often the case. If it is implementing an ML algorithm over a large data set, of course not. Also I have been working in open offices for a long time, so I have learned to focus when there is a lot of background noise. I usually do not start paying attention to the lectures unless it sounds like there is a good joke, or I am getting stuck doing the exercises. I also do not actually watch the lectures, I only listen to them unless I get stuck in the exercises.
- pnathan 14y agoI am opposite, I almost never watch video materials or movies, or listen to podcasts. I prefer learning from books. :-)
- wonderzombie 14y agoBooks are nice! I used to feel the same way, in fact. But podcasts, et al, are nice for periods where you're mobile (commuting, walking the dog). I was surprised to find how many more talks and whatnot I could get through just by loading them up on my phone and flipping them on when doing something else which required little attention. YMMV. :)
- pnathan 14y agoYMMV! I've tried that sort of thing, but something in my head just works so much better for me when reading or talking to people... podcast and video just basically make my mind wander, even if it's the coolest thing ever.
- dmmalam 14y agoWhen I was at student at Imperial College, London, programming 1 was all taught in Haskell http://www.doc.ic.ac.uk/teaching/coursedetails/120.1 http://www.doc.ic.ac.uk/teaching/coursedetails/120.1 It seemed like a silly idea then, but in hindsight was a genius move. It normalised the class (prior knowledge in a real didn't matter), and taught programming from first principles. Picking up new languages after this was significancy easier.
- rohshall 14y agoYou are lucky. For first 8 years of my software career, I did not know anything other than C-based languages (except Lisp). Haskell made me realize what 'real' computer science is.
- lclarkmichalek 14y agoUCL does something similar. C is the first half of the first term, Haskell is the second half.
- trhtrsh 14y agoHow do you teach Haskell from first principles? Did you start with the lambda calculus and Core?
- pav3l 14y agoI am not a computer scientist by training. Can someone experienced in Haskell convince me why I should take time to learn it? I do tons of technical/statistical computing (python, Matlab, R) and some web-based projects (database driven mostly). Having math background I can see how FP is elegant and sexy, but what are real practical advantages over OOP or Matlab-style programming?
- tel 14y agoI've been doing the same kind of work as you for a few years now while being somewhat proficient in Haskell. The answer is, to me, that there's absolutely no reason to use Haskell for that kind of work. It's rather conceivable that someone could build a statistical/scientific system that's driven by Haskell that would be useful, but fundamentally systems like Matlab/R/Python are far more suited for the exploratory analysis kind of programming that I used to do. YMMV but I wouldn't be surprised if it didn't. That said, if I were implementing a statistical system I had designed and analyzed in Matlab/R/Python in a complex domain then I'd move to Haskell. I think this issue would begin to evaporate if GHCi treated the IO monad differently. As it is GHCi is extremely valuable for exploring the structure of your own programs, but utterly terrible at exploring data. I find myself either constantly writing complex IO-unwrapping chains or deleting my state data when I build a new function and refresh the environment. I'm building a complex system today that needs really well understood behavior, so I'm using Haskell. Whenever I want to see the data passing through it, though, I load up R.
- lmm 14y agoImmutability means it's a lot easier to change your code safely. And the functional style encourages better separation of concerns, again making it easier to change something in one place. Strong typing is really good in a large codebase for making it harder for errors to propagate - if you make an error in a given function that changes the return type, you can immediately localise the problem to that function. Writing the initial code is likely to be if anything slower in a functional language; the real advantage comes in maintenance. (disclaimer: I don't actually know haskell, though I've used several functional languages and written functional-style code in several more)
- rohshall 14y agoI went through the notes. They are concise, but not too concise. A nice tutorial for people who already know the basics. http://www.scs.stanford.edu/11au-cs240h/notes/ http://www.scs.stanford.edu/11au-cs240h/notes/
- krat0sprakhar 14y agoIs it just me or does anyone else always feels overwhelmed reading the project suggestions? I find the projects listed to be extremely challenging. Project suggestions - http://www.scs.stanford.edu/11au-cs240h/labs/project.html http://www.scs.stanford.edu/11au-cs240h/labs/project.html
- dons 14y agoSome are easy, some are research level. They're all "open source"-style programming : i.e. add real features to real projects on a real time frame. You could expect to apply to do these in the Summer of Code Haskell projects. Challenging, yes, but not unrealistic for competent systems / language people.
- anjc 14y agoEh, yes. Please tell me that, guessing from the course's name, this isn't a 2nd year course in some degree?
- gwern 14y agoI was amused at these suggestions: > You could implement a 'bot that executes untrusted code along the lines of Lambdabot. Lambdabot was written before Haskell was typesafe, and as a result is fairly hairy code and very limited in functionality. Using type safety you ought to be able to achieve something much cleaner and simpler, and that provides far more functionality. > Implement some sort of end-user programmable web-site (like Wikipedia, but for code rather than for information). > Implement an online Haskell REPL environment such as Try Haskll. Using Safe Haskell and some of the recent support in GHC 7.3 for data declarations in GHCi you should be able to provide a far more powerful feature set then existing websites. Try that, and you'll discover that much of the complexity in lambdabot/mueval/tryhaskell-mueval-fork is due to stuff that Safe Haskell won't help with! eg. good luck dealing with 'let x = x + 1 in x'
- metaguri 14y agoTo my dismay CS240h was not offered again this year, probably because David Mazieres is teaching CS140 (Operating Systems) instead.