So, hello everybody.
My name is Jesus Pelai.
I am a developer in the HEDI programming language.
I also a teacher in the University of Carabobo, which is located in Venezuela, where you come
from.
Here is also Pink there.
She teaches with HEDI, so she will also be answering your questions.
And today we will be talking a little bit about the HEDI programming language, what
it is, why it is useful over its alternatives, at least for user cases, and also how you
might get involved with the project.
So let's begin.
Okay.
So, what is HEDI?
And I will summarize it really fast for those of you who are also jet lag like me.
And these are the three core concepts of HEDI.
So HEDI is a gradual, multilingual, textual programming language built for teaching.
So this is what our entire deal is about.
One outside asks you what is HEDI?
You can tell them that it is gradual, multilingual, and you can use it in the classroom.
And it's a bit of a mouthful, but I will be explaining each one of these concepts along
the talk.
But first, let's talk a little bit about our misconceptions when it comes to teaching
programming.
Because us as programmers, we don't really are that good when we want to teach programming,
because we have this series of misunderstanding how people understand things.
Another thing is that compilers are friends.
And that is a lie made by the compiler PR group.
The compiler is not your friend.
It is a tool, and especially not friend for a kid.
Because the compilers are made for professionals.
And the error messages are very much tailored for adults who are working with the language.
So when a kid sees an error message that is meant for an engineer, it is really intimidating.
And also this second issue is also a sense from the fact that programming languages are
made for adults and engineers.
And people think often that that is not really a problem, that syntax is not really an issue.
And one of the core things of HEDI is that syntax really poses a barrier for entry-level
barrier for novices.
50% of, there's a study that says that 50% of programs submitted by novices have syntax
errors.
And 75% of programs submitted by the weaker students have errors.
So this is not a kid that is having fun reading the error messages and fixing them.
It's a kid that is trying stuff around, trying to make the program work.
So it's really a really tall barrier for someone to get into programming when you have the
syntax right away.
And the other misconception is that you mostly learn alone.
We often, when we think about learning programming, we think about someone who is sitting in front
of a computer alone in the room.
And that was the case 20, 30, even 10 years ago.
But today there are many schools that teach programming.
So now we also have to think about programming as a discipline that you can learn in the
classroom.
And these were some of the misconceptions that the creator of HEDI, Felina Hermans, had.
When she was asked to teach a class of high school programming.
Felina, she is a researcher from the Netherlands.
She has a PhD in computer science.
But she was teaching high schoolers as a Saturday activity.
And now she thought, okay, fine, I know programming.
I can teach programming.
And for that she used Scratch.
And Scratch is a great tool.
It's a great language.
Scratch is a visual-based language where for programming you only drag stuff around.
And by dragging stuff around you have a program.
For example, this one right here makes the cat move around and play meow-meow sounds.
And kids, they love making the cat do meow sounds.
However, as time went on, the kids grew up and they said to Felina, we like Scratch,
but we don't like a toy anymore.
You know, this is like a toy.
Drag stuff around is like making a puzzle.
We want real programming languages.
They want that programmers use the ones that can get me a job.
Because these were students from a technical school.
So they were very much interested in learning programming as a way to get jobs in the future.
And many people learn programming this way.
Not everyone learns programming now because of a passion of computing, but because it is
a really viable way to get out of poverty, to get a job.
So now she said, yeah, that's fine.
I can do that.
Let's teach you Python.
And Python is also a great language.
It is certainly easier, the syntax is certainly easier than the likes of Java, C or C++.
But still, it's very much a language made for professionals.
Error messages are for professionals.
And the syntax is a barrier right away.
And you can see here, if I'm trying to teach a classroom how to write this, I would say,
yeah, kids, today we are learning to print some text.
And for some students, that is not really that exciting to just print text on a screen.
But you got along.
We are going to print text.
And to do that, you write print, and then you write a parenthesis.
To write a parenthesis, you have to do shift eight in the keyboard.
And then a quotation mark.
Yeah, the quotation mark is right beside the answer.
So you have to do shift that, keep it pressed, write the text, and again.
So as you can see, the kids, at this level, they might not have the proficiency in typing
or proficiency knowing how to type stuff or clicking and selecting text.
So that is also a barrier for them.
But let's assume that the kids do it.
And then you have text on a screen.
Awesome.
But what about some kid makes an error?
For example, this kid, they wrote an uppercase P. And for them, this will look pretty fine.
Perhaps this kid does not know that their rates quickly line means that they have an
error.
So they try to run it.
And they are faced with this.
A really uglier message, you know?
It says, trace back.
Most recent call last, a file and a path.
And then in the end, it says, name error, name print is not defined, did you mean print?
And a frack it, this is really intimidating stuff.
The kids probably didn't even read the complete error message.
They would say, teacher, teacher, what is happening here?
And if they read it, and if they know English, it's another barrier.
Because Python is an English-based language.
So if the kid does not know English, there is no clue that they will understand this.
But you know, they read it, they fix it, it's fine.
But now you also have this mistake.
Now this kid switched around their parentheses and the quotation mark.
And now it says, syntax error.
parentheses was never closed.
And they might say, yeah, I closed it.
And what the heck, it's a syntax error.
Now, I have this program.
And it looks perfect, except for the squiggly line that it tells us, adults, that there
is an error, but the kid doesn't see it.
And now they try to run it.
And it says, indentation error, unexpected indent.
Teacher, what is an indent?
Now you don't want to be explaining all of these to a kid.
This is just the first class, remember.
They are just learning to print text on a screen.
They are faced with complicated error messages and syntax element that has to be placed exactly
as the programming line was expected.
Otherwise, you don't have anything.
And what an ugly error message.
So it was also a problem when she tried to teach concepts.
Because for example, if I show these to my students, I want them to understand the underlying
concept of repetition.
I want them to know that these right here will say, you will print 0, 1, 2, and 3.
But they are not seeing that.
They are seeing that they have to put a column and brackets and spaces and put it in such
a way that it's perfect for the computer to understand.
And the kids, they think, why is not the computer as smart to understand while I'm throwing
at it?
You know, there is artificial intelligence.
They can write stuff.
Why can't it understand a simple program that I'm making?
So we see here that syntax is creating cognitive overload.
So we humans have a limited space in our minds to work.
We have a small amount of short-term memory.
And when you are learning a programming language, your short-term memory is filled with the
symbols.
So you've got to have a short-term memory, so a spot for where the variable is, and
another spot for where the bracket is, and the name of the programming, and the name
of the function.
So it really is complicated for the kids to understand syntax.
And on top of that, understand the programming concept that you are trying to teach.
But now, this is not only a programmer, a problem that us programmers face.
Because there is also other disciplines that are very hard to understand.
We have language and mathematics, and those are famously hard disciplines.
But we don't teach them right away.
You don't expect a kid to understand the Riemann hypothesis.
We do it step by step.
For example, if I'm teaching language to a kid, and the kid writes these letters, I
don't say to the kid, kid, this is a really ugly letter.
This is an ugly A. This doesn't make any sense.
No, you tell them, this is really good.
You wrote the A, you wrote the I, the N, and you are beginning to understand that.
And then you tell them that the words, the vowels, and the consonants, they make words.
And then you put more complicated stuff on top of that.
And then you have that, you can have uppercase letters and punctuation marks.
And then you end up with an understandable sentence.
And now the rules change rapidly.
You didn't start with the whole thing all at once.
You were changing the rules little by little, little by little, so the kid could understand
all the steps.
Now, changing the rules creates also a little bit of cognitive overload.
But that very much makes up for the fact that they are understanding each one of the concepts
individually to then learn the other one.
And they were learning on top of those foundations.
And this is also the case for mathematics.
If I'm trying to teach a kid to subtract numbers, I can tell them that you can't subtract
a greater number from a lesser number because they don't know that negative numbers exist.
So I can tell them 5 minus 3 equals 2 and 3 minus 5 equals 2, but then I change it.
And I tell the kid, actually, 3 minus 5 equals minus 2.
And now that you just changed the algorithm of subtraction a little bit, they didn't
have to take all in advance that there are negative numbers and positive numbers.
And the same happens for division.
You're first telling that 8 divided by 3 is 2, reminder 2.
And then you introduce the concept of fractions.
And now it changed a little bit.
And now 8 divided by 3 is 2 and 2-third.
And the same happens for, and also the same 8 divided by 3 is 2.6666.
So as you see, the same operation for the kid had three forms, and it became more complex
as time went on.
Now this is the idea.
We can do that for programming too.
And that is how Heady was born.
We have a gradual programming language.
And we can see here an example of Heady.
So as you see, in the level 1, we have a really simple language.
You can only print and ask input from the user.
But you see here that there are no syntactic elements attached to it.
So in its simple form, print just, print some text, print hello.
I can ask input from the user, but I don't have to send a variable or do an equal sign
off.
Just ask what's your name.
And the echo command will repeat the information just given to us by the user.
So you just use that.
And this level consists of six commands.
Distribute for text 2 for the total module of Python, so you can also make drawings.
So it's not as boring as just printing text.
And you can also play some music.
We just merged that.
And so you can also now do some simple music notes in this level.
And now you move on, because that is a really simple language.
And I put some stuff to it.
And now in level 4, I already introduced quotation marks and also variables.
So you see here that the program changed a little bit.
So now I have that if I want input, I store it in a variable.
So now his name is ask what is your name.
And I can concatenate that in the print command.
And then in level 18, you end up using a subtractively valid subset of Python.
So in the end, you will just be premming in Python.
And you can move on from Heady to Python.
And I start using that ecosystem.
So you can use Piberix or anything else that you like.
But you don't have to explain all of these syntactic elements right away, because you
do it slowly.
And also the levels, they offer you an opportunity for the kids to all be in the same place.
Because you don't have many different things going on with kids using 4 and others using
other stuff.
Now, also it's important to note that the syntax of level 1 is not valid in level
4, for example.
So when you move on from level to level, you are basically switching to another programming
language.
So in essence, we have 18 different programming languages which are built on top of each other.
And each one has its own parser and its own syntax.
And these are our design goals.
So we have these six goals here that we use when we are designing a level.
So the first one is that the concepts are offered at least three times.
So in the example of print, the first way is you do a print text, then you print variables,
and then you add quotation marks and everything.
The second one is the concept is introduced as simple as possible.
For example, in the repeat command, we first introduce it with repeat and a single sentence
in a single line.
So you don't have to deal with blocks or multiple commands at the same time.
It's just repeat a single instruction.
And then only one aspect changes at the time.
So if I introduce the repeat command in level 7, I do it in a single line.
So the next change is just do it and now we have blocks.
And in the next one, in the level 9, we introduce nested blocks.
So you see that we try to change as little as possible to make the levels feel like a
gentle progression and not so steep.
And also the syntactic elements are deferred to the latest moment possible.
An example was the quotation mark.
They are introduced in level 4 because you can't do more complex programs if you don't
introduce them.
And this also poses a problem for the students.
Some kids, they really struggle with the introduction of the quotation marks.
But we cannot do it any later because it would mean that we cannot make more complex programs.
And the concepts are interleaved, which means that if we change something in one level,
we don't change it in the next level and the next two levels.
So concepts can be really taken for the students, by the students.
And then it's always possible to create meaningful programs because in the end, this has to be
fun otherwise the kid won't like to use it.
OK, so that is for Grad-Walt.
But that is not all what we are all about.
We also are multilingual.
And we ran a user study with Dutch kids.
It was composed for 21 kids, I think, in an online class during the pandemic.
And they told us that they liked Heady.
They liked that the error messages were easier than Python.
They liked that it offered a state-by-state guide.
So they told us we would like to program in Dutch.
We just don't want that the interface is Dutch.
We want the keywords to be in Dutch.
And it was a bit of a surprise because Dutch kids, they know English, but even then they
want to program in their own language.
And that is more so the case for Arab kids and Spanish-speaking kids, because, for example,
for an Arab kid, I don't only have to teach them what is a program.
I have to teach them what is a P, what is an R, what is an I, because they don't use
the same script as us.
On top of understanding syntax, they also have to understand the Latin script.
So it's very hard for them.
And on top of that, they have to change the tweet from the Arab keyboard to the English
keyword and then back.
So it is a mess.
It's kind of a mess for them.
So we did it.
And now Heady is available in 49 languages.
I made these slides like two weeks ago.
Now we have 49 languages.
So as you can see here, we have Spanish, we have Arab there, we have Japanese, and we
also have Dutch.
Dutch or German?
That's German.
German.
So, and this is kind of hard.
And I will talk a little bit about, it is a compromise for us to be able to support the
49 languages and growing.
Because each one, you know, some languages have their own quirks.
So Arab has something called Tatwill, which is like a valid space.
So when you add a space, you can add it any place in the world.
And we needed to highlight, because it's the same world.
It's just have like that space in there.
So when the language has these quirks, we tell the translator, translate the program
as close as you can, as many languages as you can.
And we will try to solve the problems that arise in the grammar.
And there are some cases where we can't solve it because of, you know, limitations with
passing technology.
For example, in Chinese, the words for plural and singular are the same symbol.
So if I say for animal in animals, they place the same symbol in both of those places.
So there is no way to differentiate the variables.
That is a problem that we really cannot solve.
But there are some others like Tatwill in Arab.
And also some key words have spaces in them.
We can solve that.
And there are some conquers of French has also valid spaces in the end of the world.
So yeah, now let's do a demo.
So this is, hey, this is level seven.
Let's go back to level one.
So this is the interface.
Here we can see that we have several elements.
We have the editor where kids can write the programs, the output window, and this top
part is where they can read the assignment.
So these are sort of like exercises that they can make.
So this one we have to build them.
So these are provided by us and are translated by the community.
What if I want to change to another language?
Now I say that I want to switch to Spanish.
And you see here that it's with the interface, but the keywords are seen in English.
See if this works.
And you see now that the keywords now are translated.
Which only translates, the keyword doesn't translate the program because for that we
would need to use like an automatic technology for that.
And that is kind of hard to integrate and also poses its own problems.
But you can switch the keywords.
And what about bilingual kids?
What about I know English and also know Spanish?
So I can mix in Spanish and English keywords.
And you can only miss your own language and English.
You cannot mix any combination up to languages.
But this is really useful for kids, for example, Latino kids in the USA where they know Spanish
and they know a little bit of language and a little bit of the other.
Okay, cool.
Now that's it for multilingual.
But we are not only that.
We also build for teaching.
So one of the main aspects of Heady is that it's not only made for learning programming
but it's also a system for teaching programming.
So we are the primary language, but we also are the system that is built around it, learning
and teaching system.
And also this is very good for a teacher because the levels offer a state by state guy and
they are already like a lesson plan.
So they don't need to make a lesson plan from the beginning.
So that makes it a little easier to teach.
So let's compare that to teaching scratch.
So this is scratch and you are when you open it, we are met with like a black canvas.
So the kids can do whatever they want.
But that also poses a problem for the teacher.
Because what can my students build?
Some of them will not have no idea.
Others will have many ideas that they will want to build.
So now you also have to either get lessons from the internet or build your own or you
don't really know whether those will work.
So you make your lesson.
And now there will be a kid who will tell you, hey teacher, what do I do now?
I don't know what next to do.
And this is fine.
They are all in their place.
There are other five kids calling you but you go to them and you help them.
But there is this kid who ignored your lesson.
I build this.
Can you help me debug it?
And now I have to understand this program and help this kid debug it and there are other
five kids around me calling me teacher, teacher, I don't know what to do.
So this is hard for a teacher to manage because there is too much freedom and too much variation
between the levels of proficiency in the students.
So what we do, what we can do is that in Heady you can build your class.
You can make a class.
You have a student account and the students can submit their own programs in a class.
So you don't have to download or upload any sort of files.
So that is done automatically by your system.
You can have quizzes so you can block the next level if the kid does not have the necessary
grade.
And you can also block it by date.
So you don't have kids at a kid in level two and a kid in level 18 with the aligned levels
of proficiency.
So you have all of them right in the middle.
So the slower ones will pick up the speed of the faster ones and the faster ones will
not have, you know, will not build such complex programs because they will be limited by the
level.
And all of this is customizable.
You can make your own lessons also by building your own adventures.
So it is possible to just ignore what we've built or build your own adventures on top
of that.
Some teachers, they like to have an adventure that is like a project.
So the project starts in level one and it changes from level to level and in the end
you have to make a really big program.
And that was they built it bit by bit in all of the levels.
Now let's start a little bit about how does this work?
What is our architecture?
An architecture is a really simple client to server architecture.
In the server we transpiled the programs using LARC.
And LARC is a library that generates parser.
You write your parsing, your syntax grammar using eb and f and then it generates the parser
for that.
And to that, and then we build the Python program in the server.
We send it back to the client and it's called which is a library that executes Python in
the browser and that is done by translating the Python program to a JavaScript that they
can understand and then execute it.
But what are some architectural challenges?
So A is an editor that didn't work well with right to left languages.
So we were having problems with Hebrew and Arab and I also think that's how it is.
And so it was really a challenge.
So we have, changing this wasn't easy.
But we did it and it was hard.
So as I told you, making a language that is available in many languages, it is very challenging
because you have to debug in languages that you don't understand.
You have to look like an Arab program and you don't understand Arab.
So it's very much a decision by the team to make this program, this language more accessible
to everyone because it's not really about this social justice problem but it's also
an economics problem.
Like it will be so much more easier for the kids to program in their own languages.
For Arab people, they don't use our numbers.
They have their own numerical system with other symbols.
And they can use those in heavy.
So it's really like programming at home.
They don't have to learn everything else from other languages.
And for this, to support these many languages, we use parser generators because building
our own parser for 18 levels, 47 languages, would be really hard.
So we generate them using LARC and that one is laser, the one we used in the front end.
So we have to maintain 18 different grammars times 47 languages.
So that is a lot.
And we have some tricks for that.
For example, we don't build the entire grammar all at once.
So we only change bits that change from level to level.
So if level 4, I'm just introducing quotation marks, I only change the print and ask commands.
So it becomes a little bit easier.
And we have to make some creative way to do that.
So we made a grammar merger and also the same for LARC, for laser.
So you see, it's complicated because both of these use different parsing algorithms.
So you have to take that count for that.
Okay, now let's talk a little bit about me.
I am, as you see, I am Venezuelan.
So what is a Venezuelan doing here giving this talk?
And I became involved with Haiti in 2021.
And by that point, I was an undergrad student trying to get involved in an open source project
to understand a little bit more about professional projects and Python, et cetera.
And I heard about Haiti because I followed Felina on Twitter.
So I texted her.
Hey, I want to get involved with Haiti.
It could be possible.
And she had a meeting with me on Google Meet.
And that was really impressive for me, for a researcher from the Netherlands to be meeting,
you know, an undergrad student from around the world.
That really meant a lot for me.
And then I became more and more involved with the project.
And now she offered me the opportunity to work full-time at Haiti and then give this talk.
So to me, the open source has not only been, you know, about building a great product,
it has been life-changing for me.
And this can be, you know, the case for other people because, for example, my students,
they, I teach now in the university where I studied, and they told me, teacher,
I want to get a job.
I want to support my family.
And now I'm telling them that come here, help us with Haiti with open source,
and then will you have something in your resume?
And this is very important for us in Haiti that not only our product is accessible to everyone,
but also our system are accessible to everyone.
So if you are a new time programmer, if you are learning Python and you are not as proficient
in professional systems, we try to help you and make it as simple as possible for you.
So you can boot Haiti really quickly in your computer and there won't be a problem.
You don't have to deal with complicated stuff.
If you only know Python, you can help us a lot in the back end,
so you don't even have to know JavaScript or HTML.
And this is also something that we embrace a lot when we're doing changes to our system.
When we try to improve our systems, we think would this be accessible for students to build with Haiti?
Because students have helped us a lot.
They have built some of the features that you can see in Haiti, and then we polish them.
And so we welcome everyone.
We welcome novice programmers and we welcome professional programmers.
So if you can get involved with us, you will very much welcome.
So you can join us on our Discord and GitHub and you can try at Haiti.org.
Thank you very much.
Now we are open for questions.
Yes?
Just a quick question.
You mentioned that one of the problems is syntax and errors.
And I just wanted to know what language is used for showing errors in the language.
And how you will not define but understand in which language should you show errors?
Oh, right.
So the user sets their own language.
For example, I have Spanish here.
And if I make a mistake, you can see here that the error message is shown in Spanish.
And the same if I go to Arab.
The error message is in Arab.
So it does know which language to use for the user, for the error messages.
And this is also the problem with the student itself.
So because all of the expensive ideas that we use like day to day are so over complicated.
It's profiling, the borders, etc. etc.
Okay.
There should be just like a small tool for kids just with a window.
And as you show in the wrap, I made it directly on the computer.
So you're talking about tools for the student.
Yeah, like ideas that could help you.
Oh, okay.
Right.
So they can, for HEDI or IDE, is there in the page?
But they have included some tools.
For example, we do have HEDI bogey.
So you can debug HEDI programs and execute them step by step.
And you can also know which variables are defined in the program.
So we do have some light IDE features that can help the students.
We do not want to make it very complicated.
For example, you could also show like auto-completion.
But that would mean that it would crowd the page a little bit and it would be more complicated
and more stuff for the kid to take in.
So we try to make it also as simple as possible for them.
Yes?
Have you thought about interfacing the IDE and HEDI with external algorithm like microcontroller
or GPIOs or LAPs?
Which is more, kids can take their hands and stuff.
Yes, that is actually something that is in the works.
We have a student right now working on interfacing HEDI.
Which I think is microblocks.
Microbits.
Microbits, yeah, microbits.
Yeah, it's starting to move from LED 38 into micro.
I don't know how you do it.
I am not personally involved with that student.
So I don't know exactly who he is doing it.
But we know that that is in the works.
So it will be coming shortly.
Also maybe I can step in here as a teacher.
Yeah.
Is the other microphone still there?
Yes.
So it's a question we often get when we show this.
Is it boring for the kids only text?
And that is exactly what I thought before I was teaching with it.
But I wanted to teach them anyway because I wanted to do pie bricks with them.
Lego robots with Python.
So I needed to learn in Python first.
So I thought maybe HEDI is the way to go then.
And then I found out that in the classroom I teach nine and ten year olds.
I actually enjoy doing these text things over and over and over and over again.
And also at the end of my lessons I always have the portion that they can show their work to me.
And often six or seven kids want to show exactly the same things.
And they're still proud of it even if the ones ahead of them are exactly the same.
So for kids it isn't as boring as I thought it would be.
And also the turtle they love obviously.
I'm not saying it is boring but maybe HEDI could be an alternative for a system like you're doing.
Because programming is impossible.
If you could do similar things but using a simple language that would be very useful for the kids.
That's my idea.
Because I have a kid and I'm facing this problem with her.
You can go two ways there I guess because you can use the micro blocks that Peter can tell you everything about.
And also the micro bits for instance.
They have their own Python in their own websites.
If you go to python.microbit.org I think then you can do Python as well.
But there you do have the full syntax and stuff.
So if they know all the concepts and the syntax before diving into that it's probably more successful.
And there is somebody working on that.
Yeah I think the idea with the micro bits within HEDI is that you can do a print and then it will come on the pixel screen on the micro bit for instance.
Yeah probably the way to go is to...
Probably is that what we do often when we do these connections to Python libraries is we have the HEDI code and it will get translated to Python.
And it will probably be Python brick.
And it will be executed.
Any other questions?
Yes.
Very nice presentation.
Thank you.
How much does the children spend from level one to level 18 usually?
How long did it take to get from level one?
It does depend on age and prior knowledge obviously.
At the nine year olds I teach I have them an hour a week and I do two or three weeks for one level.
But the quicker kids could do way quicker than that but I want everybody to come along so I take it slowly.
And the second question is is there an offline version?
No.
There is no offline version of HEDI.
To use HEDI you need to be connected to the internet.
Okay.
Because I'm also a teacher and I have problems in bigger rooms with many children.
The Wi-Fi is terrible.
Yeah.
Yeah just check the GitHub.
You have an offline version.
It's already a works.
Yeah there is an offline version but this was like a person who took it as a personal project.
So it doesn't work very well and it's not updated to the latest version of HEDI.
Because you are using parcel generators so every time you change the set of keywords you have from
Python every time you update you have to regenerate the parcel.
Is this a real programming language or just a transpilation?
You have a set of keywords and then it's Python.
So you execute it there and you get the result and show it in the screen.
Yeah.
So what we do is we cache the parsers.
So we have the grammars and we generate the parsers using lark.
And this is like a Python object and we cache that Python object in the server.
So when the user for example someone from the common used languages tried to use that they
didn't have to wait and it would not overload the server.
But if you are changing to a lesser used languages, yeah we will generate the grammar for that level.
The total grammar and then generate the parcel and that will be in the memory.
Is it automatic or do you have to rebuild the project?
No this is all automatic.
Lark takes the grammar file and automatically from the server.
So we have the Spanish grammar, the Arabic grammar, the English grammar all of them in the server.
But you have to change the grammar file of lark?
Yes we have of course.
When we...
Did you build?
Yes when we build.
So you will have the new version of the parcel.
Of the parcel, yeah.
And do you cover...
I think you cover just like the...
Let's say the...
Let's print some basic keywords.
But if it is about advanced algorithm it's not part of the thing.
It is a full premise.
At level 7 you already have repeat and conditionals.
So you can do some somewhat complex algorithms.
Of course you don't have interface to archives or anything.
So you are limited in what you can do for the interface to the outside.
But it's a fully functional programming language.
But there is still a subset of Python.
There is a subset of Python in the end, yeah.
Yeah, of course.
It's just a subset.
And for example you said from level 1 to level 18 let's take Arabic.
At the beginning you will start learning in...
The kid will start learning in Arabic, you know what I mean?
Yeah.
In level 18 it's still Arabic.
No more than Arabic.
But later you have to switch to Python to write a fully correct,
a scientifically correct program.
How do you do that?
So that transition we haven't yet gotten to the point of designing content for that transition.
So you end up in level 18 programming in Python in your own language.
So then it is up to the teacher or the student to then learn Python using the English keywords.
But you already have some part of the syntax and understand how some of it works.
So what they have to do is it's a little bit less hard than in the first lesson in the beginning.
And also obviously we're hoping that other programming languages will pick up on the whole multilingual thing
and do maybe Arabic versions of Python for you, for the real Python thing.
It's a long way to go though.
So still I think for people not in the English language part of the world
it's hard to get into programming in almost all languages based on English.
So we're hoping to help.
The other languages is not just about the language itself.
No.
It's about the computational thing we have.
Yeah, absolutely.
Everything is built in English, all the meanings and all that.
Yeah.
It is designed for professionals.
It's easy to have an RTL algorithm.
I'm not that sufficient always.
There are a lot of problems to create something in a language other than English or whatever
from the left to right.
But when you go to that part you would always face problems even for the smallest.
Yeah, and that's why Hedy is trying to do it for right to left as well.
So when you're learning to code you can learn the concepts of doing loops and variables
and all those concepts that are most of us could probably dream about.
But kids it's really hard to learn and new people to coding as well.
You can learn the concepts without learning the Latin alphabet or having to switch your
keyboard because you want your output to be an Arabic, probably if you're an Arabic.
And you can't type Latin and Arabic on the same keyboard.
So we try to make it so that you can learn programming apart from learning English and
the rest of it.
Yeah.
You have a question?
Can we use the turtle library?
Yes, we have embedded turtle functionality.
It's not the complete library I think.
No.
I don't think you can do fills at the moment but you can do the turtle and colors and stuff.
Yeah.
Yes?
You can do inputs in the keyboard.
You can do the students can do input, output in the screen.
Move the students from the screen object.
No.
No, there is no long term storage.
So you can only do the output is to the output screen.
So open it's printing, asking for input is directly from the keyboard, from the user.
So there is no connection to files.
No pixels as well.
You can have the output read aloud by the building text to speech thing.
And you can also download the turtle drawings.
That's the only thing you can download.
Yes?
Why did you choose to use Lex and Nap?
Not another modern part.
Oh, it's not.
It's called laser.
No, it's from, it's not Jack.
Larek is a Python library.
And the other one is from code, the part of the code mirror which is in editor.
So laser is purposely built to work with that code editor.
So we're not using Jack.
No.
So it's a little bit more modern than those.
Yes?
Yeah, I need to follow up with the offline question.
Can you self-host it?
You want to run it locally?
Yeah, you can self-host it.
Okay, and another thing, yeah, it's really nice this approach to incrementally teach kids program.
Is it also an approach to incrementally at the same time, teach the kids to read technical documents?
Because at the end they're going to face this challenge of reading technical documents.
So if you could teach them to do it on the ground, then there are...
So our exercises and adventures are very much tailored to be, you know, fun and tailored for kids around, you know, 12, 13.
So we don't teach them to read complex stuff.
It's more like we want them to understand the programming aspect of it before moving on to other endeavors.
Yeah, of course, but incrementally teach how to approach the things of information.
No, it's the same approach across the levels.
That's a good point, though.
Yeah.
Because the question that they ask about the warnings, I suppose that if you're a level one, you get a simple warning,
but when you're a level 17, you get that more technical warning message, for example.
So the error messages change a bit because we are adding more complexity to the language.
So the error messages do get a little bit more complex, but they want that, for example, if you make an error in level one,
that is the same as in level seven, it will be the same error message.
I think it would be a great opportunity for students working on the project or anybody working on the project to help on,
say, graduating from Haiti to real world Python and introduce a constant just like that and also more concepts such as using a code editor,
instead of doing it on a web page, stuff like that, could be a level 18 or level 19 or something, extension.
The Haiti project is only two or three years old.
Yeah, we are very fast moving still with new features and stuff, like the music notes that are in there for about a week
and only available in English because the translators haven't come round to translating it yet.
So what's not now maybe next year, you never know.
Yeah, you are very much welcome to come join us in our meetings because we have public meetings.
We put them in the Discord so you can come join us and give us this idea so we can begin working on them and consider them.
Yes?
Can you talk about at the beginning as a preliminary exercise about typewriting?
Kids do not even know how to do an app case.
Yeah.
App case later.
Just to help them understand how to do that.
Shall I answer that?
There's not anything in there particularly in Haiti, but as a teacher, do that bit before I start them on Haiti.
So I teach them how to make a password, why it's so important to have a password and keep a secret, stuff like that,
and how to type your name with capital letters and accent letters if we have them a lot in the Netherlands.
So I do that before I start them off in Haiti, but not for too long because once they are in, they are really eager to learn that kind of stuff
because they really, really need it.
And kids want to learn the stuff they need to do what they want.
So if they need to type the quotation marks, they'll just ask me or the person next to them,
and within 10 minutes everybody knows how to do it.
And they don't forget because they try it, they have to use it all the time.
So it works both ways I guess.
You have your finger for a while.
I can see how it's analogous to learn to read, to write, to learn.
But what happens after level 18?
Have you done any studies to see how impact what it is?
Here you subjected to your learning from, as I understand it, from stage 1 to 18 in any of those four languages,
but then to progress to, I don't know, hopefully your professional development,
suddenly you have to learn everything else that you haven't learned,
and you have to learn different languages and so on.
So how useful it is beyond teaching, programming, and Haiti?
So when you finish level 18, you already know, you know, Haiti in your language,
or Python, you know, because it's level 18, but you already know the programming concepts,
which is the important thing that we are trying to teach,
because we are not trying to teach the syntax for that, because the syntax will change with every programming language.
So we want the kids to know what it is, what is a loop, what is a conditional.
So if they move on from Haiti to, you know, Python, or some other language that is English based,
it will help them a great deal, because they already know the concepts behind those, behind that syntax.
So the transition is easier.
It's easier, but is it easier now?
Julia, do you know if Filina did any research on that?
There has been some research on this, yes.
I do know that it's still, like, going from a level in Haiti to the next level is a smaller step,
than going from level 18 to real world Python.
So, yeah, they are still thinking about how can we make this a smaller step,
so that it really feels like going from Haiti to Python is just a smaller step as between the levels.
But it does help a lot, of course, because if you have no programming experience and you come through Haiti,
then it's really smaller to go to Python than if you go to Python without anything in between.
So, what I'm asking, I'm not questioning whether it's easier,
or I'm asking if there is any evidence that it's easier enough for people to make the transition.
Do you know?
Do they make the transition or do they...
Yeah, I do know that at the school actually, Filina, aside from being a researcher,
is also a high school teacher, so one day she's teaching in the Netherlands,
mostly the 12 year olds around that age,
and she has students in her classroom of 12 year olds who go to Python after being done with Haiti.
So, she does use it herself, and I've been observing in that class myself.
Yeah, and it's working fine.
Yeah, so I know, I mean, it's very anecdotal, so I don't know about big study with lots of kids,
but I have seen a classroom where there were 12 year olds who switched from Haiti to Python and were enjoying themselves.
So, yeah, it is possible at least.
Also, if you'd like to hear Filina's answer, I encourage you to come into the Discord and ask the question there as well.
She's on there every day, all day, so it seems to me anyway.
So, she'll definitely answer the question if she's done any research,
or maybe even put a student on it to research it, because it's a really, really good question.
I know there is a paper about multilingual programming that she published a while back,
but I don't think that it's specifically about Haiti, much more about the concept.
So, I don't know if that will answer your question, that paper.
Yes?
Related to the previous question, is there an option in Haiti to show the program you wrote in the actual Python to make that process?
No.
There is no built-in functionality for that in the interface,
but if you know a little bit your way in the browser, you can actually see what was transpired.
Let me put this back in English.
And maybe to add to this, I don't know if it's clear, but if you have code in maybe level 18, you can just copy-paste it into Python.
It's actually a code.
There's still a program about the English from Morocco.
Well, if it's in English?
Yeah.
Assume that your program in Haiti in English, then you can copy-paste your level 18 code into Python, and then it's exactly the same.
So, level 18, Haiti in English is actually Python same.
It's a subset of Python.
Remember that you can also mix in English and your own language.
So, you can also do that transition within Haiti.
So, you can mix English keywords and keywords in your own language right there in the editor.
So, it makes the transition a little bit easier.
Yes?
How do you handle the zero word?
How do I handle what?
Zero word, variable that could not have some names.
Like, you cannot have a variable called print.
Ah, okay.
When you translate it from one language to another one, the variable change is the zero word.
Yeah, that depends on the specific variables.
So, there are some keywords that we can parse in context.
If your name or variable, for example, I don't know, color I think once you can make it.
So, it depends.
If it's a variable that you cannot assign, it will tell you that you are misusing the command or something like that.
Otherwise, it will work normally.