 When we write code in a programming language, we write it as text and this code is called the source code, so called because it's the source from which the translator produces actual runnable programs. The first rule to learn about Pigeon code is that the hash sign, sometimes called the octothorpe or the number sign, that denotes the beginning of a comment. A comment and source code is simply text which is ignored by the translator. All languages allow for comments so that programmers can write notes and code that describe anything about the code which isn't apparent to a human reader. Notice that when I show a comment I'll highlight it in orange so that you can more easily distinguish it from actual code. The term value in programming generically refers to some piece of data. So a number value like the number three, that's obviously a value, a piece of data. Values in programming though may come in many different types, not just numbers. So in Pigeon for example, we have numbers, we have what are called strings, we have what are called booleans and later on we'll introduce a couple of additional types. A string quite simply is a piece of text. It's a sequence of text characters. So say in code you wish to store someone's name. That name would be stored as a string value. The boolean data type actually has just two different possible values. The values true and false. Booleans come in handy for situations like say your program has options that can be enabled or disabled. The enabled state would be represented by the boolean value true while the disabled state would be represented by the value false. If you're wondering about the odd name, booleans are named after the 19th century English mathematician George Bull who invented binary algebra, the algebra of logic. So it makes sense that we named the data type for true and false after him. In the text of our source code, when we express a specific value, that is a literal. It is a value literally written in text. So for example, when you write a number in Pigeon it can just be a simple positive number like here three or a negative number like say negative seven two four or a number with a fractional component a decimal point eight point nine three or a negative number with a decimal point like negative zero point eight eight eight eight eight eight eight one. When we express boolean values as literals, we write them simply in lower case true and false. When we write a string, we enclose the characters of the string between double quote marks. So here in the top example, that's a string containing the sequence of characters starting with a capital R then period and space and capital N lower case I lower case X O N. So one thing to note here is that uppercase letters are different characters than lower case letters. The uppercase N is a different character than the lower case N. Also note that a space is itself a kind of character. It's part of the data of the string. In the second example from the top, that's a string with just a single character, a capital T. The third string down reads elementary comma my dear Watson. And then the last string at the bottom consists of just a single character, a percentage sign. So that's how we write numbers, strings and booleans. There is, however, one more literal for the special value null. The null value, which you can sort of think of as another data type with just one possible value is used to represent nothing. It's effectively used as a placeholder, meaning there's nothing here. Note that the null value, like true and false, is always written in all lower case. When we write a string literal, there are some characters which can only be included by using what's called an escape sequence. For example, the double quote mark character, you can't simply put that in the middle of a string because the double quote mark character denotes the end of the string. Consequently, to include a double quote mark, we have to escape it, meaning we have to put a backslash in front of it. And that indicates to the language that the following character, the double quote mark in this case, is not meant to denote the end of the string. It's just meant to denote a double quote mark character in the text data. So in the string literal at the top here, the first character of the string is simply a single double quote mark character. The backslash followed by the double quote mark, those two characters together represent an escape sequence. They represent one character in the text data, a double quote mark. In the second string, where we see backslash N, that is an escape sequence representing the new line character. The new line character, as the name implies, is used to denote where a new line should start. So the text in this example reads, hello comma, and then on the next line, world period. Now of course what we see here is written all on one line, but the idea is that a program that renders text should render this text on two successive lines. So just be clear, in the string data, we have this new line character to indicate the intention that there be a new line there, but it's ultimately up to whatever code renders a string on the screen or a printer somewhere, it's up to that code to represent the new lines, to draw the character after the new line on the next line down. In our code however, we must write string literals always on just one line. We can't continue them onto the subsequent lines, so the opening and closing double quote mark of a string literal will always be on the same line. Finally, in the bottom string, the escape sequence backslash backslash is used to denote just a single backslash character. So the text data of the string actually reads C colon backslash blah, backslash blah, backslash blah. The reason we have to use an escape sequence to denote a backslash character is because the backslash character itself is used to denote the start of escape sequences. So if we just wrote single backslashes here, then the backslashes would appear to the language to denote the start of escape sequences, but that's not what we intend here, so we write a pair of backslashes just to have a single backslash character.