Programming for Games, Web & Mobile Curriculum

Term 1 Course Descriptions

As students can expect to present their work in the industry, this course arms them with techniques for managing stress under pressure and delivering compelling presentations. Through a series of pitching exercises and presentation projects, they create and deliver professional presentations appropriate for industry reviews and interactive media demonstrations. Students also develop the skills necessary to explain complicated technical concepts to a general audience.

This course introduces students to 2D and 3D asset creation using dominant industry design software. They develop a window into the world of the artist in order to better understand workflows, constraints, and data formats. Through applied project frameworks, students learn to develop textures, build basic 3D forms and animations, and apply the fundamental principles of 2D image and 3D graphics applicable to all platforms, games engines, and creative software.

Students explore pre-production processes for games, web, and mobile development. As one of the most vital steps in the creation of new intellectual property, each student's grasp of pre-production serves to map out the building blocks of future projects. This course exposes students to the fundamental tools necessary for brainstorming, rapid visualization, and creative design. They are exposed to high-paced processes for many different disciplines and also learn to communicate effectively within a creative team.

An integrated programming language is part of any development environment and is an essential tool for many aspects of games, web, and mobile development. Whether students have strong programming foundations or are just beginning, this course offers them an opportunity to hone basic C# programming skills. Through teacher-guided practice and organic learning, students develop core skills including proficiency with variables, decision making, loops, functions, object-oriented programming, and much more. The course culminates in a group-based programming assignment that allows each team member to show their strengths in developing a text adventure project.

Students explore the C++ programming language and learn the fundamentals of an advanced programming language. They learn core principles required to work on world-class products including memory management, dynamic data containers, and optimization techniques

In this course, students are introduced to the basics of web development including HTML render engines and language, cascading style sheets, and responsive web design. They start by learning the basics of HTML and related technologies, moving from raw text editing to more advanced design software and all of the underlying technologies for web design.

Interactive entertainment software is one of the more intense and creative forms of software development. This course covers the fundamental concepts operations and purposes of modern operating systems. This course will introduce the students to the operation of modern microcomputers. How do the machines operate, manage resources, and generally boot and start from nothing to running Windows, Linus or OSX.

Term 2 Course Descriptions

All programmers are required to understand how to critically evaluate and identify the strengths and weaknesses of games and digital media products in the marketplace. In this course, students learn fundamental concepts and processes involved in the various stages of creating high-quality web and interactive software titles. They examine a wide range of games and applications ranging from the smallest of products to big budget market leaders.

In Intro to Visual Scripting in Unreal, students are introduced to the Unreal game engine. Students will learn to use the Blueprint scripting system to control objects inside the game engine,resulting in multiple playable games with graphics.

This course will give students a solid foundation in the basic concepts of programming data structures and algorithms. Offering a mix of theoretical knowledge and hands-on practical experience, the course teaches students how to select and design data structures and algorithms to solve any problem. They will also study the computational complexities of these designs, and learn to write their own programs in the C# programming language during laboratory sessions.

In this course, students discover how math is relevant to games, web, and mobile development. From Cartesian space through to quaternions, velocity, impact, acceleration and vector operations, they learn how fundamental math and physics rules make interactive entertainment possible.

Mastery of object-oriented programming allows designers to tune their own game scenarios/levels without the need of engineering support. This course grounds students in the rigors of an object-oriented language (C#) used in Unity3D via Visual Studio. Topics covered include inputs, 2D/3D physics, materials, Animation, HUD/Menus and local multiplayer principles. This course concludes with the creation of a space shooter that makes use of the content covered.

Modern web applications are far more capable than their web page counterparts of only a few years ago. Students are exposed to advanced applications using core capabilities of web applications, server side scripting, and AJAX to develop rich web applications. They are taught the key HTML5, CSS3, and JavaScript techniques and constructs to develop these applications and expand skills in server side components that use the most common server side scripting language on the web: php.

Programming for Mobile devices is an essential tool for many aspects of software services. This course focusses on Android Development and educates the student with an understanding of common patterns, Java language syntax, and foundations in building Apps for Android.

Term 3 Course Descriptions

The success of any interactive media project depends on strong publishing, great design, and a team of experts from multiple disciplines and diverse backgrounds. This course provides students with an understanding of how these teams come together and what allows them to perform at the level necessary to build world-class quality titles. Students focus on key leadership skills that are fundamental to facilitating a high performing team.

This course provides students with the methodology to envision, plan, and communicate an innovative design concept. They explore a design process that introduces the core values of user-centred design and includes preproduction and discovery phases of the design process, such as how to properly observe users and make informed design choices. Students develop skills to interview effectively and develop user behaviour patterns before moving on to design brainstorming.

With the student already competent in software engineering techniques, design, development, and iteration, the Rapid Prototyping course exposes the student to a totally different model of software development. The course is taught around the principles of Design Thinking, a modern model that can be applied readily to Games, Apps, and Web.

This course continues the students' learning in how to develop 3D games using Unity3D and Visual Studio. Course content focuses on specific aspects of the Unity3D engine, including common scripting tasks like interactive cameras & cutscenes, humanoid locomotion and animation, AI vision, targeting, navigation, health, weapon systems, complex UI/menu work with setting screens, shader creation via Shadergraph, VFX via ParticleSystem and Visual Effect Graphs and inverse kinematics animation. The culmination of this course is a 3D top-down shooter created by the students.

In this course, students learn how to program like a professional using defensive programming techniques, creating code that realizes when it is broken and alerts the programmer accordingly. Design patterns such as the Factory, Singleton, and Facade are used to tackle larger problems through tried-and-tested programming approaches.

In this course, students go deep with iOS and the Objective C language to create a mobile game or web application. They learn the core features of Apple products such as touch input, movement detection, high-resolution imagery, and audio output. After taking an initial conceptual work through to development, students publish their titles in the Apple App Store.

Students in this course focus on adapting model view controller frameworks to web applications. They investigate the most popular MVC frameworks and develop dynamic web apps with these frameworks (apps that alter what the user sees without refreshing the page in a browser). Using some of the most popular frameworks (AngularJS, React, Vue, etc…), students further expand their knowledge of HTML5 and create template-driven dynamic apps to get familiar with the dynamic binding of data to user interface. These skills are required in order to understand the cloud-based computing introduced in Scalable Network Applications.

Modern software and hardware technology are advancing at a furious pace with no sign of slowing. New technologies are being developed every day and keeping abreast of them is a daunting task. In addition, game developers are often at the forefront integrating these technologies into new entertainment products all the time. This course is designed as an overview of some of the key technologies of the day that are creeping into game development. Today its augmented reality, virtual reality, and artificial intelligence focussed but the goal is more about learning how to learn, adapt and integrate new technologies as they emerge, whatever these technologies are.

Students create an original game in a team-based environment. Students use the Unity3D game engine to realize their vision. Students gain valuable game development experience through overcoming team conflicts and submitting major deliverables. In addition to Unity3D, students also learn version control workflow & best practices, collaborative software development processes, and milestone-based development. The course concludes with a final presentation of their full game experience to the entire Game Design student body and staff.

Term 4 Course Descriptions

Students establish core skills in project management and develop an understanding of project planning, execution and closure, and the project life cycle in the field of interactive media development. Class time is focused on project management theory and mentored practical assignments in areas such as work breakdown, estimation and scheduling, risk management, project resources, quality, and project costs. Emphasis is on developing a project plan and schedule for students' current software design assignments.

Taking the output of the requirements analysis class, students develop a technical design document (TDD) to fully scope out a software project. The TDD helps identify the key software features, development time-scales, test plans, prototype development, and external contingencies.

Interdisciplinary study is a vital component of each student's learning experience. Project Design gives them the opportunity to work closely with students in the Game Design and Digital Design programs, to build relationships and identify potential opportunities to collaborate on future projects.

Using Unity3D and Visual Studio, this course builds upon the fundamental programming skills learned in previous programming and Unity classes. This course continues to refine the students' abilities as related to game development. Topics covered include advanced object-oriented programming, programming patterns, event-based programming, animation state graphs and animation events, mission scripting, rendering and lighting implementation & performance, code performance and profiling and advanced debugging and testing. Students will create a melee combat project and a top-down shooter with mission objectives.

Unreal is a large and complex game engine.  It provides an extensive environment for scripting almost any component of the game using it sblueprint visual scripting environment; however, there are some times when its key to preformance, or simply capabilities that the game developer has in mind that the inherant blueprint environment cannot achieve the developers goals.   In these cases its up to the developer to implement these features and performance enhancements natively in C++ and add them into the Unreal project. This course explores and explains how to create these native level components, what facilities Unreal has to facilitate these components and how to best integrate them into an Unreal project.

Cloud Computing will focus on developing cloud based applications that can be accessed by millions of people simultaneously. Google and Amazon both offer robust cloud based storage, computing and distribution solutions with some vastly different technologies. Students cover the development and deployment aspects of cloud computing and remote databases accessed via the cloud with these engines. Using Google’s App Engine, Python and Django we will build applications that extend the concepts already introduced in Web Apps courses and the expansion of the MVC client side framework into a globally distributable cloud based applications.

Advanced programming for Mobile devices covers concepts and technologies to develop robust iOS and Android applications. In this course you will learn about dependency management on iOS and Android, accessing device sensors, multimedia, app submission, effective version control workflows, build automation and advanced architectures for mobile applications.

This course will introduce the students to the development of technical pipelines used in modern game development. Apps, and games in particular are complex, often real time embedded systems created by teams of people. Development Pipelines explores the tools and techniques required to successfully compile, collate, process and merge all the data and code that goes into a game. They will learn configuration management and the art and science of automatically constructing a final commercial product using a variety of tools and scripting techniques.

Term 5 Course Descriptions

Using the tools and techniques students have learned thus far, they design and build an industry-style project on their own or in collaboration with students from other programs like Game Design and Digital Design. Students plan a project, determine the best tools, execute a project plan, and monitor progress based on milestones. This course extends to Term 6.

This course introduces students to using mobile web content in native App wrappers, producing Hybrid apps that leverage content yet benefit from native App platforms. Additional lessons look at cross-platform mobile development tools in comparison to native development tools.

Building upon previous classes, this course adds skills in support for vertex and pixel shaders. Shaders are the programs that provide all the advanced lighting, shading, and post-processing effects in modern games, applications, and movies. Students learn the HLSL and CGSL shading languages to integrate shader support to the engine created in Rendering Engines 1. They also explore Unity’s shader model and learn how to write a shader for Unity.

Web performance is all about getting the most content through the smallest space as fast as possible. Web applications need to be transferred to the client browser before they can be run, and often to communicate with server side services to run efficiently. As fast as the internet is these days, it’s still very slow compared to desktop machines so we need to optimize.

Term 6 Course Descriptions

The aim of this course is to empower students to create a compelling online presence, to showcase the four key outcomes of the program: a major web, mobile, game, and other advanced technologies. They also learn how to integrate their portfolio with social networks, like LinkedIn, to make them more desirable to employers.

This course prepares students to evaluate and respond effectively to employment postings. They learn how to identify and articulate core strengths and write effective résumés and cover letters. Through mock interviews with actual industry representatives and technical tests for programming positions, students gain invaluable practice and perfect interview strategies. They also work on individual projects, participate in discussions, and practical group activities – particularly roleplaying.

This course teaches students how to learn from mistakes in production and capture opportunities for improvement on future projects. They are encouraged to share their own individual perspective on the strengths and weaknesses of the production as well as participate in a group presentation, allowing other groups to learn from these experiences as well. This is also an opportunity for students to practice speaking confidently about the highs and lows of a production for future interviews.