e recognized by computing machines for efficient processing or by human beings for practical under- standing. The number of possible codes and corresponding codewords is infinite, just like the number of events to which information can be associated, in Shannon's meaning. This is the point where information theory will start revealing its elegance and power. We will learn that codes can be characterized by a certain efficiency, which implies that some codes are more efficient than others. This will lead us to a description of the first of Shannon's theorems, concerning source coding. As we shall see, coding is a rich subject, with many practical consequences and applications; in particular in the way we efficiently communicate information. We will first start our exploration of information coding with numbers and then with language, which conveys some background and fla- vor as a preparation to approach the more formal theory leading to the abstract concept of code optimality. Coding numbers Consider a source made of N different events. We can label the events through a set of numbers ranging from 1 to N, which constitute a basic source code. This code represents one out of N! different possibilities. In the code, each of the numbers represents a code- word. One refers to the list of codewords, here {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, as a dictionary. We notice here that our N codewords use decimal numbers. In fact, these codewords are generated by some unique combinations of characters, as selected from a smaller dictionary, here {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}. The smallest dictionary is referred to as a codeword alphabet. In Roman antiquity, one would have used instead the alphabet {I, II, III, IV, V, VI, VII, VIII, IX, X, L, C, D, M}, which corresponds to Roman numerals. As we know from school, the corresponding codewords are formed according to certain rules¹ (can we recognize in MDCCLXXXIX The correspondence being {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 50, 100, 500, 1000} = {I, II, III, IV, V, VI, VII, VIII, IX