Remember that good testing means (1) a good strategy that is well explained, and (2) test runs that are well organized and annotated. See the marking sheet for A1 for some specific sorts of things we look for as well as a not-too-bad set of cases for A1. The handbook also includes sample assnts with good testing strategies.
Implementing that module using a 2D array can also be a useful stepping stone to implementing it the required pointer-based way.
You should be able to make your signature compile just by adding these "end"s. For example, here is an example of a signature OOT will accept without complaining. (The corresponding complete module is also there, for your information.)
Whatever you do, do not include inappropriate things in the signature just to satisfy OOT. For example, do not include any secret data structures in the signature. If OOT seems to want you to do this, you probably have designed your module poorly -- rethink it, and go to an office hour if you can't find a way around it.
Some students have been using separate module stubs and implementations (as shown in the BHH textbook). That's fine (although not necessary), but do be sure not to include inappropriate things in the signature that you hand in for Part A.