My coauthor Julie has written about running her 10 year old son through our Haskell book, though the book was written for adults. He's only gotten stuck arithmetical concepts he hasn't learned yet, nothing specific to Haskell or functional programming.

https://superginbaby.wordpress.com/2015/04/08/teaching-haskell-to-a-10-year-old-day-1/

He'll resume learning Haskell soon. He wants to get back to the Haskell and hasn't asked at all about the Minecraft modding tutorials he was doing because he feels like with Haskell he is being taught how things actually work, whereas the Minecraft modding was copy-pasta with little/no explanation. Haskell is also Julie's first programming language. I've cc'd her so she can say more about this if she wants.

Haskell is great for teaching kids logic, math, data structures - you just can't skip details the way you can with experienced programmers. This isn't that much different from teaching adults who aren't experienced programmers.

On Fri, Aug 28, 2015 at 1:12 PM, Rustom Mody <rustompmody@gmail.com> wrote:


On Fri, Aug 28, 2015 at 11:07 PM, Silvio Frischknecht <silvio.frischi@gmail.com> wrote:
> I kindly disagree.

This being a haskell mailing list, I expected that :)

> If the focus is to teach computer architecture, you are
> not teaching programming. If the focus is on programming, then it should
> focus on the conceptual aspects of programming, not on computers.
> A course at school should of course teach both, but in my opinion not
> concurrently. There’s no point in teaching something implicitly by using
> the teaching of something else.

It's more about algorithms than computer architecture. An imperative
program very clearly describes algorithms; Haskell does not. Unless you
have a very good understanding of things like lazyness, non-strictness
and tail recursion, you wont know what happens when and how.

«It is easier to optimize correct code than to correct optimized code.»
--Bill Harlan

More heretically I draw your attention to Bob Harper's SECP

«everyone knows that algorithms as welearned them at school are irrelevant to practice. »
http://www.cs.cmu.edu/~rwh/papers/secp/secp.pdf

In my view «CS is the science of algorithms» is one of those memes that has held back our field because it underplays data.
And traditional programming pedagogy (aka imperative programming) is wrong because it emphasizes code at the cost of data


> We are not talking about undergraduates here, but kids or teenagers.
> Think about which is the reason why you are teaching something to them.
> It is not to teach some specific skill or to make them be advantaged in
> future undergraduate courses. It is to teach them to reason.
> Functional programming is just more reasoning than technicalities.

All the more reason not to teach Haskell. To CS undergraduates you might
teach your favorite programming paradigm. They can take it, and they
will also learn others anyway. To teenagers who might never learn
another language, it is not a good idea.

>> There are also a lot of very basic data structures that can simply not
>> be used in purely functional code like hash tables, pipes or random
>> access arrays.
>
> Why do you think that manipulating arrays is a better skill to teach
> to kids than manipulating linked lists?

What about double linked lists then. Most updatable data structures are
just clumsy in Haskell.

I see a lot of naivete in this thread (not just your claims).
Every programming language will do some things niftily and (many) others clumsily.
And when as teachers we consider the importance of Law of Primacy we need to carefully consider the order in which we introduce material.
A case could be made [as Donn Cave does below] for assembly.
From my pov getting Hindley-Milner intuitions right should take primacy over updatable data structures.
Likewise the best language of your choice will be based on what you consider primary.
How do we come to an objective evaluation of that??? Dunno...



> There was a nice article on reddit of a parent that was in progress of teaching
> Haskell to his/her 10-years old, and it was a great experience. I cannot find it anymore.
> Remember, kids (motivated kids, at least) are way smarter than what school
> usually seems to think.

Some kids are smarter, some less so. In secondary school you should have
a curriculum that most students can follow.


Just to be clear I'd be pleasantly surprised if someone can show haskell is a good thing for school children.
I dont know what is... Depends on the school and the child I guess??

On FP finally (50 years after Lisp!) making it to the abc level of CS-curricula:   http://blog.languager.org/2015/06/functional-programming-moving-target.html


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe




--
Chris Allen
Currently working on http://haskellbook.com