Skip to content

Commit

Permalink
Add quotes in ask from level 3 on (hedyorg#588)
Browse files Browse the repository at this point in the history
* Added import random to unittests

* Update DESIGN.md

* change ask from level 3 to include quotation marks just like print

* tiny fix in green yaml

* ask now also can take vars and lists

f.e.

```ding is kleur
    kleur is ask 'Wat is je lievelings' ding
    print 'Jouw favoriet is dus ' kleur```

* ask should be same in level 4

(so no addition needed)

Co-authored-by: Felienne <[email protected]>
  • Loading branch information
LauraTSD and Felienne authored Jul 21, 2021
1 parent 147d602 commit ddedce4
Show file tree
Hide file tree
Showing 41 changed files with 240 additions and 222 deletions.
24 changes: 12 additions & 12 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Design Goals

The overarching goal of Hedy is to successively add syntactic complexity to a Python-like language, until novices have mastered Python itself. To reach that goal, Hedy follows these design principles:

1. **Concepts are offered at least three times in different forms:**
1. **Concepts are offered at least three times in different forms:**

Research from writing education has shown that it is best to offer concept in different forms over a long period of
time. Furthermore it has been shown that a word needs to be read 7
Expand All @@ -35,31 +35,31 @@ The overarching goal of Hedy is to successively add syntactic complexity to a Py
Previous research has shown that syntax can be confusing for
novices. Early levels thus are as syntax-free as possible to lower cognitive load.

3. **Only one aspect of a concept changes at a time:**
3. **Only one aspect of a concept changes at a time:**

In his paper on [the spiral approach Shneiderman](https://www.sciencedirect.com/science/article/pii/0360131577900082) argued for small steps in teaching programming, which we follow for Hedy too. This allows us to focus the full attention of the learner on the new syntactic element.

4. **Adding syntactic elements like brackets and colons is deferred to the latest moment possible:**
4. **Adding syntactic elements like brackets and colons is deferred to the latest moment possible:**

Previous research in the computer
science education domain has shown that operators such as == and : can be especially hard for novices. In a [study](https://www.felienne.com/archives/5947) with high-schoolers we found that that might be due to their pronunciation.

Research from natural language acquisition also indicates that parentheses and the
colon are among the latest element of punctuation that learners
typically learn. Given the choice between
colons and parenthesis and other elements like indentation, the
latter are introduced first.

5. **Learning new forms is interleaved between concepts as much as possible:**
5. **Learning new forms is interleaved between concepts as much as possible:**

We know that *spaced repetition* is a
good way of memorizing, and that it takes time to learn punctuation,
so we give students as much opportunity as possible to work with
concepts before syntax changes.

6. **At every level it is possible to create simple but meaningful
programs:**

It is important for all learners to engage in meaningful
activities. Our experience in teaching
high-school students (and even university CS students) is that
Expand Down Expand Up @@ -204,7 +204,7 @@ In level 13, booleans are added. Learners encounter True and False and how to us

### Level 14: And and or

In level 14, Learners learn about and and or in if statements.
In level 14, Learners learn about and and or in if statements.

### Level 15: Comments

Expand Down Expand Up @@ -234,14 +234,14 @@ the for loop was introduced but there was no explanation yet how to loop through
### Level 20: Change is to = and ==

In level 20, we introduce the = and ==. All variable assignments change is to =. All equality checks
turn into ==.
turn into ==.

### Level 21: Introducing !=

In level 21, we introduce the != in the equality checks. This is introduced after the change to = and
== as to make it easier to understand when you already know the syntax for =.
== as to make it easier to understand when you already know the syntax for =.

### Level 22: Introducing <= and >=

In level 22, we introduce <= and >=. This is introduced after the change to = and
== as to make it easier to understand when you already know the syntax for =.
== as to make it easier to understand when you already know the syntax for =.
39 changes: 20 additions & 19 deletions coursedata/level-defaults/cs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@
3:
start_code: print 'Ahoj světe!'
intro_text: |
`ask` funguje ve 3. úrovni stejně jako ve 2., ale `print` se mění.
V úrovni 3 se mění `ask` a `print`.
Text, který chceš vytisknout, teď musíš dát do uvozovek.
Expand All @@ -82,11 +83,11 @@
- explanation: Zeptej se na něco pomocí `ask`.
example: 'Příklad: barva is ask Jaká je tvoje nejoblíbenější barva?'
demo_code: |-
barva is ask Jaká je tvoje nejoblíbenější barva?
barva is ask 'Jaká je tvoje nejoblíbenější barva?'
print barva ' je tvoje nejoblíbenější barva.'
4:
start_code: |-
jmeno is ask Jak se jmenuješ?
jmeno is ask 'Jak se jmenuješ?'
if jmeno is Hedy print 'Super!' else print 'Ok, tebe neznám.'
intro_text: |-
`ask` a` print` fungují stále jako na úrovni 3.
Expand All @@ -95,7 +96,7 @@
## Příklad kódu v Hedy
```
jmeno is ask Jak se jmenuješ?
jmeno is ask 'Jak se jmenuješ?'
if jmeno is Hedy print 'Ahoj!' else print 'Ráda tě poznávám!'
```
Expand All @@ -109,14 +110,14 @@
example: "Příklad: print 'Ahoj, vítej v Hedy!'"
demo_code: print 'Ahoj, vítej v Hedy!'
- explanation: Zopakuj si příkaz `ask`.
example: 'Příklad: barva is ask Jaká je tvoje nejoblíbenější barva?'
example: "Příklad: barva is ask 'Jaká je tvoje nejoblíbenější barva?'"
demo_code: |-
barva is ask Jaká je tvoje nejoblíbenější barva?
barva is ask 'Jaká je tvoje nejoblíbenější barva?'
print barva ' je tvoje nejoblíbenější barva.'
- explanation: Rozhodni se pomocí `if`.
example: "Příklad: if barva is růžová print 'Moje taky!' else print 'Fuj...'"
demo_code: |-
barva is ask Jaká je tvoje nejoblíbenější barva?
barva is ask 'Jaká je tvoje nejoblíbenější barva?'
if barva is růžová print 'Moje taky!' else print 'Fuj...'
5:
start_code: repeat 3 times print 'Hedy je zábavná!'
Expand All @@ -134,17 +135,17 @@
- explanation: Zopakuj si příkaz `ask`.
example: 'Příklad: barva is ask Jaká je tvoje nejoblíbenější barva?'
demo_code: |-
barva is ask Jaká je tvoje nejoblíbenější barva?
barva is ask 'Jaká je tvoje nejoblíbenější barva?'
print barva ' je tvoje nejoblíbenější barva.'
- explanation: Rozhodni se pomocí `if`.
example: "Příklad: if barva is růžová print 'Moje taky!' else print 'Fuj...'"
demo_code: |-
barva is ask Jaká je tvoje nejoblíbenější barva?
barva is ask 'Jaká je tvoje nejoblíbenější barva?'
if barva is růžová print 'Moje taky!' else print 'Fuj...'
- explanation: Zkombinuj `repeat` a `if`.
example: "Příklad: if barva is zelená repeat 3 times print 'Pěkná!' else repeat 5 times print 'Fuj'"
demo_code: |-
barva is ask Jaká je tvoje nejoblíbenější barva?
barva is ask 'Jaká je tvoje nejoblíbenější barva?'
if barva is zelená repeat 3 times print 'Pěkná!' else repeat 5 times print 'Fuj'
6:
start_code: print '5 krát 5 je ' 5 * 5
Expand All @@ -169,14 +170,14 @@
example: "Příklad: print '5 krát 5 je ' 5 * 5"
demo_code: print '5 krát 5 je ' 5 * 5
- explanation: Zadej příklad a ověř výsledek.
example: 'Příklad: vysledek is ask Kolik je 10 plus 10?'
example: "Příklad: vysledek is ask 'Kolik je 10 plus 10?'"
demo_code: |-
vysledek is ask Kolik je 10 plus 10?
if answer is 20 print 'Ano!' else print 'Těsně vedle...'
- explanation: Zkombinuj `repeat` a `if`.
example: "Příklad: if vysledek is 50 repeat 3 times print 'Správně!' else repeat 5 times print 'Špatně!'"
demo_code: |-
vysledek is ask Kolik je 10 krát 5?
vysledek is ask 'Kolik je 10 krát 5?'
if vysledek is 50 repeat 3 times print 'Správně!' else repeat 5 times print 'Špatně!'
7:
start_code: |-
Expand All @@ -198,7 +199,7 @@
## Příklad kódu v Hedy
```
barva is ask Jaká je tvoje nejoblíbenější barva?
barva is ask 'Jaká je tvoje nejoblíbenější barva?'
if barva is zelená
repeat 3 times
print 'Nádherná!'
Expand All @@ -211,7 +212,7 @@
example: "Příklad: print '5 krát 5 je ' 5 * 5"
demo_code: print '5 krát 5 je ' 5 * 5
- explanation: Zeptej se na výsledek příkladu a zkontroluj, zda je správný. Teď už můžeš vypsat více řádků.
example: 'Příklad: vysledek is ask Kolik je 5 plus 5?'
example: "Příklad: vysledek is ask 'Kolik je 5 plus 5?'"
demo_code: |-
vysledek is ask Kolik je 5 plus 5?
if vysledek is 10
Expand All @@ -223,7 +224,7 @@
- explanation: Zkombinuj `if` a `repeat`.
example: "Příklad: if barva is zelená repeat 3 times print 'Pěkná!' else repeat 5 times print 'Fuj'"
demo_code: |4-
barva is ask Jaká je tvoje nejoblíbenější barva?
barva is ask 'Jaká je tvoje nejoblíbenější barva?'
if barva is zelená
repeat 3 times
print 'Nádherná!'
Expand All @@ -241,9 +242,9 @@
example: for pocitadlo is 1 to 5
demo_code: for pocitadlo is 1 to 5
- explanation: Zeptej se na výsledek příkladu a zkontroluj, zda je správný. Teď už můžeš vypsat více řádků.
example: 'Příklad: vysledek is ask Kolik je 5 plus 5?'
example: "'Příklad: vysledek is ask 'Kolik je 5 plus 5?'"
demo_code: |-
vysledek is ask Kolik je 5 plus 5?
vysledek is ask 'Kolik je 5 plus 5?'
if vysledek is 10
print 'Skvělá práce!'
print 'Výsledek opravdu je ' vysledek
Expand All @@ -263,9 +264,9 @@
for pocitadlo in range 1 to 5
print pocitadlo
- explanation: Zeptej se na výsledek příkladu a zkontroluj, zda je správný. Teď už můžeš vypsat více řádků.
example: 'Příklad: vysledek is ask Kolik je 5 plus 5?'
example: "Příklad: vysledek is ask 'Kolik je 5 plus 5?'"
demo_code: |-
vysledek is ask Kolik je 5 plus 5?
vysledek is ask 'Kolik je 5 plus 5?'
if vysledek is 10
print 'Skvělá práce!'
print 'Výsledek opravdu je ' vysledek
Expand Down
38 changes: 19 additions & 19 deletions coursedata/level-defaults/de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
3:
start_code: "print 'Hallo Welt'"
intro_text: |
`ask` ist in Level 3 immer noch dasselbe, aber `print` ist jetzt anders.
In Level 3 `print` und `ask` ändern.
Du musst Text, den du genau so mit `print` ausgeben möchtest, in Anführungszeichen setzen.
Expand All @@ -91,13 +91,13 @@
print 'Ich heisse ' name
- name: "ask"
explanation: "Frage etwas mit `ask`."
example: "Beispiel: farbe is ask Was ist deine Lieblingsfarbe?"
example: "Beispiel: farbe is ask 'Was ist deine Lieblingsfarbe?'"
demo_code: |-
farbe is ask Was ist deine Lieblingsfarbe?
farbe is ask 'Was ist deine Lieblingsfarbe?'
print 'Du magst am liebsten ' farbe
4:
start_code: |-
name is ask Wie heisst du?
name is ask 'Wie heisst du?'
if name is Hedy print 'Toll!' else print 'Blöd'
intro_text: |
`ask` und `print` funktionieren immer noch wie in Level 3.
Expand All @@ -106,7 +106,7 @@
## Beispiel Hedy Code
```
Name ist ask wie ist Ihr Name?
Name ist ask 'wie ist Ihr Name?'
if Name is Hedy print 'Toll!' else print 'Blöd!'
```
Expand All @@ -123,15 +123,15 @@
demo_code: "print 'Hallo. Willkommen bei Hedy.'"
- name: "ask"
explanation: "Frage etwas mit `ask`."
example: "Beispiel: farbe is ask Was ist deine Lieblingsfarbe?"
example: "Beispiel: farbe is ask 'Was ist deine Lieblingsfarbe?'"
demo_code: |-
farbe is ask Was ist deine Lieblingsfarbe?
farbe is ask 'Was ist deine Lieblingsfarbe?'
print 'Du magst am liebsten ' farbe
- name: "if"
explanation: "Treffe eine Auswahl mit `if` und `else`"
example: "Beispiel: if farbe is grün print 'Hübsch!' else print 'Bäh'"
demo_code: |-
farbe is ask Was ist deine Lieblingsfarbe?
farbe is ask 'Was ist deine Lieblingsfarbe?'
if farbe is grün print 'Hübsch!' else print 'Bäh'
5:
start_code: "repeat 3 times print 'Hedy macht Spaß!'"
Expand All @@ -154,21 +154,21 @@
demo_code: "print 'Hallo. Willkommen bei Hedy.'"
- name: "ask"
explanation: "Frage etwas mit `ask`."
example: "Beispiel: farbe is ask Was ist deine Lieblingsfarbe?"
example: "Beispiel: farbe is ask 'Was ist deine Lieblingsfarbe?'"
demo_code: |-
farbe is ask Was ist deine Lieblingsfarbe?
farbe is ask 'Was ist deine Lieblingsfarbe?'
print 'Du magst am liebsten ' farbe
- name: "if"
explanation: "Treffe eine Auswahl mit `if` und `else`"
example: "Beispiel: if farbe is grün print 'Hübsch!' else print 'Bäh'"
demo_code: |-
farbe is ask Was ist deine Lieblingsfarbe?
farbe is ask 'Was ist deine Lieblingsfarbe?'
if farbe is grün print 'Hübsch!' else print 'Bäh'
- name: "repeat"
explanation: "`repeat` und `if` kombiniert"
example: "Beispiel: if farbe is grün repeat 3 times print 'Hübsch!' else repeat 5 times print 'Bäh'"
demo_code: |-
farbe is ask Was ist deine Lieblingsfarbe?
farbe is ask 'Was ist deine Lieblingsfarbe?'
if farbe is grün repeat 3 times print 'Hübsch!' else repeat 5 times print 'Bäh'
6:
start_code: "print '5 mal 5 ist ' 5 * 5"
Expand Down Expand Up @@ -196,15 +196,15 @@
demo_code: "print '5 mal 5 ist ' 5 * 5"
- name: "`ask` und `if` mit Berechnungen"
explanation: "Frage nach einer Rechenaufgabe."
example: "Beispiel: antwort is ask Was ist 10 plus 10?"
example: "Beispiel: antwort is ask 'Was ist 10 plus 10?'"
demo_code: |-
antwort is ask Was ist 10 plus 10?
antwort is ask 'Was ist 10 plus 10?'
if antwort is 20 print 'Ja!' else print 'Ups'
- name: "repeat"
explanation: "`repeat` und `if` kombiniert"
example: "Beispiel: if antwort is 50 repeat 3 times print 'Richtig!' else repeat 5 times print 'Ups'"
demo_code: |-
antwort is ask Was ist 5 mal 10?
antwort is ask 'Was ist 5 mal 10?'
if antwort is 50 repeat 3 times print 'Richtig!' else repeat 5 times print 'Ups'
7:
start_code: |-
Expand All @@ -228,7 +228,7 @@
## Beispiel Hedy-Code
```
farbe is ask Was ist deine Lieblingsfarbe?
farbe is ask 'Was ist deine Lieblingsfarbe?'
if farbe is grün
repeat 3 times
print 'Hübsch!'
Expand All @@ -244,9 +244,9 @@
demo_code: "print '5 mal 5 ist ' 5 * 5"
- name: "`if` mit mehreren Zeilen"
explanation: "Frage nach einer Summe und prüfe, ob die Antwort richtig ist. Wir können jetzt zwei Zeilen ausgeben."
example: "Beispiel: antwort is ask Was ist 5 plus 5?"
example: "Beispiel: antwort is ask 'Was ist 5 plus 5?'"
demo_code: |-
antwort is ask Was ist 5 plus 5?
antwort is ask 'Was ist 5 plus 5?'
if antwort is 10
print 'Gut gemacht!'
print 'Die Antwort ist wirklich ' antwort
Expand All @@ -257,7 +257,7 @@
explanation: "`if` und `repeat` kombiniert"
example: "Beispiel: if farbe is grün repeat 3 times print 'Hübsch!' else repeat 5 times print 'Bäh'"
demo_code: |-
farbe is ask Was ist deine Lieblingsfarbe?
farbe is ask 'Was ist deine Lieblingsfarbe?'
if farbe is grün
repeat 3 times
print 'Hübsch!'
Expand Down
Loading

0 comments on commit ddedce4

Please sign in to comment.