From cdsmith at gmail.com Sat Dec 15 22:19:49 2018 From: cdsmith at gmail.com (Chris Smith) Date: Sat, 15 Dec 2018 17:19:49 -0500 Subject: [Haskell & FP in Education] Welcome and introductions Message-ID: Hello, everyone! Welcome to education at haskell.org. This mailing list grew out of discussions at ICFP 2018 about creating a space for collaboration and discussion of using Haskell and other functional programming languages in general education. To jump-start that process, I'd like to invite everyone to introduce themselves and specifically share your goals, opportunities, vantage point, and interests. The hope is that we'll be able to sort ourselves into compatible interests and ideas, to kick off more detailed discussion or collaborations. Some suggested questions to spur discussion: - What education-related projects are you involved in, or have you been involved in previously? - What other projects do you find exciting, intriguing, or worthy of emulation? - On the other hand, what projects or conversations should be happening, but are not happening yet? - Is there anything specific that you are definitely looking for from this space? - What vision do you have for functional programming in education? That is, what general principles guide your thinking? I will reply with my own answers, and encourage you to do the same. Thanks, Chris P.S. I realize this email is long past due. Between my job as a software engineer, volunteer teaching, and recent development on CodeWorld, I have again fallen into the trap of over-committing myself and falling behind on outside commitments. I hope that late is still better than never. -------------- next part -------------- An HTML attachment was scrubbed... URL: From danburton.email at gmail.com Sun Dec 16 08:11:34 2018 From: danburton.email at gmail.com (Dan Burton) Date: Sun, 16 Dec 2018 00:11:34 -0800 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: Here's a loosely collected bundle of thoughts in response to a small part of this. I'm curious about FP at various levels of education. I know Haskell is or has been used for various university courses. Is there any sort of existing network of professors that share Haskell (or Racket, etc) teaching resources and materials? Are there resources that make sense to share between K-12 teachers and higher ed teachers? (e.g. how well does How To Design Programs work for teaching kids?) A related topic on my mind is BayHac and similar events. We discussed the possibility of having some younger people attend, but ended up not following through on that and attendance was mostly (entirely?) adults, as usual. I'm wondering if there is value in trying to make some part of BayHac more accessable and appealing to a wider audience (incl young people and people new to programming), or whether this would dilute the focus of the event too much and end up serving both young and old audiences poorly. I bring up BayHac to this list because I see it not just as a "let's get together and hack" event, but more like a "let's get together and share knowledge" event, where the knowledge share ideally enables people to get hacking on something. And pointing people to educational resources like codeworld is exactly the sort of thing that should be going on at BayHac, so that those with the desire to learn are empowered to continue doing so for long after the event is over. On Sat, Dec 15, 2018, 14:20 Chris Smith Hello, everyone! Welcome to education at haskell.org. > > This mailing list grew out of discussions at ICFP 2018 about creating a > space for collaboration and discussion of using Haskell and other > functional programming languages in general education. To jump-start that > process, I'd like to invite everyone to introduce themselves and > specifically share your goals, opportunities, vantage point, and > interests. The hope is that we'll be able to sort ourselves into > compatible interests and ideas, to kick off more detailed discussion or > collaborations. > > Some suggested questions to spur discussion: > > - What education-related projects are you involved in, or have you been > involved in previously? > - What other projects do you find exciting, intriguing, or worthy of > emulation? > - On the other hand, what projects or conversations should be happening, > but are not happening yet? > - Is there anything specific that you are definitely looking for from this > space? > - What vision do you have for functional programming in education? That > is, what general principles guide your thinking? > > I will reply with my own answers, and encourage you to do the same. > > Thanks, > Chris > > P.S. I realize this email is long past due. Between my job as a software > engineer, volunteer teaching, and recent development on CodeWorld, I have > again fallen into the trap of over-committing myself and falling behind on > outside commitments. I hope that late is still better than never. > _______________________________________________ > Education mailing list > Education at haskell.org > https://mail.haskell.org/cgi-bin/mailman/listinfo/education > -------------- next part -------------- An HTML attachment was scrubbed... URL: From hcc.olemiss at gmail.com Mon Dec 17 01:10:34 2018 From: hcc.olemiss at gmail.com (Conrad Cunningham) Date: Sun, 16 Dec 2018 19:10:34 -0600 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: Chris Smith> - What education-related projects are you involved in, or have you been involved in previously? I have taught elective courses in functional programming using Haskell, Scala, or Elixir to advanced undergraduate or beginning graduate students in a US public university. My students typically have programming experience in an imperative language such as Java, with no exposure to functional programming previously. Recently I have taught a junior/senior-level required core course in Programming Languages primarily using Haskell. Chris Smith> - What other projects do you find exciting, intriguing, or worthy of emulation? Chris Smith> - On the other hand, what projects or conversations should be happening, but are not happening yet? Chris Smith> - Is there anything specific that you are definitely looking for from this space? Although there have come to be quite a few books on functional programming that use one language or another, there are not many real textbooks suitable for use in a college class. In particular, there is a scarcity of textbook options for courses other than just programming---such as algorithms and data structures, software engineering, programming language organization, artificial intelligence, data science, etc. Conrad -------------- next part -------------- An HTML attachment was scrubbed... URL: From byorgey at gmail.com Mon Dec 17 03:26:30 2018 From: byorgey at gmail.com (Brent Yorgey) Date: Sun, 16 Dec 2018 21:26:30 -0600 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: Hi all! I'm Brent Yorgey. I am actively involved in the Haskell academic and open-source communities and I teach CS at Hendrix College in Conway, Arkansas, USA. > - What education-related projects are you involved in, or have you been > involved in previously? > I have taught several college-level classes using Haskell: my (semi-famous) "CIS 194" course at U Penn, a general FP course, and a programming languages course. I am also developing a new functional teaching language for use in a discrete math course (I'll be sure to write more about it on this list in time). I am also particularly motivated to think about FP in K-12 education because my son is 7 years old and shows great aptitude for and enjoyment of computers and mathematics; pretty soon it's going to be time to introduce him to some basic functional programming, possibly using CodeWorld and/or my discrete math functional teaching language. (It's not quite time yet though because his typing skills are not good enough; he has done a bit of programming with blocks-based languages e.g. on code.org, but I'm not aware of any *functional* block-based languages. If you know of any, please let me know!) I don't think I have any particular responses to the other questions off the top of my head, but I look forward to engaging in conversation and hearing what others are up to and thinking about. -Brent -------------- next part -------------- An HTML attachment was scrubbed... URL: From cdsmith at gmail.com Mon Dec 17 06:28:27 2018 From: cdsmith at gmail.com (Chris Smith) Date: Mon, 17 Dec 2018 01:28:27 -0500 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: Hi Brent, On Sun, Dec 16, 2018 at 10:26 PM Brent Yorgey wrote: > I'm not aware of any *functional* block-based languages. If you know of > any, please let me know! > I don't suggest you use this with your son, but if you're curious, a few years ago, Stefan Jacholke used Blockly to build a block-based front-end for CodeWorld, as part of Haskell.org's Summer of Haskell (in one of the years that haskell.org was not chosen for Google Summer of Code). It's still available at http://code.world/blocks. An interesting example is https://code.world/blocks#PIHIp7uCWam2t0iuN9w8zXA That said, though, it's not in great shape. There's quite a lot of code involved, including a significant amount of development on a custom fork of yet another custom fork of Blockly. It's also a bit buggy . This should be viewed as a proof of concept, from which we learned quite a bit about the task. Some of the lessons we learned: 1. Type inference in the client is a big deal. One should pay attention from the beginning to maintaining a correct incremental version of type inference, which should probably be based on something like Erdi's compositional variant of Hindley-Milner. Retrofitting the client-side implementation to CodeWorld Blocks led to a demoralizing game of whack-a-mole with consistency bugs, which was ultimately abandoned before we won. 2. Assuming a new version were again based on Blockly, it would be important to coordinate changes to Blockly with the upstream repository. While this is a challenging cross-team coordination problem made worse by the lack of engineering resources for the core Blockly project, forking Blockly is even more challenging in the long run. 3. The usability of Blockly's configuration panels is quite poor indeed; enough so that I found it nearly impossible to teach the portions of CodeWorld Blocks that needed them. This includes lists and user-defined functions. One would need to come up with a better approach to this, to have hope of success. Adding buttons and controls onto the block itself would be much more promising. 4. Blockly-based languages desperately need a more compelling compatibility story. Making a backward-incompatible change in a text-based language can require that programmers update their code, but doing the same in a Blockly-based language can cause the code to fail to load so much that the user may just as well start over and rewrite it entirely. 5. Blockly is also quite poor at usability. Being block-based is no panacea. It could likely be made much nicer with some intelligent search features. One could imagine clicking a connector to get a selection of blocks that would fit into that hole, or typing the first few letters of a function name to see a selection of blocks that begin with those letters. As is, though, building anything non-trivial in Blockly feels so tedious as to be off-putting. Anyway, this is just thoughts that came to mind from that question. Of course, there are deeper answers to how to design a visual functional language, too, based on dataflow diagrams and such. Since a key part of my goal in the CodeWorld project is to teach the conventional syntax of algebraic expressions and functions, I wasn't actually so interested in those more ambitious language designs. You might be, though. If so, I hope someone else can share some information there. Thanks, Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: From nickolay.kudasov at gmail.com Mon Dec 17 06:56:34 2018 From: nickolay.kudasov at gmail.com (=?UTF-8?B?0J3QuNC60L7Qu9Cw0Lkg0JrRg9C00LDRgdC+0LI=?=) Date: Mon, 17 Dec 2018 09:56:34 +0300 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: Hi everyone! I am Nickolay Kudasov. I am CTO of GetShop.TV (a small company where we use Haskell extensively) and a teacher at Innopolis University in Innopolis, Russia where I teach a Haskell elective course to advanced undergraduates. I also have a YouTube series of short video-lectures on Haskell in Russian (these videos were part of a Haskell course at Moscow State University while I was teaching there). The way I teach was greatly influenced by Brent's CIS 194 course (and its later incarnation by Joachim Breitner) as well as my experience with commercial Haskell. I have also been using CodeWorld lately to introduce students to Haskell, so big thanks to Chris Smith and everyone else working on it! I am also very excited about Brent's new functional teaching language :) I do not know if I have anything yet to offer to people in this list, but I hope to learn about teaching materials and techniques others use, especially concerning university courses. I have slight interest in K-12 education as well, since I have two kids at least one of which is likely to be inclined towards mathematics and computers in a couple years. One sort of project I am thinking about periodically is a Haskell or FP-related educational YouTube-channel (any other platform is fine, it's format that is interesting to me). There are plenty of math and programming related channels with great content already (I would like to especially highlight 3Blue1Brown and Welch Labs which have series of educational videos with exercises). I have a few ideas for such an FP-channel, but unfortunately I have no spare time right now to try this on my own. However, if anyone is interested in collaborating on such a project I would definitely try to free up my schedule :) Kind regards, Nick пн, 17 дек. 2018 г. в 09:28, Chris Smith : > Hi Brent, > > On Sun, Dec 16, 2018 at 10:26 PM Brent Yorgey wrote: > >> I'm not aware of any *functional* block-based languages. If you know of >> any, please let me know! >> > > I don't suggest you use this with your son, but if you're curious, a few > years ago, Stefan Jacholke used Blockly to build a block-based front-end > for CodeWorld, as part of Haskell.org's Summer of Haskell (in one of the > years that haskell.org was not chosen for Google Summer of Code). It's > still available at http://code.world/blocks. An interesting example is > https://code.world/blocks#PIHIp7uCWam2t0iuN9w8zXA > > That said, though, it's not in great shape. There's quite a lot of code > involved, including a significant amount of development on a custom fork > of yet another custom fork > of Blockly. It's also a bit buggy > . > This should be viewed as a proof of concept, from which we learned quite a > bit about the task. > > Some of the lessons we learned: > > 1. Type inference in the client is a big deal. One should pay > attention from the beginning to maintaining a correct incremental version > of type inference, which should probably be based on something like Erdi's > compositional variant of Hindley-Milner. Retrofitting the client-side > implementation to CodeWorld Blocks led to a demoralizing game of > whack-a-mole with consistency bugs, which was ultimately abandoned before > we won. > 2. Assuming a new version were again based on Blockly, it would be > important to coordinate changes to Blockly with the upstream repository. > While this is a challenging cross-team coordination problem made worse by > the lack of engineering resources for the core Blockly project, forking > Blockly is even more challenging in the long run. > 3. The usability of Blockly's configuration panels is quite poor > indeed; enough so that I found it nearly impossible to teach the portions > of CodeWorld Blocks that needed them. This includes lists and user-defined > functions. One would need to come up with a better approach to this, to > have hope of success. Adding buttons and controls onto the block itself > would be much more promising. > 4. Blockly-based languages desperately need a more compelling > compatibility story. Making a backward-incompatible change in a text-based > language can require that programmers update their code, but doing the same > in a Blockly-based language can cause the code to fail to load so much that > the user may just as well start over and rewrite it entirely. > 5. Blockly is also quite poor at usability. Being block-based is no > panacea. It could likely be made much nicer with some intelligent search > features. One could imagine clicking a connector to get a selection of > blocks that would fit into that hole, or typing the first few letters of a > function name to see a selection of blocks that begin with those letters. > As is, though, building anything non-trivial in Blockly feels so tedious as > to be off-putting. > > Anyway, this is just thoughts that came to mind from that question. Of > course, there are deeper answers to how to design a visual functional > language, too, based on dataflow diagrams and such. Since a key part of my > goal in the CodeWorld project is to teach the conventional syntax of > algebraic expressions and functions, I wasn't actually so interested in > those more ambitious language designs. You might be, though. If so, I > hope someone else can share some information there. > > Thanks, > Chris > _______________________________________________ > Education mailing list > Education at haskell.org > https://mail.haskell.org/cgi-bin/mailman/listinfo/education > -------------- next part -------------- An HTML attachment was scrubbed... URL: From cdsmith at gmail.com Mon Dec 17 09:51:06 2018 From: cdsmith at gmail.com (Chris Smith) Date: Mon, 17 Dec 2018 04:51:06 -0500 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: I guess I should answer my own questions, too! I'm Chris Smith. By day, I am a software engineer at Google. I lead the backend engineering team for Google Classroom, which is a part of GSuite for Education that helps teachers and students communicate about announcements and questions, submit assignments and grade and return them, things like that. That's all pretty boring. I fell in love with functional programming about the same time I really fell in love with mathematics, in the mid 2000s. I started with the SICP lectures here , in which Miranda was described in a way that really appealed to me. I ran across Haskell after discovering that Miranda wasn't really still around! I've also been involved in education most of my life. My first job after flunking out of college in the late 90s was working for a company teaching technology skills to IT professionals. I started and ran my first organization in the early 2000s to teach science and mathematics to homeschooled children in the early 2000s, and coached kids in a science competition there for 6 years. In 2010, I had a neighbor who was a school teacher, but quit her job to start her own school. There, I volunteered to teach a combination My involvement with education in Haskell has been entirely based on the CodeWorld project (http://code.world, or http://code.world/haskell). CodeWorld is many things; chief among them being: (1) my own volunteer work teaching middle school students in 6 different schools and several other programs run by non-profit organizations, (2) a web-based environment for writing and running simple Haskell code in a web browser with no setup or installation, (3) a graphics library similar to Gloss that works in this environment, (4) a simplified variant of the Haskell programming language designed for teaching children, and (5) a collection of ideas, outlines, and resources for how to teach middle school mathematics skills (roughly, what's known in the U.S. as "pre-algebra" and basic algebra) from a different perspective via functional programming. The core of CodeWorld has been, up to this point, mainly a one-person project, but I'm grateful for some very fruitful collaborations. Notably, Stefan Jacholke , Eric Roberts (can't find a good link), and Krystal Maughan , and others have done great work as part of Summer of Haskell and Summer of Code projects; Joachim Breitner spearheaded development of networked multi-player support in the CodeWorld library, and Brooklyn Cook, Chelsea Harper, Elisabeth Edeen, Christian Mirra, David Gladstein, Carl Young, and many others have contributed to the quite daunting task of developing various educational resources and plans (a task that I still haven't really succeeded at). And, of course, it would be nowhere without the support of the broader Haskell community, most notably Luite Stegeman for the development of GHCJS . My reason for being in love with functional programming, both inside of education and outside, is that it has the same feeling as the best of mathematics. I've never been the most practical person, so despite being a software engineer for a living, I'm not so interested in teaching more people to be software engineers or using functional programming "in production". Instead, I'm interested in this because I'm convinced we're getting at something more fundamental. I see the relationship between functional programming and mathematics as being somewhat akin to the relationship between literature and language skills, in this sense: The average child in the United States today reads nearly half a million words between their 12th and 13th birthdays, so even as schools do teach language skills, teachers can rely on their students having encountered and practiced their skills thoroughly outside of class. Mathematics teachers, though, have students who only do mathematics in any real sense inside the classroom. Entice children to do math practices outside of school is not likely to succeed, any more than trying to get them to do grammar worksheets would! What is needed, instead, is an activity they can be convinced to want for its own sake, which *requires* mathematics as its medium, just as they really only want to learn what happens to Harry and Ron and Hermione, and the reading and interpreting of words and sentences is just the necessary medium to get there. I think functional programming is that thing. We can inspire students to want to produce art and animations and games and explore computational simulations and puzzles, and then give them expressions, functions, and variables as the steps to get there. There's a lot more to say here. For example, why must it be functional programming? Answer: because if we care about mathematics, then we want functions and variables and expressions to actually act the way they do in mathematics! We want substitution to be our model of computation. We want terms to have meaning as mathematical objects, not as descriptions of actions by a CPU. But it's all been said before, and will be said many times again. Emmanuel Schanzer has given some great justifications in this direction with his Bootstrap program, which is growing popular now and is based on Racket, with the happy result that even a lot of teachers without deep CS knowledge are familiar with this distinction. Here are some things I'd be very interested in, if anyone is so inspired. (a) Feedback on how CodeWorld can be more useful to the general Haskell community. At http://code.world/haskell is a version of CodeWorld that runs a standard GHCJS compiler for Haskell code. The graphics API is also available, but not required. My goal is to make it dead simple to invite new programmers to write Haskell, without needing to install anything or set up their own tools, and to make this tool meet the educational needs of the Haskell community. (This is notably different from http://code.world without the "/haskell" on the end; that environment is designed to meet my own goals around math education, separate from the Haskell community.) Most Haskell code using only base, bytestring, text, containers, etc. can already be used there, and I recently added QuickCheck to the library set. I'm interested in adding even more: for example, integration with Brent's diagrams library? reflex? gloss? anything else? I'd love to hear what anyone thinks is missing that would be useful. And if it's already useful, I'd love to see more people adopt this in encouraging others to try Haskell. I've collected a few ideas at https://github.com/google/codeworld/projects/8 and would love more feedback here. (b) Experiences shared by others who are doing similar things. I think we're likely all running into some of the same problems, and there's no reason not to learn from each other. There's a LOT to learn about effective teaching, and I'm convinced that when it comes to programming, there's a sense in which no one is very good at it yet. At least, I have a hard time finding anyone even talking about the biggest challenges I run into in practice; things like how to help students to generalize comfortably when writing expressions, or to convert their imperative intuitions into more declarative expressions, or quickly recognize the structure of expressions. (c) I'm always keeping my eyes open for anyone wanting to be involved in the CodeWorld project. That could mean: - Teaching with CodeWorld. I can definitely give you advice on connecting with schools, organizing your class, etc., and I'll be your personal support line. I'm even happy to chat regularly by email, phone, or video conference and personally advise you on your class. Just let me know how I can help. - Research collaborations. I'm participating in some research already about measuring the effect of teaching on mathematics achievement, but I think there's a lot of room for this community as a whole to gather results we can share about educational outcomes. If you're motivated to pursue something like that using CodeWorld, please let me know how I can help, whether it's software changes to the CodeWorld environment, or . - Developing specific features or changes that you think would be valuable or want to work on. I'm willing to work with anyone to merge their ideas into the project, so long as you're okay with designing things to avoid complexity for new users. Alternatively, if you are looking for a project with impact on education and functional programming and would like some ideas, feel free to get in touch and I can run through my list to see if anything excites you (though much of it is also on CodeWorld's issue tracker at https://github.com/google/codeworld/issues, especially under the "proposal" label ). - Helping with organization and release of educational materials. I've got a lot of stuff that I and others have created over the years: worksheets, tutorials and guides, curriculum outlines, lesson plans, videos, and even a comic book!. I think before it's useful, it's important to sort everything by quality. For teachers, a collection of teaching resources is only as useful as the minimum level of quality they can expect from it. I have a bunch of stuff as input to this process, capturing a lot that I've learned over the last eight years, but also an unfortunate combination right now of personal attachment that makes it hard to throw things out, and also just a level of exhaustion that makes me too willing to give up on improving quality sometimes. Someone who wants to help here would be amazing. - Even joining the project as a core maintainer on equal terms with myself. Obviously, this would involve first establishing that we have compatible visions for where things are headed, but consider this my announcement that I don't intend to be territorial, and indeed would be quite excited if someone else wanted to take on any kind of leadership role in the project. (d) If you're in New York (on weekdays) or Atlanta (on weekends) and just want to get together for dinner and chat, I'm usually up for that, too. Okay, I'll stop there. Thanks, Chris On Sat, Dec 15, 2018 at 5:19 PM Chris Smith wrote: > Hello, everyone! Welcome to education at haskell.org. > > This mailing list grew out of discussions at ICFP 2018 about creating a > space for collaboration and discussion of using Haskell and other > functional programming languages in general education. To jump-start that > process, I'd like to invite everyone to introduce themselves and > specifically share your goals, opportunities, vantage point, and > interests. The hope is that we'll be able to sort ourselves into > compatible interests and ideas, to kick off more detailed discussion or > collaborations. > > Some suggested questions to spur discussion: > > - What education-related projects are you involved in, or have you been > involved in previously? > - What other projects do you find exciting, intriguing, or worthy of > emulation? > - On the other hand, what projects or conversations should be happening, > but are not happening yet? > - Is there anything specific that you are definitely looking for from this > space? > - What vision do you have for functional programming in education? That > is, what general principles guide your thinking? > > I will reply with my own answers, and encourage you to do the same. > > Thanks, > Chris > > P.S. I realize this email is long past due. Between my job as a software > engineer, volunteer teaching, and recent development on CodeWorld, I have > again fallen into the trap of over-committing myself and falling behind on > outside commitments. I hope that late is still better than never. > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stuart at cs.uchicago.edu Mon Dec 17 13:30:30 2018 From: stuart at cs.uchicago.edu (Stuart A. Kurtz) Date: Mon, 17 Dec 2018 07:30:30 -0600 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: <3D2D1B27-0C92-4C66-9513-C98248D4F1F6@cs.uchicago.edu> Dear Haskell Education List, I've been teaching a first quarter honors introductory programming class in Haskell to University of Chicago undergraduates for a decade. We're currently running 2 sections of around 40, where I'm teaching one section, and my colleague Ravi Chugh is teaching the other. A few years back, Jakub Tucholsky and I co-taught an upper-level undergraduate course, "Functional Systems in Haskell," based loosely on a Stanford course of the same name. In recent years, material Jakub and I developed for the Functional Systems course has been working its way into the introductory course. I teach the intro course in Haskell because the usual way of teaching introductory programming at the University level, in which students who learned to program in high school are bored and get A's, and students who didn't are overwhelmed and get C's, strikes me as both uninteresting and deeply inequitable. In the honors sequence, I get a class with unusual characteristics -- half or more took a high school programming class (usually Java), the remainder are mostly mathematics or physics undergraduates who have an unusually high tolerance for abstraction, and often significant advanced mathematics. Haskell seemed like a natural choice: the students who didn't have programming before had something important to bring to the table, which encouraged "mixed" study groups. We have very detailed lecture notes (sometimes paired, where Ravi wants to handle something differently from me): http://cmsc-16100.cs.uchicago.edu/2018-autumn/ The class has necessarily evolved with the language, and my sense is that Ravi and I will be doing a larger than usual set of revisions before the 2019 offering. I'd value feedback. Peace, Stu --------------- Stuart A. Kurtz Professor, Department of Computer Science and the College Master, Physical Sciences Collegiate Division The University of Chicago From falegre at lsu.edu Mon Dec 17 17:25:35 2018 From: falegre at lsu.edu (Fernando Alegre) Date: Mon, 17 Dec 2018 11:25:35 -0600 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: <20181217172535.GA14652@magnet.phys.lsu.edu> Hi all, I'm Fernando Alegre. I am working on developing curriculum for high school computer science courses. The first course I developed, called Introduction to Computational Thinking, has been running as a pilot in several high schools in Baton Rouge, Louisiana, for two years. The course uses Chris's CodeWorld platform, so that schools do not need to install anything. The course covers relatively little content in terms of computer science, but it is heavier on the math than other introductory courses, including Bootstrap. In the summer, I have a five-week all-day professional development program, where I have the teachers do all the activities in the course, so that they go from zero-knowledge in programming to being somewhat comfortable with teaching the course and helping students debug their code. I am also testing material for other courses with a couple of teachers and also directly with a small group of advanced students. I liked the CodeWorld environment so much that I decided I would try it with the advanced students, and the feedback I got has been very interesting. Apart from their dislike of the syntax and similar nuances, their main complaint is that functional programs are too dense, and that increases their cognitive load too much, so that, even though they can write the code, they do not enjoy doing it. I am struggling to find ways to make it more enjoyable for them, as it is really fun for me. I someone is interested, I can provide more details about all that. Regards, Fernando From cdsmith at gmail.com Mon Dec 17 20:10:24 2018 From: cdsmith at gmail.com (Chris Smith) Date: Mon, 17 Dec 2018 15:10:24 -0500 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: <20181217172535.GA14652@magnet.phys.lsu.edu> Message-ID: Oops, I accidentally dropped the mailing list. On Mon, Dec 17, 2018 at 3:09 PM Chris Smith wrote: > On Mon, Dec 17, 2018 at 12:25 PM Fernando Alegre wrote: > >> I am also testing material for other courses with a couple of teachers >> and also directly with >> a small group of advanced students. I liked the CodeWorld environment so >> much that I decided I would >> try it with the advanced students, and the feedback I got has been very >> interesting. Apart from >> their dislike of the syntax and similar nuances, their main complaint is >> that functional programs >> are too dense, and that increases their cognitive load too much, so that, >> even though they can >> write the code, they do not enjoy doing it. I am struggling to find ways >> to make it more enjoyable >> for them, as it is really fun for me. > > > Thanks for sharing this. I've been thinking about similar things. My > observation is that composing expressions seems to be a very unfamiliar, > and therefore uncomfortable, way of working for many students (perhaps for > many non-students, as well). It's natural for students to worry about what > they need to do, but not about how to connect it to what's already there. > Therefore, they want to just add the right thing in their code. They can > tolerate having to add it between some curly braces. But thinking about > how the new addition is related to the whole, where it fits, and how it's > combined, seems to be a step too far for many. Beginners in imperative > languages have exactly the same problems when they are forced to program > with nested blocks of control flow and other substantial structure. But > imperative code comes with a default aggregation on statements, while the > functional environment mostly forces you to be explicit about how > subexpressions are composed together, from the beginning. > > On the one hand, I'd like to argue that increasing students' familiarity > with this kind of thinking, which I see as part of the essence of a > mathematical world-view, is in fact the goal, and therefore worth doing > regardless of student support. But, if course, you can't really force > anyone to learn anything against their will, so this answer is not > sufficient. In any case, I suspect we're seeing the same thing, and I > think you're right that it's often a fight to get students on-board because > the functional environment asks them for more careful thinking than they > would like it to. If you do find an answer to this, I'd love to see it. > > My best answer so far is to allow students to see the program's structure > in a variety of ways. The "Inspect" button in CodeWorld is an example of > this. When a student shoves something into a drawing at the wrong place > and becomes frustrated, I often find it helpful to ask them to open up the > Inspect dialog, and take a look at how different expressions in their code > define their own pictures, and check that against what they expected. It > helps, but it doesn't make the problem go away. Luite and Shae and I > talked at ICFP this year about a more general-purpose system for examining > the meanings of expressions in a running Haskell program, and I think it's > doable with GHC 8.6 and a lot of work. I'm still waiting on GHCJS to reach > a stable 8.6 milestone before I give it a shot. There's a brief write-up > at https://github.com/google/codeworld/issues/741, but the idea is > certainly not specific to CodeWorld (except for the UI portion). I think > having something like this at one's disposal would make it easier to give > students a feeling for the idea that each of their subexpressions really is > a meaningful value in its own right, and really understanding that as a > tool for comprehending code seems to be the key for getting over the > unfamiliarity and finding the power of this way of working. But, that > could be me just being optimistic. > > Chris > -------------- next part -------------- An HTML attachment was scrubbed... URL: From cdsmith at gmail.com Tue Dec 18 07:03:29 2018 From: cdsmith at gmail.com (Chris Smith) Date: Tue, 18 Dec 2018 02:03:29 -0500 Subject: [Haskell & FP in Education] The "Function Game": written by Michael Snoyman about teaching functional programming to children Message-ID: This is a quick and fun read. https://www.snoyman.com/blog/2018/12/kids-coding-interlude-the-function-game I'm thinking about incorporating this into my teaching in future classes, though perhaps my students are too old. -------------- next part -------------- An HTML attachment was scrubbed... URL: From michael at snoyman.com Tue Dec 18 11:23:47 2018 From: michael at snoyman.com (Michael Snoyman) Date: Tue, 18 Dec 2018 13:23:47 +0200 Subject: [Haskell & FP in Education] The "Function Game": written by Michael Snoyman about teaching functional programming to children In-Reply-To: References: Message-ID: Thanks Chris! Still planning on catching up on the intro thread here, I've just been busy with traveling. Thank you for getting this list set up. On Tue, Dec 18, 2018, 9:03 AM Chris Smith This is a quick and fun read. > > > https://www.snoyman.com/blog/2018/12/kids-coding-interlude-the-function-game > > I'm thinking about incorporating this into my teaching in future classes, > though perhaps my students are too old. > _______________________________________________ > Education mailing list > Education at haskell.org > https://mail.haskell.org/cgi-bin/mailman/listinfo/education > -------------- next part -------------- An HTML attachment was scrubbed... URL: From johannes.waldmann at htwk-leipzig.de Tue Dec 18 23:09:32 2018 From: johannes.waldmann at htwk-leipzig.de (Johannes Waldmann) Date: Wed, 19 Dec 2018 00:09:32 +0100 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: <52421d1b-4788-960c-3826-3550bdeab8f7@htwk-leipzig.de> Hi Chris, and others. Since you asked for it ... I have written an opinion piece https://www.imn.htwk-leipzig.de/~waldmann/etc/prog-edu/ For professional education: yes, I use Haskell by all means. Of course, it's complemented by a few more colleagues using Haskell, and even more colleagues not using it, so it's a fine balance overall. I am happy to discuss detail, swap exercises and exam questions, etc. For pre-university education (that's what you mean by "general" education? At least, it's included?): Don't. To teach programming early (Haskell or not) is, at best, misguided, and often actually harmful: * It tends to detract resources from where they are really needed, namely, teaching fundamentals. * It tends to hide the fact that software platforms used in teaching programming tend to use, or to be, mechanisms of surveillance capitalism. Best regards, Johannes. From erwig at oregonstate.edu Wed Dec 19 02:59:39 2018 From: erwig at oregonstate.edu (erwig) Date: Tue, 18 Dec 2018 18:59:39 -0800 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: <0e60bdeda5804d8aae621875e5cc196f@EX1.oregonstate.edu> References: <0e60bdeda5804d8aae621875e5cc196f@EX1.oregonstate.edu> Message-ID: <51FB2B2B-ACCC-4359-8E8B-C4C82AC3C43C@oregonstate.edu> Hi everyone, Having used Haskell in my graduate and undergrad PL classes for a long time, my recent focus has been on the explanation of computing concepts for non-computer scientists. To this end, I have published a popular science book last year that explains computer science concepts to laypeople [1]. The goal was to specifically reach people who are interested in learning about computing but don't want to learn a programming language first. Once basic concepts are understood, those who remain sufficiently interested can then be introduced to a more formal presentation by employing a programming language. This is where Haskell comes into play. (At the request of my publisher, I have created a Haskell tutorial (incomplete as of yet) with exercises that follows the exposition of the book.) At my university we have employed this approach successfully in the computer science orientation class [2], and we are currently exploring different ways of applying this approach in middle schools (especially in grades 6 and 7). What I am looking forward to hearing about in this forum are the experiences of others in using Haskell for teaching programming and computer science. I am also interested to learn more about different approaches for creating learning environments for using Haskell (including CodeWorld and Helium). It would be great to have a Haskell implementation that provides a number of different complexity levels, e.g. allowing one to selectively turn off type classes, have only one number type, turn off parametric polymorphism, etc. -- Martin [1] Once Upon an Algorithm - How Stories Explain Computing eecs.oregonstate.edu/~erwig/#book [2] Story Programming: Explaining Computer Science Before Coding, J. Parham-Mocello, S. Ernst, M. Erwig, E. Dominguez, and L. Shellhammer, ACM Symp. on Computer Science Education, 2019, to appear. > On Dec 15, 2018, at 2:19 PM, Chris Smith wrote: > > Hello, everyone! Welcome to education at haskell.org. > > This mailing list grew out of discussions at ICFP 2018 about creating a space for collaboration and discussion of using Haskell and other functional programming languages in general education. To jump-start that process, I'd like to invite everyone to introduce themselves and specifically share your goals, opportunities, vantage point, and interests. The hope is that we'll be able to sort ourselves into compatible interests and ideas, to kick off more detailed discussion or collaborations. > > Some suggested questions to spur discussion: > > - What education-related projects are you involved in, or have you been involved in previously? > - What other projects do you find exciting, intriguing, or worthy of emulation? > - On the other hand, what projects or conversations should be happening, but are not happening yet? > - Is there anything specific that you are definitely looking for from this space? > - What vision do you have for functional programming in education? That is, what general principles guide your thinking? > > I will reply with my own answers, and encourage you to do the same. > > Thanks, > Chris > > P.S. I realize this email is long past due. Between my job as a software engineer, volunteer teaching, and recent development on CodeWorld, I have again fallen into the trap of over-committing myself and falling behind on outside commitments. I hope that late is still better than never. > _______________________________________________ > Education mailing list > Education at haskell.org > https://mail.haskell.org/cgi-bin/mailman/listinfo/education From michael at snoyman.com Wed Dec 19 06:22:06 2018 From: michael at snoyman.com (Michael Snoyman) Date: Wed, 19 Dec 2018 08:22:06 +0200 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: Thank you Chris for putting together this list, and all your efforts in the education space in general! My name is Michael Snoyman. I use Haskell and functional programming professionally, and do quite a bit of training at the professional level, but have almost no experience at the beginner level. I'm basically a self-taught programmer from grade school, where I was given a QuickBasic book and had ample access to DOS based machines. My interest here is that I'm basically the "get off my lawn" old guy, who's watched my younger siblings grow up in a different world, one where GUI interfaces dominate, and there's no incentive to _really_ learn how a computer works. I want to make sure my kids have the same opportunity to learn programming that I had. And in that process, I'll likely end up needing to teach some of their friends too to help with peer pressure. I'm not insistent that my kids learn Haskell or functional programming, but my working hypothesis is that these will be the easiest things for them to learn, and the easiest for me to teach. > What education-related projects are you involved in, or have you been involved in previously? For the beginner level, I've been blogging about my experiences in my "kids coding" blog post series. Since the start of the school year we've been too busy unfortunately to continue much with it. https://www.snoyman.com/blog/2018/08/kids-coding-part-1 I have lots of other tutorials and other write-ups at a non-beginner level, mostly in Haskell, but with some Rust added in recently. I've sadistically considered switching to Rust as a beginner language :) > What other projects do you find exciting, intriguing, or worthy of emulation? I think Scratch is wonderful, in that it can easily be added to a classroom curiculum by teachers who don't know much about computers. My eldest (10 years old) has gone through this at school. However, I don't think he's really getting a great deal out of it, and he says as much. I'd love to see something easily approachable but with more of a runway. I'm thinking back to how I had Basic available on all computers around me by default for the first 10 years of my life. I realize that Code World may be exactly this :) > Is there anything specific that you are definitely looking for from this space? I'd love to see others share their experiences with teaching young children, and _especially_ how to keep them motivated. I find that with so many easy distractions available on modern computers and devices, it's hard for programming to compete for attention. > What vision do you have for functional programming in education? That is, what general principles guide your thinking? My kids understand math. They're already learning it in school. Teaching them functions took all of 5 minutes. I don't want to corrupt them with not-functions as found in imperative languages, I believe it will confuse them. That's my guiding principle here. On Sun, Dec 16, 2018 at 12:20 AM Chris Smith wrote: > Hello, everyone! Welcome to education at haskell.org. > > This mailing list grew out of discussions at ICFP 2018 about creating a > space for collaboration and discussion of using Haskell and other > functional programming languages in general education. To jump-start that > process, I'd like to invite everyone to introduce themselves and > specifically share your goals, opportunities, vantage point, and > interests. The hope is that we'll be able to sort ourselves into > compatible interests and ideas, to kick off more detailed discussion or > collaborations. > > Some suggested questions to spur discussion: > > - What education-related projects are you involved in, or have you been > involved in previously? > - What other projects do you find exciting, intriguing, or worthy of > emulation? > - On the other hand, what projects or conversations should be happening, > but are not happening yet? > - Is there anything specific that you are definitely looking for from this > space? > - What vision do you have for functional programming in education? That > is, what general principles guide your thinking? > > I will reply with my own answers, and encourage you to do the same. > > Thanks, > Chris > > P.S. I realize this email is long past due. Between my job as a software > engineer, volunteer teaching, and recent development on CodeWorld, I have > again fallen into the trap of over-committing myself and falling behind on > outside commitments. I hope that late is still better than never. > _______________________________________________ > Education mailing list > Education at haskell.org > https://mail.haskell.org/cgi-bin/mailman/listinfo/education > -------------- next part -------------- An HTML attachment was scrubbed... URL: From anandc at mcmaster.ca Wed Dec 19 14:07:30 2018 From: anandc at mcmaster.ca (Anand, Christopher) Date: Wed, 19 Dec 2018 14:07:30 +0000 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: <52421d1b-4788-960c-3826-3550bdeab8f7@htwk-leipzig.de> References: , <52421d1b-4788-960c-3826-3550bdeab8f7@htwk-leipzig.de> Message-ID: <5FD8EC2C-04B1-489B-809C-7C058EA1006D@mcmaster.ca> An HTML attachment was scrubbed... URL: From falegre at lsu.edu Wed Dec 19 15:45:56 2018 From: falegre at lsu.edu (Fernando Alegre) Date: Wed, 19 Dec 2018 15:45:56 +0000 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: <5FD8EC2C-04B1-489B-809C-7C058EA1006D@mcmaster.ca> References: , <52421d1b-4788-960c-3826-3550bdeab8f7@htwk-leipzig.de>, <5FD8EC2C-04B1-489B-809C-7C058EA1006D@mcmaster.ca> Message-ID: I think one of the problems in introducing CS education in K-12 is the lack of a clear widespread rationale for it. This question is not unique for this list, but it still matters here. There are different goals we may be pursuing, such as: - To introduce "fun activities" so that students get less bored in school - To replace "old-fashioned" core subjects that are less relevant than computing nowadays - To teach students "real-world skills" so that they can get better jobs - To help students learn other subjects because "code makes these subjects easier to understand" - To do something now, because "we think it will become useful in their future", even if we don't know exactly how - To help children "understand our technological world" better I am partially paraphrasing Simon Peyton Jones' excellent talk: https://www.youtube.com/watch?v=y-xgWLYQc4g Then, another problem is that to make way for it, something else needs to go, and it is not clear what could be taken away, especially in high school. Should we have one more core subject and less art and PE? Finally, depending on what the goal is, we have the question of how to accomplish that goal. In particular, what exactly should be taught to the children, what the expectations are and how we will assess whether they learned enough. My personal interest lies in the intersection of coding and math, and the potential of code to illustrate math concepts and help develop a mathematical intuition. At the same time, I see mathematics as a very fertile ground for all kinds of computational problems, with an endless supply of interesting questions at all levels of difficulty. In this context, a pure functional language is the optimal choice, because it helps the students stay focused on the objectives without getting distracted (or, rather, seduced, as SPJ mentions) by the infinite possibilities of tweaking the look and feel forever. While my take is probably shared (at least partially) by most people in this list, it is a minority view in the current CS education community. The challenge is how to make a case for our goal within the current environment, where the goal seems to be just "learning Python" for the sake of learning Python (or JavaScript) with no further thoughts beyond that. Fernando ________________________________ From: Education on behalf of Anand, Christopher Sent: Wednesday, December 19, 2018 8:07:30 AM To: Johannes Waldmann Cc: education at haskell.org Subject: Re: [Haskell & FP in Education] Welcome and introductions Johannes, Just because the introduction of calculators was a failure does not mean teaching programming will be a failure. The biggest failure is in the teaching of the scientific method to education officials. They blithely introduce new programs without testing them. I am happy to say that one of our school boards asked us to help measure the impact of teaching FP on math skills in their highest-needs schools. We measured a positive impact despite working against the start of summer with very distracted students. https://www.researchgate.net/publication/328518021_Graphics_Programming_in_Elm_Develops_Math_Knowledge_Social_Cohesion [https://i1.rgstatic.net/publication/328518021_Graphics_Programming_in_Elm_Develops_Math_Knowledge_Social_Cohesion/links/5bd230bc4585150b2b875e97/largepreview.png] (PDF) Graphics Programming in Elm Develops Math Knowledge & Social Cohesion www.researchgate.net PDF | At McMaster University, we have developed a framework for teaching computer science, including curricula and tools (iPad apps: Image 2 Bits and ElmJr; an open-source library GraphicSVG; and a web-based development environment). ElmJr is a projectional editor for Elm, with... The Bootstrap project has shown even better results with middle school algebra. While I also lament the demise of geometry, I think there is really fun software to support that. Sadly it is largely ignored. Finally, your bias (which many of us share) in looking at the impact of changes on your future students ignores the imperative for democracies to educate all of their citizens so that they can meaningfully contribute to decision making. Fortunately, I think we can include digital literacy and even programming in the curriculum while also strengthening mathematics education, if we do it right. Christopher Anand On Dec 18, 2018, at 6:09 PM, Johannes Waldmann > wrote: Hi Chris, and others. Since you asked for it ... I have written an opinion piece https://www.imn.htwk-leipzig.de/~waldmann/etc/prog-edu/ For professional education: yes, I use Haskell by all means. Of course, it's complemented by a few more colleagues using Haskell, and even more colleagues not using it, so it's a fine balance overall. I am happy to discuss detail, swap exercises and exam questions, etc. For pre-university education (that's what you mean by "general" education? At least, it's included?): Don't. To teach programming early (Haskell or not) is, at best, misguided, and often actually harmful: * It tends to detract resources from where they are really needed, namely, teaching fundamentals. * It tends to hide the fact that software platforms used in teaching programming tend to use, or to be, mechanisms of surveillance capitalism. Best regards, Johannes. _______________________________________________ Education mailing list Education at haskell.org https://mail.haskell.org/cgi-bin/mailman/listinfo/education -------------- next part -------------- An HTML attachment was scrubbed... URL: From hcc.olemiss at gmail.com Wed Dec 19 20:48:51 2018 From: hcc.olemiss at gmail.com (Conrad Cunningham) Date: Wed, 19 Dec 2018 14:48:51 -0600 Subject: [Haskell & FP in Education] Faculty Position Teaching Functional Programming and Related Topics Message-ID: For the past 28 years, I have taught an elective course in Functional Programming several times--mostly using Haskell. For the past two years, I have used Haskell as the primary language in my department's required Organization of Programming Languages course. During the past dozen years, I have also chosen to teach elective courses on various software engineering and programming language topics using languages such as Scala, Elixir, Lua, Ruby, Prolog, Elm, and Python. However, I plan to retire in a few months. My department is looking to fill my position and one or more other new faculty positions. My colleagues would welcome strong applicants with expertise and interest in the programming language and software engineering spaces. I append the position announcements below. H. Conrad Cunningham, D.Sc., Professor Computer and Information Science (Department Chair, 2001-15) University of Mississippi (USA) ----- Assistant Professor The Department of Computer and Information Science at the University of Mississippi invites applications for one or more tenure-track Assistant Professor positions. Applicants must hold a PhD or equivalent in Computer Science or a closely related field by August 15, 2019. Applicants must have the ability to teach both graduate and undergraduate courses, conduct research in major areas of computer science, and supervise MS and PhD students. The Department has an ABET/CAC-accredited undergraduate program and MS/PhD programs. Visit http://www.cs.olemiss.edu for more information about the Department. Applicants must apply online at careers.olemiss.edu, supplying the following documents: a cover letter; curriculum vitae; research and teaching statements; and a list of three references with email addresses and phone numbers. Combine the documents into a single PDF and upload in the resume or cover letter slot. Review of applications will begin immediately and continue until the position is filled or an adequate applicant pool is reached. For ten consecutive years, the University of Mississippi has been recognized as one of the best colleges in the nation to work for by The Chronicle of Higher Education. The University of Mississippi is an EOE/AA/Minorities/Females/Vet/Disability/Sexual Orientation/Gender Identity/Title VI/Title VII/Title IX/504/ADA/ADEA employer. ----- Instructional Assistant Professor The Department of Computer and Information Science at the University of Mississippi invites applications for an Instructional Assistant Professor. Applicants must hold a PhD or equivalent in Computer Science or a closely related field by August 15, 2019. Applicants must have the ability to teach both graduate and undergraduate courses, supervise MS students, and perform service duties as needed. This is a permanent, support faculty position. It is non-tenure track, but an individual holding this title is eligible for promotion to higher ranks. The Department has an ABET/CAC-accredited undergraduate program and MS/PhD programs. Visit http://www.cs.olemiss.edu for more information about the Department. Applicants must apply online at careers.olemiss.edu, supplying the following documents: a cover letter; curriculum vitae; teaching statement; a list of three references with email addresses and phone numbers; and, optionally, a research statement. Combine the documents into a single PDF and upload in the resume or cover letter slot. Review of applications will begin immediately and continue until the position is filled or an adequate applicant pool is reached. For ten consecutive years, the University of Mississippi has been recognized as one of the best colleges in the nation to work for by The Chronicle of Higher Education. The University of Mississippi is an EOE/AA/Minorities/Females/Vet/Disability/Sexual Orientation/Gender Identity/Title VI/Title VII/Title IX/504/ADA/ADEA employer. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stuart at cs.uchicago.edu Wed Dec 19 21:50:38 2018 From: stuart at cs.uchicago.edu (Stuart A. Kurtz) Date: Wed, 19 Dec 2018 15:50:38 -0600 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: <52421d1b-4788-960c-3826-3550bdeab8f7@htwk-leipzig.de> <5FD8EC2C-04B1-489B-809C-7C058EA1006D@mcmaster.ca> Message-ID: Dear Fernando, > I think one of the problems in introducing CS education in K-12 is the lack of a clear widespread rationale for it. You've enumerated a few rationales. My wife is a recently retired 4th grade teacher, who's taught both Logo and Scratch over three decades in the classroom. There's a legitimate case for covering material like this, based both on developing problem solving abilities and on the observation that some students learn better via manipulatives. Code is a mathematical manipulative. These are not small effects. In the best cases, programming can become a vehicle for collaborative mathematical work, a category that otherwise hardly exists. But it's clear to me that there are other drivers as well. My take on this is US-centric, other polities may have other drivers. School boards are elected, and so are responsive to parental pressure. In the US, this often takes the form of demand for courses and activities that make students more competitive for highly-compensated work. This pressure can be particularly acute in well-resourced school districts, whose students will be competing for admission to selective college and universities. For the students I see, this means that their exposure to computer programming at the pre-collegiate level rarely came at the cost other activities. They've had four years of math, including calculus, art and band, and the opportunity to compete in debate, and not gymnastics, and perhaps even fencing if they've wanted too. They haven't had to give up the main course to get dessert. They haven't even had to give up other desserts. School budgets get built out of multiple parts that are carefully kept unblended. There's a certain pot of money labelled for faculty salaries, another pot labeled for capital expenses, another pot for special education, another for technology. Educators and technology companies alike have argued for technology in the classroom, and programming courses are one way to use this technology productively. Unfortunately, the use of semi-proprietary languages via plush IDEs can result in early obsolescence, driving the need for more purchases and a bigger piece of the pie going to technology. Of course, the ability to use technology effectively depends very much on the teaching staff, and well-resourced schools are more likely to have the staff with the knowledge and initiative to use technology effectively in the classroom. Wealth tenures wealth. As a university faculty member in the US, I see high-school programming, perhaps especially when it is done well, as a sustainer of inequality. It's hard to get into CS programs, and high school exposure to programming is highly corollated with success in bottleneck college programming classes. This is something that I've thought hard about, but my answer (teaching Haskell) I know to be idiosyncratic. It concerns me that, while it appears to have greatly reduced disparities based on prior preparation (and so has some utility in dealing with US issues around race/ethnicity), it may have increased gender inequity. None of this is easy if you take it seriously. Peace, Stu From mlewis at trinity.edu Thu Dec 20 17:17:24 2018 From: mlewis at trinity.edu (Mark Lewis) Date: Thu, 20 Dec 2018 11:17:24 -0600 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: <52421d1b-4788-960c-3826-3550bdeab8f7@htwk-leipzig.de> <5FD8EC2C-04B1-489B-809C-7C058EA1006D@mcmaster.ca> Message-ID: I wanted to address Stu's last comment. We've been using Scala at Trinity for CS1 since 2010, and even before that, we didn't use the language used for the AP exam. Using an "uncommon language" for CS1 ( https://dl.acm.org/citation.cfm?doid=2839509.2844666) has a number of benefits. Leveling the playing field is a big one. Using a functional approach also really helps because it is inevitable that the students who have codded before did it in an imperative language. At Trinity, we have taken the additional step of having a special "advanced" section for students with significant background, following the model at Harvey Mudd. The primary goal of this is to get those students away from the ones who haven't done much before, so they don't scare them off. I teach that "advanced" section and like to push students to use a more functional style, while my colleagues, who are teaching primarily students who have never coded before, use a more imperative style. I think that there could be an interesting discussion of the merits of this, but it definitely has the advantage that we can all teach the same language and end in the same place for CS2 while giving the advanced section more of a challenge in terms of exposing them to things they don't already know. Mark On Wed, Dec 19, 2018 at 3:50 PM Stuart A. Kurtz wrote: > Dear Fernando, > > > I think one of the problems in introducing CS education in K-12 is the > lack of a clear widespread rationale for it. > > You've enumerated a few rationales. > > My wife is a recently retired 4th grade teacher, who's taught both Logo > and Scratch over three decades in the classroom. There's a legitimate case > for covering material like this, based both on developing problem solving > abilities and on the observation that some students learn better via > manipulatives. Code is a mathematical manipulative. These are not small > effects. In the best cases, programming can become a vehicle for > collaborative mathematical work, a category that otherwise hardly exists. > > But it's clear to me that there are other drivers as well. My take on this > is US-centric, other polities may have other drivers. > > School boards are elected, and so are responsive to parental pressure. In > the US, this often takes the form of demand for courses and activities that > make students more competitive for highly-compensated work. This pressure > can be particularly acute in well-resourced school districts, whose > students will be competing for admission to selective college and > universities. For the students I see, this means that their exposure to > computer programming at the pre-collegiate level rarely came at the cost > other activities. They've had four years of math, including calculus, art > and band, and the opportunity to compete in debate, and not gymnastics, and > perhaps even fencing if they've wanted too. They haven't had to give up the > main course to get dessert. They haven't even had to give up other desserts. > > School budgets get built out of multiple parts that are carefully kept > unblended. There's a certain pot of money labelled for faculty salaries, > another pot labeled for capital expenses, another pot for special > education, another for technology. Educators and technology companies alike > have argued for technology in the classroom, and programming courses are > one way to use this technology productively. Unfortunately, the use of > semi-proprietary languages via plush IDEs can result in early obsolescence, > driving the need for more purchases and a bigger piece of the pie going to > technology. Of course, the ability to use technology effectively depends > very much on the teaching staff, and well-resourced schools are more likely > to have the staff with the knowledge and initiative to use technology > effectively in the classroom. Wealth tenures wealth. > > As a university faculty member in the US, I see high-school programming, > perhaps especially when it is done well, as a sustainer of inequality. It's > hard to get into CS programs, and high school exposure to programming is > highly corollated with success in bottleneck college programming classes. > This is something that I've thought hard about, but my answer (teaching > Haskell) I know to be idiosyncratic. It concerns me that, while it appears > to have greatly reduced disparities based on prior preparation (and so has > some utility in dealing with US issues around race/ethnicity), it may have > increased gender inequity. None of this is easy if you take it seriously. > > Peace, > > Stu > > _______________________________________________ > Education mailing list > Education at haskell.org > https://mail.haskell.org/cgi-bin/mailman/listinfo/education > -- ---------------------------------- Dr. Mark C. Lewis Professor Department of Computer Science One Trinity Place Trinity University San Antonio, TX 78212-7200 mlewis at trinity.eduhttp://www.cs.trinity.edu/~mlewis/http://www.programmingusingscala.net/https://www.youtube.com/channel/UCEvjiWkK2BoIH819T-buioQ ---------------------------------- -------------- next part -------------- An HTML attachment was scrubbed... URL: From s.frohlich.2016 at my.bristol.ac.uk Fri Dec 21 14:05:31 2018 From: s.frohlich.2016 at my.bristol.ac.uk (Samantha Frohlich) Date: Fri, 21 Dec 2018 14:05:31 +0000 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: Hello everyone, My name is Sam Frohlich and I am an undergraduate at the University of Bristol hoping to pursue a PhD on the subject of FP and teaching. I am currently enjoying being a teaching assistant for an introductory course into Haskell and then a more advanced course using Haskell to make compilers which is taught to second years. While I focus on finishing my undergraduate degree I will quietly stay up to date with this mailing list, but after I have graduated I hope to become more involved! Sam :-) On Sun, Dec 16, 2018 at 12:46 PM wrote: > Send Education mailing list submissions to > education at haskell.org > > To subscribe or unsubscribe via the World Wide Web, visit > https://mail.haskell.org/cgi-bin/mailman/listinfo/education > or, via email, send a message with subject or body 'help' to > education-request at haskell.org > > You can reach the person managing the list at > education-owner at haskell.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Education digest..." > > > Today's Topics: > > 1. Welcome and introductions (Chris Smith) > 2. Re: Welcome and introductions (Dan Burton) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sat, 15 Dec 2018 17:19:49 -0500 > From: Chris Smith > To: education at haskell.org > Subject: [Haskell & FP in Education] Welcome and introductions > Message-ID: > < > CAPq5PvL6v9SckPYFdxsaJU_UV7CJdPGbqintDRBAU_gxpmEaSQ at mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Hello, everyone! Welcome to education at haskell.org. > > This mailing list grew out of discussions at ICFP 2018 about creating a > space for collaboration and discussion of using Haskell and other > functional programming languages in general education. To jump-start that > process, I'd like to invite everyone to introduce themselves and > specifically share your goals, opportunities, vantage point, and > interests. The hope is that we'll be able to sort ourselves into > compatible interests and ideas, to kick off more detailed discussion or > collaborations. > > Some suggested questions to spur discussion: > > - What education-related projects are you involved in, or have you been > involved in previously? > - What other projects do you find exciting, intriguing, or worthy of > emulation? > - On the other hand, what projects or conversations should be happening, > but are not happening yet? > - Is there anything specific that you are definitely looking for from this > space? > - What vision do you have for functional programming in education? That > is, what general principles guide your thinking? > > I will reply with my own answers, and encourage you to do the same. > > Thanks, > Chris > > P.S. I realize this email is long past due. Between my job as a software > engineer, volunteer teaching, and recent development on CodeWorld, I have > again fallen into the trap of over-committing myself and falling behind on > outside commitments. I hope that late is still better than never. > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://mail.haskell.org/pipermail/education/attachments/20181215/6471bc3c/attachment-0001.html > > > > ------------------------------ > > Message: 2 > Date: Sun, 16 Dec 2018 00:11:34 -0800 > From: Dan Burton > To: Chris Smith > Cc: education at haskell.org > Subject: Re: [Haskell & FP in Education] Welcome and introductions > Message-ID: > HqVFCEcOqhvbSwcJrWQwQ at mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Here's a loosely collected bundle of thoughts in response to a small part > of this. > > I'm curious about FP at various levels of education. I know Haskell is or > has been used for various university courses. Is there any sort of existing > network of professors that share Haskell (or Racket, etc) teaching > resources and materials? Are there resources that make sense to share > between K-12 teachers and higher ed teachers? (e.g. how well does How To > Design Programs work for teaching kids?) > > A related topic on my mind is BayHac and similar events. We discussed the > possibility of having some younger people attend, but ended up not > following through on that and attendance was mostly (entirely?) adults, as > usual. I'm wondering if there is value in trying to make some part of > BayHac more accessable and appealing to a wider audience (incl young people > and people new to programming), or whether this would dilute the focus of > the event too much and end up serving both young and old audiences poorly. > > I bring up BayHac to this list because I see it not just as a "let's get > together and hack" event, but more like a "let's get together and share > knowledge" event, where the knowledge share ideally enables people to get > hacking on something. And pointing people to educational resources like > codeworld is exactly the sort of thing that should be going on at BayHac, > so that those with the desire to learn are empowered to continue doing so > for long after the event is over. > > On Sat, Dec 15, 2018, 14:20 Chris Smith > > Hello, everyone! Welcome to education at haskell.org. > > > > This mailing list grew out of discussions at ICFP 2018 about creating a > > space for collaboration and discussion of using Haskell and other > > functional programming languages in general education. To jump-start > that > > process, I'd like to invite everyone to introduce themselves and > > specifically share your goals, opportunities, vantage point, and > > interests. The hope is that we'll be able to sort ourselves into > > compatible interests and ideas, to kick off more detailed discussion or > > collaborations. > > > > Some suggested questions to spur discussion: > > > > - What education-related projects are you involved in, or have you been > > involved in previously? > > - What other projects do you find exciting, intriguing, or worthy of > > emulation? > > - On the other hand, what projects or conversations should be happening, > > but are not happening yet? > > - Is there anything specific that you are definitely looking for from > this > > space? > > - What vision do you have for functional programming in education? That > > is, what general principles guide your thinking? > > > > I will reply with my own answers, and encourage you to do the same. > > > > Thanks, > > Chris > > > > P.S. I realize this email is long past due. Between my job as a software > > engineer, volunteer teaching, and recent development on CodeWorld, I have > > again fallen into the trap of over-committing myself and falling behind > on > > outside commitments. I hope that late is still better than never. > > _______________________________________________ > > Education mailing list > > Education at haskell.org > > https://mail.haskell.org/cgi-bin/mailman/listinfo/education > > > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://mail.haskell.org/pipermail/education/attachments/20181216/2ca09085/attachment-0001.html > > > > ------------------------------ > > Subject: Digest Footer > > _______________________________________________ > Education mailing list > Education at haskell.org > https://mail.haskell.org/cgi-bin/mailman/listinfo/education > > > ------------------------------ > > End of Education Digest, Vol 1, Issue 1 > *************************************** > -------------- next part -------------- An HTML attachment was scrubbed... URL: From pbv at dcc.fc.up.pt Fri Dec 21 15:32:14 2018 From: pbv at dcc.fc.up.pt (Pedro Vasconcelos) Date: Fri, 21 Dec 2018 15:32:14 +0000 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: References: Message-ID: <20181221153214.619aeb20@pbv-desktop> n never. Hello all, My name is Pedro Vasconcelos and I am an auxiliary lecturer at the University of Porto. We teach introductory FP to CS and CE undergraduate students using Haskell (around 150-170 new students every year). I have lectured that introductory course (but not currently) and also an optional "Advanced FP" course at the MsC level. To try to bring some FP goodness to teaching other programming languages, I've developed a Haskell library and a web system for generating feedback to C programming exercises using QuickCheck testing; this is used by 200-300 students the CS department of the Faculty of Science of the University of Porto. https://github.com/pbv/codex-quickcheck https://github.com/pbv/codex I'm also interested in learning about experiences in connecting FP with the CS curricula in general. While I enjoy teaching Haskell to 1st year students (and some really like it), I have found that most students don't get to use FP in later courses (apart from the odd student doing compilers/PL projects in Haskell). Regards, Pedro From sperber at deinprogramm.de Sun Dec 23 09:39:31 2018 From: sperber at deinprogramm.de (Michael Sperber) Date: Sun, 23 Dec 2018 10:39:31 +0100 Subject: [Haskell & FP in Education] Welcome and introductions In-Reply-To: (Dan Burton's message of "Sun, 16 Dec 2018 00:11:34 -0800") References: Message-ID: Dan Burton writes: > I'm curious about FP at various levels of education. I know Haskell is or > has been used for various university courses. Is there any sort of existing > network of professors that share Haskell (or Racket, etc) teaching > resources and materials? Are there resources that make sense to share > between K-12 teachers and higher ed teachers? (e.g. how well does How To > Design Programs work for teaching kids?) The plt-edu mailing list is quite active: http://lists.racket-lang.org/plt-edu/listinfo -- Regards, Mike