Programming for Games, Web + Mobile CURRICULUM

Specializations

Students start with a strong foundation — from design and production, to increasingly complex development techniques and programming languages. Once they've mastered the fundamentals, they go deep into advanced development for one of the following two specialized areas. 

  • Game Development 
  • Web Development 

Term 1 Course Descriptions

Interactive entertainment software is one of the more intense and creative forms of software development. Students in this course encounter the fundamental concepts and processes involved in various stages of creating high-quality entertainment software titles. They explore how a typical development cycle works, how to identify risks, and learn what is involved in communicating a clear product vision to a development team. Students are also introduced to project management tools, contracts, and licensing in game production.

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. They also learn time-saving techniques that can be applied to their own games and web apps.

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.

Exploring the arc of game, web, and mobile development from the earliest text-based adventures to modern, socially enabled interactive products, students gain an understanding of the progression of the technology landscape. They analyze trends to build insight into what the next bounce of the ball may be.

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.

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.

Students are challenged to discover the best file formats and how to organize data in the most effective way. Through applied project frameworks, this course teaches students how to make any type of interactive media project using structural best practices such as optimal file formats, folder structures, and data management techniques. They learn how to integrate and manage data from a wide range of sources as well as key data formats for including textures, 3D models, web, XML, and audio. Specific knowledge about sourcing, formatting, and audio assets helps to ensure high-quality projects.

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.

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 starts in Term 1 and continues in Terms 4 and 5.

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.

Term 2 Course Descriptions

Being able to evaluate and translate the ideas of the designer into technical specifications is a vital skill for programmers. Through applied project frameworks, students identify the key requirements for solving software development problems and produce a requirements analysis plan to industry standard on a set topic. They also learn about the UML visual modelling language.

Building upon the principles from Design Tools 1, students closely examine the techniques used to create 2D visuals, animations, and how to incorporate these into games, web, and mobile apps. They also create game-ready 3D models and efficient UV mapping coordinates using standard photo-editing software for detailed colour, specular, ambient, and normal texture maps. This course concludes with an introduction to simple skeletal rigs and how to use them to animate models.

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.

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.

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 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.

Required Courses for Game Development Stream

The Unity game engine is the industry standard for fast prototyping and development of 2D and 3D games. Students discover how different game components interact with each other and how to define and breakdown a game component into small solvable problems. They apply and expand their C# programming skills by creating scripts that control objects inside of a game engine, resulting in a small playable game demo complete with interactive visuals and audio.

Beginning with how to identify and understand game mechanics, students learn how to effectively build systems for games and tune them for desired results. The course concludes with a one-button game jam where students make a game with a single-button as input that must still be fun or engaging.

Required Courses for Web Development Stream

This course further develops the concepts introduced through the development of interactive web applications from Term 1. 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.

Term 3 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.

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.

Students explore how to develop on the Android platform using the Java programming language. They use the Android software development kit to create advanced mobile development games and apps. The result is a finished product that can be published on the Google Play Store and Amazon Marketplace.

Required Courses for Game Development Stream

Continuing with students' skills and expertise in Unity, this course focuses on specific aspects of the Unity engine, including common scripting tasks such as character navigation, animation, physics, and importing and modifying art assets such as models, textures, and materials.

Level design is where “the rubber meets the road” in interactive design. It's where gameplay, art, audio, and narrative all come together to create the player’s experience. Students in this course learn the basics of level design theory and what it means to be a level designer in the game industry today. They discover how level design theory applies to many different genres of games and recognize the tools in a level designer’s arsenal that shape exciting gameplay experiences.

Required Courses for Web Development Stream

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 the two most popular frameworks, Backbone.js and Angular.js, 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. Lessons range from lectures to hands-on development of applications and web pages, in-class exercises, and out-of-class assignments.

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. This course culminates in an individual and team presentation.

Term 4 Course Descriptions

Successfully shipping a game relies on production, development, and QA all coming together. This course helps students establish core skills in quality assurance for games, web, and mobile projects. They gain an appreciation of how these teams work together and discover key components of QA, including test plan creation, bug reporting, bug finding, and project management.

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.

Students learn how to take large data sets and visualize them, such as heat-mapping to optimize the game experience or displaying large volumes of information from online sources. They also learn about the most efficient ways to sort, organize, and display data in addition to becoming familiar with the XML programming language.

Required Courses for Game Development Stream

In this course, students are challenged to create the illusion of intelligence. They learn different techniques, such as state machines, path finding, goal setting, swarming, and evasion. The focus is on creating intelligent worlds with scene and level management, including features such as dynamic weather, interactive props, and realistic story flow.

Required Courses for Web Development Stream

Students are introduced to Web APIs and how to integrate games and web applications with online services such as Facebook and Twitter. They learn about payment providers such as PayPal and how to incorporate a marketplace into a product. This course also challenges students to utilize online state tracking provider (e.g. Tableau) in a game or app.

Term 5 Course Descriptions

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.

Programming for mobile devices is an essential tool for many aspects of software services. This course focuses on iOS development, and teaches students an understanding of common patterns, Objective-C language syntax, and foundations in building Apps for iOS.

Required Courses for Game Development Stream

This course “looks under the hood” to allow students to learn how to write a game engine from the ground up. Using C++, the Win32 API, and Microsoft DirectX, students learn all about the render pipeline, texture and mesh management, audio devices, and input techniques. By the end of this course, each student has developed a small game engine capable of rendering 3D models.

Required Courses for Web Development Stream

Students discover how to create lightweight and efficient real-time applications that run across distributed devices such as PCs and mobile devices. Through structured projects, they develop applications that take full advantage of cloud technologies.

Term 6 Course Descriptions

This course provides students with the opportunity to choose an area of specialization and go deep into their project from Terms 4 and 5 to add or extend a feature to an advanced state (e.g. social network integration, shaders, advanced networking, cloud). The topics students choose are designed to feature as a core piece of their portfolios, which will assist in obtaining employment after graduation. Each student also writes a compelling case study exploring why they picked a particular technology and how it was effective.

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.

Students discover the lowest level protocols that drive the internet: IP, UDP, and TCP. Working with the Winsock protocol, they make connections to remote computers across the LAN and internet. Students also learn the differences between reliable and unreliable data transfer and which is the most beneficial for different situations. Assignments include writing an event manager to handle incoming and outgoing data from a networked application. Advanced topics such as synchronicity and prediction to overcome latency are also covered in addition to middleware solutions, such as Photon for Unity.

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 Rendering Engines 1, 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.

Required Courses for Web Development Stream

Students in this course explore how to maximize the performance of website delivery over the internet – for example: how to optimize images to reduce bandwidth use and tools and techniques including JSON and minification. They also learn how to use distributed resource loading with threads to maximize performance.