 code word is composed of the same symbols of the message word. Thus the encoder transforms message words of m symbols into code words of d symbols all from the same alphabet M the differ- ence S = d m is called code redundancy. Due to the encoding the line rate RLine results in being greater than the message rate Rmessr being e=(1+(s/d)Rmess). A block code is systematic when the code word is obtained by adding to the mes- sage word a string of S symbols calculated by the encoder, but the message word is transmitted unchanged. A block code is said to be without memory when every code word is created at the encoder independently from the previous words and is processed at the decoder also independently from the previous words. Every possible channel memory is considered contained in the length of the message word. Finally a block code is called a group code when its coding and decoding algo- rithms are based on the fact that the alphabet M is structured as a group by defin- ing suitable operations among its members. We will always consider codes built on alphabets that are at least rings (which have the structure of the integer num- bers). In the most common cases in optical communications the alphabet structure is even richer, that is, it has the Galois field structure, which we will call G(M). This is the structure of the real numbers, but for the fact that the alphabet is constituted by a finite number of elements, differently from the real numbers. Practically all the FECs used in optical communications have the properties considered in the aforementioned list, due to the fact that the encoding and decoding algorithms have to be performed in real time in pace with the arriving bit stream, whose speed is a minimum of 10 Gbit/s if not 40 or 100 [95-98]. This trend, however, is going to change with the need of more efficient codes for 100 Gbit/s transmission; at the end of this section we will look at one of the possible solutions for the next-generation codes: the turbo block codes. A block code can correct erro