IAT 806: Intro to Computing (Fall 2026)
Welcome! This is a studio course on programming for interactive and generative work. We start from scratch in JavaScript and p5.js, and move on to learn some basics in computer graphics, using machine learning models in interactive web-based apps, and how software is structured. No prior programming experience is expected.
This page summarizes format, outcomes, policies, grading, and the weekly schedule. The order and details of the sessions are subject to change. When in doubt, the official SFU outline and Canvas announcements win if they ever differ from a draft here.
Format
- Class — A mix of live coding and studio time. Sessions are recorded and posted on this site.
- Prep — Some weeks have a short video or reading to do beforehand. These are posted with each week in the schedule. You should practice some of the programming concepts in advance. And watch the videos I send along.
- Environment — We will use VS Code (if you're comfortable with something else, go for it), a browser, and Git. You will post all work and assignments on Github.
- Expectations — plan roughly 5–7 hours/week beyond class for assignments and project work.
- Two weeks have no class. Sept 30 and Nov 11 are statutory holidays. Those weeks run as take-home modules: material to watch and something to make, no in-class session.
Learning Outcomes
By the end of this course you should be able to:
- Read, write, and debug JavaScript from scratch.
- Build interactive, animated, and generative work with p5.js.
- Structure a software project using version control, sensible file organization, and documentation.
- Work with core computer graphics concepts: coordinate systems and transformations, raster and vector, and what the GPU does.
- Use machine learning models in the web
- Recognize and apply common software design patterns.
- Simulate motion, forces, and emergent behaviour.
- Scope, build, document, and exhibit an original project of your own definition.
Resources
- Textbook — none required. Everything we use is free and online. I will share teaching material for each class.
- p5.js reference — the primary reference for the course.
- The Coding Train — Daniel Shiffman's video courses, used for some prep material.
- The Nature of Code — free online, used late in the term.
- ml5.js — machine learning models for the browser.
- Environment — VS Code, a current browser, and a free GitHub account. We set all of this up in week 1.
Session videos & slides
Each week's recording and slides will be linked in the schedule table below as they go up.
Course Policies
Contacting us
Use the course Discord for questions about material and assignments, so everyone gets the answer. Use SFU email for anything official such as concessions, grading disputes, accommodations. Please allow up to two business days for email replies.
Conduct
This course is a harassment-free environment for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion, or technical experience. If something happens that makes that untrue, tell me. If I am the problem, SFU has channels that do not route through me.
Illness
If you are sick, stay home. Sessions are recorded and material is posted. Let me know so we can work out how you catch up.
Accessibility
If anything about how this course runs makes it harder for you to do your best work, tell me early and we will adjust.
Late policy
10% a day for two days, 20% after that. If something real is going on, talk to me before the deadline rather than after.
AI policy
You may use AI tools to ask questions, have things explained, talk through an approach, and help find a bug. That is a reasonable use of them.
You may not have an agent write your code for you, on assignments or on the project. The point of this course is that you can write and read code yourself.
If you used AI in any capacity on something you submit, say so in a short note describing what you used it for. If you did not use it, state that too. This applies to code, writing, and images. You should be able to explain any line you hand in, and I may ask you to.
Grading
| Component | Weight |
|---|---|
| Assignments | 40% |
| Final project (proposal, midpoint demo, final work) | 35% |
| Final documentation | 10% |
| In-class participation | 15% |
These are roughly the distribution of grades. I will give plenty of extra grade as we move on. So don't stress too much.
Final Project
You define one project early and build it through the term. You start thinking about it in week 1, discuss it in week 2, propose it in October, demo a running version in November, and exhibit it at the end of term. I know that people come in with different expertise. THE QUALITY OF YOUR FINAL PROJECT depends on where you start.
You choose the form and declare it in your proposal:
- An artifact / installation, with documentation and a video, or
- An artifact and a short paper in a conference format, if you are working toward a publication.
Either way I expect to see code in live
About the syllabus
This syllabus is subject to change. But use it as where we I will post all changes. I will send announcements when assignments are out. And I will update this table regulrarly.
Acknowledgements
This course builds on versions of IAT 806 taught by SIAT colleagues before this offering, including Philippe Pasquier, Wolfgang Stuerzlinger, and on the open teaching materials of Daniel Shiffman (The Coding Train) and the Processing Foundation.
Course Syllabus
3 readings (show more)collapse
- Come with project ideas
- Project ideas presented
- Assignment 1
- Project proposal
- Assignment 2
- Midpoint project demo
- Assignment 3
- Assignment 4
- Final project and documentation
| Date | Topic | Covered | Slides | Readings & Prep | Assignment Out | Assignment Due |
|---|---|---|---|---|---|---|
W1 Sep 16 | Setup and your first sketch | Git and GitHub; HTML, JavaScript, and p5.js; the canvas and coordinate system; shape and colour | - | |||
W2 Sep 23 | Motion and interaction | Variables; the draw loop; mouse and keyboard input; conditionals; program state | 3 readings (show more)collapse | - |
| |
No class Sep 30 | No class — National Day for Truth and Reconciliation | Take-home module: loops, arrays, and writing your own functions | — | - | - | - |
W3 Oct 7 | Systems of many | Loops and arrays in practice; randomness; grids and generative composition | — | - | - |
|
W4 Oct 14 | Objects | Classes and instances; arrays of objects; particle systems | — | - | - |
|
W5 Oct 21 | Space, motion, and pixels | Transformations and the matrix stack; vectors; the pixel array and image filters; offscreen buffers and blend modes | — | - | - |
|
W6 Oct 28 | Machine learning in the browser | Pose, hand, face, and sound models with ml5.js; working with noisy real-time input; training a small model; ethics of capture | — | - | - | - |
W7 Nov 4 | Data, APIs, and the network | Asynchronous JavaScript; calling APIs; language models and embeddings; keeping keys out of your repo; publishing your work | — | - | - |
|
No class Nov 11 | No class — Remembrance Day | Take-home module: how graphics are drawn, what a shader is, and a first look at 3D in p5 | — | - | - |
|
W8 Nov 18 | Designing software | State machines; events; composition; separating program state from rendering; refactoring | — | - | - | - |
W9 Nov 25 | Forces and emergence | Vectors as forces; steering and flocking; cellular automata | — | - | - |
|
W10 Dec 2 | Noise, oscillation, and making things interesting | Perlin noise; sine and cosine as motion; particle systems driven by live input from a webcam or a model | — | - | - | - |
Exam period TBA | Exhibition | Final presentations. Date TBA | — | - | - |
|