Do The Work

Credit

Nathan Bean's CIS 400

https://people.cs.ksu.edu/~nhbean/cis400/a-learning-programming/

The person doing the work is the person doing the learning.
- Various Educators

Myth

Some people are just natural born programmers, and others simply cannot learn to program.

Programming is

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

and understand

how a computer functions

to be able to program

Fixed Mindset

I don't understand this.

This is too hard.

I can't learn programming.

I give up.

Growth Mindset

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!

Jean Piaget

Image Credit: Wikimedia Commons

Genetic Epistemology

Image Credit: Wikimedia Commons

Learning

  • Assimilation: adding new knowledge to existing structures
  • Accommodation: learning knowledge for which no existing mental structures exist

Accommodation requires

significant stimulus

and a

growth mindset

to achieve

Image Credit: Memegenerator

Stage Theory

  • Sensorimotor: uses senses to interact
  • Preoperational: thinking symbolically
  • Concrete Operational: think logically about concrete events
  • Formal Operational: formulate and test hypotheses

Image Credit: Semantic Scholar

The Developmental Epistemology of Computer Programming

Lister & Teague, et. al.

AKA how we learn to program

1. Sensorimotor

  • Cannot trace code with >= 50% accuracy
  • Dominant problem-solving strategy is trial and error

2. Preoperational

  • 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

  • Sleep
  • Exercise
  • Senses
  • Patterns
  • Memory
  • Multitasking

Summary

  • 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