I'm writing my undergraduate thesis (~25 pages) on a computer program I've developed. Naturally, I'm expected to explain what the program does and how it is implemented. However, the algorithm is quite complex and I simply cannot afford to include a full description.

What do you think, should I:

* Lay out the general contours in writing and leave out the semi-obvious implementation details. The amount of detail should be enough to reproduce my work, but it would look rather vague and hard to read.
* Include main pieces of the algorithm (written in pseudo code) in the body and use comments to explain what is going on. I'm leaning towards this one, as the work looks more readable this way. However, cumulatively these bits and chunks amount to 3.5 full pages of code.
* Put pseudo code in the appendix. But in this case the major part of the explanation would be done in the appendix and the body would look kind of empty.