Programming for Games, Web & Mobile Curriculum
Term 1 Course Descriptions
The purpose of this course is to introduce students to the essential skills needed to create professional level technical communications. Beginning with the basics of what constitutes as excellent presentation, students will learn how to compose engaging presentations. The final assignment for this course is the writing and presentation of a technical topic which will be presented formally to the class. The written document will be suitable to include as a portfolio piece to indicate that the student is adept at writing at a professional technical level.
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.
This course introduces students to the Pre-Production Process, one of the most vital steps in the creation of new intellectual property. Throughout the duration of this course, students will learn how to utilize the fundamental tools necessary for brainstorming, rapid visualization, and creative design as it applies to a variety of fields. Students will be exposed to a high-paced process that borrows from many different disciplines. Students will also be invited to create beyond these boundaries, using any previsualization tool with which they are comfortable. As the preproduction process requires multiple disciplines, students will learn to communicate and delegate within a creative team structure that invites individual strengths to contribute to a greater goal.
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
Digital Theory will introduce the students to various design principles and apply them to video game, web, and interactive software development. This course will offer different design perspectives and techniques, from gaming and non-gaming sources, to build a broader understanding of how to form ideas and systems for all design decisions and aspects of interactive media creation phases.
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.
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.
Building on fundamental programming skills learned in Intro to C++, this course continues to refine the students' abilities as related to game development. Advanced system programming and techniques are explored using the C++ Programming Language, as well as advanced topics pertinent to game development, including design patterns. Students will learn the software technologies and techniques underlying both 2D and 3D games. The course format consists of lectures, hands-on exercises, and assignments. This course will consist of in-class demonstrations and exercises and out of class assignments.
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 explore in-depth iOS and Swift programming language to create a mobile 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 begin working towards networking, web services, and cloud serves.
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
Pre-Production Project Planning establishes core foundation skills in the area of project management. Students will develop an understanding of project planning, execution, tracking, risk analysis, and closure in the project life cycle in the field of game development. Class time will focus on project management theory and in-class, mentored practical assignments in areas such as work breakdown, estimation and scheduling, risk management, project resources, and quality management. Emphasis will be placed on developing a project plan and schedule for current game 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.
In Terms 5 and 6, students will design and build an industry-style project using tools and techniques they have learned in Terms 1-4. Students will plan out their projects, the tools needed to build them, and create a visual design. The size and scope of these deliverables require tremendous dedication and effort, efficient execution, and ongoing team and project management. Term 4’s Pre-Production Design course is a major portion of planning for the Projects. The classes will consist of mentored time to focus on team building, design documents, visual designs, and technical design planning. The foundation for a Project Plan and schedule will also be created concurrently in Term 4‘s Pre-Production Project Planning course, allowing students to begin the development of their Projects at the start of Term 5.
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
Project Development allows students to work solo or in teams to develop their final projects. Set blocks are designated as mentored time. During mentored blocks, industry-based instructors and advisors with varied disciplines will be in the classroom to evaluate student work, discuss difficulties, give advice to help with technical or artistic elements, and monitor students’ progress towards major deliverables and milestones.
These deliverables include all goals set out during Term 4 and will be presented to instructors for Green Light approval. Once the project is underway, its progress will be evaluated on an ongoing basis for course correction, scaling, rescoping, or other required changes up to its completion in Terms 5 and 6.
The final deliverables include a playable, functional game/app, trailer, and screenshots.
This course introduces students to advanced mobile technologies and the embedding and integrating of cutting-edge technology into mobile applications. Students work on developing apps that enable augmented reality, machine learning, or other types of advanced technology, and how to integrate these into iOS or Android apps.
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.
This course will provide students a detailed overview of optimization and debugging techniques across a range of applications. Topics including loop enrolling, performance profiling, and targeted optimization strategies will be combined with coverage of debugging. Debugging is an essential problem-solving technique to produce stable and maintainable code. This course will demonstrate how to rapidly identify the source of a problem and find solutions.
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.
Post Mortem establishes core foundation skills in the area of conducting a project post mortem. In this course, students learn how to plan and conduct a post mortem. They learn the key inputs and outputs of a post mortem and discover how future game development projects can use the derived information.
This course includes lectures and a mentored practical assignment using the student’s industry project.