Hedy: A gradual and multi-lingual programming language for education
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
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 | 10.5446/61535 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 2023221 / 542
2
5
10
14
15
16
22
24
27
29
31
36
43
48
56
63
74
78
83
87
89
95
96
99
104
106
107
117
119
121
122
125
126
128
130
132
134
135
136
141
143
146
148
152
155
157
159
161
165
166
168
170
173
176
180
181
185
191
194
196
197
198
199
206
207
209
210
211
212
216
219
220
227
228
229
231
232
233
236
250
252
256
258
260
263
264
267
271
273
275
276
278
282
286
292
293
298
299
300
302
312
316
321
322
324
339
341
342
343
344
351
352
354
355
356
357
359
369
370
372
373
376
378
379
380
382
383
387
390
394
395
401
405
406
410
411
413
415
416
421
426
430
437
438
440
441
443
444
445
446
448
449
450
451
458
464
468
472
475
476
479
481
493
494
498
499
502
509
513
516
517
520
522
524
525
531
534
535
537
538
541
00:00
Goodness of fitCodeParsingBEEPLine (geometry)Computer configurationoutputBlock (periodic table)DampingQuicksortLetterpress printingProgrammer (hardware)Sinc functionSpacetimeCodeWaveProgramming languageUniverse (mathematics)1 (number)Latent heatNumberData miningNeuroinformatikCompilerComputer programmingCompilation albumLecture/Conference
06:37
Conditional-access moduleRule of inferenceSocial classRange (statistics)Computer-assisted translationCodeCompilation albumStructural loadPoint (geometry)Line (geometry)Letterpress printingBitNetwork topologyMathematicsGoodness of fitCASE <Informatik>SpacetimeGradient
10:27
Computer programmingCodeTouchscreenoutputComputer programmingCodeLine (geometry)Letterpress printing2 (number)Function (mathematics)
11:56
Energy levelCodeTouchscreenComputer virusTurtle graphicsVariable (mathematics)Asynchronous Transfer ModeMereologyLetterpress printingComputer programmingProgrammer (hardware)Variable (mathematics)Program flowchart
13:30
Execution unitHecke operatorEnergy levelError messageComputer programmingSlide ruleDemo (music)Observational studySocial classConfidence intervalSpeech synthesisMereologyLetterpress printingComputer animation
16:24
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
18:14
CodeLinker (computing)Schmelze <Betrieb>Table (information)Latin square1 (number)
18:46
Computer iconUser interface
19:18
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
23:40
FraktalgeometrieCodeEnergy levelComputer programmingBlock (periodic table)TouchscreenoutputComputer programData typeTurtle graphicsGroup actionView (database)Context awarenessNeuroinformatikEnergy levelComputer programmingComputer animation
25:09
Demo (music)Graphic designTurtle graphicsCodeEnergy levelPasswordMessage passingComputer animationProgram flowchart
25:43
LoginComputer animation
26:38
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
28:43
CodeComputer programEnergy levelComputer programmingTouchscreenoutputData typeComputer virusAsynchronous Transfer ModeAdventure gamePoint (geometry)Program flowchart
29:07
ParsingImplementationPerformance appraisalComputer programmingProgramming languageComputerProgramming languageParsingFormal grammarExtension (kinesiology)BitBuildingOpen sourceOnline helpGreen's functionNeighbourhood (graph theory)VideoconferencingComputer animationDiagram
30:56
Program flowchart
Transcript: English(auto-generated)
00:05
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
00:23
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.
00:41
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.
01:00
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
01:27
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?
01:44
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
02:03
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
02:20
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
02:50
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
03:03
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
03:25
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.
03:40
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
04:09
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
04:23
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
04:42
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
05:05
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
05:20
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
05:45
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?
06:01
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?
06:25
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.
06:43
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.
07:09
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,
07:25
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.
07:45
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.
08:02
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
08:23
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.
08:46
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
09:01
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
09:25
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.
09:46
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.
10:02
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.
10:21
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
10:42
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.
11:03
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,
11:29
they can actually have it spoken to. And imagine a classroom full of 25 kids producing
11:42
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.
12:00
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,
12:24
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.
12:41
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,
13:01
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,
13:26
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.
13:45
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
14:03
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.
14:25
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
14:46
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
15:04
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
15:27
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?
15:42
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.
16:05
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.
16:38
Print hello world with a capital P. It says print is not a command in level one.
16:52
Did you mean print? And the first one is a capital P, and the last one is a small p.
17:01
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
17:24
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,
17:49
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
18:06
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.
18:20
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,
18:49
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.
19:06
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.
19:31
Maybe I'm cursing now, but I guess it works. So that's why it's multilingual.
19:46
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
20:08
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
20:24
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
20:48
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,
21:03
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?
21:22
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.
21:50
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
22:05
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
22:26
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
22:46
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,
23:01
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
23:20
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.
23:43
First of all, let's put this back into English. Let's see me in action. This is
24:00
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
24:20
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.
24:41
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?
25:09
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.
25:38
Uh, so I need last pass. And I cancelled everything. Oh, well,
25:58
how many minutes have I left? Okay, that will work. What am I doing now? Yes.
26:50
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,
27:01
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
27:24
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
27:46
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
28:08
they can advance to the next level. So if I save this, and go to the other one,
28:21
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
28:52
adventures. It has a puzzle and a quiz. And they cannot go to level two unless they
29:03
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?
29:20
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.
29:43
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
30:01
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
30:23
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,
30:44
that would go a lot faster. There are some building videos for teachers, and this is where you can join. Thank you very much.