Experiment with requirements and document them.
Document the entire software architecture and design appropriately.
Demonstrate source code documentation tools.
Provide a documentation for developers (e.g. describing the software architecture, for extending the software etc.), which is required for reproducing a program.