The first part of the task is spotting transcription initiation and termination regions, thereafter (for eukaryotic sequence) tackling the issue of subdividing the transcription region into introns and exons. For now assume that we are dealing with a prokaryotic genome.
For a given segment of double stranded DNA there are three reading frames to check on each strand. The first task is to identify all the start and stop codons in each frame, then to evaluate which of these are in fact really coding regions (open reading frames, or ORFs). Note that is is not impossible for ORFs to overlap, in the same or the opposite directions, but this doesn't happen much. In such cases, transcription is timed so as not to be simultaneous.
Deciding which ORFs are ``real'' involves some statistics. Things we have to bear in mind about the coding potential of an ORF are
(a) The genetic code, usually the universal code(b) average amino acid composition of the organism
(c) genome-specific patterns of usage of synonymous codons
Item (b) relates to the fact that certain organisms have preferences and aversions towards using specific amino acids in their proteins. Item (c) relates to the fact that certain organisms have preferences among synonyms used in coding for a specific amino acid.
Table 1: Frequencies (in percent) of nucleotide bases appearing in each codon position, and
overall in the genome for some hypothetical organism
A very simple method of evaluating the coding potential would be to use table 1 to score a sequence. This table says that overall, 28% of codons in the organism start with A, whereas the overall percentage of A is 31%. To make use of the table we utilize the simplest sequence model, which makes the very naive assumption that the bases making up codons are independent of one another, but it can still give us a useful score. As an example, to evaluate the coding potential of the sequence x = GAT|GAT|GAT|GAT, the following likelihood ratio could be calculated and compared to some previously determined threshold.

Krogh et al [6] have a more sophisticated model which avoids assumptions of independence of nucleotides within codons by making use of data similar to that presented in table 2. The basic model they use involves assuming the independence of codons along coding sequence. For each of the 64 possible codons two frequencies are presented: the frequency with which the trinucleotide is used by the organism in coding for genes, and the frequency with which you would expect to see the trinucleotide at random (obtained using the organism's base compositions and assuming independence within codons). So by this method the calculation from above would now become

Table 2: Frequencies (in percent) at which each of the 64 codons are used in E. Coli
DNA, and the frequencies that would be expected in random sequence using base compositions
of the E. Coli genome. (Most entries have been omitted for the sake of brevity, the
full table can be found in [3]