Semester(s) Offered: Fall / Spring
Credits: 4
Course Call Number: GAMES-UT 181
Prerequisite(s): Introduction to Programming for Games & Introduction to Game Development (Co-requisite: Intermediate Game Development)
Taught By: Wengu Hu / Janet Gilbert / Mitu Khandaker

Intermediate Programming for Games is a course that takes students further with their knowledge of creative coding, building upon existing skills developed during Introduction to Programming for Games. Students’ skills within the Unity3D Game Engine with C# will be furthered, as well as their general procedural problem-solving skills and abstract programming knowledge. Throughout the semester, students be assigned weekly homework, as well as in-class practical work (in the form of ‘game jams’). While students will be creating small games in class weekly, there will also be two larger game creation assignments – one midterm, as well as one final game. Most importantly, the course takes the approach that building up a student’s repertoire of advanced techniques in computer programming will expand their ability to express their artistic vision within their games. This class has Introduction to Programming for Games as a pre-requisite, and Introduction to Game Development as a pre-requisite or co-requisite.

Upon completion of this course, the student will be able to:
1) Demonstrate understanding of abstract computer programming concepts and how these are implemented specifically in the Unity/C# building upon knowledge gained in their previous coding classes.
2) Gain a fresh insight into computer science concepts (e.g. algorithms, object-oriented programming) as a vehicle for doing critical, creative work.
3) Implement game assets and code in an established digital game engine (Unity) in order to create expressive games.
4) Extend the functionality of Unity through use of external tools such as plugins.
5) Gain an understanding of various coding paradigms
6) Manage work and code through use of practices and tools such as debugging and source control.
7) Understand how the scope of a digital game should be constrained in order to make development possible within time and resource limits.
8) Present their work to a group, highlighting its functionality and strengths.