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.


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


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


parallel lists


variable elements from a queue

read-eval-print loops


A Turtle moves and draws.

A Collection holds many things.

A Manager delegates responsiblity.


A Symbol can influence computation

Dispatch to cases based on symbols

An Interpreter is repeatedly influenced

Recursion assumes unbounded state


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


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

If you’re a self-taught engineer or bootcamp grad, you owe it to yourself to learn computer science. post