The only serious suggestion: code slowly. This is the only way to meet deadlines.
Don't get me wrong: coding should be pretty fast, because if you do it too slowly, you may waste too much time to implement some wrong design. You always need to leave some room for re-implementation (don't try to fool yourself: it always can happens, so it's better to plan for it), and to make this room, your work should be reasonably fast.
From the other hand, your work should be neat and healthy at all times, otherwise the opposite effect easily comes into place: you quickly make a working system, but won't be able to bring it to acceptable quality, ever, because you won't be able to sort out the mess you created; in this case, effectively your work goes to garbage can anyway, but worse, as by saving time you wasted time. More importantly, you waste not just your time, but the time of your colleague. I call it negative contribution, because it's much worse that doing no work at all.
My criteria here is this: you should feel good balance in your mind, don't stress yourself too much. Occasionally, if your work goes well, you can overwork and get really tired — nobody died because of just that. But if it happens permanently, it's a good sign that you are producing files only for a garbage can — fast. Avoid it — it would be much worse than doing no job.
[EDIT]
Two months — is it enough or not? Apparently, it depends on the requirements for a job. I would advice only one thing: plan your whole work for just one month, or, better, three weeks, leave remaining time in reserve. Plan to make a first fully working prototype in first week; implement a working skeleton first, based on key requirements only. Don't make a common mistake typical for beginner: don't code much without testing. You should have some system runnable in first day and re-run it after each small step, to make sure you did not go out of reality. Always utilize some Revision Control System.
—SA
Updated 17-May-12 9:16am
v3
One of the things that will really kill you in any project is not having clear requirements. You can easily lose a month just getting what you need to do. Also, you better be familiar with the type of design you will implement. If you have not done a multi-tier implementation, and then have to do one, you will probably find yourself having to rework things because you have done something bad, and need to correct it, or work around it.
In other words, I beleive it is really tight for anything but the simplest project.