Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
#LGfL17@cas_london_crc
LGFL Conference 2017CAS - Pedagogy for programming.
Teaching tips for pupil independence, differentiation and progression
Lower River Room 10:30 to 11:00
Jane Waite [email protected]
Whether you are new to teaching programming, or have a few years under your belt, come along and get a list oftop tips for helping your learners develop independence, help you differentiate plans and give you ideas aboutprogression. Based on research, and what works in class, as you do much of this already in other subjects, theobjective is to give you confidence to try things out in programming lessons. Be prepared to take away lots ofideas, links to free cross curricular resources, activities, chants and actions to use in class straight away.
Wifi “LGfL-2017” password: cloudtransform
#LGfL17@cas_london_crc
#LGfL17@cas_london_crc
Copy this code(from an online system or
paper based script)3
Tinkering(no goal, no constraints)
7
Read this code and predict what it will do
5
Fix this buggy code8
Shared coding (like shared writing)
Live coding2
Change this code (remix)
1
Design and make a program (open goal)
6
Write the code for this design
4
Explore these 3 commands. What do
they do?9
Which is the most scaffolded task? Least scaffolded?
#LGfL17@cas_london_crc
Copy code
Targeted tasks
.
Sharedcoding
Guided exploration
Project design
and code
Tinker
• Imitate• Innovate• InventVs• Remix
Review your SOW, where are most your lessons?
Compare to other subjects.
#LGfL17@cas_london_crc
Content Knowledge
Pedagogical Knowledge
Pedagogical Content
Knowledge (PCK)
SequenceRepetition …
Adapted version of pedagogical content knowledge (PCK) (Shulman, 1986)
In order to teach programming
#LGfL17@cas_london_crc
Rising StarsPhil Bagge
Mark Dorling
Program of study – progression grids
Pedagogical Content
Knowledge ScratchMaths
#LGfL17@cas_london_crc
Copy code
Targeted tasks
.
Sharedcoding
Guided exploration
Project design
and code
Tinker
• Imitate• Innovate• InventVs• Remix
Pedagogical Content
Knowledge
#LGfL17@cas_london_crc
Pedagogical Content
Knowledge
Research themes
#LGfL17@cas_london_crc
Tips • Review your SOW. Look at using a blended
approach
• Read code before running it
• Design vs coding
• Where next
Copy code
Targeted tasks
.
Sharedcoding
Guided exploration
Project design
and code
Tinker
#LGfL17@cas_london_crc
Reading code, predict what it will do
Pedagogical Content
Knowledge
Summarise vs Trace
Think first or click first?Read before run.Predict, run….
#LGfL17@cas_london_crc
Reading code, predict what it will do
Cross curricula
ScratchMaths
#LGfL17@cas_london_crc
Reading code, predict what it will do
Pedagogical Content
Knowledge
Addressing a misconception
#LGfL17@cas_london_crc
Matching code1
2
3
4
5
1
2
3
4
5
A B
Pedagogical Content
Knowledge
ScratchMaths
#LGfL17@cas_london_crc
Which is the best piece of code?
Why?
How could you make it even better?
What computational thinking are you doing?
Comparing code
Pedagogical Content
Knowledge
Pizza Pickle Activity
• I can debug a program.
• I can say what a program will do.
• I can explain what the bug was and how I fixed it.
It makes a base, adds cheese, puts in the oven and starts cooking, but does not add the sauce!
The steps are in the wrong order!
It makes a base and puts it in the oven, but does not cook it
#LGfL17@cas_london_crc
Write new snippets of code
ScratchMaths
#LGfL17@cas_london_crc
Adapted from Lee et al 2011, Sentence 2017
"Mine""Not Mine"
Read
Predict
Design
Create
Modify
#LGfL17@cas_london_crc
Tips • Review your SOW. Consider a blended
approach.
• Read code before running it
• Design vs coding
• Where next
Copy code
Targeted tasks
.
Sharedcoding
Guided exploration
Project design
and code
Tinker
#LGfL17@cas_london_crc
Levels of abstraction1. Task
2. Design (including algorithms)
3. Code
4. Running the code
#LGfL17@cas_london_crc
Bee-Bot 1,2,3 Activity
Working in pairs can you create an algorithm to draw the shape of a numeral?
I can write an algorithmI can program a Bee-Bot
Implement the algorithmCode the Bee-Bot
Write the algorithm using command cards
Test the algorithm using the Fakebot
www.barefootcas.org.uk
Create the algorithm
#LGfL17@cas_london_crc
Programming is a 2 step processUse computational thinking to analyse the problem and design a solution, including creating an algorithm
Implement these ideas in a
programming language on a
computer: coding.
Programming
#LGfL17@cas_london_crc
AlgorithmTask (problem)
Code Running the code
#LGfL17@cas_london_crc
AlgorithmTask (problem)
Code Running the code
#LGfL17@cas_london_crc
Tips • Review your SOW. Consider a blended
approach.
• Read code before running it
• Design vs coding
• Where next
Copy code
Targeted tasks
.
Sharedcoding
Guided exploration
Project design
and code
Tinker
#LGfL17@cas_london_crc
Next Steps…
CAS QuickStart• a CPD toolkit to help deliver inspiring computing lessons in primary • www.quickstartcomputing.org
Barefoot• Free cross-curricular Lesson plans and self teach concepts• Free staff meeting workshops• http://barefootcas.org.uk
BCS Certificate• Online training and certification for computer science education• http://www.bcs.org/category/19012
Other
• Join CAS • Self review tool https://community.computingatschool.org.uk/resources/4681• #casinclude http://www.casinclude.org.uk/• Project Quantum https://community.computingatschool.org.uk/resources/4382
ScratchMaths• Year 5 and 6 planning materials for maths taught using Scratch – fantastic
pedagogy • https://www.ucl.ac.uk/ioe/research/projects/scratchmaths
#LGfL17@cas_london_crc
#LGfL17@cas_london_crc
@LGfL facebook.com/LondonGridforLearning
#LGfL17@cas_london_crc
#1 Situate programming tasks in student interests
#2 Use Guided Exploration
#3 Model Algorithmic thinking (worked examples)
#4 Use a range of programming activities (remember rubrics)
# 5 Assign buggy tasks
# 6 Make students read code and make sense of the program
# 7 Make them plan before they program
# 8 Describe a solution in natural language or pseudocode (or diagrams JW)
#9 Use different representations of the solution state.
#10 Use a mix of collaborative and individual projects
#11 Use professional vocabulary
#12 Provide opportunities for show and tell
#13 Use a variety of formative and summative assessment (Grover, 2016)
#LGfL17@cas_london_crc
Biggs et al 1982
#LGfL17@cas_london_crc
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!
Pedagogy for programming
#LGfL17@cas_london_crc
Ask pupils to a. read code and predict what it doesb. compare codec. fix buggy coded. create snippets of code that do the same thing as another snippete. modify (remix/ amend) codef. write code for a given design g. change a designh. make a new designi. evaluate other people's code and improve itj. make buggy codek. pair programl. Use automated code review products like Dr Scratch and review resultsm. Set up activities that have misconceptions in mindn. teach other pupilso. USE Unplugged activitiesp. Incorporate Computational Thinking
#LGfL17@cas_london_crc
• Armoni, M., Meerbaum-Salant, O., & Ben-Ari, M. (2015). From scratch to “real�? programming. ACM Transactions on Computing Education (TOCE), 14(4), 25.
• Ben-Ari, M. (1998). Constructivism in computer science education. Acm sigcse bulletin (Vol. 30, pp. 257–261). ACM.
• 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–70). ACM.
• 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.