We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Hedy: A gradual and multi-lingual programming language for education

00:00

Formal Metadata

Title
Hedy: A gradual and multi-lingual programming language for education
Title of Series
Number of Parts
542
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
When kids learn to program they often use either a visual language like Scratch, or a textual language like Python. While visual languages are great for the first steps, children and educators often want to move on to a textual language. However early on, a textual language and its error messages can be scary and frustrating. Hedy aims bridge this gap with a programming language that is gradual, using different language levels. In level 1, there is hardly any syntax at all; printing is done with: print hello! At every level, new syntax and concepts are added, so learners do not have to master everything at once. Hedy builds up to a subset of Python including conditions, loops, variables and lists. To make learning as accessible as possible, Hedy allows for the use of localized keywords, f.e in Spanish: imprimir Hello! This talk will discuss the pedagogy of Hedy as well as its technical aspects, since a set of changing and localized complex grammars poses several interesting challenges for parsing, and a small language offers a lot of potential from improved error messages.
14
15
43
87
Thumbnail
26:29
146
Thumbnail
18:05
199
207
Thumbnail
22:17
264
278
Thumbnail
30:52
293
Thumbnail
15:53
341
Thumbnail
31:01
354
359
410
Goodness of fitCodeParsingBEEPLine (geometry)Computer configurationoutputBlock (periodic table)DampingQuicksortLetterpress printingProgrammer (hardware)Sinc functionSpacetimeCodeWaveProgramming languageUniverse (mathematics)1 (number)Latent heatNumberData miningNeuroinformatikCompilerComputer programmingCompilation albumLecture/Conference
Conditional-access moduleRule of inferenceSocial classRange (statistics)Computer-assisted translationCodeCompilation albumStructural loadPoint (geometry)Line (geometry)Letterpress printingBitNetwork topologyMathematicsGoodness of fitCASE <Informatik>SpacetimeGradient
Computer programmingCodeTouchscreenoutputComputer programmingCodeLine (geometry)Letterpress printing2 (number)Function (mathematics)
Energy levelCodeTouchscreenComputer virusTurtle graphicsVariable (mathematics)Asynchronous Transfer ModeMereologyLetterpress printingComputer programmingProgrammer (hardware)Variable (mathematics)Program flowchart
Execution unitHecke operatorEnergy levelError messageComputer programmingSlide ruleDemo (music)Observational studySocial classConfidence intervalSpeech synthesisMereologyLetterpress printingComputer animation
Asynchronous Transfer ModeCodeComputer programmingTouchscreenoutputData typeComputer programEnergy levelBlock (periodic table)Computer virusToken ringKerr-LösungLinker (computing)Energy levelLetterpress printingMultiplication signTranslation (relic)SpacetimeCombinational logicLine (geometry)Program flowchart
CodeLinker (computing)Schmelze <Betrieb>Table (information)Latin square1 (number)
Computer iconUser interface
SummierbarkeitProgrammable read-only memoryTowerMulti-agent systemStudent's t-testDifferent (Kate Ryan album)Type theoryComputer clusterBlock (periodic table)Greatest elementDampingSocial classEnergy levelWeb pageComputer programmingStudent's t-testElectronic program guideData managementPattern languageOnline helpComputer-assisted translationInternetworkingMultiplication signReal numberDemo (music)Computer animation
FraktalgeometrieCodeEnergy levelComputer programmingBlock (periodic table)TouchscreenoutputComputer programData typeTurtle graphicsGroup actionView (database)Context awarenessNeuroinformatikEnergy levelComputer programmingComputer animation
Demo (music)Graphic designTurtle graphicsCodeEnergy levelPasswordMessage passingComputer animationProgram flowchart
LoginComputer animation
View (database)Energy levelSocial classNumberLoginComputer programWeb pageAdventure gameMenu (computing)Computer configurationAsynchronous Transfer ModeSoftware developerPasswordMathematicsComputer programmingWeb pageSocial classMaxima and minimaEnergy levelError messageDemo (music)Web browserMereologyComplete metric spaceComputer animation
CodeComputer programEnergy levelComputer programmingTouchscreenoutputData typeComputer virusAsynchronous Transfer ModeAdventure gamePoint (geometry)Program flowchart
ParsingImplementationPerformance appraisalComputer programmingProgramming languageComputerProgramming languageParsingFormal grammarExtension (kinesiology)BitBuildingOpen sourceOnline helpGreen's functionNeighbourhood (graph theory)VideoconferencingComputer animationDiagram
Program flowchart
Transcript: English(auto-generated)
Okay, 10.20. Welcome, everyone. Everyone can hear me right? Good. Welcome to my talk about Hetty. First of all, I promised to wave to my wife. She's watching at home. Can
you all say hi, Susan? Hi, Susan. She never thought this would ever happen, being talked to from the biggest open-source conference in the world. She's at the couch with a broken ankle, and poor her.
Okay, my name is Mark Giesen. I'm a lecturer in IT at a applied university in the Netherlands. And I'm doing... oh, well, I had this wonderful new gadget. And I'm doing this talk about Hetty.
And Hetty is a gradual, multilingual programming language for teaching. Instead of all the other languages here, they're for learning, I think. This one's for teaching, specific. And it's multilingual. And why is it here? It was invented and usually mostly built
by Felina Hermans, a professor in the Netherlands. She's a professor mainly in how do we learn programming. She wrote a book about it. You should definitely read it. What was it?
The Programmer's Brain. You become a really better programmer by just reading that. But how did she come to this? Somewhere in the past, for her it was 2013, for me in 2019, there was a group of children that wanted to learn programming. And, well, we
program. So we said, I'll teach you. That's pretty easy. We started to think, how do you teach programming? How were we taught programming? Well, we weren't. We just sat
in front of a computer with a cursor. And in my case, I started typing hexadecimal coding. I typed over from the nibble or the byte. Those are magazines some of you might know. Probably not. I see some nodding, but OK. And this would result in three things. It
said, beep. Those were the three options I had. Felina was a little luckier. I was a few days or a few years later a little luckier. We did not have a teacher, but we
had a book. In Felina's case, a book of basic programming. And once you get to this, well, you can read it. You can read it. This is plain English. To us programmers, this is plain English. It even has line numbers. So if there is an error, it actually tells
you it's line number 120. And it even puts out some text telling you what's wrong. Wow. Compilers are perfect teachers. That's what we thought. This is how we learned.
We never realized that 90% or 99% of the people didn't think this, and they quit programming. They never got anywhere further than beep. So most of the coding tojos or code clubs start using Scratch. That's pretty easy. It takes a lot of the syntax away by using
block programming. You can actually ask children to build this, and some of them will say, oh yeah, and some of them will say, when they're 14 or 15, Scratch is for kids. If I google
code, it never looks like this. I want to do the real stuff. I want to do zim-zala-bim. So, Felina started coding with this sort of Python. She said, the first thing I'd like to
learn is input and output. She's a teacher. She knows how to teach baby steps. Just the first things first, input and output. Let's use some output. Print hello everyone. Enter, and voila. Hello everyone. Children really like this. It's easy, unless there's some
red scribbling below. They don't care. They still press enter, and this lovely teacher tells them some mumble-jumble, and then in line 5, name print is not defined. And the children
did define print. If they understand English, only if they understand English, mine don't. They're from 8 years old and up. They don't know. They don't know what this is about. And they don't recognize that there's a capital P in there. This one's even worse. It's missing
a parenthesis at the end, and your lovely compiler will tell you some empty lines and then the unexpected EOF while parsing. This 8-year-old kid asked me, what is parsing?
Try to explain parsing while print is not even in their minds yet. It's not that easy. There's too much going on, too much interference in learning. This is not a way of learning. And there's even a better one, since we're using Python. Did anybody see it shift a little?
There's a space in there. Well, Python knows it's not supposed to be there. Unexpected indent. Once I was finished explaining parsing, this was my next problem.
So compilers are lovely teachers. OK, that was true for me, that was true for some of you, and the 99% of the others that didn't make it to this conference, this was not a lovely teacher. The next phase, if I get through to input and output, the next one is iteration, repetition.
For i in range for print i. Well, I can explain that, I think. I have an whole hour. Classes are an hour. Just one hour to explain repetition. Well, the kids only see colons,
brackets, and spaces. And they mumble jumble them through each other. I can give them an example, and they can press run, and they say, OK, OK. But it can never reproduce this, not in an hour at least. Not my kids. Maybe some others can, but not in my class.
Syntax creates too much cognitive load. They have to remember too much things to actually get to the stuff I want them to learn. This is not new to programming. This is true for any language.
It's true for math. How did you do that? Well, we just start with small bits. If you start writing, you write an a and an i and an n and an e, and we would say to the kid that produced this, wow, that's a lovely a. Oh, and you already made a word, in. They're
not separated much. It's good. That's good. And that e is wonderful. It's even nicely on the line. Three compliments, four compliments, and a lot of learning. The next thing they know is they can create words, cat in tree. And once they grasp that, we're going to make it a little harder.
We start sentences with a capital letter. And the capital s or t is completely different than the lower one. So they have to learn a complete new set of letters. The c looks alike, but
some of them are very different. And in some languages, almost all of them are different. After that, we teach them, okay, we start it with a capital, we end it with a period. And once we end it with a period, once they know a sentence ends with a period, they can actually spread sentences over lines. This is maybe sixth grade or something, fourth. I'm not sure where
exactly we are now, but it's gradually changing. Rules are changing. It's not bad to change the rules every now and then. It's good in this case. Same for math. If I have five apples and I take three, how much do you have left? What? Two. They know that.
If you have three and I'm trying to take five, how much do you have left? Zero. Yeah. Only years later, you'll learn that there is a possibility you have minus two apples.
Happy appetite. Dividing, same. Eight divided by three, that's two, and then there is two remaining. I cannot divide the latter two by three anymore. And then there is two-thirds, and then there's two point six six six six six, and that takes a long line.
Can we actually teach code gradually? Well, yes we can. Now, we can by using HEDI. This is HEDI. This is a program environment, and the first line of code you can actually run is print
hello world, and it works. And you see there are no quotation marks, no brackets, no nothing. There are only three commands. There's print for output, and then there's ask and echo.
Ask for input, and echo is another way of producing output. It produces the word, the text behind it, and then followed by the input. So if I run this, it says what is your name, and my name is Mark, and it says hello Mark. This is fun already. If it's not fun enough,
they can actually have it spoken to. And imagine a classroom full of 25 kids producing
things like this, and within a few seconds you're hearing Mark is stupid, and they're having a lot of fun, a whole hour. With only three commands, they're having fun.
As soon as they stop laughing, or usually the next hour, the next lesson, the next lesson, the week later, we introduce variables. This is probably the toughest part of programming, to kids at least. At least that's what I found. You can label things. Name is HEDI,
age is 15, print name is 8 years old. I can run this code, and it produces HEDI is 15 years old. They can play around with this. They can create actually pretty nice programs.
They're actually busy for another hour, sometimes two, until they hit a snatch. Some of the kids find out that if I ask what is your name, and they produce, so your name is name,
most programmers will probably realize, oh no, now we have a problem. There's one name that I want to produce as text, and there's one name that I want as variable. I can never ever use the text anymore. This is a learning opportunity. We can actually say, okay, we have to make a distinction between these. If I mean text, I put quotation marks around it. Ah, okay,
that's a smart thing. It's like they invented it themselves. Let them think so. So it's gradual, and it's 18 levels, and at the end, you're speaking fluent Python. That's the gradual part.
It's also multilingual. Why? Well, we asked kids, do you like HEDI, and there was a small study. There's a paper about it. It's in the slide deck at the end, and there was only 39 kids in
12 online lessons. This was corona time, and we asked them what are the benefits, the challenges, and the improvements. These were the kids of Folina's classes, and they said, well, it's great. It's stepwise. It's level by level, and I can follow on.
The teachers that actually work with it are usually normal teachers. They're not programmers, so they teach for the first time programming. They don't even know programming, and they liked it. And they said, oh, well, all kids, my whole class is learning programming. Of course, there
are some kids that are, you're going to be a programmer, but the rest is still dragging along. And some of the teachers said even the kids, the girls now have the confidence to become a programmer. It's something they mentioned out of themselves. What do they want? They want
some improvements. First of all, they want better error messages, and we had very good error messages. I'll show you one. You cannot read this, but it says you typed comma, but that is not allowed. And we put the comma here as a comma between quotes. Remember, these are kids
of 10-year-olds, and they just learn that if there's a comma in a sentence, they pause. So they read you typed, but that's not allowed. Why can't I type?
Okay, so we had to change that into you typed a comma, but that's not allowed. And almost all of those well-thought-of error messages weren't well thought of, after all. Now they are. And they wanted something really weird. They wanted Dutch keywords.
Well, we're in the Netherlands, so it's not weird they want Dutch, but why? Everybody's coding in English. Print is the same in Dutch, whatever, echo is the same. But why? Let's look at the demo. Let's see a nice error message.
Print hello world with a capital P. It says print is not a command in level one.
Did you mean print? And the first one is a capital P, and the last one is a small p.
And maybe it gets even better. If I put a space in front of it, it runs. But it gives me a warning. Oops, you started a line with a space on line one. Spaces confuse computers. Can you remove it? It's level one, eh? There's plenty of time to correct
these ideas. Yeah, I should change that. And then there's translation. I'm in English now. I can move to 45 languages, like Dutch. Yes, I want to reload. And now this whole program,
every text, almost everything is in Dutch, except for ask. And ask was, by the way, the main reason they wanted it in Dutch, because in Dutch we don't usually have the s and the k so near
one another. And so they write acts, and it's a very weird letter combination. There is a toggle where you can say, oh well, I want to change the commands in Dutch as well.
So now everything's in Dutch. I can ask for the ones we do not speak Dutch. That's the same as what's your name. Well, it's still Mark. Hello, Mark. So it works even in Dutch. And once we had this, we realized that people who were in India using Hindi, Thai, Chinese, Arab,
it's all, those kids are, just like in the Netherlands, they're just learning a language. They don't know a p if they see one. To us, to me, these are images. These are not letters.
I cannot read this. These are, I can copy paste some of this, but I cannot read this. The same is true for them. They cannot read these letters. So they should be able to put them into Arabic as well. And this works, of course, I hope. I cannot check.
Maybe I'm cursing now, but I guess it works. So that's why it's multilingual.
It's for the kids. And yes, at the end in level 18, we do tell them, you better put it in English now. You know what it all means, but you better start using English now. But from now on, no more Dutch or Arabic or whatever, but they're old enough to do that. It's built for
teaching. HEDI is mainly built for, it's not actually, it's built for teachers as well as students. They like that the levels are step by step a guide. There's only small thing they
have to learn and the rest is not even possible. The teachers that do not know programming, but are teaching programming using HEDI, they think, oh, I can do this. This is not overwhelming. And when I was using Scratch for the first time, in a Coder dojo, I had to think of a
program they could make. What can my students make? There's a lot of examples on the internet. I need to do research. I need to find the right thing. And if I'm planning a 20-day course,
oh, somewhere in level day 18, I'm probably going to mess up something I did in level 17. It's going to take me, kind of cost me time to get things right. I can find this one or that one. And if I'm not a real programmer, if I'm not very good at it myself, which one should I take?
And if I choose one, I print it out, I hand it over to my students and they open up Scratch and they start looking at Scratch and they start looking at the lesson again, the paper, and they look at Scratch again. And what was that? They have to contact Switch over and over again. I see the students getting a little distracted. I don't remember what was it.
And they're a very impatient species, children. So we invented adventures. I'll show you in the last demo because the time is ticking away. And then there are class
management. That's the last thing I want to talk about, class management. As in, there is a whole different type of kids in the class. There's this type that actually read the paper, reproduced it in Scratch, and tells the teacher, look, I did it. Oh, it's just once
a pattern of I can do, yeah, it's right. In five minutes, they produce a mowing running around cat. It's lovely, and they did it. But the other one, and there are quite a few, they drag just one thing on the screen and say, what should I do now? Well, you could read the
paper again. I don't get it. And then there's this type, probably the level of Olivier, they produce something they want recognition for. And they did this in five minutes as well,
because they've been doing this for years at home. And now they want my help to get some synchronized lags at the bottom of this Robin Hood. And once it runs, I don't even know how to do that. But now, at least I can call Olivier now and help me out and this block
programming. But all these kids are in the same class. I want them to move along about the same page. What was it? PACE, that's it. So I, we created something we call customization.
First of all, let's put this back into English. Let's see me in action. This is
my account. And as you have seen before, maybe there are some tabs on the top of this. And this is what we call adventures. There are maybe 10, 15 different adventures, and they come along every level, 18 levels along, they can do rock, paper, scissors. First
of all, it's just printing. And at the end, it's deciding who won and playing against the computer and three players against, etc. So it's getting more progressively difficult, but it's still the same program. So as a teacher, I only have to know 10 programs.
And it's all in view. I can just click on I want to do the story. And I coded here. So for the kids, there is no context switching of paper thing. Then there's this teacher that can do a teacher. Is this the teacher version? Where is the teacher version?
But I should be logged in in any of them. No, I'm not logged in in any of them now. Why am I no longer logged in? I don't know my password because that's, that's very secure.
Uh, so I need last pass. And I cancelled everything. Oh, well,
how many minutes have I left? Okay, that will work. What am I doing now? Yes.
So this is where I was. I thought I was at my page. There's if I if you're a teacher, you can just request to become a teacher only even if you're only teaching your own two kids,
you can actually become a teacher. And then there's this for teachers page, and there's a complete teacher manual. And there's a demo class in which I am a student, I can look at some statistics, how many errors did I produce? What level am I? What kind of errors did I produce? How many successful programs? How many errors programs, and I can
customize the class. I can switch on and off to all the levels. And what I do in real life, I switch them all off except for the first one. So all the class has to stay in less than one in level one. I can automatically produce an open schedule, put opening dates so they
automatically open every week, for instance, I can hide and show quizzes and puzzles. There's a parts and puzzle at the end of all the adventures. And there's a quiz at the end, 10 questions. And I can ask, or I can set this class to minimum quiz score of 80 before
they can advance to the next level. So if I save this, and go to the other one,
now it's accidentally logged in. I think it's because I have two of the same browsers now. Mark and class. This one's not a secret. If I go to this now, you can see there's a lot less, only two. So this class only has two
adventures. It has a puzzle and a quiz. And they cannot go to level two unless they
made the quiz until with 18 points, 80% of points. Okay, that's customization. That's about it. Hedy, it's called, it's named after Hedy Lemar. Who knows Hedy Lemar?
Oh, that's a lot of them. World famous actress, and a world infamous inventor. We're still using a lot of our inventions. And of course, we're open source. We love your help. If you think, ah, this is a good idea. And I'd like to work on an innovative gradual parser.
It's actually actually quite a feat. There's a paper about it. And it tells you a little bit about an EVNF extension that we can merge partial grammars. We actually want
help in multilingual language. Like I said, we have 45 languages, and these are 45 languages. As you can see, English is pretty well, and Dutch is pretty well. Some other languages are blue. We love help making all these ones as green as they are. And of course, we want
you to help teachers. So go to your schools in the neighborhood and tell teachers about them, and maybe help them get along, get started. Once they get started, it's like oil. It spreads. I'm only teaching 40 kids now. If I was teaching 40 teachers,
that would go a lot faster. There are some building videos for teachers, and this is where you can join. Thank you very much.