Giter VIP home page Giter VIP logo

reeborg's Introduction

About Reeborg's World

Reeborg's World is a site designed for people wishing to learn computer programming using either Python, Javascript or a Blockly interface. It is free to use and does not require login.

Some documentation which includes information for users (educators and students) as well as for potential contributors (developers, translators, artists) can be found at:

Note that the (human) language can easily be switched using a selector on the right-hand side of the documentation page.

The source for the documentation is found in another repository (https://github.com/aroberge/reeborg-docs).

If you only want a copy of the files to require to run Reeborg's World on your own site, please consult this repository: https://github.com/aroberge/reeborg-dist.

Important information for developers

DeepScan grade

If you wish to make changes to fork this project, you should consult this document.

Known problems on Mac computers

If you or your students use Mac computers, please consult known problems.

Offline version

An offline version (reeborg_offline.html) can be used without an Internet connection. You do need a local webserver running as well as a copy of the repository or the separate distribution mentioned above. Note that some multimedia files (sound and images) used by the blockly version will likely be missing, but everything will still be quite workable.

When using the offline version, you might want to use easylaunch.py, found here in the root directory. Make sure you read it (as it contains important information about its use) and possibly read the content of reeborg_menu.txt as well.

reeborg's People

Contributors

aroberge avatar marcoamgreco avatar onelife avatar rangersanger avatar xwmooc-net avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reeborg's Issues

Combine write() and write_now()

write() and write_now() should be combined into a single method, one that would 
outputs the same content as write_now() but would do so in a given frame like 
write().

Original issue reported on code.google.com by [email protected] on 24 Jun 2013 at 2:31

Explain how to use the graphics canvas

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.
Add lesson on how to use the graphics canvas.

Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 9:07

Badges?

Investigate the possibility of recording (using local storage) the words having 
been solved and have some sort of "badges" to show to the user.

Perhaps these could be acquired only on selected pages so as to avoid badges 
being obtained for "dumb" solutions where programming concepts are not used - 
like it is suggested to do initially for the users to become familiar with the 
challenges.

Original issue reported on code.google.com by [email protected] on 27 Jun 2013 at 2:13

Eliminate take_token as separate instruction

Have take() and take("token") to be equivalent and drop take_token().   
Introduce lesson to show equivalence sometime before having the newspaper 
challenge where take("star") is used.

Do the same for put() and put("token")

Original issue reported on code.google.com by [email protected] on 24 Jun 2013 at 5:34

Add load world button above world.

Load world (from external file) button should be added next to select world.

Save world should be part of the Graphical World builder only to reduce clutter.

Original issue reported on code.google.com by [email protected] on 20 Mar 2014 at 12:02

create a page to keep track of who uses Reeborg

add info requesting teachers to contact me so that their name and/or school 
name and/or course can be added as using this site to teach Python/javascript.

Refer to rur-ple.

then create a page to keep track of this info.

Original issue reported on code.google.com by [email protected] on 19 Mar 2014 at 4:14

Graphical world builder

Replace the command-driven world builder by a graphical one, akin to that 
already existing in rur-ple.

Original issue reported on code.google.com by [email protected] on 27 Jun 2013 at 8:26

translate max_steps

What steps will reproduce the problem?
1. max_steps is an English variable name that could/should be translated
2.
3.

What is the expected output? What do you see instead?


Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 11 Jul 2013 at 1:53

Add button to hide file selector

What steps will reproduce the problem?
1. click on load (for program/lib/world); a button for a file selector shows up
2. If clicked and then cancelled, it stays there

What is the expected output? What do you see instead?
There should be a way to dismiss it.  Clicking save brings about a very 
different behaviour.

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 22 Mar 2014 at 12:24

save chosen world in local storage

When a user selects a world, it should be saved in local storage so that iti 
can be retrieved and the user resume their work when returning to the site.

Original issue reported on code.google.com by [email protected] on 20 Mar 2014 at 2:00

How to think about function can be misleading

What steps will reproduce the problem?
1. look at lesson "how to think about function"
2. use function that has a local variable with global variable of same name
3.

What is the expected output? What do you see instead?
Of course the value given to the local variable does not affect the global one. 
Yet, the explanation may lead one to think it does. 

What version of the product are you using? On what operating system?


Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 9:04

Do not require to reset ...

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.

Good suggestion from Mike Fletcher:

...Also, it would be nice if the play button could automatically dismiss any 
currently "shout" dialog from reeborg, do the reset, and start the next run. 
That is, make the dialogs non-modal and not explicitly require a reset before 
starting the next run.

Original issue reported on code.google.com by [email protected] on 22 Sep 2014 at 2:59

Add new sprites for robot

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.

Add sprites provided by user and change UI so that the chosen image type can be 
selected (via a dropdown select perhaps)

Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 8:58

close dialogs when clicking reload

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.
At the end of a program, a dialog pops up, informing if it was successful or 
not.  Currently, the user has to click it to make it disappear.  Then press 
reload to be ready to run again.  Simply pressing reload should cause the 
dialog to close.  Note that there are two possibilities for dialog; they should 
both be closed.

Original issue reported on code.google.com by [email protected] on 6 Apr 2014 at 2:50

Unused code in repository

There are multiple copies of the same code in the repository. It will be 
helpful if the unused ones are removed from the repository, so that it does not 
confuse developers new to the source code.

Original issue reported on code.google.com by bravegnu on 26 Sep 2014 at 11:45

with lesson is incomplete

What steps will reproduce the problem?
1. with lesson is incomplete
2.
3.

What is the expected output? What do you see instead?
There should be information added about advantages of using the strict mode.

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 10 Jul 2013 at 7:55

Need better error message when world is not selected

What steps will reproduce the problem?
1. Try executing a program without selecting a world first.

What is the expected output? What do you see instead?
We see an uninformative message about TypeError.

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 21 Aug 2013 at 10:20

Change buttons appearance

What steps will reproduce the problem?
1. see below
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?


Please provide any additional information below.

User interface:

play, pause, pause, stop and reset buttons have the same color as the menu bar, 
so they do not stand out as buttons.

After we run the program, the play, step, pause and stop are grey-ed out.  
However, they appear to still be active because they react to a hover event.

suggestion: make the buttons stand out as buttons and remove the hover 
highlight when they are not supposed to be responsive.

Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 9:10

Properly center number of tokens

What steps will reproduce the problem?
1. chose a number of tokens greater than 9
2.
3.

What is the expected output? What do you see instead?


The number of tokens is not centred on the token. It would look better if it 
were centred.

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 25 Sep 2014 at 2:42

Save all state automatically in local storage (if possible)

Use local storage to save state (editor content, library content, world 
selected) automatically whenever it is changed.  Do not require user to click a 
button to do so.

If local storage is not available, just fail silently.

Only use save/load buttons for contents on user files.

Original issue reported on code.google.com by [email protected] on 20 Mar 2014 at 2:43

together.js

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.
Create a collaborative version using together.js  https://togetherjs.com/

Original issue reported on code.google.com by [email protected] on 8 Apr 2014 at 9:15

Save world to file

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.
Add a way to save user created world to file.

Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 8:58

Add line highlighting for instruction about to be executed

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.

This is present in rur-ple.  One way to do it is to replace robot instructions 
e.g.

move()
turn_left()

by

set_lineno(x);move()
set_lineno(x+1);turn_left()

One problem with this approach is that it would potentially fail if students 
rename commands, and it would not work with if/while statements.

Still, it migth be worthwhile looking into.

Original issue reported on code.google.com by [email protected] on 2 Apr 2014 at 5:56

Indicate that Javascript is the language used

What steps will reproduce the problem?
1. Look at existing page: there is no mention of javascript anywhere 
2.
3.

What is the expected output? What do you see instead?
javascript should appear somewhere; possibly in tab name: "Javascript code" 
instead of "Code"

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 7 Mar 2014 at 2:50

Setting up a better scheme for translation

What steps will reproduce the problem?
1. Have a look at current structure directory structure

What is the expected output? What do you see instead?
The English lessons for Javascript are in xml/ whereas the French ones are in 
xml_fr/.  As the content will be extended to include other programming and 
human languages, it makes sense to change this structure so that a uniform 
scheme is used.  One way would be to have a directory structure
with greater depth as in xml/js/en; an alternative, which is the one we
will use is to include the information in the directory name as in
xml_js_en.

Please use labels and text to provide additional information.

This issue will be considered resolved when the xml_js_en and xml_js_fr 
directory are fully functional.


Original issue reported on code.google.com by [email protected] on 25 Jun 2013 at 12:20

Identify programming languages that could be used in addition to Javascript and Python

While a Javascript version is natural and a Python version can easily be 
provided using Brython, other programming languages would be a welcome addition.

The intention is to have two full introductory path for learning programming 
(with either Javascript or Python) and shorter paths (i.e. less detailed 
lessons, since the users already know programming concepts) for learning other 
languages.   

What is needed is a javascript file that can provide translation from language 
X into javascript so that the code can then be run.  For Python, the current 
candidate of choice is Brython (given that it supports Python 3).

Very likely, the third language to be added will be CoffeeScript.  

This issue is to keep track of resources (i.e. javascript file and docs) 
available on the web for doing such adaptations.

Original issue reported on code.google.com by [email protected] on 25 Jun 2013 at 1:38

Upgrade to latest version 2 of Brython

Currently, a very old version of Brython is used. Version 2 is much more 
complete and has additional capabilities such as being able to simulate 
importing libraries from html elements.

Original issue reported on code.google.com by [email protected] on 22 Mar 2014 at 12:01

Add command to load library

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.
Instead of loading up the library automatically, have the user enter some sort 
of command, perhaps import_lib() so that a conscious choice is made to import 
the library.

Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 9:00

Have separate libraries for each language

What steps will reproduce the problem?
1. Save a user-defined function using "turn_left()" in the library
2. Go to French lessons and attempt to run a program

What is the expected output? What do you see instead?

An error message is given. If libraries for different languages (human and 
programming) were used, this would not be a problem.  To avoid causing problems 
to any existing users, English/javascript should remain the default library - 
other libraries will be identified by some language code in their name.

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 24 Jun 2013 at 5:47

make tutorial hints reveal on cllick

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.

Hide tutorials hint by default and reveal them when clicking on the title bar.

Original issue reported on code.google.com by [email protected] on 20 May 2014 at 11:21

Save program/library to file

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.
Add a way to save/retrieve a program (or library) to file.

Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 8:59

Tasks/Tutorial link(s) directly accessible in World.html

Now there is proposal to open 2 windows side by side. Probably would be more 
didactic and ergonomic, if Tutorials would be integrated in main page (at least 
as link).

Now there is a list of worlds, but would be good, that when you select one, 
alongside you could see (a link to) the associated tutorial

Maybe even better would be like they have in http://learn.code.org -- the tasks 
-- and automatical checkind if you fulfill one, with following proposal to take 
the next one (you know -- gamification :) 

Original issue reported on code.google.com by jurgis.pralgauskis on 9 Jun 2014 at 2:45

Error in lesson "diary"

What steps will reproduce the problem?

The lesson reference a deselect button which no longer exist

What is the expected output? What do you see instead?


Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 25 Jun 2013 at 2:19

Have a range of tokens initially carried by Reeborg as an option

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.

Instead of having a fixed number of tokens at the start, Reeborg could carry a 
number within a specified range.  The actual number would be chosen randomly at 
the beginning of a run, and would not be the same for two consecutive runs.

Original issue reported on code.google.com by [email protected] on 30 Oct 2014 at 7:07

Terminé does not trigger the right popup

What steps will reproduce the problem?
1. Have English program with done() as single instruction
2. Have French program with terminé() as single instruction
3. Compare the result of execution

What is the expected output? What do you see instead?

English program ends with non-error condition; French program does not.

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 24 Jun 2013 at 5:51

Add a way to destroy robots

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.

The javascript keyword delete can be used to delete a robot ... but it will 
still be drawn.   By scanning the user code for

delete name;

one could replace this by

try {
   name.__id = -1;
} catch (e) {}
delete name;

which *should* result in the robot disappearing from the world since __id==-1 
is taken as a sign that the robot should not be drawn.

Original issue reported on code.google.com by [email protected] on 28 Mar 2014 at 2:27

add select_challenge()

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.

select_world() is used to select worlds that are available from the html select 
input (drop down menu)  However, the number of worlds available has to be 
limited to remaing manageable.

It should be possible to store on the server additional challenges/world that 
would be described in the tutorial but would not be available from the drop 
down select, but from a command like select_challenge()

Original issue reported on code.google.com by [email protected] on 18 May 2014 at 12:34

Restore help in development version

Currently help is broken. Rather than using ajax to load it from an xml file, 
it might be worth embedding the content in the page. This would enable the page 
to work even when Internet connection is lost.

Original issue reported on code.google.com by [email protected] on 22 Mar 2014 at 12:06

add "reset" to make sure that functions are not redefined by user

when using "no strict" in Javascript (or possibly simply normal Python mode), a 
user could redefine a built-in function, such as move().  To ensure that things 
are running properly, a "reset" should be done prior to execution to ensure that
functions are properly defined.

This could be something like RUR._reset_definitions()
which would reset them if the world is visible and possibly set them all to 
null if the world is not visible.

Original issue reported on code.google.com by [email protected] on 20 Mar 2014 at 4:02

lesson about recursion contain a potential error

What steps will reproduce the problem?
1. The go_home() function may fail if Reeborg is already at home.
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?


Please provide any additional information below.

Fix:
function go_home() {
    if (! at_goal() ) {
        go_home()
    }
    move()
}

Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 9:05

Have a way to not show out-of-scope robots

Provide as complete a description of the feature request as you can,
including what pedagogical purpose it would serve (if any).  A link to a
relevant lesson might be a good addition to your description.

It would be a nice feature to have if one could not draw robots that are out of 
scope (either because they have been deleted, or were local variables in a 
function).

One possible way to do this would be to assign an id to each robot, track each 
variable that is created (by scanning the code prior to eval-uating it) and 
looping over each variables when creating a frame, looking for an id attribute 
- and have that information in the frame.  Thus one could perhaps only draw 
those robots whose corresponding id exist.

Original issue reported on code.google.com by [email protected] on 30 Mar 2014 at 11:35

Rename Brython dir

Insert details here
Brython's Lib dir starts with an uppercase letter.  This seems to cause 
problems on my web host.  I should look into changing the name to lower case 
and do extensive testing.  Alternatively, I should possibly create a copy of 
that directory with a name entirely in lowercase letters - in case the 
uppercase version is needed for some other servers.

Original issue reported on code.google.com by [email protected] on 23 Mar 2014 at 2:15

Content window not responsive enough

What steps will reproduce the problem?
1. Change the size of the content window repeatedly (wider and narrower)

What is the expected output? What do you see instead?
The content should adjust to the available width but it doesn't always

What version of the product are you using? On what operating system?


Please provide any additional information below.
Also the space bar does not scroll the content as one expects in a normal 
browser window.  A different implementation where lessons are put in a normal 
and separate browser window would take care of this.  The drawback of this 
approach is that it would likely not stay on top when editing a program.

Original issue reported on code.google.com by [email protected] on 15 Feb 2014 at 8:55

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.