The person doing the work is the person doing the learning.
- Various Educators
Some people are just natural born programmers, and others simply cannot learn to program.
writing steps to solve problems
in a way that a
computer can perform those steps
We must learn to express steps with
exactitude and precision
how a computer functions
to be able to program
I don't understand this.
This is too hard.
I can't learn programming.
I give up.
I don't understand this... yet!
I love a good challenge!
I'm learning to program a little at a time!
I'll keep trying and get better!
- Assimilation: adding new knowledge to existing structures
- Accommodation: learning knowledge for which no existing mental structures exist
- Sensorimotor: uses senses to interact
- Preoperational: thinking symbolically
- Concrete Operational: think logically about concrete events
- Formal Operational: formulate and test hypotheses
The Developmental Epistemology of Computer Programming
Lister & Teague, et. al.
AKA how we learn to program
- Cannot trace code with >= 50% accuracy
- Dominant problem-solving strategy is trial and error
- Can trace code with >= 50% accuracy
- Traces without abstracting any meaning from code
- Cannot see relationships between lines of code
- Struggles to make effective use of diagrammatic abstractions of code
- Dominant problem-solving strategy is quasi-random code changes and copious trial runs
3. Concrete Operational
- Dominant problem-solving strategy is hasty design, futile patching
- Can establish purpose of code by working backwards from execution results
- Tends to reduce levels of abstraction to make concepts more understandable
4. Formal Operational
- Uses hypothetico-deductive reasoning (formulates and tests hypotheses)
- Reads code rather than traces to deduce purpose
Science of Learning
- You can learn to program, just like many other students have before you
- It will take hard work and can be frustrating at times
- You'll need to read and write A LOT of code
- There is no shortcut - you must DO THE WORK
How to Help
- Get good, regular sleep
- Exercise regularly
- Engage with the content in the course
- Take notes, draw diagrams, annotate code
- Don't multitask while studying
- Don't copy/paste code - retype it!
- Read code by other developers and try to understand it - use GitHub