I adopt most of CLRS conventions for writing pseudocode. There are places where I deviate from CLRS. The most significant is that I often use global variables. - Indentation indicates block structures. - The pair of symbols { and } is used to delimit a block. - A statement has no termination symbol unless ambiguous, i.e., a statement may span several lines, and a line may contain multiple statements, in which case semicolons are used as statement separators. - I use for ... do ... while ... do ... repeat ... until loop constructs. The test condition of the for and while loops is executed one more time than its body; the test condition of the repeat loop is executed as many times as its body. - Both /* */ style comment and // style comment are used. - Objects have attributes which are accessed using the dot notation. - An array is an object having a `length' attribute. A[a..b] is a subarray indexed from a to b. A[i] accesses the ith element of A. Array indexing starts from 1 almost always. However, we'll index starting from 0 when convenient. The notation A[i,j] denotes the element at row i and column j of a 2-dimensional array A. - The logical operators (and, or) are short-circuiting. - Object parameters are passed by reference; non-object parameters are passed by value.