How to teach Programming Problem Solving?
The course Problem Solving using Python is based on this handbook.
Strategies
- Learning the Model and its Phases
- End to End Programming Problem Solving
- Deliberate Practice - Each Phase in the Model Separately
- Teaching Methods
- Worked Example - Peer Instruction, Prompting for Predictions
- Sub-goal Labeling
- Walkthrough - Written and Think-aloud
- Physically Manifest the Model
- Develop a program that:
- Solve programming problems
- Preform each one of the phases in the model
Novice vs. Expert
- Tactic knowledge
- Prerequisites
- Rapid Design-Code-Test-Debug cycles (incremental development)
- Well done design already in the beginning
- Design and code in bigger chunks
- Roles of Variables, Code Patterns, Exceptions
Prerequisites
- Computer competencies (e.g., file system structure, using the command line, IDEs)
- Proficiency in the programming language
- Syntax ans semantics
- Code pattern (related to basic design)
- Idiomatic language
- Interactive programming (
help
,type
,dir
)
- Notional machine = "A set of abstractions that define the structure and behavior of a computational device. A notional machine includes a grammar and a vocabulary, and is specific to a programming paradigm. It’s consistent and predictive — given a notional machine and a program to run on that machine, we should be able to define the result. The abstract machine of a compiler is a possible notional machine." - Mark Guzdial
- EXTRA: Code Phonology - How does code sound?
Teaching Programming Resources
Copyright © 2020 Shlomi Hod.
All rights reserved.
All rights reserved.