Quorum, CS4All, and Evidence-oriented Programming
May 18, 2018 4:08 PM   Subscribe

Quorum is a programming language intended to be used in K12 computer science education, as well as accessible to people regardless of disabilities. The syntax is intended to be easy for kids to grasp, hence the use of "action," instead of "function," among other interesting design choices.

This is part of a larger program called AccessCSForAll, which aims to increase the participation of students with disabilities in computing courses.

They have also begun working on something called Blocks4All, which is a way to make block-based programming accessible to the disabled.
posted by Alensin (52 comments total) 22 users marked this as a favorite
 
This was inspired by a speech I heard last night at a meetup for Global Accessibility Awareness Day. The Quorum presentation was great, and I'll provide a link to it if I can find one.
posted by Alensin at 4:38 PM on May 18, 2018


The evidence page is interesting.
posted by clawsoon at 4:45 PM on May 18, 2018 [3 favorites]


I'm very skeptical of attempts to make a new educational language in order to make programming "more accessible to x group". Their evidence page distinctly lacks any reference to the multiple previous efforts to do so, perhaps most notably the non-English-based languages. This makes your audience completely dependent on your own almost-definitely-miniscule materials, instead of being able to use the work done by millions of other people already, for one thing.
posted by the agents of KAOS at 6:12 PM on May 18, 2018 [7 favorites]



repeat 500000000 times
     output "RADIO SHACK IS BUTTS"
end

posted by benzenedream at 6:34 PM on May 18, 2018 [15 favorites]


New math for programing , sheesh academics can't just teach, kids get it, probably the teachers that can't learn to open a console window.
posted by sammyo at 6:53 PM on May 18, 2018


BASIC was easy to grasp at age 8. I'm not sure which wheel they are trying to reinvent here.
posted by grumpybear69 at 7:11 PM on May 18, 2018 [4 favorites]


The speaker last night specifically contrasted the language in question with Java, as taught in AP computer science, so that's at least one data point.

I'm not sure why BASIC is no longer taught, it is indeed a good introductory tool.
posted by Alensin at 7:16 PM on May 18, 2018 [3 favorites]


Form the Evidence page:

> Novices often struggle to interpret them and they have been shown to cause considerable frustration. There is a wide variability between programming languages, and for some there is not a one-to-one mapping between the error in code and the resulting error message.

I'll note that the Scratch language gets around this by simply not having error messages at all. Also, syntax errors are impossible to make since the blocks are shaped in such a way to only fit together in syntactically valid ways. The academic paper on Scratch is a good read.
posted by AlSweigart at 7:27 PM on May 18, 2018 [9 favorites]


After looking through the website, I am underwhelmed by Quorum.

They removed the parentheses from function calls (but only sometimes though; it's like the optional semicolons at the end of JavaScript lines and that turned out to be a disastrous idea) and use "end" keywords instead of curly braces. The online REPL doesn't display runtime errors (it displays no feedback at all instead), the keywords are all in English with no plans to expand them to non-English languages, and they make the same over engineered hierarchies with the standard library ("Libraries.Compute.Math").

Their error messages are just as inscrutable as any other language. If I ran:

integer a = 5 +

...it doesn't tell me "You need to put a number after the +" it just says:

no viable alternative at input ''

What?

Renaming "functions" to "actions" and "self" to "me" is cute (and putting 0, 0 at the BOTTOM left of the screen is infuriating; when Scratch flipped the y axis coordinates at least they put the origin in the middle of the window, but these are all insignificant changes to the otherwise still-difficult task of programming. Heck, they use NetBeans as the IDE!

They'd do a lot better if instead of a compiled language they had real-time linting or interactive debugger tool in their online repl. Or, you know, the ability to run programs on mobile.

It's like they set out to make programming easy, but then just ended up reinventing Java with some keyword changes. Meanwhile, it's yet another language to fracture a programming education space that is already crowded with mediocre products.

I'll just stick to Python and Scratch.
posted by AlSweigart at 7:30 PM on May 18, 2018 [22 favorites]


The speaker also mentioned Scratch, actually. It's not accessible for reasons he didn't go into, though I suspect low-vision issues and probably screen reader incompatibility. BLocks4All provides support for both.
posted by Alensin at 7:30 PM on May 18, 2018


I use scratch with my students, the youngest in my class this year was six. It offers everything a child might want (weird cat noises, cartoon ghosts, the ability control the movements of a banana of arbitrary size) and it is quite simple while still very powerful. Its most important feature is whimsy. I never have to explain why we’re programming to my kids, they just get into it.

Scratch has a pedagogical approach based on exploration - kids figure things out on their own by exploring. Quorum’s approach seems much more based on lessons with specific objectives. I prefer to have the kids learn by exploring, especially for their first programming experiences. It empowers them and starts them off with a sense of competence and investment.
posted by mai at 7:46 PM on May 18, 2018 [14 favorites]


Which is to say that Scratch is learning through play, which is the best way for kids to learn.
posted by mai at 7:46 PM on May 18, 2018 [6 favorites]


I agree with a lot of AlSweigart's criticisms, but I skimmed through the tutorial and it has some good aspects for its purpose. The choices for loop syntax ("repeat $X times", "repeat until $Y", "repeat while $Z") are very intuitive (to English speakers, at least).

A "Quorum described for programmers" article would be useful.
posted by ripley_ at 8:02 PM on May 18, 2018 [1 favorite]


My older son has built some impressively complex things in Scratch.
posted by wintermind at 8:02 PM on May 18, 2018


I am strongly sympathetic to the idea of evidence-based language development and have been rooting for Quorum to succeed, but I am pessimistic.

People talk about the "design space" of languages, and if language design really was flat like the spaces we are used to, it would be much easier to arrive at optimal language designs through a feasible number of experiments. Unfortunately, language design is full of knock-on effects that cause the "space" to crinkle like kale. This means that each experiment of feasible size can only tell you something about a local neighborhood of this space, which might not be typical of other neighborhoods.

---------

Graphical languages that enforce correct block structures are a wonderful starting point for kids. It's just so much easier to make something that works. My son has done more in Scratch than he has in other environments he's tried (pico-8 and bitsbox). That said, he does derive a greater feeling of accomplishment from what he does in text environments (maybe because it looks more similar to what he sees me doing, which makes it seem more "real"?).
posted by a snickering nuthatch at 8:15 PM on May 18, 2018 [4 favorites]


My nephew has been exposed to a number of options for beginners, and the one that seemed to stick best in his case was Code Combat. It's essentially gamified Python (or JavaScript). I imagine the "RPG" metaphor/interface could be confusing for kids who haven't played games like that, but for those who like RPGs already, it seems like a neat way to set up puzzles that feel like pretty normal professional programming tasks (like, you know what you want to achieve, browse API docs looking for methods, get feedback from an IDE, etc.). You can jump right into the demo to see what I mean.
posted by Wobbuffet at 8:21 PM on May 18, 2018 [3 favorites]


My dad tried to teach me how to program in Delphi.

Looking back, I feel like this explains many things.
posted by Panthalassa at 8:27 PM on May 18, 2018 [6 favorites]


My five year old can and does use Scratch (obsessively, actually, and I'm forever trying to find materials that are at a low enough reading level for him but still useful to his developing understanding of computational thinking and engineering, and they are thin on the ground). I'm making mental notes on what language to introduce next (much much later, but next). I'm in technology but I'm not a coder, so it's a bit blind leading the blind. I looked at a few of the links here and made some mental notes but I didn't see anything that really wowed me, though I may definitely be missing something.
posted by soren_lorensen at 8:27 PM on May 18, 2018


> It's like they set out to make programming easy, but then just ended up reinventing Java with some keyword changes.

Yeah, I briefly scanned the source code and it includes a bunch of code for generating JVM byte code, so I'm pretty sure the language is built on top of Java and, other than syntax, has more or less identical features. So they didn't reinvent Java so much as put a coat of paint over it, which means that it inherits all of the issues with Java's "everything must be an object or else" approach to OOP that many newer languages seem to have rejected.

More generally, Quorum seems to fall into a common trap for educational languages: it focuses way too much on making the syntax simple and intuitive without seriously attempting to make writing correct programs easier. Syntax may be a source of frustration very, very early in the learning process, but after a few months I'd imagine most bugs that aren't trivially fixed are due to logical errors or bad design, which have almost nothing to do with syntax. In other words, syntax can't prevent off by one errors or stack overflows, but most educational languages I've seen seem to conveniently ignore this.

Unfortunately, a lot of the features that make writing correct programs easier also make languages harder to learn, such as very strict/powerful type systems (i.e. Haskell) or built in static analysis (i.e. Rust's ownership system). I'm not sure how to resolve this tension between ease of use and correctness, but I think it is something educational language designers need to think about (and I'm guessing many of them have already). If kids spend too much time learning easy but permissive languages, they will probably pick up sloppy habits that don't scale to large/complicated programs. If you try to teach a strict language too early, however, kids won't learn anything and will lose motivation very fast.
posted by jv776 at 8:43 PM on May 18, 2018 [4 favorites]


> The speaker last night specifically contrasted the language in question with Java, as taught in AP computer science, so that's at least one data point.

Only the AP Computer Science A exam. The recently introduced AP Computer Science Principles is language agnostic, which is lovely.
posted by timdiggerm at 9:16 PM on May 18, 2018 [1 favorite]


My daughter who is 9 has been using scratch, thanks to an impressive array of free courses for Girls To Code. She’s making a game where the bumble bee has to collect the pollen and avoid the toxins. It just keeps getting magically weirder and weirder as she figures out new features.
posted by Rumple at 10:06 PM on May 18, 2018 [3 favorites]


I too am skeptical. They start by emphasizing the importance of human-factors design in language, then identify the relative lack of research in that area, then steamroll forward with making decisions based on this scattershot "evidence".

So yeah then they end up with a language that says
use Big.Baroque.Standard.Library.System
instead of import or require. Big deal.

And the stated goal of supporting disabilities was a huge contrast after recently reading this article about Microsoft's work developing a game controller to that end, particularly their learning not to pursue a unified super-controller that would be all things to all disabilities, but rather an adaptive core module that can easily assemble a particular setup of adaptive technologies for someone's particular accessibility needs. Whereas they seem to be very golden-hammer-y about their keyword-heavy grammar with less punctuation being easier for screen readers.

And on a more personal note, they speculate several times how useful it'd be for people with learning disabilities. Well I have a learning disability and I'm a professional programmer, and nothing there is at all helpful to me. What I find helpful is using my IDE to keep track of various contextual API stuff as I type so my poor memory doesn't have to juggle that all. And syntax highlighting, especially helpful in keyword-heavy languages so I don't have to read so many words just to figure out the structure of what I'm doing.

And I should mention one of the reasons I'm so down on this is that "teaching languages" have a very poor track record. Without the wide adoption, libraries, and integrations of a mainstream language there's a huge barrier to expanding one's skills beyond the initial playroom. It's a bit like teaching kids Esperanto as a preparation for teaching them a foreign language.
posted by traveler_ at 10:29 PM on May 18, 2018 [5 favorites]


As it happens today I've been playing with Elm, and wow it has great error messages.
posted by i_am_joe's_spleen at 10:39 PM on May 18, 2018


I TA for a Girls Who Code class--or well I have been doing so on an annual basis for a couple years now, it's not going right this moment or anything--but one thing I will say: I don't really see the need for this? My girls are middle schoolers and they don't seem to have a problem with the general syntax of Python. Their problems are actually primarily about attention to detail, because their general use of electronic devices? It's all super forgiving, now. And there will never, ever be a programming language that just... doesn't care what you type. They pick up the generalities very quick, and then we spend weeks trying to force into their heads the idea that no, seriously, you know that the indentation matters, so IF IT ISN'T WORKING PLEASE CHECK THE INDENTATION. Or even more often: You must spell the variable the same way every time you use it.

The kids really don't need another new language, and if anything I'd far rather be teaching them something where I know that in a year or two they could go find ways to make (simple) games or web apps without having to learn a different one right off.
posted by Sequence at 10:53 PM on May 18, 2018 [5 favorites]


The "evidence" page is bizarre. E.g. sentences like "*one* [..] trial found that accuracy rates for *certain* [..] languages were not significantly higher than [..] randomly generated keywords and symbols, while languages that deviated from this style did" (emphasis mine) do not give one confidence in their ability to assess languages or studies :/. Then the studies they have quoted (cherry-picked?) also seem strange, e.g. one that shows that static type checking helps you fix type-related errors. This is an expected result (I hope!) but doesn't explore the cost - how are other types of error affected? What is the background cost of type-related errors compared to others? What was the null hypothesis for this study?

As intimated elsewhere in this thread, they seem to be on a hiding to nothing. Anyone can write completely useless code in any language. While it is easy to design a language that makes it very difficult to write good (or any!) code, I don't think there's much evidence that you can design a language that makes, or even particularly helps, you write "good" code any more than we already have. I suspect that we long ago reached the point where the law of diminishing returns suggests that we have already gone as far as we should down the road of improving languages of the types already in use and, in evolutionary terms, we are stuck in a local maximum. Any significant improvement now requires the rise of a new master race, unlike any we've seen before, and this isn't that.
posted by merlynkline at 11:12 PM on May 18, 2018 [3 favorites]


Gonna leave this here for anyone interested in equity and computer science: Curriculum Design as an Engineering Problem.

Quorum looks like Python, Java, and C++ simultaneously, with cosmetic tweaks. Why not just pick one of those languages, where if you have a problem, 80 other people have also had it and there is an answer for you on StackOverflow?
posted by batter_my_heart at 11:29 PM on May 18, 2018 [3 favorites]


Why not just pick one of those languages, where if you have a problem, 80 other people have also had it and there is an answer for you on StackOverflow?

People will have a hard time agreeing to this because it practically leads to PHP, but I'd argue taht nothing has helped non-programmers become programmers more in the last decade than wanting to make just one little change to your WordPress-powered blog and PHP's design is what facilitates this, and is thus a very good language.
posted by Space Coyote at 1:52 AM on May 19, 2018 [2 favorites]


Quorum looks like Python, Java, and C++ simultaneously, with cosmetic tweaks. Why not just pick one of those languages, where if you have a problem, 80 other people have also had it and there is an answer for you on StackOverflow?

The point is to introduce kids to the concept of programming, using a tool that, as you say, looks a bit like a lot of more advanced, actually-used-in-the-real-world languages. Sort of a generic, general primer, if you will.
posted by Thorzdad at 2:54 AM on May 19, 2018


which is the best way for kids to learn

In my experience it's the best way for humans to learn.

The bit about static typing was weird, since, most of the time, errors thrown regarding type are only being thrown because there's a rule that says certain objects have to be a certain type. Like maybe once a month I run into an error that's the result of data being the wrong type? And usually that's not because the code is poorly-written but because the actual data entered is mismatched, meaning the problem occurs in the one place the programmer has little to no control over: user input.
posted by eustacescrubb at 3:03 AM on May 19, 2018 [1 favorite]


AlSweigart: Renaming "functions" to "actions" and "self" to "me"

In Python, "self" is only used by convention. The first guy I programmed with always used "my" instead, since it was two characters shorter and generally made more sense.
class Foo:
  def __init__(my, abc):
    my.abc = abc
  def bar(my):
    print my.abc
I've since switched back to "self", since I don't want to blow too many people's minds.
posted by clawsoon at 5:11 AM on May 19, 2018 [6 favorites]


/* Evidence-based programming pseudocode */

whereas:  program name is 'prime-factors'
and: an algorithm for finding prime factors is given in Knuth vol. 2 page 379
and given:  the program specification in /usr/home/docs/prime-factors.txt
therefore, be it proposed that:
   S_FACTORIZE:  
   we define a function factorize(number n):
      ... 

and then 
in accordance with:  SICP section 2.1.3
and given:  the function definition at S_FACTORIZE above 
and given:  the program specification in /usr/home/docs/prime-factors.txt
it is now appropriate to:
  output factorize(cast(number, read(stdin))
posted by sfenders at 5:32 AM on May 19, 2018 [6 favorites]


The point is to introduce kids to the concept of programming, using a tool that, as you say, looks a bit like a lot of more advanced, actually-used-in-the-real-world languages. Sort of a generic, general primer, if you will.

I mean, once you get to the level of "not actually usable for programming anything useful", I think that with actual kids, the best way I've seen to just introduce a lot of the basic concepts did not involve sitting down and typing stuff at all, it's to get a small group of kids, an adult, and a bunch of sandwich supplies, and get the kids to tell you how to make a sandwich.

You can introduce all the concepts of iteration, branching, functions, etc without using a programming language at all, and if you want to actually start generic, that makes way more sense than coming up with another language. Just start with programming being a series of instructions, and start ideally with the non-programming language they speak best and a process they intuitively understand well, like sandwich prep.

The main drawback is that some spaces that host kids' programming activities are not super thrilled about the crumbs.
posted by Sequence at 5:43 AM on May 19, 2018 [11 favorites]


I agree with Space Coyote: having talked to a lot of developers at conferences in the last few years, I now think of WordPress as the gateway drug to programming. :)

From mentoring at Django Girls events, I'd also agree that remembering about indentation (in Python, anyway) and spelling things consistently are issues for novice programmers. There's usually also someone who has trouble navigating the file system using the command line (and if anyone has good tips for helping people understand that concept, I'm all ears).

Something else I often see: a student doesn't get the expected response from entering something into the command line, I show them where they mistyped something and tell them that the commands need to be entered exactly as shown in the tutorial (e.g. `ls` not `Ls`). The student then replies something like, "What, really, it's that stupid that it can't tell what I mean?"

This baffled me for ages, until I had an edge-of-sleep realisation that non-programmers' main experience with typing 'commands' into a computer is the Google search bar, which does a very good job of understanding what they mean even when it's misspelled! I'm sure that having realised this will help me explain it better in future. :)
posted by daisyk at 6:16 AM on May 19, 2018 [5 favorites]


Has anyone tried out Mu, the beginners' Python IDE? It also works with micro:bits, which are getting quite popular for teaching programming. It sounds like a good idea but I've not really looked into it myself.
posted by daisyk at 6:22 AM on May 19, 2018


That's really interesting, daisyk! I was a decade and a half into programming before I encountered someone who said that it was stupid that a programming language was case sensitive. My first thought was, "That's not stupid at all! Of course you have to be precise!", but I've been gradually becoming less sure of that.

Perhaps the requirement for precision is a compiler limitation.
posted by clawsoon at 6:28 AM on May 19, 2018 [1 favorite]


C64 Basic pros: not case sensitive, doesn't care about whitespaces, only two datatypes, integrated into the OS at the user interface level, can be as complex as you want to get but also can do cool stuff like turn your monitor into a strobe light in 3 lines of code. Emulators aplenty, can be run from your browser. Introduces universal fundamental concepts like variables, logic brancing and subroutines in literally a big friendly font. Tells you almost immediately when you do something wrong.

Cons: terrible IDE, obsolete.
posted by grumpybear69 at 6:46 AM on May 19, 2018


Andy Ko wrote an interesting trip report about a recent Dagstuhl seminar on "Evidence About Programmers for Programming Language Design"; Amelia McNamara also blogged about it, and the slides are online.
posted by James Scott-Brown at 6:46 AM on May 19, 2018


Since this has turned into a nostalgia thread I will throw in that learnable programming sort of peaked for me with two things within a couple of years of each other, Turbo Pascal for DOS and Visual Basic 6.0 for Windows. When I started to learn Java GUI programming and having to write all the getters and setters and such I was flabbergasted since I was already writing professional-looking apps to do dumb pranks in VB 6 with much less work.
posted by Space Coyote at 7:09 AM on May 19, 2018 [3 favorites]


Space Coyote: learnable programming sort of peaked for me with ... Visual Basic 6.0 for Windows

It's interesting that Visual Basic regularly tops professional's programmers surveys for most hated/feared/loathed/sinking-feeling-in-my-gut-if-I-have-to-deal-with-it language.

I wonder why.
posted by clawsoon at 8:19 AM on May 19, 2018 [1 favorite]


You wouldn't attempt to create another language to teach someone French.
So why do think you can or need to, to teach programming??
posted by Burn_IT at 8:58 AM on May 19, 2018 [2 favorites]


the Scratch language gets around this by simply not having error messages at all.

Not having error/syntax messages aka feedback is a bad way to code a system.
posted by urbanwhaleshark at 9:06 AM on May 19, 2018


the Scratch language gets around this by simply not having error messages at all.

As a Java programmer, I don't see how you can do without printing a stack trace with the name of hundreds or thousands of classes that could not handle an exception with an entirely uninformative error message.
posted by thelonius at 9:15 AM on May 19, 2018 [4 favorites]


I wonder why.

Signalling. Those folks would beg to be given a VB project after being told to chase down a memory leak in some old embedded C code.
posted by Space Coyote at 9:28 AM on May 19, 2018 [3 favorites]


Signalling

I'm inclined to agree - it's mostly a shibboleth, to indicate that one is a "real" programmer, not some business guy who can slap a few forms together to make a dreary Windows app. VB did have some grotesque language features, (the Variant "type", On Error Resume Next, etc.), but I think the hate is more cultural than due to those.
posted by thelonius at 9:35 AM on May 19, 2018


This isn't at all my field, so correct me if I'm wrong, but isn't VB the scripting language bundled in Excel? In which case I have a hilarious story that ends with an older and more traumatized lab-mate explaining that in Excel, you can assign either integer or decimal values into the same variable. If you subsequently use that variable to index into an array, Excel converts its value into an integer. Big fun, man.
posted by meaty shoe puppet at 9:47 AM on May 19, 2018


no it is actually really bad, if you have to use it for a significant project. you have no idea the sorts of things people demand fit into an excel spreadsheet. more importantly, it definitely is a little bit of a cultural shibboleth, in that if the boss demands you work in VB6, you are probably in an environment that is not great for programmers.

Visual Basic as part of modern .NET is a perfectly fine programming language with weird syntax.
posted by vogon_poet at 9:48 AM on May 19, 2018


This isn't at all my field, so correct me if I'm wrong, but isn't VB the scripting language bundled in Excel?
That is "Visual Basic For Applications", which is, more or less, VB6 that needs to run within some kind of host.

you can assign either integer or decimal values into the same variable
That's the above-mentioned "Variant" data type, I think. If you don't declare a type, a variable is a Variant by default. It's been a long time since my VBA days, but I think you get an error if you declare an Integer type and try to put a floating point number in it.
posted by thelonius at 9:55 AM on May 19, 2018


This baffled me for ages, until I had an edge-of-sleep realisation that non-programmers' main experience with typing 'commands' into a computer is the Google search bar, which does a very good job of understanding what they mean even when it's misspelled!
Sounds like an argument for Wolfram Alpha as a beginning programming language. (I kid. Really, I kid.)

It's also true the if you consider number of times in my life when I've wanted to search for a case-specific phrase, and the amount of time I've spent looking up how to make individual search tools ignore case, I probably should side with the students. I've also had dozens of common misspelled commands in my file of aliases for decades, and I launch sl at least monthly. A shell that notices you've typed one upcase letter after a pipe and checks to see if there's a very similar command in lower case doesn't seem all that dangerous to me. (But, I've also never claimed to be a competent programmer.)

On the article itself, learning from actual controlled studies in education is a pretty compelling idea. On the other hand, being forced to learn some obscure fiddly version of scheme as a college student - 'cause it was pedagogically interesting despite being entirely useless as a tool to actually make computers do anything I cared about - convinced me never to take another computer science class. On the other, other hand, that's worked out pretty well so far, though I doubt it was the professor's intent. Weighing the benefit of not having to learn the word "function" against not having billions of lines of searchable code, libraries, and discussion forums available makes me skeptical that this will make learning easier for anyone who isn't headed for the more theoretical bits of academic CS. But, I could be wrong.
posted by eotvos at 10:06 AM on May 19, 2018 [3 favorites]


not having billions of lines of searchable code is probably an advantage. if students can't copy-and-paste, this is probably a good thing for their first course at least. as far as I can tell there's nothing in a first programming course that is ever so subtle or unusual it would require recourse to StackOverflow.

i mean i'm not optimistic that this language will catch on. Hopefully the accessible features and lessons can be ported to other languages if needed. but I understand the impulse that leads to another one of these educational languages being created every couple years, Java and Python (and, god forbid C) have real problems as teaching languages.
posted by vogon_poet at 10:34 AM on May 19, 2018


On the other hand, being forced to learn some obscure fiddly version of scheme as a college student - 'cause it was pedagogically interesting despite being entirely useless as a tool to actually make computers do anything I cared about - convinced me never to take another computer science class.

On the other, other hand, taking intro CS in Scheme sorta blew my mind and convinced me it was a good idea to take a whole bunch more CS. Mostly this was because it showed me that CS encompassed vastly more than I had imagined. So I don't know if I believe there's a single best way to teach programming- it depends on how you think and what you want out of it.
posted by atoxyl at 11:44 PM on May 19, 2018 [4 favorites]


I mean, once you get to the level of "not actually usable for programming anything useful", I think that with actual kids, the best way I've seen to just introduce a lot of the basic concepts did not involve sitting down and typing stuff at all, it's to get a small group of kids, an adult, and a bunch of sandwich supplies, and get the kids to tell you how to make a sandwich.

A fewer crumbs option: use index cards to have groups of kids create a choose-your-own-adventure story. Or come up with a method to consistently solve sudoku or other puzzles.

But yeah, we run into a similar problem with teaching math - if the students (of any age) don't understand the underlying structure (flow control for a program, logical reasoning for some math solution), then they don't see the need for precision in syntax or notation, and so of course they will get frustrated learning that.

I can see where the sandwich example would be particularly good at getting students to understand the need for more careful syntax, because it would be super funny to the kids to see an adult following their buggy instructions to the letter in trying to put together a sandwich, coming up with something entertainingly crazy - as opposed to encountering that issue with cryptic error messages on a screen in a context without any humor value to soften the frustration students feel about not being able to communicate what they want.
posted by eviemath at 4:33 AM on May 20, 2018 [1 favorite]


Yeah, and that's very much the way we run with it. The usual starting point is some kid saying "you need two piece of bread", at which point the teacher looks entertainingly baffled by such concepts as "twist ties" and "plastic bags" and then, once you've done those things, plates. The mayonnaise jar needs to be opened, and then you need a knife, and then you get some mayo on the knife, and then you spread it on the bread. Great, so we're done now? No, no, you need more mayo than that! Keep doing that until you have mayo all over the bread.

After that, they've got a way better idea that the computer doesn't KNOW that a sandwich means you need mayo on the whole sandwich and not just a little bit on one corner. It probably doesn't know how to unfasten a twist tie. It doesn't know that you cannot put an entire sealed package of ham in between two slices of bread and call it good. And that gets them thinking more about that stuff.

(Then later someday maybe they can get to web frameworks where the computer not only knows how to get the bread out, it's extremely cranky about you trying to insert this whole-wheat nonsense instead of the white bread it's used to--a whole different set of problems.)
posted by Sequence at 3:06 PM on May 20, 2018 [3 favorites]


« Older Disrupting ritual   |   the tyranny of structurelessness Newer »


This thread has been archived and is closed to new comments