[Haskell-cafe] Teaching High-School one-semester FP (using Haskell)

Gregory Guthrie guthrie at miu.edu
Fri Dec 11 03:45:28 UTC 2020


This may be superfluous in this forum, but my suggestion for a good approach to the copying/searching problem is to have students first make a pseudo-code design of a solution, and then build small parts of that algorithm, and then incrementally assemble them into a solution.

That way they wouldn't find an online solution which matches their individual pre-submitted components, and it emphasizes the constructive (compositional) nature of modular software good practice, and how well FP supports that.

One can then give incremental changes to the functional requirements, which impact some of the components, but not the overall composed design.

Dr. Gregory Guthrie
Maharishi International University
----------------------------------------------------------------

-----Original Message-----
From: Haskell-Cafe <haskell-cafe-bounces at haskell.org> On Behalf Of Albert Y. C. Lai
Sent: Thursday, December 10, 2020 5:58 PM
To: haskell-cafe at haskell.org
Subject: Re: [Haskell-cafe] Teaching High-School one-semester FP (using Haskell)

I think that the 99 Haskell Problems are an easy source of short exercises.

https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems

For longer, well-motivated problems, I think of the long-running examples in textbooks, for example the Countdown chapter in Hutton's Programming in Haskell.

If you can find/borrow Lawrence Paulson's ML for The Working Programmer, it has a list of suggested projects near the end.  Don't worry about how that book is on ML rather than Haskell, most of its exercises and projects are good for Haskell too.  In fact, enjoy this sentence from the book: "This sort of thing is easier in Haskell". :)

And now a dark turn---every silver lining has tarnish.

FP does not change people from writing convoluted borrowed code to original simple code.  I saw this in my students, their only difference from your dis they are in university.  Everything you said about having gone through Python and Java, fishing for answers on Stackoverflow, and making a mess, is just as true of my students.  And to think that they're university students, yes.

In fact, it may be even worse, now that recursion is compulsory.  People distrust recursion, they will think up all kinds of crazy schemes to micromanage code execution, rather than just letting recursion do its job.

In fact, even worse when the language is Haskell instead of SML and OCaml, because of "how do I print debugging output?"


On 2020-12-10 4:55 p.m., Zachi Baharav wrote:
> Dear mighty Haskell list,
> 
> I am a high-school teacher in the US (California, Palo Alto). We have an 
> advanced CS course that students can take after completing the AP-CS-A 
> (in Java). This is usually Juniors and Seniors, after at least 2 or 3 
> courses of coding (Python+Java). Traditionally, I've done a potpourri of 
> subjects, mostly search algorithms as applied to 'games'. Of course a 
> little bit of data-structure comes in, and each year we did some 'other' 
> interesting subject (like halftoning, barcodes, and so on) and 
> investigated and implemented algorithms there.
> 
> THIS year, for the second half, I would like us to do 
> Functional-Programming. From what I have seen, my students over the 
> years tend to write more and more convoluted codes, electing first to 
> search on stackOverFlow for some similar pattern, rather than think and 
> find a concise and clean solution. I think FP would supply them with a 
> new way of thinking, which will help with whatever they will write later on.
> 
> I've been coding with Haskell for about 7 years, so feel ok leading the 
> class.
> 
> The question: I have many books on Haskell (i think 'all', but who 
> knows.  Haskell, Real world Haskell, Learn you a haskell for great good, 
> programming in haskell, and many more).
> --->  I am looking for something more hands-on and 'fun' for HS 
> students. may i say the buzzword 'project based', or maybe better 
> 'problem based' for our case.
> Something that I could teach a little, and then we can solve a bunch of 
> problems, and teach a little more, and so on.
> 
> It doesn't have to be a Book!!  Just an outline of a course someone did 
> with associated bunch of problems would be awesome. We have 18 weeks in 
> a semester. My thought right now (if I don't find anything) is to relyon 
> Euler project early problems. These are often clean and simple in 
> Haskell.  Or otherwise some CSES problems (which we've done in Java).
> 
> Ok, long enough email.
> 
> If you have material and can share here, great!
> If you have material and want to reach out privately, please do 
> (zbaharav at kehillah.org <mailto:zbaharav at kehillah.org>).
> If you have a good pointer, that would be appreciated.
> 
> Thanks in advance for any help!
>     Zachi
> (Dr. Zachi Baharav, HS teacher  (after 20 years in Industry and academia))
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
> 

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.


More information about the Haskell-Cafe mailing list