 Pseudo code is an informal high-level description of the operating principle of a computer program or other algorithm. It uses the structural conventions of a normal programming language, but is intended for human reading rather than machine reading. Pseudo code typically omits details that are essential for machine understanding of the algorithm, such as variable declarations, system-specific code and some subroutines. The programming language is augmented with natural language description details, where convenient, or with compact mathematical notation. The purpose of using Pseudo code is that it is easier for people to understand than conventional programming language code, and that it is an efficient and environment independent description of the key principles of an algorithm. It is commonly used in textbooks and scientific publications that are documenting various algorithms, and also in planning of computer program development, for sketching out the structure of the program before the actual coding takes place. No standard for Pseudo code syntax exists, as a program in Pseudo code is not an executable program. Pseudo code resembles, but should not be confused with, skeleton programs which can be compiled without errors. Flow charts, Durkan charts and unified modeling language UML charts can be thought of as a graphical alternative to Pseudo code, but are more spacious on paper. Languages such as Haggis bridged the gap between Pseudo code and code written in programming languages. Its main use is to introduce students to high level languages through use of this hybrid language.