<div dir="ltr">Hi Zachi,<div><br></div><div>This is a really interesting project, and related to things I'm working on.  Regardless of whether you take my advice, I'm very interested in hearing how it goes.  Teaching Haskell at younger ages is something I care deeply about.</div><div><br></div><div>Over the last nine years or so, I have built a web-based platform called CodeWorld, which you might find useful for your class.  CodeWorld provides two things:</div><div><br></div><div>- A way to get your students started quickly and easily in class, without waiting for them to install GHC, Cabal/Stack, etc.</div><div>- An easy graphics and UI library with a purely functional style.  This architecture, known by various crowds as "functional MVC", "the universe model" (by the Racket community), "Glossy programs" (by Haskellers), or most of "the Elm architecture" (by the Elm community) is a real gem of functional programming education, and lets your students experience declarative programming and build cooI things easily, without needing to get bogged down in stuff like I/O, recursion, etc.</div><div><br></div><div>Putting these things together, I typically get 13-year-olds to write their first working Haskell program and make creative choices about it on the first day of school.<br></div><div><div><br></div><div>There are two ways to use CodeWorld:</div><div><br></div><div>1. <a href="https://code.world/haskell">https://code.world/haskell</a> is basically Haskell in the web browser, along with the <a href="https://hackage.haskell.org/package/codeworld-api">purely functional graphics library</a> mentioned above.  A <a href="https://github.com/google/codeworld/blob/master/codeworld-available-pkgs/codeworld-available-pkgs.cabal#L14">large number of widely used Haskell packages</a> are available for import, as well.<br></div></div><div><br></div><div>2. <a href="https://code.world">https://code.world</a> is the same thing, but also using an educational dialect of the language that I have found to be much easier for absolute beginners to pick up and work with.  The main changes from standard Haskell are that type classes are completely removed, all library functions are uncurried, the compiler rejects certain error-prone things students do by accident, and many of the error messages are rewritten.  The drawback, though, is that while the code your students would write here is compiled by GHC(JS), it's not "ordinary" Haskell, so your students wouldn't be able to rely on other random learning resources from the Internet or use most existing third-party libraries.  In their place, there is a somewhat involved online Guide that introduces the language and standard library, and both I myself and LSU's Gordon Cain Center have produced different learning materials for ages ~ 13-17 years, tailored for this educational dialect.  Happy to chat more or get you in touch with people from the LSU team, if you are interested in going that route.<br></div><div><br></div><div>If CodeWorld isn't right for your class and you would prefer more traditional Haskell tooling, I still recommend adopting the same graphics architecture, and one way to do so is to use <a href="https://hackage.haskell.org/package/gloss">Gloss</a>, a very well-known Haskell implementation that's been around for ages and is widely used for education, graphics demos, and more.</div><div><br></div><div>Let me know, and good luck!</div><div><br></div><div>Chris Smith</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 10, 2020 at 4:59 PM Zachi Baharav <<a href="mailto:zachi@baharav.org">zachi@baharav.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Dear mighty Haskell list,<div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>I've been coding with Haskell for about 7 years, so feel ok leading the class.</div><div><br></div><div>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). </div><div>--->  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.</div><div>Something that I could teach a little, and then we can solve a bunch of problems, and teach a little more, and so on.</div><div><br></div><div>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).</div><div><br></div><div>Ok, long enough email.</div><div><br></div><div>If you have material and can share here, great! </div><div>If you have material and want to reach out privately, please do (<a href="mailto:zbaharav@kehillah.org" target="_blank">zbaharav@kehillah.org</a>).</div><div>If you have a good pointer, that would be appreciated.</div><div><br></div><div>Thanks in advance for any help!</div><div>   Zachi</div><div>(Dr. Zachi Baharav, HS teacher  (after 20 years in Industry and academia))</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>