Both convolution and linear block codes can be used for error correction. The main benefits I gathered from using convolutional codes is that, it's easy to implement and does better (than linear codes) in cases where you have higher error probability rates and noisy channels. Information bits are spread along the sequence. Lastly, these codes have memory.
However, linear block codes, especially the newer ones such as polar code, can actually achieve the channel capacity. And, in block codes, information bits are followed by parity bits and code information in blocks. Lastly, they are memory less.
How exactly can a noisy channel contain "memory?" I've read some articles, but would like some more clarification. Right now, I am under the impression that, if we find that an error occurs, with much higher frequency, on the 4th bit, for example, then we shall have some redundancy bit at that location, so no real information is lost. So that when we decode, we simply ignore the 4th bit. Am I right in my understanding?