diff --git a/.github/workflows/deploy-to-alpha.yml b/.github/workflows/deploy-to-alpha.yml
index e2fec069a6c..1060c921a5b 100644
--- a/.github/workflows/deploy-to-alpha.yml
+++ b/.github/workflows/deploy-to-alpha.yml
@@ -1,5 +1,7 @@
name: Automatically deploy to Alpha
on:
+ workflow_dispatch: {}
+
# Run this AFTER the unit test job finishes
workflow_run:
# Must be the same as in unittests.yml, cypresstests.yml
diff --git a/.mergify.yml b/.mergify.yml
index 17396206d2b..0c89b327043 100644
--- a/.mergify.yml
+++ b/.mergify.yml
@@ -8,6 +8,11 @@ queue_rules:
commit_message_template: |-
{{ title }} (#{{number}})
{{ body }}
+ {# Add co-author information at the end of the squash merge commit message #}
+ {% for co_author in co_authors | unique %}
+ Co-Authored-By: {{ co_author.name }} <{{ co_author.email }}>
+ {% endfor %}
+ {# `Co-Authored-By` lines must the be last ones for GitHub to recognize them #}
pull_request_rules:
- name: Automatic squash merge on approval
@@ -21,4 +26,4 @@ pull_request_rules:
comment:
message: Thank you for contributing! Your pull request is now going on the merge train (choo choo! Do not click update from main anymore, and be sure to [allow changes to be pushed to your fork](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork)).
queue:
- name: default_queue
\ No newline at end of file
+ name: default_queue
diff --git a/app.py b/app.py
index 7d1dcfc62e6..42b5e0dfcf8 100644
--- a/app.py
+++ b/app.py
@@ -1882,12 +1882,15 @@ def view_program(user, id):
result['username']) else None
code = result['code']
- if result.get("lang") != "en" and result.get("lang") in ALL_KEYWORD_LANGUAGES.keys():
+ # if the snippet has blanks, it'll fail in the translation process
+ # so we just dont translate it if it has any
+ has_blanks = hedy.location_of_first_blank(code) > 0
+ if not has_blanks and result.get("lang") != "en" and result.get("lang") in ALL_KEYWORD_LANGUAGES.keys():
code = hedy_translation.translate_keywords(code, from_lang=result.get(
'lang'), to_lang="en", level=int(result.get('level', 1)))
# If the keyword language is non-English -> parse again to guarantee
# completely localized keywords
- if g.keyword_lang != "en":
+ if not has_blanks and g.keyword_lang != "en":
code = hedy_translation.translate_keywords(
code,
from_lang="en",
diff --git a/content/adventures/ca.yaml b/content/adventures/ca.yaml
index 46fd5a355a9..389ed4a2541 100644
--- a/content/adventures/ca.yaml
+++ b/content/adventures/ca.yaml
@@ -1841,15 +1841,26 @@ adventures:
```
5:
story_text: |
- In this level you'll learn to (secretly) tip the odds in your favor, when using the fortune teller!
- By using `{if}` and `{else}` you can make sure that you will always get a good fotune, while other people might not.
- Check out this example to find out how.
+ ### Exercici
+ En aquest codi d'exemple veuràs com fer un programa endeví que et permeti inclinar les possibilitats a favor teu. Aquest programa que fa trames sempre et diu que guanyaràs la loteria, però els teus amics mai guanyaran.
+
+ Usa això per fer el teu propi programa, sigues creatiu! Per exemple, pots crear un codi que predigui que:
+ * el teu equip esportiu preferit guanyarà a tots els seus contrincants!
+ * s'elegirà la teva pel·lícula preferida com a pel·lícula de la nit!
+ * guanyaràs entrades pel teu espectacle preferit!
+ * ets el més bonic/a de tots/es, com el mirall màgic de la Blancaneu.
+ Deixa que la teva imaginació faci el treball!
+
+ El teu programa ha de tenir almenys 10 línies de codi i ha de contenir com a mínim una comanda '{if}' i '{else}'.
example_code: |
```
- {print} 'Im Hedy the fortune teller!'
- {print} 'I can predict if youll win the lottery tomorrow!'
+ friends {is} Jordan, Lucy, Dave
+ {print} 'I can predict if you will win the lottery tomorrow!'
person {is} {ask} 'Who are you?'
- {if} person {is} Hedy {print} 'You will definitely win!🤩' {else} {print} 'Bad luck! Someone else will win!😭'
+ good_answer {is} Hurray! You win!, You will definitely win!, We have a winner!
+ bad_answer {is} Bad luck! Try again!, Another person will win, You lose!
+ {if} person {in} friends {print} good_answer {at} {random}
+ {else} {print} bad_answer {at} {random}
```
6:
story_text: |
@@ -1887,23 +1898,22 @@ adventures:
```
7:
story_text: |
- In this level you can use the `{repeat}` command to make your machine tell multiple fortunes at once.
+ ### Exercici
+ Finalitza aquest programa que et diu si el teu enamorat t'estima o no.
example_code: |
```
- {print} 'Im Hedy the fortune teller!'
- {print} 'You can ask 3 questions!'
- {repeat} 3 {times} question = {ask} 'What do you want to know?'
- answer = yes, no, maybe
- {repeat} 3 {times} {print} 'My crystal ball says... ' answer {at} {random}
+ {print} 'Tinc una flor amb pètals màgics'
+ {print} "Si agafes els pètals de la flor, et dirà si el teu amor també t'estima"
+ quantitat = {ask} 'Quants pètals vols agafar?'
+ options = t'estima, no t'estima
+ _ _ _ _ options {at} {random}
```
8:
story_text: |
- In the previous levels you've learned how to use `{repeat}` to make the fortune teller answer 3 questions in a row, but we had a problem with printing the questions.
- Now that problem is solved, because of the new way of using the `{repeat}` command.
- In the next example you can have your fortune teller ask 3 questions and also print them!
+ En el pròxim exemple pots fre que l'endeví et faci diverses preguntes i també que les imprimeixi!
- ### Exercise
- Can you fill in the `{repeat}` command correctly on the blanks?
+ ### Exercici
+ Pots posar les comandes correctes als forats en blanc?
example_code: |
```
{print} 'I am Hedy the fortune teller!'
diff --git a/content/adventures/de.yaml b/content/adventures/de.yaml
index 02cfccac10c..c671384c2d9 100644
--- a/content/adventures/de.yaml
+++ b/content/adventures/de.yaml
@@ -456,23 +456,23 @@ adventures:
17:
story_text: |
### Übung
- In diesem Abenteuer programmieren wir den zweiten Teil unseres Blackjack Spiels.
+ In diesem Abenteuer programmieren wir den zweiten Teil unseres Blackjack-Spiels.
***Füge das Programm aus dem vorherigen Abenteuer hier ein***
- Im vorherigen Abenteuer hast zu mit einer Liste von Variablen begonnen und eine Funktion geschrieben, die berechnet, wie viele Punkte eine Karte zählt. Kopiere dein Program und füge ihn hier ein. Beachte, dass du den Testteil nicht benötigst. Wenn du ihn noch nicht gelöscht hast, mache e jetzt.
+ Im vorherigen Abenteuer hast du mit einer Liste von Variablen begonnen und eine Funktion geschrieben, die berechnet, wie viele Punkte eine Karte zählt. Kopiere dein Program und füge es hier ein. Beachte, dass du den Testteil nicht benötigst. Wenn du ihn noch nicht gelöscht hast, mache es jetzt.
***Ergänze weitere Variablen***
Du hast schon die Listen `karten` und `bildkarten` und die Variable `karte_1` gesetzt. Erzeuge nach diesen Variablen noch 3 weitere: `karte_2`, `geber_karte_1` und `geber_karte_2`. Diese Variablen sind auf eine zufällige Karte aus der Liste der Karten gesetzt.
***Zähle die Punkte zusammen***
- Um zu berechnen, wie viele Punkte du erreicht hast, rufen wir die Funktion mit `karte_1` und `karte_2` auf. Dann addieren wir die beiden Punktzahlen zusammen, um deine Gesamtpunkte zu bestimmen.
+ Um zu berechnen, wie viele Punkte du erreicht hast, rufen wir die Funktion mit `karte_1` und `karte_2` auf. Dann addieren wir die beiden Punktzahlen, um deine Gesamtpunkte zu bestimmen.
Mache dasselbe für die Punkte des Gebers, aber stelle sicher, dass du die Karten des Gebers und nicht deine benutzt.
***2 Asse***
Großartig! Fast alle Punkte können jetzt berechnet werden. Bis auf eine Ausnahme: 2 Asse. Wenn du 2 Asse bekommst, gibt es dafür 12 Punkte und nicht 22 (weil du mit 22 Punkten schon verloren hättest). Das gilt natürlich auch für den Geber.
***Zeige den Punktestand***
- Zuletzt soll das Program noch ausgeben, welchen Karte du gezogen hast und wieviele Punkte es dafür gibt. Dann zeige, welche Karten der Geber hat und wie viele Punkte die zählen.
+ Zuletzt soll das Program noch ausgeben, welchen Karte du gezogen hast und wieviele Punkte es dafür gibt. Dann zeige, welche Karten der Geber hat und wie viele Punkte sie zählen.
***Weiter geht es mit dem nächsten Tab***
Ausgezeichnet! Du hast diesen Teil des Spiels beendet! Kopiere dein Programm und gehe zum nächsten Tab um zu lernen, wie du nach einer extra Karte fragen und den Gewinner bestimmen kannst.
@@ -512,21 +512,21 @@ adventures:
levels:
17:
story_text: |
- Beim den vorherigen Tabs hast du gelernt, wie du 2 zufällige Karten für dich und den Geber ziehen kannst und zu berechnen, wie viele Punkte ihr beiden habt.
+ In den vorherigen Tabs hast du gelernt, wie du 2 zufällige Karten für dich und den Geber ziehen kannst und zu berechnen, wie viele Punkte ihr beiden habt.
In diesem Abenteuer fügen wir für dich und den Geber die Möglichkeit hinzu, nach einer weiteren Karte zu fragen.
### Übung
- ***Füge dein Programm aus dem vorherigen Abenteuer ein*** Zunächst, kopiere das Programm aus dem vorherigen Tab und füge es hier ein.
+ ***Füge dein Programm aus dem vorherigen Abenteuer ein*** Kopiere zunächst das Programm aus dem vorherigen Tab und füge es hier ein.
***Extra Karte für dich*** Wenn du willst, kannst du eine weitere Karte bekommen, um mit deinen Gesamtpunkten so nah wie möglich an 21 zu kommen. Frage zuerst den Spieler, ob er noch eine Karte will.
Falls ja, wähle eine zufällige Karte und drucke, was gezogen wurde. Falls die Karte kein Ass ist, kannst du die Funktion aufrufen und die Punkte zu deinen Gesamtpunkten hinzuzählen.
Falls die Karte ein Ass ist, kannst du die Funktion nicht verwenden, weil ein Ass entweder 1 Punkt oder 11 Punkte zählen kann, abhängig davon, wie viele Punkte du bereits hast.
- Falls deine Gesamtpunkte weniger als 11 sind, sollte das Ass 11 Punkte zählen (weil das am nächsten an 21 ist). Also zählst du 11 Punkte zu deinen Gesamtpunkte hinzu.
+ Falls deine Gesamtpunkte weniger als 11 sind, sollte das Ass 11 Punkte zählen (weil das am nächsten an 21 ist). Also zählst du 11 Punkte zu deinen Gesamtpunkten hinzu.
Falls du mehr als oder genau 11 Gesamtpunkte hast, sollte dein Ass 1 Punkt zählen (weil du nicht mehr als 21 Punkte haben solltest). Also zählst du 1 Punkt zu den Gesamtpunkten hinzu.
Zuletzt, drucke deine neue Gesamtpunktzahl.
***Extra Karte für den Geber*** Der Geber kann auch eine extra Karte bekommen. Der Geber muss nicht gefragt werden, weil er immer eine extra Karte bekommt, wenn er weniger als 17 Gesamtpunkte hat.
- Kopiere den 'Extra Karte für dich' Code und füge ihn in den Geber Abschnitt ein. Dann ändere ihn, dass es für den Geber passt, eine extra Karte zu nehmen und die Punkte zu seinen Gesamtpunkten hinzugefügt zu bekommen
+ Kopiere den 'Extra Karte für dich' Code und füge ihn in den Geber-Abschnitt ein. Dann ändere ihn, dass es für den Geber passt, eine extra Karte zu nehmen und die Punkte zu seinen Gesamtpunkten hinzugefügt zu bekommen
example_code: |
```
# Füge dein Programm aus dem vorherigen Abenteuer hier ein
@@ -616,11 +616,11 @@ adventures:
**Zusätzlich** Du kannst den Computer auch alleine zufällige Summen rechnen lassen, indem du zufällig benutzt.
example_code_3: |-
```
- numbers = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
- number_1 = _
- number_2 = _
- correct_answer = number_1 * number_2
- given_answer = 'What is ' number_1 ' times ' number_2 '?'
+ zahlen = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+ zahl_1 = _
+ zahl_2 = _
+ richtige_antwort = zahl_1 * zahl_2
+ gegebene_antwort = 'Was ist ' zahl_1 ' mal ' zahl_2 '?'
{if} _
{else} _
```
@@ -650,32 +650,32 @@ adventures:
```
10:
story_text: |
- This calculator game helps you practise your tables of multiplication!
- ### Exercise
- Fill in the blanks. We want this program to ask the player these questions:
- ```
- How much is 1 times 1?
- How much is 1 times 2?
- How much is 1 times 3?
- How much is 2 times 1?
- How much is 2 times 2?
- How much is 2 times 3?
- How much is 3 times 1?
- How much is 3 times 2?
- How much is 3 times 3?
+ Dieses Taschenrechner-Spiel hilft die dabei, das Ein-mal-Eins zu üben!
+ ### Übung
+ Fülle die Lücken. Wir wollen, dass das Programm den Spielern diese Fragen stellt:
+ ```
+ Was ist 1 mal 1?
+ Was ist 1 mal 2?
+ Was ist 1 mal 3?
+ Was ist 2 mal 1?
+ Was ist 2 mal 2?
+ Was ist 2 mal 3?
+ Was ist 3 mal 1?
+ Was ist 3 mal 2?
+ Was ist 3 mal 3?
_
```
example_code: |
```
- numbers = 1, 2, 3
+ zahlen = 1, 2, 3
{for} _
{for} _
- answer = {ask} _
- correct = number_1 * number_2
- {if} answer {is} correct
- {print} 'Great job!'
+ antwort = {ask} _
+ richtig = zahl_1 * zahl_2
+ {if} antwort {is} richtig
+ {print} 'Gut gemacht!'
{else}
- {print} 'That is wrong. The right answer is ' correct
+ {print} 'Das ist falsch. Die richtige Antwort ist ' richtig
```
11:
story_text: |
@@ -963,7 +963,7 @@ adventures:
8:
story_text: |-
### Übung
- Debugger diesen Code. Viel Glück!
+ Debugge diesen Code. Viel Glück!
example_code: |-
**Warnung! Dieser Code muss debugged werden!**
```
@@ -1414,8 +1414,8 @@ adventures:
burger = 5
getraenk = 2
gesamt = burger + getraenk
- print 'Du hast einen Burger und ein Getränk bestellt'
- print 'Das macht zusammen 'total' Euro, bitte'
+ drucke 'Du hast einen Burger und ein Getränk bestellt'
+ drucke 'Das macht zusammen 'gesamt' Euro, bitte'
```
13:
story_text: |-
@@ -1727,32 +1727,33 @@ adventures:
```
for_command:
name: '{for}'
- default_save_name: for
- description: for command
+ default_save_name: für
+ description: '{for} Befehl'
levels:
10:
story_text: |-
- ## For
- In this level we learn a new code called `{for}`. With `{for}` you can make a list and use all elements.
- `{for}` creates a block, like `{repeat}` and `{if}` so all lines in the block need to start with 4 spaces.
+ ## Für
+ In diesem Level lernen wir einen neuen Befehl: `{for}`. Mit `{for}` kannst du eine Liste erzeugen und alle Elemente verwenden.
+ `{for}` erzeugt einen Block, so wie `{repeat}` und `{if}`. Alle Linien im Block müssen mit 4 Leerzeichen beginnen.
example_code: |
```
- animals = dog, cat, blobfish
- {for} animal {in} animals
- {print} 'I love ' animal
+ tierarten = Hunde, Katzen, Blobfische
+ {for} art {in} tierarten
+ {print} 'Ich mag ' art
+
```
story_text_2: |
- ### Exercise
- Finish this code by adding `{for} action {in} actions` to line 2.
+ ### Übung
+ Vervollständige den Code, indem du `{for} aktion {in} aktionen` in Zeile 2 ergänzt.
example_code_2: |
```
- actions = clap your hands, stomp your feet, shout Hurray!
+ aktionen = dann klatsch mit, stampfe mit dem Fuß, ruf Hurra!
_
{repeat} 2 {times}
- {print} 'If youre happy and you know it, ' action
+ {print} 'Bist du glücklich und du weißt es, ' aktion
{sleep} 2
- {print} 'If youre happy and you know it, and you really want to show it'
- {print} 'If youre happy and you know it, ' action
+ {print} 'Bist du glücklich und du weißt es und willst es wirklich zeigen'
+ {print} 'Bist du glücklich und du weißt es, ' aktion
{sleep} 3
```
11:
@@ -1763,22 +1764,22 @@ adventures:
Probiere das Beispiel aus, um zu sehen was passiert! In diesem Level musst du wieder Einrückung in den Zeilen unter dem `{for}` anwenden.
example_code: |
```
- {for} counter {in} {range} 1 {to} 10
- {print} counter
- {print} 'Ready or not. Here I come!'
+ {for} zähler {in} {range} 1 {to} 10
+ {print} zähler
+ {print} 'Eckstein, Speckstein, alles muss versteckt sein!'
```
17:
story_text: |
- Now we are going to change indentation a little bit. Every time that we need an indentation, we need `:` at the line before the indentation.
+ Jetzt ändern wir die Einrückung ein wenig. Jedes Mal, wenn wir eine Einrückung benötigen, brauchen wir `:` in der Zeile vor der Einrückung.
example_code: |
```
{for} i {in} {range} 1 {to} 10:
{print} i
- {print} 'Ready or not, here I come!'
+ {print} 'Eckstein, Speckstein, alles muss versteckt sein!'
```
18:
story_text: |
- Lastly, we'll turn `{for} i {in} {range} 1 to 5` into real Python code, like this:
+ Zuletzt, machen wir aus `{for} i {in} {range} 1 to 5` so richtigen Python Code:
example_code: |
```
{for} i {in} {range}(1,5):
@@ -1982,7 +1983,7 @@ adventures:
gewählte_seite = seiten {at} {random}
gewähltes_körperteil = körperteile _
gewählte_farbe = farben _
- {print} gewählte_seite ' ' gewähltes_körperteil ' on ' gewählte_farbe
+ {print} gewählte_seite ' ' gewähltes_körperteil ' auf ' gewählte_farbe
{print} 'Lass uns eine Runde Twister spielen!'
{for} i {in} {range} 1 {to} _
@@ -3333,7 +3334,7 @@ adventures:
1:
story_text: |
## Der Drucken Befehl
- Mit Hilfe des `{print}` Befehls kannst du den Text auf dem Bildschirm anzeigen.
+ Mit Hilfe des `{print}` Befehls kannst du den Text auf dem Bildschirm anzeigen.
example_code: |
```
{print} Hallo, Programmierer!
@@ -3348,7 +3349,7 @@ adventures:
Viel Spaß!
example_code_2: |
```
- _ Hello!
+ _ Hallo!
```
18:
story_text: |-
@@ -4981,9 +4982,9 @@ adventures:
**Extra** Gib dem Spieler die Wahl, von welchem Land er die Flagge sehen will.
- Cross (7)
- Randomly colored nested squares (8)
- Flags
+ Kreuz (7)
+ Verschachtelte Quadrate mit zufälliger Farbe (8)
+ Flaggen
example_code: |
Hinweis für die verschachtelten Quadrate:
@@ -5047,9 +5048,9 @@ adventures:
Mache die Zeichnungen mit der Schildkröte nach!
- Beehive (6)
- Fan (5)
- Snowflake (13)
+ Bienenstock (6)
+ Fächer (5)
+ Schneeflocke (13)
example_code: |
Hinweis Bienenkorb:
diff --git a/content/pages/ca.yaml b/content/pages/ca.yaml
index bbcdd27a104..85169ca3e25 100644
--- a/content/pages/ca.yaml
+++ b/content/pages/ca.yaml
@@ -84,7 +84,7 @@ learn-more-sections:
start-sections:
- title: Primeres passes amb Hedy
text: '*Something about teachers accounts, slides etc*'
-- title: What other teachers say
+- title: Docents sobre Hedy
text: "A while ago we ran a few short Hedy teachers surveys. \nThe questions span between suggestions of improvement and Hedy’s best features. \nBelow is a testimony of their thoughts:\n\nSimple interface and good examples. *Teacher: 3rd - 6th grades (elementary)*\n\nMultilingual programming and just the gradual programming concept itself. - *US: middle school, 6th-8th grade*\n\nThe gradual nature of introducing programming. *Australia: High school*\n\nThe construction is so good. *Netherlands: Lower secondary school HAVO-VWO*\n\nI can keep the pace of the class. *Netherlands: group 7 en 8* \n\nContinues automatically. *Netherlands: 2 HAVO-VWO*\n\nBoth that the explanation can be in Dutch (and the code in English), and that it builds up with more \nand more possibilities. *Netherlands: Plus class group 7*\n\nThe 'realness' of programming, it resembles how it is in reality. *Netherlands: Plus class group 4 to 8*\n\nStep-by-step activities. Fun activities. *Netherlands: 1e All levels, 2e VWO/HAVO 2e VWO +, 3e HAVO 3e VWO*\n\nBut Hedy and its gradual levels... what an idea, \nI wanted to personally thank you for creating this. I cannot thank you enough. Also, I have never seen the level of engagement and enthusiasm of my \nstudents, as I have seen with Hedy. We have covered till level 5, and plan to spend one more week on it in classes and labs, \nbefore starting Python. *Pakistan*\n\nI really like Hedy very much and it is also nicely set up, which makes it good to use in primary school. \nHedy's gradual approach works very well. \nThe short explanation at the beginning of each level and the short example programs help to give the children a quick insight into what is new in the chosen level. \nThe different assignments that the children can choose also work very well. \nYou see the children choose assignments that appeal to them and they then get to work with them, \nthrough the levels. Hedy is great fun for children who are good at programming and want to get a \ntaste of a real programming language. It is good preparation for secondary school as soon as more ICT \neducation is given there. *Netherlands: Oegstgeest Montessori school*\n\n"
teacher-guide:
- title: Introducció
@@ -367,15 +367,13 @@ teacher-guide:
- title: Answers to the exercises
key: answers
intro: |-
- The answers to all the exercises can be found on the public profile of the useraccount 'Hedy_answers'. We often encourage students to use their own creativity in their answers, so these answers are merely a guideline as to what a possible correct answer could look like.
+ Les respostes a tots els exercicis es poden trobar al perfil públic del compte d'usuari 'Hedy_answers'. Sovint animem als estudiants a usar la seva pròpia creativitat en les respostes, així doncs les respostes són simplement una guia sobre com podria ser una possible resposta correcta.
- To go to the 'Hedy_answers' profile, please click here.
+ Per anar al perfil 'Hedy_answers', fes clic aquí.
- title: Errors comuns
key: errors_comuns
intro: |-
- Pots aprendre dels teus errors, sobretot en la codificació!
- Cometre errors és inevitable i una gran oportunitat per aprendre, però per als professors pot ser un repte trobar la solució correcta per a un error!
- Sobretot a mesura que els codis es fan més llargs i més llargs a mesura que avancen els nivells. És per això que hem fet una llista amb els errors freqüents a cada nivell i les seves solucions.
+ Pots aprendre dels teus errors, sobretot en la programació! Cometre errors és inevitable i una gran oportunitat per aprendre, però per als professors pot ser un repte trobar la solució correcta per a un error! Sobretot mesura que els programes es fan més i més llargs a mesura que els estudiants avancen de nivells. És per això que hem fet una llista amb els errors més freqüents a cada nivell i les seves solucions.
levels:
- level: '1'
sections:
@@ -423,7 +421,7 @@ teacher-guide:
solution_code: |-
{forward} 100
{turn} 90
- - title: "Turtle: Students use the command backward, but that doesn't exist"
+ - title: "Tortuga: Els estudiants usen l'ordre retrocedir, però no existeix."
example:
error_text: Backward is not a command.
error_code: backward 100
@@ -569,7 +567,7 @@ teacher-guide:
your_name {is} {ask} Who are you?
{add} your_name {to} names
{print} names {at} {random}
- - title: Students forget to use to/from in add/remove
+ - title: Els estudiants obliden utilitzar '{to}'/'{from}' en '{add}'/'{remove}'
example:
error_text: Without to/from the add/remove command won't work.
error_code: |-
@@ -947,7 +945,7 @@ teacher-guide:
solution_code: '{print} 2.5 + 2.5'
- level: '13'
sections:
- - title: Students confuse `and` with `or`
+ - title: Els estudiants confonen `{and}` amb `{or}`
example:
error_text: Both commands might appear similar, but their functions are very different.
error_code: |-
diff --git a/content/workbooks/lesson3/les3a.md b/content/workbooks/lesson3/les3a.md
index 8329329b7f1..217bcc93fdc 100644
--- a/content/workbooks/lesson3/les3a.md
+++ b/content/workbooks/lesson3/les3a.md
@@ -29,7 +29,9 @@ print Ik ga vandaag naar vrienden at random
"assignment": "element selection",
"question" : "Omcircel alle lijsten in deze code",
"icon" : "◯",
- "code" : "vandaag is maandag\nklassen is 1HC, 1HB, 1HA\nlokalen is 011, 304, 305, OLC",
+ "code" : "vandaag is maandag\n
+ klassen is 1HC, 1HB, 1HA\n
+ lokalen is 011, 304, 305, OLC",
"answer" : "klassen en lokalen"
}
diff --git a/content/workbooks/lesson5/les5a.md b/content/workbooks/lesson5/les5a.md
index 11a8fba96e1..60c998425b3 100644
--- a/content/workbooks/lesson5/les5a.md
+++ b/content/workbooks/lesson5/les5a.md
@@ -52,6 +52,7 @@ Wat is een conditie? Onderstreep in deze codes steeds de conditie.
"code" : "leeftijd is ask 'Hoe oud ben jij?'\n
if leeftijd is 16 print 'Perfecto' else print 'Jij bent te jong!'",
"answer" : "print 'Jij bent te jong!'"
+ "answer" : "leeftijd is 18"
}
#### Opdracht 2: Omcirkel de juiste regels
diff --git a/content/workbooks/lesson6/les6a-autogenerated.md b/content/workbooks/lesson6/les6a-autogenerated.md
new file mode 100644
index 00000000000..376aab81acd
--- /dev/null
+++ b/content/workbooks/lesson6/les6a-autogenerated.md
@@ -0,0 +1,207 @@
+# Hedy - Toets Les 1 tot 5
+
+
+## SO
+
+We maken vandaag een SO op papier. Lees dit goed voor je begint:
+
+* De toets telt voor 1/6e mee voor je cijfer
+* We beginnen vandaag ook aan een huiswerk-opdracht. Die telt ook 1/6e mee.
+* Lees goed wat je moet doen! Soms moet je twee dingen doen, vergeet dat dan niet!
+
+#### Codes herkennen
+
+Voor deze vragen moet jij stukjes code zoeken bij de juiste programmeerwoorden.
+Kijk goed **wat** je moet vinden, en omcirkel dat.
+
+**◯ Opdracht**: Omcirkel alle **variabelen** in deze code.
+```hedy
+naam is Michael
+print 'Hallo ' naam
+leeftijd is 17
+print 'Jij bent ' leeftijd ' jaar oud'
+```
+
+**◯ Opdracht**: Omcirkel alle **variabelen** in deze code.
+```hedy
+print 'welkom bij dit avontuur' naamnaam is Harry
+```
+
+**◯ Opdracht**: Omcirkel nu de stukken code waarin de waarde van een variabele **wordt gebruikt.**
+```hedy
+weer is zonnig
+print 'het wordt vandaag ' weer
+```
+
+
+**◯ Opdracht**: Omcirkel nu de stukken code waarin de waarde van een variabele **wordt gebruikt.**
+```hedy
+naam is Ben
+print 'Hallo ik ben Ben'
+```
+
+**◯ Opdracht**: Op welke plek in de code wordt **er tekst uit een lijst geprint**?
+```hedy
+winst is 10 euro, 5 euro, niks
+print 'Jij wint ' winst at random
+```
+
+**◯ Opdracht**: Op welke plek in de code wordt **er tekst uit een lijst geprint**?
+```hedy
+vrienden is Mo, Layla, Sem
+print vrienden at random ' gaat ook mee,'
+```
+
+
+**◯ Opdracht**: Op welke plek in de code staat er een **conditie**?
+```hedy
+leeftijd is ask 'Hoe oud ben jij?'
+if leeftijd is 18 print 'Jij mag nu een biertje' else print 'Jij bent te jong!'
+```
+
+**◯ Opdracht**: Op welke plek in de code staat er een **conditie**?
+```hedy
+naam is Bert
+if naam is Ernie print 'Jij bent oranje' else print 'Jij bent geel!'
+```
+
+### Goed of fout?
+
+**🤔 Vraag**: Is deze code goed of fout?
+```hedy
+concierge is Michael
+print Vandaag is concierge at random bij de receptie
+```
+Antwoord:
〇 Goed
〇 Fout
+
+**🤔 Vraag**: Is deze code goed of fout?
+```hedy
+klassen is 1, 2, 5, 8, 12, 24
+print De prijs valt op nummer .... klassen at random
+```
+Antwoord:
〇 Goed
〇 Fout
+
+
+
+**🤔 Vraag**: Is deze code goed of fout?
+```hedy
+naam is Gea
+print 'Goedemorgen ' voornaam!
+```
+Antwoord:
〇 Goed
〇 Fout
+
+**🤔 Vraag**: Is deze code goed of fout?
+```hedy
+print 'Daar staat een auto, fout geparkeerd!
+```
+Antwoord:
〇 Goed
〇 Fout
+
+**🤔 Vraag**: Is deze code goed of fout?
+```hedy
+print "De auto's staan op straat"
+print 'Dat mag niet!!'
+```
+Antwoord:
〇 Goed
〇 Fout
+
+### Voorspel de uitvoer
+
+Bij deze opdracht moet je voorspellen wat de computer gaat doen.
+Denk eraan dat computers heel precies zijn, iedere spatie of punt of komma telt!
+
+* Zit er een `ask` in de code? Kies dan zelf een antwoord.
+* Zit er een `random` in de code? Kies dan een mogelijke keus van de computer.
+
+**💻 Vraag**: Wat is de uitvoer van deze code?
+Code: Uitvoer:
+```hedy
+weer is zonnig, regen, wolken, onweer ______________________________
+print 'Vandaag wordt het... ' weer at random!
+
+```
+
+**💻 Vraag**: Wat is de uitvoer van deze code?
+Code: Uitvoer:
+```hedy
+docenten is Hermans, Merbis, Bagci, Senkal ___________________________
+docent is docenten at random
+if docent is Hermans print 'Jammer!'
+
+```
+
+**💻 Vraag**: Wat is de uitvoer van deze code?
+Code: Uitvoer:
+```hedy
+toestand is ask Hoe gaat het met jou? ___________________________
+print 'Dus het gaat ' toestand ' met jou.'
+
+```
+
+**💻 Vraag**: Wat is de uitvoer van deze code?
+Code: Uitvoer:
+```hedy
+getallen is 1, 2, 3 ___________________________
+print 'Welkom bij de bingoavond' ___________________________
+getal is getallen at random
+if getal is 10 print 'Gewonnen!' else print 'Helaas'
+```
+
+### Commando's en programmeerwoorden
+
+We hebben deze lessen veel nieuwe commando's en woorden geleerd.
+In deze opdracht mag je er twee commando's uitleggen (is en if). Kies er daarna drie die je nog weet, en leg die uit.
+
+**📖 Vraag**: Wat doet het commando `is`?
+Antwoord: ____________________________________________________________________________________________________
+
+**📖 Vraag**: Wat doet het commando `if`?
+Antwoord: ____________________________________________________________________________________________________
+
+**📖 Vraag**: Wat doet het commando `______`?
+Antwoord: ____________________________________________________________________________________________________
+
+**📖 Vraag**: Wat doet het commando `______`?
+Antwoord: ____________________________________________________________________________________________________
+
+**📖 Vraag**: Wat doet het commando `______`?
+Antwoord: ____________________________________________________________________________________________________
+
+Hetzelfde voor woorden. Eerst leg je twee woorden uit (variabele en lijst), dan kies je er zelf nog drie die je kan uitleggen.
+
+**📖 Vraag**: Wat betekent het woord variabele?
+Antwoord: ____________________________________________________________________________________________________
+
+**📖 Vraag**: Wat betekent het woord lijst?
+Antwoord: ____________________________________________________________________________________________________
+
+**📖 Vraag**: Wat betekent het woord __________?
+Antwoord: ____________________________________________________________________________________________________
+
+
+**📖 Vraag**: Wat betekent het woord __________?
+Antwoord: ____________________________________________________________________________________________________
+
+
+**📖 Vraag**: Wat betekent het woord __________?
+Antwoord: ____________________________________________________________________________________________________
+
+### De laatste vragen!
+
+
+
+**✍️ Vraag**: Weet jij nog meer over programmeren met Hedy dan er in deze toets staat?
+Noem iets dat jij weet, maar niet in deze toets stond. Als het klopt, krijg je bonus.
+
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
+
+
+**✍️ Vraag**: Verzin een goede toetsvraag
+Wat had jij een goede vraag gevonden voor deze toets? Zet er ook het antwoord bij!
+
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
+
+
diff --git a/content/workbooks/lesson6/les6a-autogenerated.pdf b/content/workbooks/lesson6/les6a-autogenerated.pdf
new file mode 100644
index 00000000000..774ca7a1c9f
Binary files /dev/null and b/content/workbooks/lesson6/les6a-autogenerated.pdf differ
diff --git a/content/workbooks/lesson6/les6a.md b/content/workbooks/lesson6/les6a.md
new file mode 100644
index 00000000000..086fc19cf73
--- /dev/null
+++ b/content/workbooks/lesson6/les6a.md
@@ -0,0 +1,306 @@
+# Hedy - Toets Les 1 tot 5
+
+{
+ "teacher_note": "Dit is een toets voor leerlingen over level 1 t/m 5. We gebruiken wel overal de syntax van level 5, dus aanhalingstekens, en geen `echo` meer, anders wordt het verwarrend."
+}
+
+## SO
+
+We maken vandaag een SO op papier. Lees dit goed voor je begint:
+
+* De toets telt voor 1/6e mee voor je cijfer
+* We beginnen vandaag ook aan een huiswerk-opdracht. Die telt ook 1/6e mee.
+* Lees goed wat je moet doen! Soms moet je twee dingen doen, vergeet dat dan niet!
+
+#### Codes herkennen
+
+Voor deze vragen moet jij stukjes code zoeken bij de juiste programmeerwoorden.
+Kijk goed **wat** je moet vinden, en omcirkel dat.
+
+{
+ "assignment": "element selection",
+ "question" : "Omcirkel alle **variabelen** in deze code.",
+ "icon" : "◯",
+ "code" : "naam is Michael\n
+ print 'Hallo ' naam\n
+ leeftijd is 17\n
+ print 'Jij bent ' leeftijd ' jaar oud'",
+ "answer" : "Op alle regels"
+}
+
+{
+ "assignment": "element selection",
+ "question" : "Omcirkel alle **variabelen** in deze code.",
+ "icon" : "◯",
+ "code" : "print 'welkom bij dit avontuur' naam
+ naam is Harry",
+ "answer" : "Op regel 2, maar niet op regel 1! Naam is namelijk nog niet ingesteld"
+}
+
+{
+ "assignment": "element selection",
+ "question" : "Omcirkel nu de stukken code waarin de waarde van een variabele **wordt gebruikt.**",
+ "icon" : "◯",
+ "code" : "weer is zonnig\n
+ print 'het wordt vandaag ' weer",
+ "answer" : "Op regel 2"
+}
+
+
+{
+ "assignment": "element selection",
+ "question" : "Omcirkel nu de stukken code waarin de waarde van een variabele **wordt gebruikt.**",
+ "icon" : "◯",
+ "code" : "naam is Ben\n
+ print 'Hallo ik ben Ben'",
+ "answer" : "Op geen regel"
+}
+
+{
+ "assignment": "element selection",
+ "question" : "Op welke plek in de code wordt **er tekst uit een lijst geprint**?",
+ "icon" : "◯",
+ "code" : "winst is 10 euro, 5 euro, niks\n
+ print 'Jij wint ' winst at random",
+ "answer" : "Op het einde van regel 2"
+}
+
+{
+ "assignment": "element selection",
+ "question" : "Op welke plek in de code wordt **er tekst uit een lijst geprint**?",
+ "icon" : "◯",
+ "code" : "vrienden is Mo, Layla, Sem\n
+ print vrienden at random ' gaat ook mee,'",
+ "answer" : "Op het begin van regel 2"
+}
+
+
+{
+ "assignment": "element selection",
+ "question" : "Op welke plek in de code staat er een **conditie**?",
+ "note" : "Bij een conditie kijkt de computer of iets waar is of niet waar",
+ "icon" : "◯",
+ "code" : "leeftijd is ask 'Hoe oud ben jij?'\n
+ if leeftijd is 18 print 'Jij mag nu een biertje' else print 'Jij bent te jong!'",
+ "answer" : "leeftijd is 18"
+}
+
+{
+ "assignment": "element selection",
+ "question" : "Op welke plek in de code staat er een **conditie**?",
+ "icon" : "◯",
+ "code" : "naam is Bert\n
+ if naam is Ernie print 'Jij bent oranje' else print 'Jij bent geel!'",
+ "answer" : "naam is Ernie"
+}
+
+### Goed of fout?
+
+{
+ "assignment": "MC-code",
+ "options" : ["Goed" , "Fout"],
+ "question" : "Is deze code goed of fout?",
+ "icon" : "🤔",
+ "code" : "concierge is Michael\n
+ print Vandaag is concierge at random bij de receptie",
+ "answer" : "Fout, concierge is geen lijst"
+}
+
+{
+ "assignment": "MC-code",
+ "options" : ["Goed" , "Fout"],
+ "question" : "Is deze code goed of fout?",
+ "icon" : "🤔",
+ "code" : "klassen is 1, 2, 5, 8, 12, 24\n
+ print De prijs valt op nummer .... klassen at random",
+ "answer" : "Goed, de naam hoeft niet te kloppen voor de computer."
+}
+
+
+
+{
+ "assignment": "MC-code",
+ "options" : ["Goed" , "Fout"],
+ "question" : "Is deze code goed of fout?",
+ "icon" : "🤔",
+ "code" : "naam is Gea\n
+ print 'Goedemorgen ' voornaam!",
+ "answer" : "Fout (geen variabele gebruikt)"
+}
+
+{
+ "assignment": "MC-code",
+ "options" : ["Goed" , "Fout"],
+ "question" : "Is deze code goed of fout?",
+ "icon" : "🤔",
+ "code" : "print 'Daar staat een auto, fout geparkeerd!",
+ "answer" : "Fout. De aanhalingstekens moeten altijd in paren gebruikt worden."
+}
+
+{
+ "assignment": "MC-code",
+ "options" : ["Goed" , "Fout"],
+ "question" : "Is deze code goed of fout?",
+ "icon" : "🤔",
+ "code" : "print \"De auto's staan op straat\"\n
+ print 'Dat mag niet!!'",
+ "answer" : "Goed. Je mag aanhalingstekens door elkaar gebruiken, als ze per regel maar hetzelfde zijn. Op de eerste regel moeten de dubbele door het woord auto's."
+}
+
+### Voorspel de uitvoer
+
+Bij deze opdracht moet je voorspellen wat de computer gaat doen.
+Denk eraan dat computers heel precies zijn, iedere spatie of punt of komma telt!
+
+* Zit er een `ask` in de code? Kies dan zelf een antwoord.
+* Zit er een `random` in de code? Kies dan een mogelijke keus van de computer.
+
+{
+ "assignment": "output",
+ "icon" : "💻",
+ "code" : "weer is zonnig, regen, wolken, onweer\n
+ print 'Vandaag wordt het... ' weer at random!",
+ "answer" : "Wat is het **keuze uit zonnig, regen, wolken, onweer**!",
+ "lines" : 1
+}
+
+{
+ "assignment": "output",
+ "icon" : "💻",
+ "code" : "docenten is Hermans, Merbis, Bagci, Senkal\n
+ docent is docenten at random\n
+ if docent is Hermans print 'Jammer!'",
+ "answer" : "Jammer! of niks",
+ "lines" : 1
+}
+
+{
+ "assignment": "output",
+ "icon" : "💻",
+ "code" : "toestand is ask Hoe gaat het met jou?\n
+ print 'Dus het gaat ' toestand ' met jou.'",
+ "answer" : " Dus het gaat **goed(bijv)** met jou",
+ "lines" : 1
+}
+
+{
+ "assignment": "output",
+ "icon" : "💻",
+ "code" : "getallen is 1, 2, 3\n
+ print 'Welkom bij de bingoavond'\n
+ getal is getallen at random\n
+ if getal is 10 print 'Gewonnen!' else print 'Helaas'\n",
+ "answer" : "Welkom bij de bingoavond\n**'Helaas'** (want het kan nooit 10 worden)",
+ "lines" : 2
+}
+
+### Commando's en programmeerwoorden
+
+We hebben deze lessen veel nieuwe commando's en woorden geleerd.
+In deze opdracht mag je er twee commando's uitleggen (is en if). Kies er daarna drie die je nog weet, en leg die uit.
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat doet het commando `is`?",
+ "lines" : 1,
+ "answer" : "Stelt een variabele of lijst in"
+}
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat doet het commando `if`?",
+ "lines" : 1,
+ "answer" : "Maakt een keuze op basis van een conditie"
+}
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat doet het commando `______`?",
+ "lines" : 1,
+ "answer" : ""
+}
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat doet het commando `______`?",
+ "lines" : 1,
+ "answer" : "Maakt een keuze op basis van een conditie"
+}
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat doet het commando `______`?",
+ "lines" : 1,
+ "answer" : "Maakt een keuze op basis van een conditie"
+}
+
+Hetzelfde voor woorden. Eerst leg je twee woorden uit (variabele en lijst), dan kies je er zelf nog drie die je kan uitleggen.
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat betekent het woord variabele?",
+ "lines" : 1,
+ "answer" : "Een waarde die een naam krijgt"
+}
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat betekent het woord lijst?",
+ "lines" : 1,
+ "answer" : "Een groepje waardes die samen een naam krijgt."
+}
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat betekent het woord __________?",
+ "lines" : 1,
+ "answer" : ""
+}
+
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat betekent het woord __________?",
+ "lines" : 1,
+ "answer" : ""
+}
+
+
+{
+ "assignment": "define",
+ "icon" : "📖",
+ "question" : "Wat betekent het woord __________?",
+ "lines" : 1,
+ "answer" : ""
+}
+
+### De laatste vragen!
+
+
+
+{
+ "assignment": "text",
+ "icon" : "✍️",
+ "question" : "Weet jij nog meer over programmeren met Hedy dan er in deze toets staat?\n
+ Noem iets dat jij weet, maar niet in deze toets stond. Als het klopt, krijg je bonus.",
+ "lines" : 2
+}
+
+{
+ "assignment": "text",
+ "icon" : "✍️",
+ "question" : "Verzin een goede toetsvraag\n
+ Wat had jij een goede vraag gevonden voor deze toets? Zet er ook het antwoord bij! ",
+ "lines" : 6
+}
+
+
diff --git a/content/workbooks/rewrite_all_workbooks.py b/content/workbooks/rewrite_all_workbooks.py
index 82c07b5ed20..b320732bb23 100644
--- a/content/workbooks/rewrite_all_workbooks.py
+++ b/content/workbooks/rewrite_all_workbooks.py
@@ -3,8 +3,8 @@
current_directory = os.path.dirname(os.path.abspath(__file__))
-min_lesson = 5
-max_lesson = 6
+min_lesson = 6
+max_lesson = 7
for lesson in range(min_lesson, max_lesson):
json_data = process_workbook(lesson, current_directory)
diff --git a/content/workbooks/workbook_rewriter.py b/content/workbooks/workbook_rewriter.py
index 3a422f3e0d8..24fceb90ff8 100644
--- a/content/workbooks/workbook_rewriter.py
+++ b/content/workbooks/workbook_rewriter.py
@@ -82,7 +82,7 @@ def convert_json(json):
if i < number_of_output_lines and not turtle:
if i == 0 and turtle:
output_line += '🐢'
- output_line = output_line.ljust(90, '_')
+ output_line = output_line.ljust(80, '_')
textfields += output_line + '\n'
diff --git a/content/workbookstester.md b/content/workbookstester.md
index ac18ea6c061..00c9c0949b4 100644
--- a/content/workbookstester.md
+++ b/content/workbookstester.md
@@ -1,172 +1,209 @@
-# Hedy - Les 5a
+# Hedy - Toets Les 1 tot 5
-[Teacher] In level 5 leren leerlingen de `if` en `else` codes, die zijn vrij lastig omdat nu niet meer alles regels altijd worden uitgevoerd. [/Teacher]
-## Aanhalingstekens
+## SO
-Aan het einde van de les:
+We maken vandaag een SO op papier. Lees dit goed voor je begint:
-* hoe je de computer kan laten reageren op invoer.
+* De toets telt voor 1/6e mee voor je cijfer
+* We beginnen vandaag ook aan een huiswerk-opdracht. Die telt ook 1/6e mee.
+* Lees goed wat je moet doen! Soms moet je twee dingen doen, vergeet dat dan niet!
-### Keuzes maken
+#### Codes herkennen
-Tot nu toe voerde Hedy altijd alle regels code uit. Vanaf nu kan je met een `if` bepaalde regels uitvoeren, alleen in bepaalde gevallen.
-De code die je na `if` schrijft, noem je een conditie.
-In dit voorbeeld is de conditie `vriend is Jasmijn.`
+Voor deze vragen moet jij stukjes code zoeken bij de juiste programmeerwoorden.
+Kijk goed **wat** je moet vinden, en omcirkel dat.
+**◯ Opdracht**: Omcirkel alle **variabelen** in deze code.
```hedy
-vriend is ask 'Hoe heet jij?'
-if vriend is Jasmijn print 'Hallo!' else print 'Nee, jij niet!'
+naam is Michael
+print 'Hallo ' naam
+leeftijd is 17
+print 'Jij bent ' leeftijd ' jaar oud'
```
-#### Opdracht 1a: Onderstreep de condities
-
-Wat is een conditie? Onderstreep in deze codes steeds de conditie.
-
-**◯ Opdracht**: Omcircel alle lijsten in deze code
+**◯ Opdracht**: Omcirkel alle **variabelen** in deze code.
```hedy
-vandaag is ask 'Welke dag is het?'
-if vandaag is vrijdag print 'Ja' else print 'Nee'
+print 'welkom bij dit avontuur' naamnaam is Harry
```
-**◯ Opdracht**: Omcircel alle lijsten in deze code
+**◯ Opdracht**: Omcirkel nu de stukken code waarin de waarde van een variabele **wordt gebruikt.**
```hedy
-vandaag is ask 'Welke dag is het?'
-if vandaag is zaterdag print 'Geen school vandaag' else print 'Helaas wel'
+weer is zonnig
+print 'het wordt vandaag ' weer
```
-**◯ Opdracht**: Omcircel alle lijsten in deze code
+
+**◯ Opdracht**: Omcirkel nu de stukken code waarin de waarde van een variabele **wordt gebruikt.**
```hedy
-leeftijd is ask 'Hoe oud ben jij?'
-if leeftijd is 16 print 'Perfecto' else print 'Jij bent te jong!'
+naam is Ben
+print 'Hallo ik ben Ben'
```
-#### Opdracht 1b: Omcirkel de juiste regels
-
-Welke code wordt uitgevoerd? Omcirkel alleen die stukken.
-Doe alsof het vandaag vrijdag is, en jij 12 jaar bent.
-
-**◯ Opdracht**: Omcircel alle lijsten in deze code
+**◯ Opdracht**: Op welke plek in de code wordt **er tekst uit een lijst geprint**?
```hedy
-vandaag is ask 'Welke dag is het?'
-if vandaag is vrijdag print 'Ja' else print 'Nee'
+winst is 10 euro, 5 euro, niks
+print 'Jij wint ' winst at random
```
-**◯ Opdracht**: Omcircel alle lijsten in deze code
+**◯ Opdracht**: Op welke plek in de code wordt **er tekst uit een lijst geprint**?
```hedy
-vandaag is ask 'Welke dag is het?'
-if vandaag is zaterdag print 'Geen school vandaag' else print 'Helaas wel'
+vrienden is Mo, Layla, Sem
+print vrienden at random ' gaat ook mee,'
```
-**◯ Opdracht**: Omcircel alle lijsten in deze code
+
+**◯ Opdracht**: Op welke plek in de code staat er een **conditie**?
```hedy
leeftijd is ask 'Hoe oud ben jij?'
-if leeftijd is 16 print 'Perfecto' else print 'Jij bent te jong!'
+if leeftijd is 18 print 'Jij mag nu een biertje' else print 'Jij bent te jong!'
```
+**◯ Opdracht**: Op welke plek in de code staat er een **conditie**?
+```hedy
+naam is Bert
+if naam is Ernie print 'Jij bent oranje' else print 'Jij bent geel!'
+```
-#### Opdracht 2: Foutje?
-Lees de codes goed! Welke zijn er goed of fout.
+### Goed of fout?
**🤔 Vraag**: Is deze code goed of fout?
```hedy
-leeftijd is ask 'Hoe oud ben jij?'
-if leeftijd is 16 print 'Perfecto' else 'Jij bent te jong!'
+concierge is Michael
+print Vandaag is concierge at random bij de receptie
```
Antwoord:
〇 Goed
〇 Fout
**🤔 Vraag**: Is deze code goed of fout?
```hedy
-dier is ask 'Wat voor dier is dat?'
-if dier is Lama print 'Beeeee'
+klassen is 1, 2, 5, 8, 12, 24
+print De prijs valt op nummer .... klassen at random
```
Antwoord:
〇 Goed
〇 Fout
+
+
**🤔 Vraag**: Is deze code goed of fout?
```hedy
-print "Daar lopen twee oma's"
+naam is Gea
+print 'Goedemorgen ' voornaam!
```
Antwoord:
〇 Goed
〇 Fout
**🤔 Vraag**: Is deze code goed of fout?
```hedy
-if naam Hedyprint 'Programmeren is leuk!'
+print 'Daar staat een auto, fout geparkeerd!
```
Antwoord:
〇 Goed
〇 Fout
**🤔 Vraag**: Is deze code goed of fout?
```hedy
-ask 'Hoe heet deze school?'if school is LK print 'Ja!'
+print "De auto's staan op straat"
+print 'Dat mag niet!!'
```
Antwoord:
〇 Goed
〇 Fout
-**🤔 Vraag**: Is deze code goed of fout?
+### Voorspel de uitvoer
+
+Bij deze opdracht moet je voorspellen wat de computer gaat doen.
+Denk eraan dat computers heel precies zijn, iedere spatie of punt of komma telt!
+
+* Zit er een `ask` in de code? Kies dan zelf een antwoord.
+* Zit er een `random` in de code? Kies dan een mogelijke keus van de computer.
+
+**💻 Vraag**: Wat is de uitvoer van deze code?
+Code: Uitvoer:
```hedy
-aantal is ask "Hoeveel capibara's lopen daar?"if aantal is 5 print 'Dat zijn er dan aantal'
+weer is zonnig, regen, wolken, onweer ______________________________
+print 'Vandaag wordt het... ' weer at random!
+
```
-Antwoord:
〇 Goed
〇 Fout
+**💻 Vraag**: Wat is de uitvoer van deze code?
+Code: Uitvoer:
+```hedy
+docenten is Hermans, Merbis, Bagci, Senkal ______________________________
+docent is docenten at random
+if docent is Hermans print 'Jammer!'
-#### Opdracht 3: Voorspel de uitvoer
+```
-Wat is de uitvoer van deze programma's?
-Let op! Soms staat er random in een programma. Dan moet je zelf kiezen wat Hedy zou kiezen.
-Er kunnen dan dus meerdere antwoorden goed zijn!
+**💻 Vraag**: Wat is de uitvoer van deze code?
+Code: Uitvoer:
+```hedy
+toestand is ask Hoe gaat het met jou? ______________________________
+print 'Dus het gaat ' toestand ' met jou.'
+
+```
**💻 Vraag**: Wat is de uitvoer van deze code?
Code: Uitvoer:
```hedy
-docenten is Hermans, Merbis, Bagci, Senkal ________________________________________
-docent is docenten at randomif docent is Hermans print 'Hoera!'
+getallen is 1, 2, 3 ______________________________
+print 'Welkom bij de bingoavond' ______________________________
+getal is getallen at random
+if getal is 10 print 'Gewonnen!' else print 'Helaas'
+
```
+### Commando's en programmeerwoorden
-#### Opdracht 5: Programmeerwoorden
+We hebben deze lessen veel nieuwe commando's en woorden geleerd.
+In deze opdracht mag je er twee commando's uitleggen (is en if). Kies er daarna drie die je nog weet, en leg die uit.
-We hebben deze les weer nieuwe programmeerwoorden geleerd! Leg ze uit je eigen woorden.
+**📖 Vraag**: Wat doet het commando `is`?
+Antwoord: ____________________________________________________________________________________________________
-**📖 Vraag**: Wat is een conditie?
+**📖 Vraag**: Wat doet het commando `if`?
Antwoord: ____________________________________________________________________________________________________
+**📖 Vraag**: Wat doet het commando `______`?
+Antwoord: ____________________________________________________________________________________________________
+**📖 Vraag**: Wat doet het commando `______`?
+Antwoord: ____________________________________________________________________________________________________
-#### Opdracht 6: Codes
+**📖 Vraag**: Wat doet het commando `______`?
+Antwoord: ____________________________________________________________________________________________________
-We hebben ook nieuwe codes geleerd in level 5.
+Hetzelfde voor woorden. Eerst leg je twee woorden uit (variabele en lijst), dan kies je er zelf nog drie die je kan uitleggen.
-**📖 Vraag**: Wat doet het commando `if`?
+**📖 Vraag**: Wat betekent het woord variabele?
Antwoord: ____________________________________________________________________________________________________
-**📖 Vraag**: Wat doet het commando `else`?
+**📖 Vraag**: Wat betekent het woord lijst?
Antwoord: ____________________________________________________________________________________________________
-### Wat vond jij?
+**📖 Vraag**: Wat betekent het woord __________?
+Antwoord: ____________________________________________________________________________________________________
-**✍️ Vraag**: Wat was de leukste opdracht van dit level?
-____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-
+**📖 Vraag**: Wat betekent het woord __________?
+Antwoord: ____________________________________________________________________________________________________
-**✍️ Vraag**: Waarom vond je juist die opdracht leuk?
-____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-
+**📖 Vraag**: Wat betekent het woord __________?
+Antwoord: ____________________________________________________________________________________________________
+
+### De laatste vragen!
+
-**✍️ Vraag**: Welke opdracht was het minst leuk?
+**✍️ Vraag**: Weet jij nog meer over programmeren met Hedy dan er in deze toets staat?
+Noem iets dat jij weet, maar niet in deze toets stond. Als het klopt, krijg je bonus.
+
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
-**✍️ Vraag**: Waarom vond je juist die opdracht niet leuk?
+**✍️ Vraag**: Verzin een goede toetsvraag
+Wat had jij een goede vraag gevonden voor deze toets? Zet er ook het antwoord bij!
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
diff --git a/website/for_teachers.py b/website/for_teachers.py
index af808f3e70f..a588a705dd2 100644
--- a/website/for_teachers.py
+++ b/website/for_teachers.py
@@ -285,7 +285,7 @@ def get_grid_info(self, user, class_id, level):
name = adventure_names.get(program['adventure_name'], program['adventure_name'])
customized_level = class_adventures_formatted.get(str(program['level']))
if next((adventure for adventure in customized_level if adventure["name"] == name), False)\
- and self.is_program_modified(program, adventures, teacher_adventures):
+ and program.get('is_modified'):
student_adventure_id = f"{student}-{program['adventure_name']}-{level}"
current_adventure = self.db.student_adventure_by_id(student_adventure_id)
if not current_adventure: