This thesis considers error-correcting codes designed to correct any single occurrence of predetermined two-dimensional (2D) error patterns that can occur at any position in a 2D array of bits. Obvious application for this type of codes is storage. As physical size of individual bits cells becomes smaller and smaller, 2D intersymbol interference (ISI) channel is of particular interest. Moreover because of 2D ISI channel, 2D error events also occurr. Therefore applying the codes for dominant 2D error patterns to storage system is very efficient. Display devices are also obvious applications. In this thesis, two mathematical foundations for designing such codes are suggested and proved. Moreover a general algorithm for achieving desired codes is also presented. The specific codes designed in this thesis are cyclic codes that can correct any single occurrences of dominant known error patterns that can occur anywhere in the 2D array. As example codes, rate-0.994 codes are constructed which target eight predetermined 2D error patterns in a 63 $\times$ 63 bit array. For another example, rate-0.911 codes are implemented which correct ten predetermined 2D error patterns in a 15 $\times$ 15 bit array.