USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
Building Skills in Introductory Programming
1. Building Skills
in Introductory Programming
José Figueiredo
Research Unit for Inland Development
Polytechnic of Guarda
Portugal
jfig@ipg.pt
Francisco J. García-Peñalvo
Computer Science Department
Research Institute for Educational Sciences
GRIAL research group
University of Salamanca
Spain
fgarcia@usal.es
2. • This is a difficult time for many students
• The abstract concepts that are involved in programming
• Programming is a new subject for many of the students who take
programming courses
• The students need to know the syntax, the semantics and the
structure, of a unusual language
• Reputation: Programming courses acquire the reputation of being
difficult
• Image: the public image of a "programmer“
Learning Programming is Difficult
3. Most students never had the opportunity to develop skills, like :
• Make a Plan: decomposition
• Look for similarities: pattern recognition
• Make solution to multiple problems: abstraction
• Develop a step-by-step solutions: algorithm
Computational Thinking
Programming is difficult.
7. “Teaching yourself programming in ten years“
“… it takes about ten years to develop expertise in
any of a wide variety of areas, including chess
playing, music composition, telegraph operation,
painting, piano playing, swimming, tennis, …”
Programming requires time.
Peter Norvig
9. Motivation
“the programmers of tomorrow are the wizards of the future.”
“You gonna look like you have magic powers compared to
everybody else. ”
“It’s the closest thing we have to a superpower.”
Gabe Newell (Valve Corporation) in Hour of Code
Drew Houston (Founders DropBox) in Hour of Code
10. • Difficuty in following students in their learning process
• Students with difficulties
Lose:
Passion Beauty Joy Awe
•Failure / Unsuccess
Follow learning process
I teach programming, over 25 years.
Every year I feel the same problem.
The same problems I felt 25 years ago.
Even with all technological growth the problems are the same.
---
There are numerous studies with the main reflection of the difficulties of solving programming problems.
Some of these problems.
This is a difficult time for many students – a time of transition as they adapt to life and study at university.
They may well be living away from home for the first time.
The abstract concepts that are involved in programming
Programming is a new subject for many of the students who take programming courses
The students need to know the syntax, the semantics and the structure, of a unusual language
Reputation: Programming courses acquire the reputation of being difficult
Image: the public image of a "programmer“
Or, most students who come to university have never had the opportunity to develop these skills of computational thinking
Computational Thinking:
Decomposition
Pattern recognition
Abstraction
algorithm
In recent years
we have see the proliferation of numerous projects
with the specific objective of encouraging the study of programming.
Many organisations are working hard to set young people up for success in a digital world.
The projects of massification of computational thinking and coding are now starting to be implemented in our education system in Portugal.
This is the main reason why most students have never had the opportunity to learn computational thinking or coding.
This is one way to develop this skill, use programming
Young people, our students, grow up surrounded by technology.
They have not known life without technology.
They have grown up with computers and mobiles.
It is intentional that students handle and solve the exercises manually, like board games,
where they can explore with pleasure,
without fear of making mistakes and
where teacher-student relationship and confidence can be improved and enhanced.
We have tried some exercises quite different from the usual ones in programming
We can try many techniques and methods and technologies but ...
Programming requires
Work hard
Dedication
Training
A bit like the author Peter Norvig, about "teaching yourself in ten 10 years", where he refers to the need to give time to learn anything
Teach Yourself Programming in Ten Years
Peter Norvig
Why is everyone in such a rush?
Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. The key is deliberativepractice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.
The author Peter Norvig, about "Teach Yourself Programming in Ten Years",
where he refers to the need to give time to learn anything
Why is everyone in such a rush?
Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973))
have shown it takes about ten years to develop expertise in any of a wide variety of areas,
including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology.
The key is deliberativepractice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.
We can try everything… but work hard is necessary.
It is up to us to suggest, encourage, motivate and supervise the work.
Some examples … especially in C programming language
some motivation is also needed
the programmers of tomorrow are the wizards of the future
You gonna look like you have magic powers compared to everybody else
Gabe Newell (Valve Corporation)
It’s the closest thing we have to a superpower.
Drew Houston (Founders DropBox)
for the most diverse reasons
I feel that I am not able to following students in their learning process.
student with difficulties.
loses interest
not motivated, unmotivated
does not work, does not practice
Failure or unsuccess
For efficient follow-up of students,
we think about building the learning profile of each student.
To do this, we use the set of exercises that students do and build their profile.
The student can improve all his characteristics with specific training.
Over time, we think it is possible to tell students that with certain characteristics the probability of success, or failure, is large or small.
We also think that it is also possible to determine which factors contribute most to success or failure.
Just as the characters in video games can improve, work, and training their skills
I want to look at a student and see their skills.
And help you out
I want to be a better programming teacher