To give you an idea of how much work this is, an implementation that meets most requirements could be written in one afternoon, in about 108 lines of code. It would probably take you longer than that and probably more lines of code, but again, you have about 3 days to finish this, so that's not an issue.

Just make sure you keep working at it, and use all the references and language material at your disposal.