Vol.2, No.2, 124-129 (2010) Natural Science
http://dx.doi.org/10.4236/ns.2010.22021
Copyright © 2010 SciRes. OPEN ACCESS
ALICE as a tool for programming at schools
Ewa Graczyńska
Institute of Mathematics, Opole University of Technology, Opole, Poland; e.graczynska@po.opole.pl
Received 7 November 2009, revised 24 November 2009, accepted 5 January 2010.
ABSTRACT
We present some possible application of ALICE
in the context of a possible attraction of pupils
(especially girls) in early programming course.
Our examples presented in the paper are fully
explained on the base of [1].
Keywords: Interactive 3D Graphics;
Animation Authoring Tools
1. INTRODUCTION
Alice is an innovative 3D programming environment
that makes it easy to create an animation for telling a
story, playing an interactive game, or a video to share on
the web. Alice is a teaching tool for introductory com-
puting. It uses 3D graphics and a drag-and-drop interface
to facilitate a more engaging, less frustrating first pro-
gramming experience. In Alice’s interactive interface,
students drag and drop graphic tiles to create a program,
where the instructions correspond to standard statements
in a production oriented programming language, such as
Java, C++, and C#.
This information was found at www site:
www.alice.org.
A free ALICE 2.2 programme may be found there,
together with some other introductory materials.
Alice allows students to immediately see how their
animation programs run, enabling them to easily under-
stand the relationship between the programming state-
ments and the behaviour of objects in their animation.
By manipulating the objects in their virtual world, stu-
dents gain experience with all the programming con-
structs typically taught in an introductory programming
course.
Our aim is to point out that in our opinion this pro-
gramme may be very useful as a tool for teaching in the
Middle schools to attract pupils (especially girls) in:
early programming, making short videos with MP3 mu-
sic and adding some pieces of translations of that music,
for example. Other possible applications at school is
useful for learning foreign languages, especially English
or German and other subjects as well. We intend to ex-
plain our ideas on three examples. These examples were
examined on a group of pupils with a positive result.
It is not the purpose of this paper to publish statistical
results on an application of the methods proposed but to
show how a short presentation at school can be made in
order to attract pupils in programming simple videos
with their favourite MP3 music or with their own re-
cordings of poems in their own or foreign language. In
the third we use special effects. It is obvious that these
three simple methods combined together presents a pos-
sibility of early introductory into programming in the
Middle schools.
2. AN EXAMPLE OF PRESENTING MP3
MUSIC WITH A DOMESTIC OR
FOREIGN TEXT
The author of [4] mentioned that: “Women are currently
underrepresented in Computer Science”. In the opinion
of the author of [3] and many others: “middle school is a
critical age, during which may girls turn away from sci-
entific and mathematical pursuits, including Computer
Science. By giving middle school girls a positive first
programming experience, we may be able to increase
girl’s participation in Computer Science”.
Also the opinion above has been made in USA, we
have observed that the situation is quite similar in Po-
land and some other EU countries. In middle schools
girls are less interested in Computer science as boys. As
the result we observe that girls constitute a minority on
Technical Faculties in our Technical Universities (in-
cluding Opole University of Technology), on Informatics
studies, while mathematical studies in Poland, surpris-
ingly, are sometimes occupied by girls (for example at
the University of Opole). Despite that fact, we have ob-
served many times, that the scientific way for women,
very often, is much more complicated and difficult as for
men. However, this is not a topic of that article. Our goal
is to concentrate on the particular problem of a possibil-
ity of increasing an interest of pupils in Computer Sci-
ences in Middle schools, using the particular programme,
namely ALICE. To achieve this goal, we present three
possible ways of:
E. Graczyńska / Natural Science 2 (2010) 124-129
Copyright © 2010 SciRes. OPEN ACCESS
125
1) implementing MP3 popular songs using ALICE,
2) implementing poems via ALICE,
3) using special effects and sounds.
We have observed that, programming short 1-3 min-
utes videos with MP3 music is very interesting for pupils,
because one may learn programming and train its imag-
ination at the same time, learn the text of the song plus
English (or other language) by the way, Therefore we
present here an example of a presentation of a piece of
one popular song in Germany.
Our translation is a sample of possible texts which
may appear in such video. First we present some pictures
from the video then a possible code of such presentation,
made with ALICE programme.
Example 1.
We present a photo made from a scene of our video:
Party.mv by ALICE:
Diagram 1. A photo from video Party.mov.
Party’s Code made for a 3 minutes video with MP3 music in
German.
Party’s Code
Created by: Ewa Graczyńska
World
Events
When the world starts
Do: world.music
When A is typed
Do: ground.dance1
Let move Any Object
When 1 is typed
Do: world.dialog1
When 2 is typed
Do: girl.dialog2
Methods
world.music( )
No variables
palmTree play sound world.10-AudioTrack 10 (3:44,896)
duration = 150 seconds
world.dialog1 ( )
No variables
evilStepsister1 say It’s party time! duration = 2 seconds
world.dialog3 ( )
No variables
randomGuy2 say You are super! duration = 2 seconds
Ground
Meyhods
ground.dance1 ( )
No variables
Do in order
light resize 2 duration = 2 seconds
evilStepsister1 move right 5 meters duration = 1 second
evilStepsister1 turn left 2 revolutions duration = 1 second
Do together
evilStepSister2 turn right 2 revolutions duration = 1
second
palmTree.leaf2 point at evilStepSister2 duration = 2
seconds
evilStepSister2 move amount = 0,25 meters toward target =
camera duration = 1 second
Do together
palmTree.leaf6 point at evilStepSister2
evilStepsister1 move left 1 meter duration = 2 seconds
evilStepSister2 move left 1 meter duration = 2 seconds
maleBalletDancer move left 5 meters duration = 2
seconds
Do together
Loop 10 times times
Do together
maleBalletDancer turn left 2 revolutions duration = 2
seconds
Do in order
maleBalletDancer.torso turn at speed left speed
= 1 revolutions per second
maleBalletDancer.torso turn at speed right
speed = 1 revolutions per second
evilStepSister2 turn left 2 revolutions duration = 2
seconds
evilStepSister2 turn left 2 revolutions duration = 2
seconds
evilStepSister2.stomach.torso roll at speed left speed
= 2 revolutions per second duration = 1 second
evilStepSister2.stomach.skirt turn left 2 revolutions
duration = 2 seconds
evilStepSister2.stomach.leftThigh turn right 2
revolutions
E. Graczyńska / Natural Science 2 (2010) 124-129
Copyright © 2010 SciRes. OPEN ACCESS
126
evilStepSister2 turn left 2 revolutions duration = 2
seconds
evilStepSister2.stomach.rightThigh turn left 2 revo-
lutions
evilStepSister2.stomach.skirt roll at speed left speed
= 2 revolutions per second
randomGuy2 point at girl duration = 2 seconds style
= abruptly
Do together
maleBalletDancer turn left 2 revolutions duration = 2
seconds
Do in order
maleBalletDancer.torso turn at speed left speed
= 1 revolutions per second
maleBalletDancer.torso turn at speed right
speed = 1 revolutions per second
evilStepSister2 turn left 2 revolutions duration = 2
seconds
evilStepSister2 turn left 2 revolutions duration = 2
seconds
evilStepSister2.stomach.torso roll at speed left speed
= 2 revolutions per second duration = 1 second
evilStepSister2.stomach.leftThigh turn right 2
revolutions
evilStepSister2 turn left 2 revolutions duration = 2
seconds
evilStepSister2.stomach.rightThigh turn left 2 revo-
lutions
evilStepSister2.stomach.skirt roll at speed left speed
= 2 revolutions per second
randomGuy2 point at girl duration = 2 seconds style
= abruptly
Loop 10 times times
Do together
camera move backward 1 meter duration = 2 seconds
girl stand up duration = 1 second style = gently
girl turn left 0,25 revolutions duration = 2 seconds
girl move left 1 meter duration = 2 seconds
girl turn right 2 revolutions duration = 1 second
girl move forward 1 meter duration = 2 seconds
girl turn at speed left speed = 2 revolutions per
second
evilStepsister1.hips orient to palmTree duration = 2
seconds
Do together
girl.body.leftArm turn left 2 revolutions
girl.body.rightArm turn right 2 revolutions
Do in order
girl.body.neck turn left 0,25 revolutions
girl.body.neck turn right 0,5 revolutions
girl.body.neck turn left 0,25 revolutions
girl.leftLeg.lowerLeg orient to
girl.body.leftArm
evilStepsister1.hips.skirt turn to face girl.body
evilStepsister1.hips.leftThigh.leftCalf turn left 2
revolutions
evilStepsister1.hips.rightThigh.rightCalf turn right
2 revolutions
Loop 2 times times
light turn left 1 revolution duration = 2 seconds style = gen-
tly
camera get a good look at randomGuy2 asSeenBy = evil-
Stepsister1
randomGuy2 orient to camera duration = 2 seconds
randomGuy2 turn right 0,5 revolutions duration = 2 seconds
randomGuy2 turn left 2 revolutions duration = 2 seconds
randomGuy2 orient to camera duration = 2 seconds
randomGuy2 turn left 0,5 revolutions
randomGuy2.upperBody turn at speed left speed = 2
revolutions per second
randomGuy2.leftLeg.knee turn at speed left speed = 2
revolutions per second
randomGuy2.rightLeg turn at speed right speed = 2 revo-
lutions per second
randomGuy2.leftLeg.knee turn right 2 revolutions
camera get a good look at girl duration = 2 seconds style =
abruptly
girl move amount = 1 meter toward target = camera duration =
2 seconds
girl orient to camera duration = 2 seconds style = abruptly
Do in order
light orient to girl duration = 2 seconds
girl orient to camera duration = 2 seconds
Loop 5 times times
girl.leftLeg turn right 2 revolutions duration = 1 second
girl.rightLeg turn right 2 revolutions duration = 1 sec-
ond
girl.body turn right 0,25 revolutions duration = 1 second
girl.body turn right 0,5 revolutions duration = 1 second
girl.body turn left 0,25 revolutions duration = 1 second
girl.body.neck turn left 0,25 revolutions duration = 1
second
girl.body.neck turn right 0,5 revolutions duration = 1
second
girl.leftLeg orient to camera duration = 2 seconds style =
abruptly
girl.rightLeg orient to camera duration = 2 seconds style
= abruptly
girl.rightLeg.lowerLeg turn right 2 revolutions duration
= 1 second
girl.leftLeg.lowerLeg roll left 2 revolutions duration = 1
second
girl.body.leftArm roll left 2 revolutions duration = 1
second
E. Graczyńska / Natural Science 2 (2010) 124-129
Copyright © 2010 SciRes. OPEN ACCESS
127
girl.body.neck.head orient to camera duration = 2 sec-
onds style = gently
girl.body.leftArm.forearm roll left 2 revolutions dura-
tion = 1 second
girl.rightLeg roll right 2 revolutions duration = 1 second
girl.body.rightArm.forearm roll right 2 revolutions
duration = 1 second
girl.body.neck turn left 0,25 revolutions duration = 1
second
girl turn left 2 revolutions duration = 1 second style =
abruptly
light orient to girl
girl orient to camera duration = 1 second style = gently
Do together
randomGuy2 stand up duration = 1 second style = gen-
tly
camera get a good look at randomGuy2 duration = 1
second
Do together
camera get a good look at randomGuy2 duration = 2
seconds
randomGuy2 point at girl duration = 2 seconds
camera get a good look at girl duration = 2 seconds
light orient to girl duration = 2 seconds
camera get a good look at girl.body duration = 2 seconds
light orient to girl.body duration = 2 seconds style = gently
girl orient to camera duration = 2 seconds style = gently
Do together
camera get a good look at randomGuy2 duration = 2
seconds
Do in order
randomGuy2 say Hey! duration = 2 seconds
randomGuy2 say You are super! duration = 2 sec-
onds
evilStepSister2
Methods
evilStepSister2.dialog2 ( )
No variables
girl say We are dnacing and dancing. duration = 2 seconds
girl
Methods
girl.dialog2 ( )
No variables
girl say We are dancing! duration = 2 seconds
Diagram 2. Party’s Code
We explain that in the code, MP3 music was arranged
to play for 230 seconds. This time may be changed ac-
cordingly. “Sounds” are presented in ALICE as “seldom
used properties”. However, our experience led us to the
conclusion that this kind of attracting pupils in making
videos with ALICE work perfectly and gives many posi-
tive results.
3. AN EXAMPLE OF PRESENTING OWN
RECORDING
Example 2.
Video Plato.mov may be considered for teachers in
middle schools as another possibility to attract pupils in
combining programming videos using ALICE and add-
ing own sound, for example singing a song. This exer-
cise in fact is quite difficult for beginners, as one should
record its own graphical presentation of a poem (or a
song) together with the voice suitably implemented. As
our group of girls have practiced that to make a good
recording via ALICE of a short poem or a song needs
sometimes many tries. During these multiple repetitions,
girls usually were able to learn to recite the poem which
gave them additional advantage. Especially if the poem
or a song was in a foreign language. Expressing the ides
of a poem as a video was another positive experience
which gave pupils a possibility to express more fully
their emotions via colourful visualization. For some of
them it was really a great pleasure to express thoughts in
an animation powered with a piece of music or own
declamation.
Diagram 3. A photo from video Plato.mov.
Plato’s CodePlato’s Code
Created by Ewa Graczyńska
World
Events
When 1 is typed
Do: world.metoda1
When 2 is typed
E. Graczyńska / Natural Science 2 (2010) 124-129
Copyright © 2010 SciRes. OPEN ACCESS
128
Do: plato.metoda2
When 3 is typed
Do: plato.metoda3
Methods
world.metoda1 ( )
No variables
plato resize 2
plato
Methods
plato.metoda2 ( )
No variables
plato play sound plato.plato1 (0:04,650) duration = Full
Length
plato.metoda3 ( )
No variables
Do together
light set point of view to plato.body duration = 2 seconds
plato.body.neck turn right 0,25 revolutions duration = 2
seconds
plato.body.rightArm turn right 0,25 revolutions duration = 2
seconds
Do in order
plato.body.rightArm.rightForeArm constrain to face cam-
era
plato.body.rightArm.rightForeArm.rightHand turn right 1
revolution duration = 2 seconds
plato.body.rightArm.rightForeArm point at light duration =
2 seconds
plato.body.rightArm.rightForeArm turn left 0,5 revolutions
duration = 2 seconds
plato.body.rightArm.rightForeArm.rightHand turn left 0,5
revolutions duration = 2 seconds
plato.body.leftArm point at light duration = 2 seconds
plato.body.rightArm.rightForeArm.rightHand turn left 0,5
revolutions duration = 2 seconds
plato.body.rightArm.rightForeArm.rightHand.playDoe
point at light duration = 2 seconds
light orient to plato.body.leftArm.leftForearm duration = 2
seconds
plato.leftLeg.leftShin.leftFoot turn left 0,25 revolutions duration
= 2 seconds
camera get a good look at plato duration = 2 seconds
Diagram 4. Plato’s Code
4. AN EXAMPLE OF PRESENTING
SPECIAL EFFECTS
We studied monograph [1] to find some more possibili-
ties for examples.
Example 3.
It presents a method of combining implementing
sounds with special effects, as fire animations, to attract
the presentation, based on Example 1 of [1], p. 307
where a class level variable timeLeft has been created to
illustrate how a block of a possible game instructions
can be controlled by a timer.
TIMER1’s Code
Created by: Ewa Graczyńska
World
Events
When the world starts
Do: World.playGame
When the world starts
Do: World.my first method
When the world starts
Do: chicken.metoda1
Let move Any Object
When C is typed
Do: cloud.claud1
When F is typed
Do: fire.fire1
When G is typed
Do: fire.spin like crazy
When the world starts
Do: chicken.metoda2
When H is typed
Do: fireAnimation.fire2
Methods
World.my first method ( )
No variables
timer.initialize amountOfTime = 30
Do together
World.playGame
timer.countDown
World.countdown ( )
No variables
E. Graczyńska / Natural Science 2 (2010) 124-129
Copyright © 2010 SciRes. OPEN ACCESS
129
Do in order
While ( timer.timeLeft > 0 )
Do in order
timer set text to ( timer. timeLeft as a string ) duration = 0
seconds
Wait 1 second
decrement timer.timeLeft by 1 duration = 1 second
// Prints out when the timeLeft hits 0
timer set text to ( timer.timeLeft as a string ) duration = 0 sec-
onds
World.game ( )
No variables
Do in order
chicken play sound World.doorbell (0:02,602)
chicken play sound World.splash (0:00,734)
chicken move amount = 2 meters toward target = timer
timer turn at speed right speed = 1 revolutions per second
timer turn to face World
World.playGame ( )
No variables
Do in order
While ( ( timer.howMuchtimeLeft ) > 0 )
chicken turn left 2 revolutions duration = 1 second
Loop 10 times times
chicken turn left 1 revolution duration = 1 second
Wait 1 second
chicken turn right 1 revolution duration = 1 second
Diagram 5. Timer1’st Code.
Diagram 6. A photo from video Timer1.mov.
We used instructions in Example 1 on p. 307 of [1] to
create a timer that counts down in seconds. This exercise
was exiting for pupils, as they used some new anima-
tions from the CD attached to the monograph [1]. Some
pupils were very satisfied with that kind of programming
as an early exercise before programming a more com-
plicated game. During our short course of programming
in Alice with a use of [1], in the group, the growth of an
interest in programming games and also several other
subjects was noted. Among them there were foreign
languages, especially those in which the MP3 music was
listened (English or German) or in which the poems
were declaimed. A possibility of a computer visualiza-
tion of ideas or some natural phenomenon was highly
appreciated by the pupils as an additional effect of their
experiments.
5. ACKNOWLEDGEMENTS
The author is very grateful to the referee for her/his
valuable comments during the preparation of this paper.
Due thanks are expressed to Wanda Dann for her early
help to the author with Alice.
REFERENCES
[1] Cooper, S., Dann, W. and Pausch, R. (2009) Learning to
program with ALICE, Pearson International Edition, Sec-
ond Edition, Prentice Hall, London.
[2] Cooper, S., Dann, W. and Pausch, R. (2003) Teaching
Objects-First in Introductory Computer Science.
http://www.alice.org/publications/pubs/TeachingObjects-
firstInIntroductoryComputerScience.pdf.
[3] Kelleher, C. and Pausch, R. (2006) Lessons learned from
designing a programming system to support middle
school girls creating animated stories. IEEE Symposium
on Visual Languages and Human-Centric Computing.
[4] Vegso, J., CRA Taulbee Trends: Female Students & Fac-
ulty, http://www.cra.org/info/taulbee/women.html.
Three files: Party.mov and Plato.mov and Timer1.mov
are available at: www.egracz.po.opole.pl.