Hi, hello everyone. My name is Silia and I'm here today with my friend and colleague Florant
to talk to you about Execubot. A serious game designed to help students learn for women, especially
Python in our case. So just to begin with, to introduce ourselves and explain you how Execubot
comes from, I am a computer science teacher in French high school, so do Florant. And he also
teaches computer science at Sorbonne University and I'm studying a PhD on code reading based,
especially on Execubot. So as both teachers, we shared a comment and challenging context.
We have to learn students between 15 and 18 years old, how to program, especially in
Python, because in French, in France, we have to, we don't have the choice in high schools,
it's Python and nothing else. And we work with large groups around 36 students.
So we have a lot of differences in motivations, in levels, kind of difficult to teach everyone
at the same time. A lot of our students don't, are not very engaged in the programming class,
because they don't even know what it is, at first. So it's kind of difficult and we started to search
for solutions. And we were like, okay, maybe to engage our students, we may be need a game,
because game can engage easily young students, and we try to search for a serious game,
especially in Python. The first one we found was Pirates, which is well known in France,
I don't know if you know it. Some of you know, it's a French game. I think there is an English version
if you want to taste it, taste it. So the purpose is simple, you have to write some code,
and you make the Pirates move around the right through the chest. So it's a very good game,
indeed, our students really liked it, but it was kind of difficult for them,
at first, because we ask them from the beginning to write code, and for young students who don't
even know what program is, it can be difficult. So we use it in our class, but not at the beginning
of the year, maybe later. The second game we found was computed. It's a little game where students
need to read codes, you see to the right, and they move the little dots that you see around the
right to the grid, and it was a world success when we tried it in our classes. Students were engaged,
they learn about loops, conditions, everything by themselves, by reading, and just with the keyboards,
they just need to move the dots. So it was very easy to use, it's free on the web, so no installation,
it was very easy to use. But from our teachers perspective, it had some limitations. The first one
is we only have 60 levels, that's it, so when you don't use the game anymore, and we don't have
as teachers, we don't have any control for the operations or over the level that the students
will do. So we liked it, but it's one use, one time. So we're like, okay, maybe we can reach them,
contact them, ask for improvements or maybe to ask what we can do with that, and we didn't have
any answer. So we said, okay, maybe we have to do our own version, and that's when the
keyboard comes from. In the keyboards, so it's a serious game, it's free and open source,
no installation, you can play it on your web browser, even on your mobile if you want to test it.
On your mobile, I will do a demo just for you to know, on your mobile, you won't have the
two players mode and the level of the lab, but I will come back to it later. So the mainly purpose,
main purpose is reading and executing code. That's what we wanted at first, because we saw that
it was a good start with the students, we don't even know programming. And what we wanted,
the most was, it has to be configurable by the teacher. So we can have multiplayer,
look on the, sorry, on local, so it's not on network, you can do two player mode as
I will show you after. Maybe a little demo? So when you arrived on the website, you have this
little robots, even if you on your mobile and the first thing I advise you is to change your language
because it's French, so you can on your mobile, so you can go to the settings and choose your
language. We have for now five languages and just for the demo, I will, just for the demo, I will
choose only five levels because we don't have so much time. Okay, this is not very important,
but you can put a username if you want to. For now, we only have Python, but we won't in many
years, maybe in several years, as some other languages, if we want to teach other things that Python,
we can show the tutorial first, I will show you in the game, and we have a visual accessibility
available because we are game use colors, so if you have students or if you don't
really see colors, you can activate this one to be playable. Okay, so you can choose one player, two players
and you use your keyboard. Okay, so as you see, you have the code to the right, you have the
robot to the left, and you have to execute, line by line, your code. So if it's pink or green,
I will go up and right, and you have immediate response, so if now I should go to the right,
but if I'm wrong, it's starting immediately, so students have immediately feedback, it's very easy
to use, and we have some help here, so when we are with 36 students, it's really helpful because
we can't always be with each other, which is with everyone, so everyone can go on the help
and see by themselves what they're doing, if and if as an every time you have a few Python
keywords, it's explaining, explaining it here, so right, I will do some levels, right down, right down,
down, left, okay, and as a teacher, we also you think thought it would be useful to
be able to go back to the levels down, because sometimes students do it without knowing what they're
doing, just by chance, so if I want to be sure, I can go to the students and say okay,
let me show you, show me how you did it, and we go back to the levels we already done,
if needed, and of course I have big levels, down, down, right, right, right, right, don't, don't, right, left,
right down, down, right, oh, time, it's a trick, one, I did it with my students and I always love
when they do the second time, so, right down, right down, this is the first one we did, then we go down,
and then we have to do it again, so this time we start with the down, because we want the
bubble, so down, right, down, right, again, a trick, one, okay, down, I need to be more focused,
that's what I say to my students, not automatically, okay, so down, right, down, and then down, okay,
and then you have, of course, your score, it's about timing, so if you want to,
don't do a timing score, you can, as I show you on the settings, you can disable the timer,
maybe you don't want to stress your students with this, so it's again the teacher who choose,
we let the teacher choose, okay, so this is the main feature, we can do it with two players,
and it's about the one who will be, the three have, one, two, three have and left, so I went,
so it's about rapidity and about speed, sorry, and what we want to do is to engage again,
in most students, when they don't, what we wanted with the specific levels, we gave them,
they can play a little more with there at the front, okay, okay, then we have great paths,
great paths is mostly for teachers, when we, we want the students to do some levels,
we can ask them to go to the website and just like what I did, play one player,
but we can also say, okay, I want you to do specific levels because today I want to work on
conditions, so I will choose, for example, also levels with conditions, and we have
a new level and you can send it to your students and if you see here, I have nine levels with
only condition with only if, so you can choose everything you want, everything you want,
let's do you want to have specific levels or do you want to only select by types, you can set
your world parameters here, for example, maybe as I said, if I don't want the timer for my students,
I can uncheck this one and I can set a number of levels if I want them to do a specific number
of fun. The last but not least feature is Levels Lab, so as I said, at the beginning we wanted
our students to read code, execute it, and understand how Python works with the indent,
with the, you know, the blocks, maybe, so they want, we wanted students to, we understood,
understand what they're reading, but from with our holders students, we need them all those
to write code, and that's when we started to think about the level's lab where you can run
and write your own levels, so for example, I can set a small grid, grid, I can color it,
we can do big or else too, and maybe I won't, so for example, if I do this, I can test my code,
so students can write their own, they really like it because they can do the grid, they won't,
so they like to draw things, and they contested by themselves and they have an immediately
feedback here, we don't have any error in the code, but for example, if we forgot the two points,
there will be a feedback too, so again, very easy to use in class for the teacher, it's very
helpful to have these tools to check if they do a good code, you can also
download this level if you want to rock on it later, and you can also upload a level and
edit it if you didn't finish the work a previous time, you can, this level is not good,
I correct my code, and if you call this correct, you can play your own code, so
here I can play my own level that I build, and it's very fun with students because they can
place levels from their friend or from the teacher if you don't specific ones,
okay, this is done, so how I use it in class with my students to be very to give you some
use cases, first of all, I use it when I want my students to discover things in programming language,
so for example, I want them to discover by themselves how we do a conditions, and I will
specifically choose some levels, I will share with them the URL, and I want them to discover to
explore, to make mistakes, to try again, to make mistakes again, so they vary to the most on it,
and it's very fun to watch them see what are the rules of the Python, and then we can rock on
it in class afterwards, second use case, I use it after lesson, for example, we saw in class
how we do a full loop, for example, and okay, I said some lesson, maybe it was boring, but
you can try by yourself and try to understood really how it works, so I did a lesson and then
we practice, usually I ask them first to read code and execute it, and then I ask them to write
at least one level with loop for example, third, I usually advise all my students to use it at
a revision tool, sorry, because it's really accessible everywhere, even on the mobile, so I always
say to them that they can go on it, and finally we can evaluate at the end of a sequence if some
kids have been acquired, okay, a brief technical overview, so the project is on the GPLV3 license,
it hosted on LaFore, the comma, which is a GitLab from French education,
come on to everywhere, every teacher is in French education, it's a static web application,
so no installation, no registration, no subscription, and no service identification,
the project is, as you can see, mainly in TypeScript, but we have the game logical in Python,
even if it's not the biggest part of the project, and of course because it's a static website,
we have HTML and CSS, we want to talk about Python one.
Hello, so I will talk a little bit about the Python side of the project, so we package,
we have a package which is available with pipe install, as every normal package in Python,
so many times ago I package something, but it was rebuilt, and with UV package manager now it's
really clean and easy, so it's a problem fixed, and what do you have when you
install Execubot Pi, actually you have one entry point, which is Execubot CLI, and which is
mainly the tool for the developers, but as a teacher you could be a developer for the
advanced levels, it's all the tools you could want to test your levels, and you will have
soon just another entry point for gamers in terminal if they want, with a new client we will see
later, and it will be just Execubot, so this is just a little screenshot, you have all the commands
available with Execubot CLI, as it was with development version, there is a Uveran before, but
if you install Execubot CLI you just use Execubot CLI name, and you have a print command,
which print you the level in the text of the level, so yes we use an extension Pi
to differentiate from the Pi files of the repository for the static stick of language, it's
more honest because at the beginning as we have a lot of level with dot Pi we were seeking a lot
of piton code in the project, but there is no lot of piton code, so there is nine commands you have
the print, which is a gift from the library, which is a really nice peton library to
do beautiful things in the terminal, so we have the syntax and lightning of the code, and then we have
all the useful and useful commands, the X-factor returns a return dictionary with all the information
found in a level, you have the grid, which returns you standard grid, because we have two format,
and we have the normal format, which is a list of list of colors, and we have short formats,
which is easier to write if you do it in text file, but if you use the level lab interface,
you will have this format at the end because it's a lot easier to read, but it's easier to write
the short format, okay, so you have tags which give you the information of how the level will be
classified in the interface for the path creation, for the proposition of levels, okay, here we have
the LIF keyword, and you have an evaluation of the difficulty, so we have a little algorithm,
and it's quite an easy level, because there is only the LIF keyword as difficulty, so it's a
three, you have the solver, which is the more technical part of the code, which returns you a list of
topel with each direction you have to solve the level, and the line of the code, which generates
this direction, so this gives us the possibility to show to the student or where it is in the
code when he is executing it, so we have executed that long, the long command to our dictionary
used for the solver, the engine, so here is an English, so each keyword is the value is the same,
but you can have a localization with 13 words, you have a complete engine in the long wedge,
you want, I think Celia, we'll show you an example, just okay, you have the generator,
generate the region, the reason, reason, code of the level, which is used by the website, okay,
this is the 9's command, you can play in the terminal, the same level that you have on the website,
and this is nice, if you want to test your work or if you want to play, okay, the integration
of the Python client side, there is a lot of technical possibilities, but very interesting, but
long, long things to do, okay, a lot of, okay, there is no Python, as you, everybody knows there
is no Python on the browser, so how to do Python in the browser, if there is no Python, the first
technique is not to do it, okay, so one player, two player, there is no problem because the
levels are generated by the CLI, then loaded in a database, JSON, so, no, no need, but when you
create some levels with the level lab, you need a Python to execute the new level, so we evaluate
the situation, you can see that the beta via pi pi gs are dead project, transcripts on
sculta are really slowing the level in the revolution, and we are two possibilities, real possibilities,
there is value, did, and Briton, and pi o did is really heavy, because if you need a
CLI breweries, use it, it works great, but if you just want a little bit of a JavaScript of
Python, a pure Python code in the JavaScript, use Briton, okay, so we use Briton, and you can see
also project what they chose, okay, it's an alting problem, a big problem, so how we under
this, we have a timer decorator, and we, this is because, okay, we have only two methods
direction, and color, we generate at the runtime with your dictionary of, with your
translation dictionary in the language you want, so there is nothing to do more than just
to have certain words translated, and you will have this working, but there is this timer,
which is at one second, the configuration, and it can help with the alting problem, so
okay, just, okay, you can see that there is no problem with the while, because the while is
using by definition, a color, so each time you have one method, one executable method,
colors of direction, you have the timer, which is evocated, okay, so the while and yellow
will no problem, there is no problem, if there is something inside right or left or done,
and one possible problem, when students forget the parenthesis, because the yellow will be
evaluated to true, okay, this is the main problem, okay, so just, right, okay, next,
okay, the recursion on the ring, Briton is configured as a normal default of the
pattern interpreter, it's once I was on calls, but you can change it, you can change it, if you want,
with the normal way sees that set recursion limit, but probably after that,
this is the JavaScript VM limitation, which is the probably around 3,000 for my test,
but I have to maybe see it's not very important, virtual machines don't do recursion very well,
and okay, thank you. We don't have any more time, but just for you to know, so for the website
itself itself, we don't have any database server, we only have GitLab page, that's all we have,
so we had to think about a solution to store every level and as floor on site, all the levels
are stored in a JSON files, and we use an interface in type scripts to read them and load them,
and if you see, we have all the answer in the JSON files, so we don't use Python or Briton,
if we have already the levels, it's only for the new levels. One big technical work we did was
about translation, so we have five languages available on the website, but in Python, in the CLI,
you can use any language you want, at the condition that you give it language dictionary. For example,
we use the fraky, I don't know if you know Game of Thrones, but the fraky language we use,
and that's already also possible if we want to make fun with it, and to avoid a lot of
mistake from our students, we used a custom auto-completion because they always forgot the
parenthesis, so we did a little work with keywords, we want to propose them and avoid as
as possible as we can to avoid mistakes from our students. So to conclude, just for you to know,
you can all contributions are welcome, you can propose new levels, you can mention bugs or
proper fixes, you can suggest improvements because it's a very young project, it has less than a
year, so we have a lot to do, and of course, you can propose translations, now we have five languages,
and three of them are made by some of our students, so thanks to them, and you have all the
contact information on the website, so you can contact us as you want. Yeah, thank you.
If we have some more questions, yeah, yes, which one?
Yeah, we didn't have a translation on it because everyone can name their own function as they
want, so the name of the function is not translated for now, maybe we'll find a solution later
but for now it's not translated. Sorry?
So default levels are fine default, so that's a good answer.
In the levels, love, no. In the levels, you will have always your custom language, for example,
here I said at the beginning, I said it in English, you know, I went to my settings and I said English,
and now everything is in English, so I can use the following English, I can use the directions,
and if I want to name a function in English, I can, because I can name a function whatever I want.
Did I answer your question? Yeah, okay, and I didn't say it, but you can also write a code
in another language as if you want to, that's a sort of possibility.
So where did they go from there? So in France High School, we have three levels.
The first one we have to intrude with Python, it's not very advanced, like they need to know
how to read it and how to understand it. So this is the first level and it's a monetary course,
the students have to do it. In the other two levels, it's a choice from the students, so they can choose
our course, and then we have to make them write more code. So this game, I use it differently,
depend on the levels that I have. So the first one, the youngest, I use it many other tools
and to discover Python. So I make some path with first we will see conditions.
Next day, we will see just the followup, next day is a while, et cetera. So I choose
various specific levels, and each day I choose one specific skills or one keyword.
And with others, I will do quite a few things, but I will go for those with, for example,
with code writing and share it with all levels. So is there no block based coding in France
or? They did it in the year before, in the middle school, yes, thank you. In the middle school,
they do some scratch, I think you know what is, scratch. And then when they go to a high school,
we have to go with Python. Yes. So we use it with students between 15 and 18 years old,
but we had some colleague, which we talk with, and they use it with middle school, so between 11
and 15, and we even have one colleague who tested with his children and attend. And it was okay,
but we had some difficulties with the right on the left. So we will try to replace this,
we will try to replace the keyword up-down right and left with some arrow for the next
year. Sorry? Yes, for the beginner version. Yes. But it can be used with lots of students. Yes.
Yes. Can teachers track the Earthhouse students, I improve the goal today, have some difficulties
by using this game, because there are 36 people in the classroom, so you might have a lot of difficulties,
so can this application be used to get some feedback on this. For now, no, because we don't have any
server side application, it's a static web. So we don't have anything to do that, but for now,
we have, you can pass through your classroom and see the time of each one, or you have
here, you have the preparation, so you can have even a visual ID when with a top bar,
you can have an ID when you go through the class, but we don't have anything coming back
we're trying to do this in France, because we have some application that maybe can do it,
but because it's students and we have some rules about personal data, etc, it's kind of difficult
to just do it like that, so it's a work in progress. Yes. Thank you for the presentation.
And after that, what do you go, if you have some more progress to this, or you want to
dive deeper into the language, is there something in the future, or how do you use what is the
connection? For now, for our two first levels, we did the game, managed all the key words that
we need to see, like the if or while and the death, that's the key words we need to see,
and it does a job. When we go, when we want to go further, usually we use something else,
and we go with another type of exercise, but we have a colleague that created competitions,
or tournaments with this game, so it can be a new way to use the game even deeper to try to
make your mind faster, have some good habits, and you can also this one up. You know, the help
you have is a cut tracker, which is not a debut tool, careful, because it's the action you did,
you did it, so it's not the next action you have to do. But this one, for example, you can
remove it if you want as a teacher, because maybe I want that first to help them with that,
but maybe later I want them to do it by themselves, where am I in the code? So, you can add some
difficulties, but the key words in Python, I think it will be the same, and we can't go further about that.
It's over. Yeah, it can be useful for people who don't really see colors, maybe we'll find another
motif. So, sorry, we don't have any more time, but if you have questions, we'll be glad to
you, and so you.