Start by making a simple game such as a Tetris or Pong clone. This way you will have a much better understanding of how to go about making a more complex game.
For a more detailed account of why making a Pong clone is a good idea as your first game, you can read this post of mine
Turbello, If you are making the game engine to have a better understanding of the concepts, I I'm going to advise you to go for it. Having said that, make sure its not at the expense of completing your game by the deadline. In the worst-case scenario, you will use the engine provided by your professor (instead of the one you make but will hopefully have a clearer understanding of some of the underlying concepts).
Infact, I would start by making the game and refactoring the code which you think you would reuse into another class/lib
I'm developing one here, just to enhance my understanding. Even though I end up fixing bugs and refactoring it every other day, it might help you get started with yours