What and when to teach to prepare children for programming
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Programming concepts for children

Feel free to contribute here or comment on my homepage. Only free educational software is linked.

Concepts that should lay the foundation for real programming languages

Concept commands and command sequences
Prepares instructions/function calls and their sequencing
Age 3+
How defining movement commands for an actor ( robot or turtle )
Apps http://lightbot.com https://www.scratchjr.org
Concept loops and nested loops
Prepares instruction/function call sequence looping
Age 5+
How defining repetitive movement commands
Apps http://lightbot.com https://www.scratchjr.org
Concept reusing command sequences
Prepares function/procedure definition
Age 5+
How defining and using command sequence groups
Apps http://lightbot.com https://www.scratchjr.org
Concept finding the problem in the command sequence
Prepares debugging
Age 5+
How figuring out how to modify the command sequence to fulfill the desired behaviour
Apps http://lightbot.com https://www.scratchjr.org
Concept divide solutions into linked command sequences
Prepares decomposition
Age 6+
How figure out a solution for a harder problem using different command sequences, each concentrating on an simpler task
Apps http://lightbot.com https://www.scratchjr.org https://scratch.mit.edu
Concept conditional statements
Prepares if/then statements, control structures
Age 6+
How play sound if actor reaches specific object during movement
Apps https://scratch.mit.edu
Concept creating command sequences for events
Prepares events and threads
Age 6+
How different movement commands for different key events/touch events
Apps https://scratch.mit.edu
Concept storing states
Prepares concept of variables
Age 9+
How play sound if actor reaches speific object during movement for the third time
Apps https://scratch.mit.edu

Concepts to understand in real programming languages

Control structures
If .. then .. else conditional statement
for ... loop
while ... loop
do while ... loop
switch ... conditional statement
for each ... loop
Integer number
Float number
String text
Modular programming
After a certain amount of funtcions program complexity increases, so breaking it up into smaller parts is unavoidable. These parts should be independent and interchangeable and should concentrate on one aspect of the desired functionality.
Object-oriented programming
Sometimes it is very useful to handle data and related functions in separate units called objects. In object-oriented programming these data-method units are defined in classes. But OOP is not the solution for everything, it shouldn't be over-used or used badly. Objects can be used in modular programming but objects are not modules, they are just data types with methods.
Mediator pattern
Both in modular and object-oriented programming it is desirable to have as many independent parts as possible for fast refactoring and interchangeability. To avoid direct communication/calls between program parts, a mediator function/object can be used to transfer messages between parts.

Essential math skills for programming

Skill Needed for
Boolean arithmetic conditional statements
Binary numeral system bitwise operations, understanding how the cpu works on low level
Hexadecimal numeral system working with bytes, color codes
Trigonometry almost everything, graphics, signal processing, etc

Some links

Link Description
Scratch a really super tool and development environment for children, has all needed control structures, variables, big asset library, really the gate to real programming languages
Code.org the definitive site to pick up coding, full of super videos, games, tutorials