Okay, 10-20. Welcome everyone. Everyone can hear me right? Good. Welcome to my talk about
Heady. But first of all, I promise to wave to my wife. She's watching at home. Can you
all say 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. Okay,
my name is Mark Heisen. I'm a lecturer in IT at Applied University in the Netherlands.
I'm doing, oh well, I had this wonderful new kitchen. And I'm doing this talk about Heady.
And Heady 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 program is 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 it.
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 okay.
And this would result in three things. It either worked. Those moments were pretty sparse.
It wouldn't work. Or 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 program. And once you get to this,
well, you can read it. You can read it. It's 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 on 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 dojos or code clubs start using scratch.
It'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 Zimzalabim. So Felina started coding with this
sort of Python. And she said, the first thing I'd like to learn is input and output.
She is a teacher. She knows how to teach baby steps. The first thing is 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 five,
name print is not defined. And the children will ask, well, I did define print. If they
understand English, only if they understand it, mine don't. They're from eight years old and up.
They don't know. They don't know what it 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 unexpected EOF while parsing. This eight-year-old kid asked
me, what is parsing? Try 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. Okay, 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 was not a lovely teacher. The next phase, if I get through
to input and output, the next one is iteration, repetition. Four i in range, four print i.
Well, I can explain that, I think. I have an old 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,
okay, okay, 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 what's good. That's good. And that
e, it's wonderful. It's even nicely on the line. Three complements, four complements,
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 sentence with a capital letter.
And the capital S or T is completely different than the lower ones. 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. 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.
And 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? That's, 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, two thirds, and then there's 2.6666. And that takes a long
light. Can we actually teach code gradually? Well, yes, we can. Now,
we can by using Heady. This is Heady. 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. And 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. And it produces the word, the text behind it, and then followed by the input.
So if I run this, what is your name? And my name is Mark. And it says hello, Mark. This is fun
already. And if it's not fun enough, they can actually have it spoken to. It's your name.
Hello, Mark. 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 the 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 week later, we introduce variables.
This is probably the toughest part of programming, two kids at least. At least that's what I found.
You can label things. Name is haddy, age is 15, print name is age years old. I can run this code
and it produces haddy 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. Sometimes 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 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
Heady? There was a small study. There's a paper about it. It's in the slide deck at the end.
There was only 39 kids in 12 online lessons. This was Corona time. We asked them, what are the
benefits, the challenges and the improvements? These were the kids of Fellini'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 and 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 a comma
here as a comma between quotes. Remember, these are kids of 10 year olds. And they just learned
that if there's a comma in the sentence, they pause. So they read, you typed, but that's not allowed.
Why cannot I type? Okay, so we had to change that in, 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.
Well, now they are, and they wanted something really weird. They want a 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, the 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.
Space is confused computers. Can you remove it?
It's level one, eh? There's plenty of time to correct these ideas.
Yeah, yeah, I don't, yeah, I should change that. And then there is 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
each other. And so they write x, and it's a 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 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.
For 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. It's not actually, it's built for teachers as well as students.
They like it that the levels are a step-by-step 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 Heady, they think, oh, I can do this. This is not overwhelming. And
well, when I was using Scratch for the first time in a Code of 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 18, I'm probably going to mess up something I did in level 17. It's going to take, it's going
to cost me time to get things right. I can find this one or that 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 context switch over and over again. I see the students getting a
little distracted. I don't remember. 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's
ticking away. And then there is class management. That's the last thing I want to talk about.
Class management has in, there's 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.
It's just once a pattern in the bag. Yeah, it's right. In five minutes, they produce a
mowing, running around cat. It's lovely. They did it. But the other one, and there are quite a few,
it dragged just one thing on the screen, which they do now. Well, you could read the paper again.
Don't get it. And then there's this type. It's probably the level of Olivier. They would 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 legs at the
bottom of this Robin Hood. And once I run, I don't even know how to do that. But no, at least I can
call Olivier now and help me out in 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? Base, that's it.
So we created something we call customization. First of all, let's put this back into English.
And 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 code it here.
So for the kids, there is no context switching of paper or thing. Then there's this teacher
that can do, oh, 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 very secure.
So I need last pass. I can't solve everything.
Oh, well.
How many minutes are left?
Okay, that will work. What am I doing now?
Yes.
So this is where I was. I thought I was at my page. If you're a teacher,
you can just request to become a teacher. Even if you're only teaching your own two kids,
you can actually become a teacher. And then there's this for teacher's 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 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 lesson one,
in level one. I can automatically produce a schedule, put opening dates, so they
automatically open every week, for instance. I can hide and show quizzes and puzzles. There's
a parse 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 a minimum quiz score of 80 before they can advance to the
next level. So if I save this and go to the other one. Oh, wow. Now it accidentally locked 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 80 percent of points.
Okay, that's customization. That's about it. Hetty, it's called, it's named after Hetty
Lemar. Who knows Hetty Lemar? That's a lot of them. World famous actress and a world infamous
inventor. We're still using a lot of her 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. 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.