One Hundred Steps

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.

See also One Hundred Formulas for circuits and systems.

Numbers

X = X + 1 but not at the same time.

Swaping X and Y usually needs T.

F = 9/5 C + 32 if we are careful.

Count Down from 10.

-32768 .. 32767 as lopsided limits.

Gray Codes reorder the possibilities

Strings

Convert To String and back again.

Concatenating strings.

Sing 99 Bottles of Beer on the wall.

Matching strings.

Regular expressions, captures and unification.

Glyphs from large alphabets

Loops

parallel lists

merge

variable elements from a queue

read-eval-print loops

Models

A Turtle moves and draws.

A Collection holds many things.

A Manager delegates responsiblity.

Representations

A Symbol can influence computation

Dispatch to cases based on symbols

An Interpreter is repeatedly influenced

Recursion assumes unbounded state

Structures

Nodes can come and go

A Reference connects nodes

A Traversal of some or all nodes

Trees or lists have ends

Mark Graphs or rings to stop

When Order becomes important

Perscriptions

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.

Are we close to done? Not hardly. Let's assume we'll have 10 topic areas averaging 5 topics each with an equal number of advanced topics hidden within. This makes for 100 topics total. Our 7 topics has us about 70% done with the surface outline, 35% done identifying topics, and, just samples of the writing to test the style.

See also: A complete computer science study plan to become a software engineer. github