Fall 2020 - IAT 167 D100

Digital Games: Genre, Structure, Programming and Play (3)

Class Number: 7799

Delivery Method: In Person


  • Course Times + Location:

    Sep 9 – Dec 8, 2020: Wed, Fri, 9:30–10:20 a.m.

  • Exam Times + Location:

    Dec 11, 2020
    Fri, 12:00–3:00 p.m.

  • Prerequisites:

    CMPT 166 (or equivalent first year programming course such as CMPT 120, 125, 126, 128, 130 or 135).



Introduces game genres, structures, and programming methods basic to developing games. Students learn how games are designed and how to program the underlying patterns that facilitate play and engagement. Issues of user interface, skills and competition are discussed as are principles of compelling entertainment for players. Students who have obtained credit for, or are currently enrolled in, a CMPT course at the 200 division or higher, or IAT 265 or 267 may not complete this course for credit.


This second programming course covers practical programming concepts in the context of game development and builds on the basic programming concepts learned in CMPT 166 (or equivalent introductory programming course). The course introduces game mechanics and systems, and the programming methods fundamental to their implementation in video games. Students learn how games are structured and designed as well as the translation of the game design document into programmatic code. Issues of user interface, challenge and skill, and competition are discussed as are principles of interaction to facilitate play and engagement and compelling entertainment.

Students will be introduced to the key ideas of event-driven and object oriented programming as well as basic programming practice including systems design, iterative development and evaluation. The course will use the programming language Processing and its IDE to design and develop games of complexity similar to casual, browser-based games.


Course Objectives:

- Introduce concepts in object-oriented and event-driven programming

- Develop a basic understanding of methods of coding 2D interactive interfaces including image manipulation, sprite movement, and collision and edge detection

- Develop an understanding of methods to maintain state in user-interactive environments

- Develop an iterative programming practice and methods to design and evaluate code

- Introduce the fundamentals of game mechanics and interaction design and their applications in digital game development


Learning Outcomes:

Upon successful completion of this course, students will be able to do the following:

- Design, program/debug and test a complete, simple game program

- Utilize an IDE for program development (file organization, coding and debugging)

- Define the main concepts in Object-Oriented Programming: Encapsulation, Inheritance, Polymorphism; identify these concepts in code; and explain the benefits of their usage; design/write code that makes good use of these concepts

- Apply an event-driven programming architecture to create a traditional update/render game loop and handle user input

- Discuss the issues involved in collision detection and solve this problem programmatically for simple cases


  • Lab Participation and Challenges 5%
  • Assignments 34.5%
  • Quiz 5%
  • Midterm Exam 12%
  • Final Exam 33%
  • In-lecture Quizzes 10.5%


If an exam proctoring system like Proctorio will become available at SFU, it may be used for online quizzes and exams.

Students can earn 2% bonus for participating in a qualified research study.



“Learning Processing: A Beginner's Guide to Programming Images, Animation & Interaction” (2015) by Daniel Shiffman; 2nd Edition; Morgan Kaufmann (also avaiable online via SFU lLibrary)
ISBN: 9780123944436


“Fundamentals of Game Design” (2013) by Ernest Adams; 3rd Edition; New Riders
ISBN: 9780321929679

Registrar Notes:


SFU’s Academic Integrity web site http://www.sfu.ca/students/academicintegrity.html is filled with information on what is meant by academic dishonesty, where you can find resources to help with your studies and the consequences of cheating.  Check out the site for more information and videos that help explain the issues in plain English.

Each student is responsible for his or her conduct as it affects the University community.  Academic dishonesty, in whatever form, is ultimately destructive of the values of the University. Furthermore, it is unfair and discouraging to the majority of students who pursue their studies honestly. Scholarly integrity is required of all members of the University. http://www.sfu.ca/policies/gazette/student/s10-01.html


Teaching at SFU in fall 2020 will be conducted primarily through remote methods. There will be in-person course components in a few exceptional cases where this is fundamental to the educational goals of the course. Such course components will be clearly identified at registration, as will course components that will be “live” (synchronous) vs. at your own pace (asynchronous). Enrollment acknowledges that remote study may entail different modes of learning, interaction with your instructor, and ways of getting feedback on your work than may be the case for in-person classes. To ensure you can access all course materials, we recommend you have access to a computer with a microphone and camera, and the internet. In some cases your instructor may use Zoom or other means requiring a camera and microphone to invigilate exams. If proctoring software will be used, this will be confirmed in the first week of class.

Students with hidden or visible disabilities who believe they may need class or exam accommodations, including in the current context of remote learning, are encouraged to register with the SFU Centre for Accessible Learning (caladmin@sfu.ca or 778-782-3112).