I’m going to be contrary and suggest…Java. Why Java instead of C++? So the focus will be on the game engine and not dealing with C++ difficulties. That means using JOGRE or something like that for the low level stuff, the building of which from scratch might be beyond the level of a single course. There is already a JAKE (Java Quake) engine out there so it’s doable.
Another advantage of Java is you can use the free Netbeans IDE with all its nice refactoring features, that doesn’t misbehave like Intellisense does for C++ (mainly because C++ is a legacy-bound language that is hard to analyze in real time).