How is programming taught in code clubs? We asked the instructors, and this is what we found

(reposted from here)

Programming is taught everywhere: at schools, independent code clubs, Code Clubs, CoderDojos, Girls Who Code sessions, after school programs, coding summer camps, workshops in libraries and museums. At schools, the lessons are given by teachers, following national curricula. However, what about the lessons at code clubs? Who teaches, what is taught, what material is being used, and how are children learning programming? What do children find difficult, and are there any differences between boys and girls?

To find answers to our questions, we designed and run a survey. We invited code club instructors to answer through Twitter, Facebook groups of code clubs, Slack channels, newsletters and even direct emails. We collected 98 responses, we analysed them, and this is what we found.

Participants, lesson material and style

Many of the code club instructors who answered our survey have a main degree related to computer science (49%) or other STEM-related field (10%). Only a small group has a background education (18%). Almost half have no education experience, while the majority of the instructors (90%) can program in at least one commercial programming language.

Most code clubs have a small number of participants of varying ages. Female students are under-represented at code clubs; the average percentage of female students is 30%.

Most of the instructors replied that their code club is part of a program, mainly CoderDojo (36%) or Code Club (31%). The students attending Code Club classes are younger and more often female than in CoderDojo clubs.

The most commonly taught language is Scratch (89%), followed by Python in almost half of the code clubs, followed by Arduino, Mindstorms, Micro:bit, HTML, Java, JavaScript, Blockly, C-like languages (e.g. ArduC, RoboC or NXT-C). Within the taught languages we also found Sonic Pi, Blender, Snap!, Swift, MBlock, Spheros, Flowol4, Crumble, Codebug, Node JS, Lightbot and A.l.e.x.

Regarding lesson material, half of the teachers responded not using a specific lesson plan. Some declared using Code.org lessons or the Scratch Creative Computing Handbook. The students mostly work independently on their own projects (71%) and, in some code clubs, the teachers give plenary sessions. Formal assessments and grading are rare; more common are stickers or badges for achievements (47%) and other forms of formative assessment.

What do the students struggle with?

Instructors most commonly identified debugging/error messages and abstract thinking as the main difficulties. A teacher whose students are from 8 to 12 years old related the age of the students to that, reporting that (translated from Dutch) “sometimes children that register for my workshops are too young and find abstract thinking too difficult to really understand what they are doing.”. In terms of programming concepts, variables and functions were identified as the most difficult for their students.

Instructors also identified struggles related to creativity, for example “thinking for themselves instead of blindly following the tutorial” and “design something for themselves and implement that.” Related to concentration, a teacher reported that students get “distracted by playing games.” Another teacher reported the student focus on language as a learning barrier, as students “often become focussed on learning Scratch itself, rather than building higher-order skills.”

How are boys different than girls?

Teachers identified gender differences especially for two traits, namely confidence and concentration. In the question “Who is more confident?”, 50% of the responses lean towards boys. A teacher added that “I get initial “I will never understand this” reactions way more from girls than from boys. Completely invalidated after an hour or so of course, but still saddens me.” This is worrying, because gender differences related to confidence could have several implications. In prior work we have found that, especially for female elementary school students, self-efficacy is strongly correlated with how attractive they view computer science as a career path.

On the other hand, in the question “Who seems to concentrate better?” 65% of the responses lean towards girls. A teacher explained that  “Girls tend to stay on-task more, whereas some boys can be easily distracted”.

Gender differences were also reported in the preferred type of projects, with girls preferring  storytelling and visual/creative exercises, and boys preferring to implements games. Girls were identified as more responsive to instruction, whereas “Boys just start blindly without reading lessons and then run into trouble pretty quickly, then call for help. Girls tend to focus more, start reading and ask questions when they’re really stuck.”

Collaboration skills are described to be increased for girls, as “Girls tend to talk and discuss more when working in partnerships whereas boys tend to have one who takes the lead”, as well as focus (“All of the girls in my club have always been more careful and methodical. They seem to want to understand what they are doing more and don’t mind taking their time.”).

Want to know more? Read our paper, or come and see us present it at Koli Calling.




Symposium- How to teach programming to everyone, what does science say?

We are happy to invite teachers of primary and secondary education, university teachers, researchers and students interested in programming education to attend a mini-symposium that we organize with presentations from Briana Morrison, Erik Barendsen, Alexander Serebrenik and Fenia Aivaloglou.

The symposium will take place on Wednesday September 25th, 2019 and will be hosted by TU Delft Teaching Lab which you can find at the following address:
TU Delft Teaching Lab (Building 32A)
Landbergstraat 15
2628 CE, Delft

Please book the date in your calendars, we would like to see you there! If you are will join us, please register.

The program is as follows:

Time Activities
9-9:30 Registration
Coffee and tea
9:30 – 10:15 Briana Morrison Using Subgoal Labels to Reduce Cognitive Load in Learning
10:15 – 10:30 Q&A and Panel discussion over the talk of Briana
10:30 – 11:00 Alexander Serebrenik Gender in open-source software development
11:00 – 11:10 Coffee Break
11:10 – 11:40 Fenia Aivaloglou Early programming education and career orientation: the effects of gender, self-efficacy, motivation and stereotypes
11:40 – 12:10 Erik Barendsen Analyzing the Influence of Code Visualization on Programmers’ Reading Behavior Using Eye Tracking
12:10 – 13:00 Lunch

“When I grow up I want to become a programmer!”, Elli (11) – How?!

(the answer is at the end of the post)

Computer Science is not the typical profession of choice for elementary school students. This might be because most children at this age do not yet understand what computer science is. This is about to change, since an increasing number of countries is currently enriching their elementary school education with computing and programming courses. But, what will make those young students perform well in programming classes? And what will their view of programming as a career path be after they have followed their first programming course?

Finding out

To answer our questions, with Felienne Hermans we run experimental programming courses, teaching Scratch to four groups of 8 to 12 year-old students of two elementary schools in the Netherlands. We gave a total of eight lessons to each group, following the lesson plan of the Scratch MOOC on edX. During the lessons, we measured factors that have been shown to affect adult, university-level students. Those factors include:

  • Self-efficacy, or the students’ beliefs in their abilities. In education research, self-efficacy is recognized as one of the most important factors related to learning performance, and has been found to affect the choice of college major. (“I will become what I am good at.”)
  • Extrinsic (external) motivation, or motivation inspired by influences outside of the individual (for example, from other people). (“I will choose what is trendy/what my peers choose.”)
  • Intrinsic (internal) motivation, or motivation that comes from within the individual as a self-desire to learn. (“I will choose it because I like it.”)
  • The stereotypes that students assume for computer scientists, and their fit within those. We examined four stereotypical traits that have been found to apply to computer scientists [17]: Singularly focused, indicating that computer science requires an obsession with it, asocial, indicating that computer scientists have limited social skills, competitive, and male. (“I will choose what my personality fits in.”)
  • The characteristics of the students, including their age, gender and programming experience prior to the course.

Results

We found that having previous programming experience was a strong factor, correlated to extrinsic motivation, self-efficacy and CS career orientation. While it is known that prior programming experience has a  strong effect on the performance of university-level students, in our study there is an additional reason for this observation: that programming experience before our experimental course could have been obtained only through home-based or extra-curricular activities. Therefore, having prior programming experience indicates that the students had sought to learn programming themselves, or were encouraged by their environment towards programming, and this proved to give them a significant head start.

Our study highlighted gender differences, with the CS career orientation of the girls being significantly correlated with their self-efficacy, an effect which was not as strong for boys.

We also found that students’ intrinsic and extrinsic motivation are important factors, strongly correlated with their self-efficacy and, for the case of intrinsic motivation, their inclination towards a CS career.

Equally interesting is what we did not observe: course performance and stereotypical beliefs for computer scientists had no significant effect on CS career orientation. Students actually appeared unaffected by the four stereotypical traits that we studied. Even the Male trait was not assumed, with students favoring neutral or their own gender as typical for the profession. This might be attributed to their age; we could assume that they are yet too young to believe anything in particular about stereotypical traits of computer scientists. It also leaves us hopeful for the future of women in CS.

The answer

To sum up, Elli(11), probably did not wait for school to teach her programming, she had started already by herself. She likes the challenges of programming and she believes that she is good at it. Also, she has not watched movies about programmers yet, and she better leave it for after she chooses college major.

Are you interested to know more? Read our paper or come see us present it at SIGCSE 2019.

***Reposted from here***

Programming Misconceptions for School Students

In this post I describe our ICER’18 paper on programming misconceptions for school students.

We see nowadays how kids are learning programming in Scratch and many other programming languages such as Javascript, Python and Alice. It remains both interesting and valid to investigate areas related to how children acquire programming knowledge and develop their computational-thinking skills. Most of our knowledge as researchers and educators are focused on university-level students studying programming for the first time, who are different to children in many ways including their cognitive development levels. One of the areas of interest in this regard is “programming misconceptions” for school-age children.  

Programming misconceptions and why do we need to study them

A misconception in general is having an incorrect understanding of a certain concept that usually comes from a previous erroneous belief or incomplete knowledge.

We know about misconceptions from earlier research in other topics such as Math, Geography, and Science. But programming misconceptions for children is still something researchers want to grasp fully. We don’t know, for example, whether children hold similar misconception to adult students, and how the children develop these misconceptions. This sort of information is very valuable to teachers as it allows them to develop countermeasures to misconceptions in their materials and day-to-day teaching, and as a result make programming less difficult for the very young children. According to Craig Barton, a math school teacher, one of the greatest challenges facing a teacher is “to identify, understand and resolve the misconceptions our students hold”.            

The experiment

  • Where: We had the opportunity to study children programming misconceptions at Nemo, the science museum in Amsterdam. Children there participate in research studies as part of their visit to the science museum. A brilliant idea! 
  • Who: We asked children older than 7 years, who knew programming before to answer a computerized programming test in Dutch or English. After two weeks at Nemo we collected the answers of 145 children between 7 and 17 years.
  • What: We asked the children multiple-programming questions where they have to predict what happens in a small programming problem. The programming problems are taken from previous research on programming misconceptions which was designed for older students with another programming language (Java). We designed the questions in our case in Scratch, one of the most popular programming languages for children.

Results

After analyzing the answers we got from the participants, here are the most frequent misconceptions among the children in our study:

1. The difficulty to understand the sequential nature code execution

The question (to the right) is a simple arithmetic operation in which the values are changed AFTER the operation itself is executed. The majority of the children focused on the mathematical part and rushed to add the values and generate the total. Other children assumed that the computer should automatically modify the total when the values change saying that “when you change values of these variables total value changes also”, while another child said “the computer should calculate this for you”.

2. The difficulty to understand that a variable holds only one value at a time

Children who chose the misconception answer, to the question to the right, give more importance to both values of the variable, reflecting what the code does literally. Thus we see answers that X should contain the two values or 30 (a summation of 10 and 20). One child gave an indication to a complete and correct understanding even though he chose the misconception answer eventually, saying that “I’m not sure, but if two [instances] of the same variable are used with different numbers, if possible, [the result] will give both numbers. Otherwise it would be 20 because that was the last change”. Impressive!

3. The difficulty to understand that user-input breaks program execution

Children had many thoughts answering this question (to the right). The most frequent reasoning behind the wrong answers was that they should respect the order of the blocks and somehow did not care about the ask block. A child for example wrote “this is the order from up to bottom” and another one wrote: “because [the answer] is in the correct order”. Other children thought the computer should act and answer the question for them because they cannot answer it themselves in the test, or because they thought the question was directed towards the computer not them. One child wrote that “Gobo says I am .. years old and directly says Nice! [continues the next blocks]”, and another child wrote: “I think that in the game Gobo is asked how old he is”.

Other factors in holding misconceptions

There are many factors that could lead to holding a misconception. In our experiment we looked at two of them: the age of the children and what programming languages they knew before. Unsurprisingly, we found that older children tend to answer the questions correctly, while no relationship is found with the holding of a misconception. When it comes to knowing other programming languages, data suggest that children who knew another programming language in addition to Scratch have a higher chance of answering the questions correctly compared to children who indicated knowing Scratch only. The latter had higher rates in choosing wrong answers.

Read the full paper Here.

See the full questionnaire we used Here.