cas_london_crc - CAS Community

CAS Conference 2017
Diving deep into primary programming
- design for quality and independence
11:10 to 11:50
Jane Waite
[email protected]
@cas_london_crc
#casconf17
Sharing research for classroom practise
@cas_london_crc
#casconf17
Activity 1. What would you call these?
A
C
B
D
@cas_london_crc
#casconf17
Task (problem)
Code
Design/ Algorithm
Running the code
@cas_london_crc
#casconf17
Levels of abstraction
1. Task
2. Design (including algorithms)
3. Code
4. Running the code
(Waite, Curzon, Sentence and Marsh, 2011)
What % of your SOW are at each level?
@cas_london_crc
#casconf17
Design can be used as
• Aid memoire – improve independence – tick/what next?
• Completeness check – improve cohesion/quality
• Contract for pair programming
• Annotation - scaffold implementation of code
• Self assessment - growth mindset
• To think about ‘do-ability’
• Reminder of design patterns used
• To teach abstraction!
For the teacher
• To know what to teach next
• Differentiation
• Assessment
@cas_london_crc
#casconf17
How might a simple sequence
be represented by pupils as
an algorithm /design?
1
Norway
Longboat
sprite
move
say
2
3
say
???
Map
background
@cas_london_crc
#casconf17
4
Denmark
Longboat
sprite
Labelled diagram
& Storyboard
Background
with stars
and moon
Santa
sprite
go to
Tree sprite
go to
Snowman
sprite
go to
Mouse
sprite
go to
Move
???
say
move
say
say
say
@cas_london_crc
#casconf17
Move
Remixing to teach
repetition
forever
Stars twinkle
all the time
repeat 4
4 times
across
repeat until
Until space bar
clicked
@cas_london_crc
#casconf17
Activity 2 – annotate a design
@cas_london_crc
#casconf17
Concerns about design
@cas_london_crc
#casconf17
Short 15 minutes
survey on how
you teach
programming!
Please help
with research
on primary
programming!
https://goo.gl/forms/1drFEXGk0oKiXUMo1
https://tinyurl.com/design-JW
@cas_london_crc
#casconf17
Which is the most scaffolded task? Least scaffolded?
Change this code
(remix)
1
Shared coding
(like shared writing)
Live coding
2
Copy this code
(from an online system
or paper based script)
3
Write the code for this
design
4
Read this code and
predict what it will do
5
Design and make a
program (open goal)
6
Fix this buggy code
8
Explore these 3
commands.
(Guided discovery)
9
Tinkering
(no goal, no
constraints)
7
@cas_london_crc
#casconf17
Handout 3
Scaffolding
Copy
code
Targeted
tasks
Shared
Coding
Guided
exploration
Project
design and
code
• Imitate
• Innovate
• Invent
Vs
• Remix
What % of your SOW are in each section?
Compare to other subjects.
@cas_london_crc
#casconf17
Tinker
Tips for independence
• Use a blended approach
Copy
code
Targete
d tasks
Shared
coding
.
• Introduce design and annotate!
Please complete my survey
https://goo.gl/forms/1drFEXGk0oKiXUMo1
https://tinyurl.com/design-JW
@cas_london_crc
#casconf17
Guided
exploration
Project
design
and code
Tinker
Use modify create learning progression
(Lee et al., 2011)
@cas_london_crc
#casconf17
Research themes
Pedagogical
Content
Knowledge
@cas_london_crc
#casconf17
•
Ben-Ari, M. (2004). Situated learning in computer science education. Computer Science Education, 14(2), 85–100.
•
Benton, L., Hoyles, C., & Noss, I. K. anRichard. (2016). Building mathematical knowledge with programming: insights from the ScratchMaths project. Constructionism.
•
Benton, L., Hoyles, C., & Noss, I. K. anRichard. (2017). Bridging Primary Programming and Mathematics: some findings of design research in England. Digital Experiences in Mathematics Education.
•
Bers, M., Flannery, L., Kazakoff, E. R., & Sullivan, A. (2014). Computational thinking and tinkering: Exploration of an early childhood robotics curriculum. Computers & Education, 72, 145–157.
•
Brennan, K., & Resnick, M. (2012). New frameworks for studying and assessing the development of computational thinking. Proceedings of the 2012 annual meeting of the American Educational Research Association, Vancouver, Canada.
•
Busjahn, T., & Schulte, C. (2013). The use of code reading in teaching programming. Proceedings of the 13th Koli Calling International Conference on Computing Education Research (pp. 3–11). ACM.
•
Curzon, P., McOwan, P. W., Cutts, Q. I., & Bell, T. (2009). Enthusing & inspiring with reusable kinaesthetic activities. ACM SIGCSE Bulletin (Vol. 41, pp. 94–98). ACM.
•
Cutts, Esper, S., Fecho, M., Foster, S., & Simon, B. (2012). The abstraction transition taxonomy: developing desired learning outcomes through the lens of situated cognition. Proceedings of the ninth annual international conference on International computing education research (pp. 63–7
•
Denner, J., & Werner, L. (2007). Computer programming in middle school: How pairs respond to challenges. Journal of Educational Computing Research, 37(2), 131–150.
•
Du Boulay, B. (1986). Some difficulties of learning to program. Journal of Educational Computing Research, 2(1), 57–73.
•
Falkner, K., Vivian, R., & Falkner, N. (2014). The Australian digital technologies curriculum: challenge and opportunity. Proceedings of the Sixteenth Australasian Computing Education Conference-Volume 148 (pp. 3–12). Australian Computer Society, Inc.
•
Franklin, D., Hill, C., Dwyer, H. A., Hansen, A. K., Iveland, A., & Harlow, D. B. (2016). Initialization in Scratch: Seeking Knowledge Transfer. Proceedings of the 47th ACM Technical Symposium on Computing Science Education (pp. 217–222). ACM.
•
Grover, Pea, & Cooper. (2015). Designing for deeper learning in a blended computer science course for middle school students. Computer Science Education, 25(2), 199–237.
•
Grover, S., & Pea, R. (2013). Computational Thinking in K–12 A Review of the State of the Field. Educational Researcher, 42(1), 38–43. doi:10.3102/0013189X12463051
•
Hansen, A., Hansen, E., Dwyer, H., Harlow, D., & Franklin, D. (2016). Differentiating for Diversity: Using Universal Design for Learning in Elementary Computer Science Education. Proceedings of the 47th ACM Technical Symposium on Computing Science Education (pp. 376–381). ACM.
•
Kafai, Y. B., & Burke, Q. (2013). The social turn in K-12 programming: moving from computational thinking to computational participation. Proceeding of the 44th ACM technical symposium on computer science education (pp. 603–608). ACM.
•
Kafai, Y. B., & Vasudevan, V. (2015). Constructionist Gaming Beyond the Screen: Middle School Students’ Crafting and Computing of Touchpads, Board Games, and Controllers. Proceedings of the Workshop in Primary and Secondary Computing Education on ZZZ (pp. 49–54). ACM.
•
Lee, I., Martin, F., Denner, J., Coulter, B., Allan, W., Erickson, J., Malyn-Smith, J., et al. (2011). Computational thinking for youth in practice. Acm Inroads, 2(1), 32–37.
•
Lister, R. (2011). Concrete and other neo-Piagetian forms of reasoning in the novice programmer. Proceedings of the Thirteenth Australasian Computing Education Conference-Volume 114 (pp. 9–18). Australian Computer Society, Inc.
•
Lister, R. (2016). Toward a Developmental Epistemology of Computer Programming. Proceedings of the 11th Workshop in Primary and Secondary Computing Education (pp. 5–16). ACM.
•
Meerbaum-Salant, O., Armoni, M., & Ben-Ari, M. (2011). Habits of programming in scratch. Proceedings of the 16th annual joint conference on Innovation and technology in computer science education (pp. 168–172). ACM.
•
Meerbaum-Salant, O., Armoni, M., & Ben-Ari, M. (2013). Learning computer science concepts with Scratch. Computer Science Education, 23(3), 239–264.
•
Ruvalcaba, O., Werner, L., & Denner, J. (2016). Observations of Pair Programming: Variations in Collaboration Across Demographic Groups. Proceedings of the 47th ACM Technical Symposium on Computing Science Education (pp. 90–95). ACM.
•
Schulte, C. (2008). Block Model: an educational model of program comprehension as a tool for a scholarly approach to teaching. Proceedings of the Fourth international Workshop on Computing Education Research (pp. 149–160). ACM.
•
Shulman, L. S. (1986). Those who understand: Knowledge growth in teaching. Educational researcher, 15(2), 4–14.
•
Statter, D., & Armoni, M. (2016). Teaching Abstract Thinking in Introduction to Computer Science for 7th Graders. Proceedings of the 11th Workshop in Primary and Secondary Computing Education (pp. 80–83). ACM.
•
Teague, D., & Lister, R. (2014a). Programming: reading, writing and reversing. Proceedings of the 2014 conference on Innovation & technology in computer science education (pp. 285–290). ACM.
•
Teague, D., & Lister, R. (2014b). Longitudinal think aloud study of a novice programmer. Proceedings of the Sixteenth Australasian Computing Education Conference-Volume 148 (pp. 41–50). Australian Computer Society, Inc.
•
Waite, J., Curzon, P., Marsh, W., & Sentance, S. (2016). Abstraction and common classroom activities. Proceedings of the 11th Workshop in Primary and Secondary Computing Education (pp. 112–113). ACM.
•
Werner, L., Denner, J., Campe, S., Ortiz, E., DeLay, D., Hartl, A., & Laursen, B. (2013). Pair programming for middle school students: does friendship influence academic outcomes? Proceeding of the 44th ACM technical symposium on Computer science education (pp. 421–426). ACM.
•
Sebrabce 2017 https://blogs.kcl.ac.uk/cser/2017/02/20/exploring-pedagogies-for-teaching-programming-in-school/
@cas_london_crc
#casconf17
Would you like ALL your Year 6 pupils to be able to independently
and confidently create a Scratch project that meets the task "Make
a resource for year 2 to teach them about rainforests", where each
pupil creates high quality code, that is not copied?
In this session we will look closely at the role of design and how
annotated storyboards, mind maps, labelled diagrams can help
pupils become more independent to tackle open ended creative
projects. We will look at international research, example projects,
unpick progression, compare approaches in other subjects to
figure out how we can scaffold learning about 'how' to create
projects and enable pupils build the experience they need to do it
themselves.
Jane Waite
[email protected]
@cas_london_crc
#casconf17
Pedagogy for programming
1.
Use computational thinking
•
Create algorithms (plan before you program)
•
Remember to abstract, decompose, spot patterns, use logical reasoning
•
Incorporate tinkering to learn a language then move to purposeful programming
•
Include buggy tasks to teach tracing
•
Teach collaboration e.g. pair programming
2.
Don’t be scared of technical vocabulary (split vowel diagraph)
3.
Start with unplugged then draw then program (concrete/iconic/abstract)
4.
Situate in cross curricular work
5.
Show your thinking - make mistakes, show alternative choices, model testing (worked examples/
scaffold tasks/ shared programming)
6.
For projects, teach the process for progression of independence (closed to open tasks,
imitate/innovate/invent, use/modify/create)
7.
For assessment, the code won’t tell you much – how did they get there? (KSU)
Don’t just copy code – be creative, solve problems!
@cas_london_crc
#casconf17
In order to teach primary programming
Pedagogical
Content
Knowledge
Content
Knowledge
(PCK)
Pedagogical
Knowledge
Sequence
Repetition …
Adapted version of pedagogical content knowledge (PCK) (Shulman, 1986)
@cas_london_crc
#casconf17