Teaching Computer Programming in Elementary Schools A Pilot by cqd71714

VIEWS: 18 PAGES: 40

									Teaching Computer Programming
    in Elementary Schools:
          A Pilot Study

  Janet Mei-Chuen Lin, Long-Yuen Yen, Mei-Ching Yang,
                  and Chiao-Fun Chen
   Department of Information and Computer Education
           National Taiwan Normal University
                    Taipei, Taiwan
Outline
Research Background
The Experiments
Data Collections
Results and Discussions
Conclusions



6/29/2005          NECC 2005   2
Research Background
National Research Council Committee
on Information Technology Literacy
(1999)
   Some of the capabilities that are at the heart of
   fluency with information technology rely explicitly
   or implicitly on programming knowledge.
   Programming concepts can even be applied to
   non-information technology problems.



6/29/2005                 NECC 2005                      3
Research Background
The ACM Model Curriculum for K-12
Computer Science (2003)
    Level 1 curriculum (recommended for grades K-8)
    should provide students with foundational
    concepts in computer science by integrating basic
    skills in technology with simple ideas about
    algorithmic thinking.




6/29/2005                NECC 2005                      4
Research Background
Taiwan’s K-9 computer curriculum is
application-software-oriented.
    Word, PowerPoint, PhotoImpact, FrontPage, Flash,
    Swish, …
    Lego Mindstorms is taught in a handful of schools.
Programming is part of the high school
computer curriculum.
    16~18 hours per semester
    Languages: Visual Basic (>95%), C language

6/29/2005               NECC 2005                        5
The Experiments
Conducted in the summer of 2004 at
three elementary schools
Participants: mostly 5th and 6th graders
    School A: 33 students
    School B: 19 students
    School C: 22 students
Each experiment lasted two weeks
(three hours a day, five days a week)

6/29/2005               NECC 2005          6
Programming Packages
Stagecast Creator (9 hours)
HANDS (6 hours)
Visual Basic (15 hours)




6/29/2005       NECC 2005     7
Stagecast Creator
From Stagecast Software, Inc.
A languageless programming system for
constructing simulations and games
Two technologies
  Programming by demonstration (PBD)
  Visual before-after rules



6/29/2005       NECC 2005               8
Stagecast Creator
A programming task involves creating stages,
characters and associating with each
character a set of visual rules.




6/29/2005           NECC 2005                  9
HANDS
Human-centered Advances for the
Novice Development of Software
Developed by J.F. Pane at Carnegie
Mellon University
A programming system for children to
create interactive graphical programs



6/29/2005         NECC 2005             10
HANDS’
Programming Environment




6/29/2005   NECC 2005   11
Visual Basic
From Microsoft Inc.
For creating Windows applications with
graphical user interfaces
Programmers place custom controls (e.g.,
text boxes, command buttons, labels and
check boxes) within forms that the user
uses to control the application


6/29/2005        NECC 2005             12
Visual Basic’s
Programming Environment




            form


                        property window

    custom controls

6/29/2005             NECC 2005           13
VB Programs




6/29/2005   NECC 2005   14
VB’s Syntactic Features Covered
Constants and variables
Assignment statements
Arithmetic, logic and Boolean expressions
Control structures (if-else, select-case,
for-next)
Built-in functions (rnd, randomize, abs,
and val)

6/29/2005        NECC 2005              15
Data Collection
Students questionnaires
   How did you like each of the three programming packages?
   How easy/difficult was each package to learn and use?
   Which package would you prefer to use again in the future?
   …
Parents questionnaires
   What had you observed about your child’s attitude toward
   learning programming?
   How much time had your child spent practicing programming at
   home?
   Are you for or against teaching programming in elementary
   schools? Why?
   ...

6/29/2005                   NECC 2005                           16
Results and Discussions (1)
How much did you like each programming
package?
    Stagecast Creator and Visual Basic: 4.18 (out of 5)
    HANDS: 3.52
Which of the three is your favorite
programming package?
    Visual Basic: 41 students (56.9%)
    Stagecast Creator: 26 students (36.1%) chose
    HANDS: 5 students (6.8%)

6/29/2005                NECC 2005                        17
Results and Discussions (2)
How difficult was each programming package
to learn and use? (1 for very easy, 5 for very
difficult)
    Stagecast Creator: 1.6
    HANDS: 2.43
    Visual Basic: 2.46
Which tool allowed you to express your design
idea most easily?
    Visual Basic: 48 students (66.7%)
    Stagecast Creator: 20 students (28%)
    HANDS: 4 students (5.6%)

6/29/2005               NECC 2005                18
Results and Discussions (3)
Which programming tool would you prefer to
use if you want to program again?
    Visual Basic: 64 students (88.9%)
    Stagecast Creator: 61 students (84.7%)
    HANDS: 44 students (61.1%)
How much did you enjoy programming?
    Visual Basic: 34 students (46.58%)
    Stagecast Creator: 33 students (45.21%)
    HANDS: 5 students (6.85%)

6/29/2005               NECC 2005             19
Results and Discussions (4)
Why the reversal?
    Stagecast Creator
        Languageless – therefore easier to use, but it has
        less options to express your design ideas
    Visual Basic
        More difficult to use , but it has more options to
        express your design ideas
        It is more popular and practical


6/29/2005                  NECC 2005                         20
Parents’ Observations (1)

Children looked forward to going to the
programming class every morning
(48 parents--87.3% of the respondents)
Children spent more than an hour
everyday working on programming
assignments at home
(50 parents--90.9%).


6/29/2005         NECC 2005               21
Parents’ Observations (2)
Children were eager to show them their
programming projects (36 parents--65.5%)
and all of these parents were very impressed
with their children’s work.
Programming difficulties that children had talked
about:
    English-based interface
    Slow typing speed
    Lack of time to write more programs


6/29/2005               NECC 2005              22
Parents’ Opinions (1)
Forty-three parents (78.18%) strongly
or moderately supported the teaching of
computer programming in elementary
schools.
    “It encouraged children to do logical thinking.”
    “It developed children’s potential and sparked their
    interest in computer science.”
    “It enabled children to have a better understanding of
    what was going on inside packaged applications and
    computer games they use everyday.”

6/29/2005                NECC 2005                      23
Parents’ Opinions (2)
One parent (1.8%) was against the
teaching of computer programming in
elementary schools.
  “It was useless for elementary school
  students to learn the basics of computer
  programming if there would not be a follow-
  up in the junior high schools.”



6/29/2005            NECC 2005                  24
Our Observations
Students misspelled English words in their codes
frequently.
Many students’ programs contained extraneous rules
or codes.
Students had difficulties identifying sources of
programming errors.
Students tended to spend too much time on interface
design.
Students enjoyed working in teams.
Most students were proud to present their own or
their team’s work in front of the class.

6/29/2005              NECC 2005                      25
         Students’ Work (1a)
                     “Sea Battle” (Stagecast Creator)




control keys for                                        control keys for
  green boat                                              white boat
   z:←                                                     ← :←
   x:↓                                                     ↓ :↓
   c:→                                                     → :→
   s:↑                                                     ↑ :↑
   b : fire                                                o : fire

         6/29/2005                  NECC 2005                       26
Students’ Work (1b)
    “Crossing Streets” (Stagecast Creator)




                                        ← : left
                                         ↓ : down
                                        → : right
                                         ↑ : up
                                        space: take



6/29/2005            NECC 2005                    27
Students’ Work (2)
            “A Jumping Ball” (HANDS)




6/29/2005               NECC 2005      28
Students’ Work (3)
 “Guessing Numbers” (Visual Basic)




6/29/2005          NECC 2005         29
Conclusions
Children can learn and they enjoy learning
computer programming.
Most parents are positive about teaching
computer programming to their children.
Important issues to be addressed next:
    What programming packages are suitable for our
    children at different grade levels?
    Can a set of criteria be established to help teachers
    to determine if a programming package is suitable
    for their students?

6/29/2005                 NECC 2005                         30
Appendix
The source rules for “Sea Battle” (Stagecast Creator)

                           8 character types
                           38 rules
                           2 stages
The sources rules for “Crossing Streets” (Stagecast Creator)


                          23 character types
                          66 rules
                          4 stages
The source codes for “A Jumping Ball” (HANDS)
  The source codes for “A Jumping Ball” (HANDS)

ball x:400 y:300 back:balla.gif direction:308 speed:0;
bar x:570 y:400 back:bar1.gif direction:0 speed:0;
Card-1 x:685 y:61 back:score;
Card-2 x:745 y:378 back:L;
Card-3 x:245 y:382 back:K;
downwall x:197 y:475 back:topwall.gif;
leftwall x:197 y:13 back:sidewall.gif;
rightwall x:795 y:16 back:sidewall.gif;
score x:732 y:63 back:8;
topwall x:189 y:13 back:topwall.gif;


when anything happens
            if bar's x < (leftwall's x + 15) then
                          set bar's speed to 0
                          set bar's x to leftwall's x + 15
            end if
            if (bar's x + 220) > rightwall's x then
                          set bar's speed to 0
                          set bar's x to rightwall's x - 220
            end if
end when
The source codes for “A Jumping Ball” (HANDS)
when ball collides into bar
             beep
             set ball's direction to (360-ball's direction)
             add 1 to score's back
end when


when ball collides into downwall
             beep
             set ball's speed to 0
             tell "OK! Congratulations, your score is:", score's back
end when


when ball collides into leftwall
             beep
             add 1 to score's back
             if (ball's direction > 180) and (ball's direction < 270) then
                            set ball's direction to (540-ball's direction)
             end if
             if (ball's direction < 181) and (ball's direction >90) then
                            set ball's direction to (180-ball's direction)
             end if
end when
  when ball collides into rightwall
  beep
  add 1 to score's back
  if (ball's direction > 270) and (ball's direction < 360) then
                set ball's direction to (540-ball's direction)
  end if
  if (ball's direction < 90) and (ball's direction > 0) then
                set ball's direction to (180-ball's direction)
  end if
  end when

  when ball collides into topwall                   when K is typed               when L is typed
  beep                                              set bar's direction to 180    set bar's direction to 0
  add 1 to score's back                             set bar's speed to 4          set bar's speed to 4
  set ball's direction to (360-ball's direction)    end when                      end when
  end when

  when bar collides into leftwall
  beep                                 when program starts running
  set bar's speed to 0                 set score's back to 0
  end when                             set ball's x to 400
                                       set ball's y to 200
  when bar collides into rightwall     set ball's direction to random 0 to 359
  beep                                 set ball's speed to ask "Please enter ball's speed (1-15) :"
  set bar's speed to 0                 end when
  end when


6/29/2005                                     NECC 2005                                                 37
The source codes for “Guessing Numbers” (Visual Basic)




    program                              layout
    The source codes for “Guessing Numbers” (Visual Basic)

Option Explicit
Dim TheNumber As Integer
Dim MyGuess As Integer

Private Sub cmdPick_Click()
If cmdPick.Caption = "Pick Number" Then
  'Get new number and set controls
  TheNumber = Int(Rnd * 101)
  lblMessage.Caption = "I'm thinking of a number between 0 and 100"
  hsbGuess.Enabled = True
  cmdCheck.Enabled = True
  cmdPick.Caption = "Show Answer"
Else
  'Just show the answer and re-set controls
  lblMessage.Caption = "The answer is" + Str(TheNumber)
  hsbGuess.Enabled = False
  cmdCheck.Enabled = False
  cmdPick.Caption = "Pick Number"
End If
End Sub
  The source codes for “Guessing Numbers” (Visual Basic)
Private Sub cmdExit_Click()       Private Sub cmdCheck_Click()
End                               If MyGuess = TheNumber Then
End Sub                             'Correct guess
                                    lblMessage.Caption = "That's it!!"
Private Sub hsbGuess_Change()       hsbGuess.Enabled = False
'Read MyGuess and display it        cmdCheck.Enabled = False
MyGuess = hsbGuess.Value            cmdPick.Caption = "Pick Number"
lblguess.Caption = Str(MyGuess)   ElseIf MyGuess < TheNumber Then
End Sub                             'Guess is too low
                                    lblMessage.Caption = "Too low!"
Private Sub hsbGuess_Scroll()     Else
'Read MyGuess and display it        'Guess is too high
MyGuess = hsbGuess.Value            lblMessage.Caption = "Too high!"
lblguess.Caption = Str(MyGuess)   End If
End Sub                           End Sub


Private Sub Form_Load()
           Randomize
End Sub


								
To top