The idea is to list one hundred curious things about programming. These can be taken on faith. In some languages they are true. In other languages, no. Developing a sense of what might and might not be true is the part of programming that is rarely taught, probably because the inconsistency is an embarrassment.
Hold a value.
Hold a value of different types. (Integer, decimal, string, time, ...)
Hold collection of related values.
Step through all values in a collection.
File input output
How to organize code
What is a function or subroutine? (Why, when, ...)
What is an object? (Why, when, ...)
What is a class? (Why, when, ...)
What is a user-defined data type? (Why, when, ...)
How to test software
Graphical user interface
Tools to use
Libraries of useful code (Where, what, when, ...)
Patterns of code (small and big. Idioms vs. patterns)
Pros and cons of various forms, designs, ...
Strategies or processes to use
Team strategies or processes
How to communicate about software to other programmers
How to communicate about software to non-programmers.
How to estimate difficulty or time required.
How to sort things. (at all)
When does efficiency matter?
How to programmers spend most of their time?
Incremental or methodical preparation?
Picking a language?
Ward's list below:
X = X + 1 but not at the same time.
Swaping X and Y usually needs T.
Count Down from 10.
F = 9/5 C + 32 if we are careful.
Sing 99 Bottles of Beer on the wall.
Print Hello World.
A Turtle moves and draws.
A Collection holds many things.
A Manager delegates responsiblity.
An Algorithm describes steps that lead to a result.
A Methodology offers advice to people seeking results.
A Program influences the future behavior of both people and machines.