The Game Programming course will allow students to combine concepts taught in order courses together with the new game programming concepts taught in this course, in order to build games. The students will be introduced to an appropriate 2D programming API (e.g., Java), the game loop, game entities, images, sound, animations, game physics and user input. At the end of the course students will have a good grasp on the concepts of game programming and will be able to produce games for multiple platforms. The course covers the fundamental aspects of images, sounds, animations and sprites and shows how to develop a two-dimensional game using these elements. Mathematics and Physics principles are discussed throughout the course whenever they are pertinent to the topics being presented (e.g. collision detection of sprites).