You could make it for the first part of semester for theory to describe about all subsystems that are common for games (introduction, main loop, resource loading, memory management, math - general and 2d math) and for theory for second part of semester to move to more advanced topics such as game engines their architecture, and how earlier described common subsystems are extended to next level which is required for bigger games supported by big engines, then introduce them to more math - 3d math and advanced topics , opengl, directx, and maybe, just maybe, short intro to few game engines.
At the end of first part of semester it would be good if they get guidelines for game design (story telling, and other related stuff).
For practice part, first part of semester they could do exercises on per class basis, that is they themselves write small main loop, write short resource loading, etc.
Before second part of semester, they form groups of 3-4 students, and design a game (before second part and after game design guidelines), and during second part of semester they do implementation using some framework that has all the boring stuff implemented (resource load, pathfinding, gui, etc...). This framework, should not be some game engine, or big name game framework but something small and compact, and easy to use. Also they should have game art ready to use if they'll make a game.
This would actually be interesting, you give them building blocks (framework, art) and they connect the dots, but they need to know how things work under the hub.