Teaching haskell at the 42 french school

Hi, as an introduction, it would be a good advice to first look, if you did not heard of it yet, at what the 42 school is: http://www.42.fr/42-revolutionary-computer-training-free-and-open-to-all/ (TL;DR: *"unique pedagogical approach and accessibility to all, completely free of charge, 42 is the most daring response yet to the challenge of information-technology skill development", "**Innovative teaching methods in technology training: Peer-to-Peer learning"*) The school aims to teach a general knowledge of computer science, but does not provide a Haskell course yet. The exercices and projects are built by students, for students. I love haskell and I'd be really happy to teach that wonderful language, and I'd love to hear your suggestions. I was thinking of the haskell's hard learning way. (I gotta say, the school's pedagogy is pretty sadistic). - Recode List, (,), Either, Maybe and their functor/applicative/monad/etc instances (implying recode those data types first) - String manipulation (basically recode Data.List). Any ideas for prevent students from just copy pasting the hackage code source? - Red black trees are fun, aren't they? - Some kind of AI to solve, for example, Rubik's cube One other thing, this may be very sadistic, but I would like to ask what do you think of allowing ONLY pointfree? It may end-up by having different answers and promote beautiful and concise code. Please expose your ideas, everything is feasible, bonus added to traps, hard to solve problems, and everything that may lead the student to think a lot. Thanks. -- Quentin Le Guennec

what do you think of allowing ONLY pointfree? It may end-up by having different answers and promote beautiful and concise code
This would be very sadistic, yes – to people who would have to read code written by 42's graduates! I urge you to avoid it.
Red black trees are fun, aren't they?
They are also on a rather different level of difficulty from rewriting Data.List and friends (which is what beginners often do on their first day of learning). So, I don't understand what your intended level actually is. If it's “can understand red-black trees and write them without blindly copying code”, you could skip rewriting Data.List and go straight to: * monad transformers * lenses * the Cont monad * free monads On the other hand, if rewriting Data.List is necessary, then take a look at Richard Bird's book Thinking Functionally With Haskell – it would be a perfect fit for you.
participants (2)
-
Artyom
-
Quentin Le Guennec