2. What to expect from this lecture
● Description of the education environment
Sugar
● Explanation of the preparation of a teaching
program
● Hands-on!
3.
4. What is Sugar exactly ?
● Software for learning that promotes
creativity, collaboration, reflection, and
critical thinking
● The first learning interface based on both
cognitive and social constructivism
5. Constructivism ?
● Engaging the learner in design,
problem solving, collaborative
work, integration of technology and
creativity, interdisciplinary work,
decision making and learning
outside the classroom
6. Constructivism ?
● Project-based learning: a research
topic, theme, issue or challenge
that allows children to think
critically, collaborate with peers,
teachers and the community to
express and form opinions
9. Evaluation
● Better factors to measure the
impact are
○ problem-solving ability,
○ critical thinking,
○ use of multiple sources of information,
○ reflection and communication skills
using multiple media,
○ team and individual work,
○ and self development
10. Activities
● A Sugar Activity combines the old concepts
of “document” and “application” into a single
object
● Activities can be easily shared between
neighbouring computers
● Activity instanced are associated with the
document they let the user work on
15. Packaging Sugar
● Distribution = Fedora base with Sugar,
Gnome, and some activities
● Get packaged Sugar on
○ http://wiki.laptop.org/go/The_OLPC_Wiki
● Customize with OSBuilder
○ http://wiki.laptop.org/go/OS_Builder
● Different set of modules
○ Glucose : everything needed to run Sugar
○ Fructose : "default" activities
17. Let's try to code something
● Quizz game about country size
● Design of the activity
○ Pick a random set of countries
○ Ask the user to click on the biggest
○ Score a point if the response is good
○ Repeat onto proposing another set
19. General best practices (1/2)
● Stay as much as possible 100% Python
○ Avoid external system call
○ Avoid uncommon python libraries (save space)
● Code the application as a desktop software
and then wrap it
● Use the toolkit GTK+ and the UI designer
Glade
20. General best practices (2/2)
● Suggested approach
1. Design the interface
2. Develop and test the desktop application
3. Create the sugar activity and test on the PC
4. Upload the code to Sugarlabs
5. Package the activity
6. Test on the XO
7. Upload activity to Sugarlabs
● Use the documentation
○ http://www.flossmanuals.net/make-your-own-sugar-
activities/ and http://wiki.sugarlabs.org/
21. Warning !
● Sugar is switching from GTK+ 2 to GTK+ 3
○ Some (big) changes in the API
○ Documentation you find may be outdated
● Sugar uses Python 2 (no switch to Python 3
in the near future)
● The example that follows uses the new APIs
and Python 2
22. Step 1: create the interface
● Use the interface designer "Glade"
23. Output from Glade
● Don't forget to assign usable names to the
objects you will reference in the code
● The result is an XML description of the
interface
● Save the file as "GUI.glade" and put it in
your project directory
24. Step 2: develop the application
● Create a file that contains the application
code
○ Place the result "Application.py" in your project
directory
● Create a file to instantiate the application as
a desktop software
○ Place the result "main.py" in your project directory
● Put the data "ranks.csv" in the project
directory too
25. How do we get the data ?
● Query http://dbpedia.org/sparql :
prefix dbprop: <http://dbpedia.org/property/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select distinct ?name ?rank where {
?city a dbpedia-owl:Country .
?city rdfs:label ?name.
?city dbprop:areaRank ?rank .
filter (lang(?name) = "en").
filter (datatype(?rank) = xsd:int).
} order by ?name
27. Step 3 : wrap in a Sugar activity
● Need to extend a class called "Activity"
● Implement the methods
○ "__init__" to create the application (mandatory)
○ "read_file" to read the Journal entry
○ "write_file" to write to the Journal entry
● Create a directory "activity" with the icon of
the activity and a metadata file
28. Step 3 : wrap in a Sugar activity
● Add the following files to your directory
○ setup.py : installation bundle (generic)
○ Activity.py : contain the wrapping class
○ activity/activity-icon.svg : icon
○ activity/activity.info : metadata about the activity
29. Step 3 : do some testing
● Install Sugar on your development system
○ Packages for Debian, Fedora, Archlinux
○ Use sugar-build http://sugarlabs.
org/~dnarvaez/sugar-docs/
● Link the activity to your installation
○ python2 setup.py dev
30. Testing on the emulator
● Launch "sugar-emulator" then click on icon
31. Step 4 : upload code to sugarlabs
● git.sugarlabs.org
32. Step 5 : package the activity
● Create the package
○ python2 setup.py dist_xo
● Tag the current version of the source code
○ git tag -m "Release 1" v1 HEAD
○ git push --tags
● The result is a file "Quiz-1.xo" in the "dist"
directory
33. Step 6 : test on the XO
● Put the activity on a stick
● Place the stick on the XO and either
○ Use the Journal browser to open the stick, browse to
the file, and execute the installer
○ Open the terminal activity and execute
■ sudo -u olpc sugar-install-bundle Quiz-1.xo
● If you don't have an XO, test on SoaS
○ http://wiki.sugarlabs.org/go/Sugar_on_a_Stick
34. Step 7 : upload to activities portal
● http://activities.sugarlabs.org