This is a major task which is created as a todo list to keep track of a major world reorganization. Every world should have Description that includes a difficulty level widget and a section on the programming knowledge require, referring to previous worlds if possible.
Worlds should be designed to be "programming language agnostic" in that they should be solved using either Python or Javascript. For each world collection, unit tests should be written for both Python and Javascript, for English and French versions of the worlds. (Unit tests should be reorganized and have a structure reflecting this type of partition).
Improvements
Except for possibly the first (few?) examples in a given series, worlds should be created with randomness so that student are forced to write programs that use tests and if/else/while constructs. Some more advanced worlds should be moved to secondary world collections.
New worlds
A few new words should be added including some examples from F. Lallemand which should be incorporated.
New collections
Worlds should be placed in different collections. The worlds shown in the default collection should
be like the original Karel the robot world in that they would not require use of variables nor of arguments of functions.
Testing
For historical reason, we have two ways of running tests for each programming language (e.g. run_python and eval_python). The second way to run test was added when some worlds required initialisation (of randomly chosen elements) and was used sparingly. A single unified and comprehensive approach should be used which would make writing tests more straightforward. In the list below, this is referred to as New test syntax.
The list
[x] Remove Empty
[x] Move Blank canvas to other collection
[x] Home 1, 2, 3 ... and 4
[x] Move to top
[x] Add a fourth home, with a path having a few turns, guided by a wall.
[x] Add difficulty level
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] New test syntax
[x] Around 1, 2, 3, 4
[x] Add difficulty level
[x] Add programming knowledge
[x] Need to add object_here()
[x] Unit tests for both Python and Javascript
[x] New test syntax
[ ] Checkerboards: new worlds
[ ] Checkerboard 0 would be fixed size; 1 would be randomly chosen rectangular size with at least length size 3; 2 would allow having length side 1; 4 would be in a different collection and would invite students to use paint_square().
[x] Collect : new worlds
[x] Create based on Lallemand's examples of collecting objects while going around a world
[x] Water in centre, world 0 with fixed size.
[x] Add randomness when required
[x] Add difficulty level
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] Have an example where one must go clockwise
[x] Have a final example with an interesting path around a lake, like Schellenberg's example.
[x] New test syntax
[x] Center 1, 2, 3
[x] Review to add randomness when required
[x] Add difficulty level - this is difficult for beginners
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] New test syntax
[x] Harvest 1, 2, 3
[x] Review to add randomness when required
[x] Add difficulty level
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] New test syntax
[x] Harvest 4 a, b, c, d
[x] Replace by single world, and move to secondary collection; requires knowing how to use variables and function arguments.
[x] Add difficulty level
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] New test syntax
[x] Hurdles 1, 2, 3, 4
[x] Review to add randomness when required
[x] Add difficulty level
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] New test syntax
[ ] Maze 1, 2, 3
[x] Review to add randomness when required
[ ] Add object to be picked up in Maze 2
[ ] Add object to be picked up in Maze 3, which would be in secondary collection
[ ] Add difficulty level
[ ] Add programming knowledge
[ ] Unit tests for both Python and Javascript
[ ] New test syntax
[x] Newspaper 0, 1, 2
[x] Move to secondary collection since two of these worlds require knowing function arguments
[x] Review to add randomness when required (third world)
[x] Add difficulty level
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] New test syntax
[x] Rain 1, 2
[x] Review to add randomness
[x] Add zeroth world with fixed size and single window at fixed location, to learn build_wall().
[x] Add difficulty level
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] New test syntax
[x] Storm 1, 2, 3
[x] Review to add randomness when required
[x] Zeroth world (?) having fixed numbers of leaves, suitable for early example.
[x] Add difficulty level
[x] Remove the "close the lid" part and use toss() instead.
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[x] New test syntax
[x] Tokens 1 to 6
[x] Review to decide what should be done with them
[x] Add difficulty level
[x] Add programming knowledge
[x] Unit tests for both Python and Javascript
[ ] Need to add library test in both French and English
Description
This is a major task which is created as a todo list to keep track of a major world reorganization. Every world should have Description that includes a difficulty level widget and a section on the programming knowledge require, referring to previous worlds if possible.
Worlds should be designed to be "programming language agnostic" in that they should be solved using either Python or Javascript. For each world collection, unit tests should be written for both Python and Javascript, for English and French versions of the worlds. (Unit tests should be reorganized and have a structure reflecting this type of partition).
Improvements
Except for possibly the first (few?) examples in a given series, worlds should be created with randomness so that student are forced to write programs that use tests and
if/else/while
constructs. Some more advanced worlds should be moved to secondary world collections.New worlds
A few new words should be added including some examples from F. Lallemand which should be incorporated.
New collections
Worlds should be placed in different collections. The worlds shown in the default collection should be like the original Karel the robot world in that they would not require use of variables nor of arguments of functions.
Testing
For historical reason, we have two ways of running tests for each programming language (e.g.
run_python
andeval_python
). The second way to run test was added when some worlds required initialisation (of randomly chosen elements) and was used sparingly. A single unified and comprehensive approach should be used which would make writing tests more straightforward. In the list below, this is referred to as New test syntax.The list
[x] Remove Empty
[x] Move Blank canvas to other collection
[x] Home 1, 2, 3 ... and 4
[x] Around 1, 2, 3, 4
object_here()
[ ] Checkerboards: new worlds
paint_square()
.[x] Collect : new worlds
[x] Center 1, 2, 3
[x] Harvest 1, 2, 3
[x] Harvest 4 a, b, c, d
[x] Hurdles 1, 2, 3, 4
[ ] Maze 1, 2, 3
[x] Newspaper 0, 1, 2
[x] Rain 1, 2
build_wall()
.[x] Storm 1, 2, 3
toss()
instead.[x] Tokens 1 to 6
[ ] Need to add library test in both French and English
This task supercedes #351.