  In this paper, we give algorithms and methods of construction of self-dual
codes over finite fields using orthogonal matrices. Randomization in the
orthogonal group, and code extension are the main tools. Some optimal, almost
MDS, and MDS self-dual codes over both small and large prime fields are
constructed.
