SD5913 / WEEK 07 / 22 OCTOBER 2026

Build something

amazing.

Recap. Midterm. One class, two views. Your team’s next big idea.

TODAY / RECAP → QUIZ → BUILD

Today

01

Before 10:00 / key slides from Weeks 1–6, then Ask Me Anything

02

10:00–10:30 / midterm on Canvas / 40 questions

03

10:30–10:35 / break

04

10:35–10:45 / ball classes demo, inspiration and team setup

05

10:45–11:00 / form your team and submit your idea

06

11:00–11:15 / submit one image mock-up

07

11:15–11:20 / check submissions and wrap up

SD5913 / WEEK 07 / 22 OCTOBER 2026

02

04 · PROGRAMS

Programs are instructions for changing state

STATE 0

Before

A blank canvas, a file, a number.

PROGRAM

Instructions

Step, step, step…

STATE 1

After

A picture, a saved file, a result.

SD5913 / WEEK 07 / RECAP WEEK 01

03

07 · TOOLS · 03

Git and GitHub

Git tracks every change on your computer. git-scm.com

GitHub keeps a copy online and lets others see it. github.com

github.com/settings/education/benefits — add your PolyU email first

github.com/git-guides

GitHub Education only accepts a PolyU address — polyu.edu.hk, connect.polyu.hk and the other school-issued domains.

SD5913 / WEEK 07 / RECAP WEEK 01

04

03 · THE SHIFT

Three questions, all semester

Every exercise this week is one of these, and so is every quiz question:

Here is code that runs. What does it print?

Here is code that is wrong. Where?

Here is a spec — a sentence about what it must do — and some code. Does the code meet it?

None of them ask you to write a program from a blank file. That comes later, and by then you will be able to tell whether what you wrote is right.

SD5913 / WEEK 07 / RECAP WEEK 02

05

04 · TYPES

Six types, and that is most of it

3 int a whole number

3.14 float a number with a decimal point

"3" str text. The quotes are what make it text

True bool yes or no

[3, 1, 4] list several things, in order

{"n": 3} dict values you look up by name

You will meet tuple and set later. These six carry the whole course.

SD5913 / WEEK 07 / RECAP WEEK 02

06

05 · THE LINE THAT FORBIDS IT

A cap never sits under a drawn cell

cap = (... and last_square_empty)

last_square_empty was set by the previous h in the same w — the cell above. So a cap is only drawn under an empty cell, and the picture can be checked: find a cap under a bar and the code is wrong.

That is a specification. A sentence about the output that is either true or false. To keep it true, the program has to remember one thing from the cell before — that is what last_square_empty is for.

SD5913 / WEEK 07 / RECAP WEEK 02

07

07 · UV

A repo that does not say what it needs

is not finished.

SD5913 / WEEK 07 / RECAP WEEK 02

08

03 · A LOOP

That is a loop, and that is all of it

for hour, height in enumerate(heights, start=1):

once for each item — twenty-four numbers, twenty-four turns

the names change each turn — hour and height mean something different every time round

the indented lines are what happens — the four spaces are the loop

The same pattern can update a picture instead of printing a value.

SD5913 / WEEK 07 / RECAP WEEK 03

09

03 · A FUNCTION

A rule with a name

def bar(height): — something goes in, something comes out.

The name in the brackets is a name for whatever you hand it. It exists only inside.

No return, Python returns None; callers must handle that value.

Four spaces of indentation say which lines are inside the function.

Check the returned value when you use a generated function.

SD5913 / WEEK 07 / RECAP WEEK 03

10

04 · FOUR RULES

Four rules for taking somebody else's numbers

cache

Fetch once, keep the file

Fetch, save the raw reply into data/, then parse the file. Your script runs with no internet, and the committed file is what makes the repo reproducible.

html

Same idea, messier

No JSON? A web page is a tree, and one line of BeautifulSoup walks it: select("table.wikitable"), then the rows. The typhoon season table on Wikipedia is one.

rot

Watch the line rot

The tidal-stream endpoint behind week 2's rings moved in 2023 — fetch_tides.py says so in a comment. A cached file outlives the URL it came from.

polite

Be polite

A User-Agent that says who you are and what for. One request, not a loop of them. You are a guest on somebody else's server.

SD5913 / WEEK 07 / RECAP WEEK 03

11

07 · FIVE WAYS

The same numbers, five ways

a line bars a clock thirty days at once a month, day x hour

a line · bars · the clock · thirty days overlaid · September as a grid, one row per day, one cell per hour

SD5913 / WEEK 07 / RECAP WEEK 03

12

02 · THE PATH

Three parts of the interaction

input

A person chooses

The day selector supplies 17.

state

The app keeps the value

The current run sees day = 17.

response

The surface changes

The chart draws that record.

SD5913 / WEEK 07 / RECAP WEEK 04

13

05 · THE LOOP

One promise, four steps

01

Write the test

Say what response would convince you.

02

See it fail

Read the failure: does it point to the missing feature?

03

Add the route

Implement the smallest change that meets the promise.

04

Run it again

The same test now passes.

SD5913 / WEEK 07 / RECAP WEEK 04

14

04 · FRONTEND / BACKEND · 1 OF 2

Ask for September

/tides?month=9 BROWSER Frontend Choose September Ask for records SERVER Backend Validate month Read saved data GET

SD5913 / WEEK 07 / RECAP WEEK 04

15

04 · FRONTEND / BACKEND · 2 OF 2

Return data. Draw in the browser.

200 OK · 30 daily records BROWSER Frontend Choose a day Draw 24 heights SERVER Backend September records Return JSON JSON

SD5913 / WEEK 07 / RECAP WEEK 04

16

01 · SPATIAL AXES + COLOUR CHANNELS

One position. Three channel values.

x = column (width) y row 0 [255,40,20] 0 [20,200,70] 1 [30,90,240] 2 1 [255,210,40] [80,80,80] [240,230,215] pixel[y][x] = [red, green, blue]

SD5913 / WEEK 07 / RECAP WEEK 05

17

03 · IMAGE VS VIDEO

Time is another axis of change

One RGB image: height x width x channels.

A raw frame sequence: frames x height x width x channels.

Playback speed and frame order shape the motion we perceive.

A simple animation is a list of still images in order.

frame 0 -> time 0

frame 1 -> time 0.2 s

frame 2 -> time 0.4 s

same frames + new order = different motion

SD5913 / WEEK 07 / RECAP WEEK 05

18

04 · U-NET · TRAINING AND GENERATION

Learn to remove noise; then use that skill.

TRAIN VAE encoder image to latent z0 add noise noisy latent zt U-Net predict noise compare prediction vs noise GENERATE random noise zT starting latent U-Net x N clean latent z0 VAE decoder latent to pixels RGB image visible result Prediction error updates model weights. Generation changes the latent; model weights stay fixed.

SD5913 / WEEK 07 / RECAP WEEK 05

19

01 · ORDERED VALUES

A sound gives values positions in time

A mono sound can use a one-dimensional array.

Each number describes the signal at one instant.

The index tells us which sample comes next.

Zero is the centre of this signed signal.

samples = [

0.00, 0.04, 0.08,

0.04, 0.00, -0.04,

-0.08, -0.04

]

print(samples[2]) # 0.08

SD5913 / WEEK 07 / RECAP WEEK 06

20

01 · THE AUDIO CLOCK

A sample rate gives the sequence a duration

22,050 samples per second.

Two seconds need 44,100 mono samples.

Duration = sample count / sample rate.

sample_rate = 22050

seconds = 2

count = sample_rate * seconds

print(count) # 44100

# one sample per time step

time = index / sample_rate

SD5913 / WEEK 07 / RECAP WEEK 06

21

02 · TWO DIFFERENT RATES

Frequency and sample rate

Keep SAMPLE_RATE at 22050.

Change FREQUENCY from 220 to 440.

Predict what changes and what stays the same.

# sample clock

SAMPLE_RATE = 22050

# repeating waveform

FREQUENCY = 440

# unchanged duration

SECONDS = 2

SD5913 / WEEK 07 / RECAP WEEK 06

22

BEFORE 10:00 / CLASSPOINT / YOUR QUESTIONS

Ask me anything.

What still feels unclear?

Send your questions before the 10:00 test.

SD5913 / WEEK 07 / 22 OCTOBER 2026

23

Short answer

MIDTERM / 22 OCTOBER / 10% OF COURSE

Get ready for Canvas.

40 multiple-choice questions. 30 minutes. Open book.

The test covers taught material from Weeks 1–6.

Open the quiz when instructed. Report access problems immediately.

Follow the announced rules for tools and collaboration.

SD5913 / WEEK 07 / 22 OCTOBER 2026

24

CANVAS / 40 QUESTIONS / 30 MINUTES

Midterm quiz.

10:00–10:30.

SD5913 / WEEK 07 / 22 OCTOBER 2026

25

10:30–10:35 / AFTER THE CANVAS TEST

Take a short break.

Back at 10:35.

SD5913 / WEEK 07 / 22 OCTOBER 2026

26

AFTER THE BREAK / CLASSES / PFAD WEEK 7

A class defines each ball.

class Ball:

def __init__(self, x, y, vx, vy):

self.x = x

self.y = y

self.vx = vx

self.vy = vy

self.radius = 1

Ball is the class. Each object gets its own position and velocity.

SD5913 / WEEK 07 / 22 OCTOBER 2026

27

AFTER THE BREAK / CLASSES / PFAD WEEK 7

A method changes this ball.

class Ball:

# __init__ is shown on the previous slide.

def update(self, seconds):

self.vy += GRAVITY * seconds

self.x += self.vx * seconds

self.y += self.vy * seconds

GRAVITY = 28. self is this ball; seconds is the time to advance.

SD5913 / WEEK 07 / 22 OCTOBER 2026

28

AFTER THE BREAK / CLASSES / PFAD WEEK 7

Call red. Does blue move?

red = Ball(x=16, y=8, vx=14, vy=-5)

blue = Ball(x=44, y=14, vx=-10, vy=-9)

red.update(0.1)

print(f"red=({red.x:.2f}, {red.y:.2f})")

print(f"blue=({blue.x}, {blue.y})")

Predict first. Run ball.py to check which object moves.

SD5913 / WEEK 07 / 22 OCTOBER 2026

29

ONE MODEL / TWO VIEWS

Same motion. Two ways to draw it.

One simulation

red + blue

x, y, vx, vy

ASCII

R B

Pygame

Coloured circles

Both views read the same Ball objects.

SD5913 / WEEK 07 / 22 OCTOBER 2026

30

LAPTOP DEMO / WATCH, PREDICT, SAVE

Change the class. Watch both views.

From pfad: uv run week07/ball_both.py

Keep week07/ball.py open beside the two views.

Predict: what changes if GRAVITY goes from 28 to 56?

Save. Both views reset and use the edited class.

Example and optional practice

SD5913 / WEEK 07 / 22 OCTOBER 2026

31

NEXT / 10:45–11:15 / YOUR GROUP PROJECT

Build something amazing

with your team.

SD5913 / WEEK 07 / 22 OCTOBER 2026

32

INSPIRATION / REINVENT AN APP

What do you wish it did?

Choose an app you know, or a tool you genuinely need.

Observe one useful behaviour. Describe its inputs, outputs and edge cases.

Rebuild that interaction in your own way. Add the feature you wish existed.

Explore REA: tools for inspecting software

SD5913 / WEEK 07 / 22 OCTOBER 2026

33

INSPIRATION / GAME MASHUPS

Two mechanics. A new experience.

What if a puzzle game had rhythm? What if a racing game changed with sound?

Combine mechanics around one compelling player action.

Give the result its own rules, look and sound.

Explore Melty’s game-remix examples

SD5913 / WEEK 07 / 22 OCTOBER 2026

34

AMBITION / A BIG VISION, A FIRST PLAYABLE MOMENT

Start with the exciting part.

Imagine the version you would love to use or play.

Choose one interaction that makes the idea special.

What will a person do? What changes? What feedback tells them it worked?

Identify the hardest assumption. Make that your first experiment.

SD5913 / WEEK 07 / 22 OCTOBER 2026

35

10:44–10:45 / TEAM REGISTRATION

Find your people. Join one team.

Watch Gio demonstrate the actual Canvas group-registration route.

Form a team around an idea you want to build together.

Choose one representative for the text and image submissions.

Use the same team name on both. Ask for help if you need a team.

SD5913 / WEEK 07 / 22 OCTOBER 2026

36

10:45–11:00 / TEAM TEXT · 01 / TEAM IDEA

15 min

Form your team. Aim big.

Join the same Canvas team. Pick a direction everyone wants to make.

Describe who it is for, what they do, and how your app or game responds.

Name what you will reinvent or combine, and the first interaction you will test.

One representative submits one idea text on ClassPoint, with your team name.

SD5913 / WEEK 07 / 22 OCTOBER 2026

37

Short answer

11:00–11:15 / TEAM IMAGE · 02 / PROJECT MOCK-UP

15 min

Show what you want to build.

Sketch, mock up or generate one image of the app or game in use.

Show the main screen or moment of play. Label the action and response.

Match the idea you just submitted. A photographed paper sketch is fine.

The same representative submits one image on ClassPoint, with the team name.

SD5913 / WEEK 07 / 22 OCTOBER 2026

38

Image upload

11:15–11:20 / CHECK AND WRAP UP

One idea. One image. One team.

Your idea text and image mock-up are both visible in ClassPoint.

Both use the same team name and describe the same project.

Everyone has joined the correct Canvas team.

Reopen both submissions together; ask for help before leaving.

SD5913 / WEEK 07 / 22 OCTOBER 2026

39

GROUP PROJECT / 40%

Turn the idea into a shared build.

One shared GitHub repository showing everyone’s contributions.

Original code and multimedia. Credit the tools and assets you use.

Agree the project scope by Week 8.

Today’s idea and mock-up are the starting point for that conversation.

SD5913 / WEEK 07 / 22 OCTOBER 2026

40

SEPARATE / INDIVIDUAL ASSIGNMENT 3 / 15%

Your interactive experience.

Due Sunday 1 November 2026, 23:59 HKT.

Build something with meaningful user input and clear feedback.

Submit your own GitHub repository URL on Canvas.

Follow the existing brief, README, PROCESS and credit requirements.

SD5913 / WEEK 07 / 22 OCTOBER 2026

41

Aim big.

Build together.

An idea worth making. An interaction worth trying.

SD5913 / WEEK 07 / 22 OCTOBER 2026

a·t4x

SD5913 / Programming / Week 07
1

SD5913 / WEEK 07 / 22 OCTOBER 2026

Build something

amazing.

Recap. Midterm. One class, two views. Your team’s next big idea.

2

TODAY / RECAP → QUIZ → BUILD

Today

01 Before 10:00 / key slides from Weeks 1–6, then Ask Me Anything

02 10:00–10:30 / midterm on Canvas / 40 questions

03 10:30–10:35 / break

04 10:35–10:45 / ball classes demo, inspiration and team setup

05 10:45–11:00 / form your team and submit your idea

06 11:00–11:15 / submit one image mock-up

07 11:15–11:20 / check submissions and wrap up

3

04 · PROGRAMS

Programs are instructions for changing state

STATE 0

Before

A blank canvas, a file, a number.

PROGRAM

Instructions

Step, step, step…

STATE 1

After

A picture, a saved file, a result.

4

07 · TOOLS · 03

Git and GitHub

Git tracks every change on your computer. git-scm.com

GitHub keeps a copy online and lets others see it. github.com

GitHub Education only accepts a PolyU address — polyu.edu.hk, connect.polyu.hk and the other school-issued domains.

5

03 · THE SHIFT

Three questions, all semester

Every exercise this week is one of these, and so is every quiz question:

None of them ask you to write a program from a blank file. That comes later, and by then you will be able to tell whether what you wrote is right.

6

04 · TYPES

Six types, and that is most of it

3             int      a whole number
3.14          float    a number with a decimal point
"3"           str      text. The quotes are what make it text
True          bool     yes or no
[3, 1, 4]     list     several things, in order
{"n": 3}      dict     values you look up by name

You will meet tuple and set later. These six carry the whole course.

7

05 · THE LINE THAT FORBIDS IT

A cap never sits under a drawn cell

cap = (... and last_square_empty)

last_square_empty was set by the previous h in the same w — the cell above. So a cap is only drawn under an empty cell, and the picture can be checked: find a cap under a bar and the code is wrong.

That is a specification. A sentence about the output that is either true or false. To keep it true, the program has to remember one thing from the cell before — that is what last_square_empty is for.

8

07 · UV

A repo that does not say what it needs

is not finished.

9

03 · A LOOP

That is a loop, and that is all of it

for hour, height in enumerate(heights, start=1):

The same pattern can update a picture instead of printing a value.

10

03 · A FUNCTION

A rule with a name

def bar(height): — something goes in, something comes out.

Check the returned value when you use a generated function.

11

04 · FOUR RULES

Four rules for taking somebody else's numbers

CACHE

Fetch once, keep the file

Fetch, save the raw reply into data/, then parse the file. Your script runs with no internet, and the committed file is what makes the repo reproducible.

HTML

Same idea, messier

No JSON? A web page is a tree, and one line of BeautifulSoup walks it: select("table.wikitable"), then the rows. The typhoon season table on Wikipedia is one.

ROT

Watch the line rot

The tidal-stream endpoint behind week 2's rings moved in 2023 — fetch_tides.py says so in a comment. A cached file outlives the URL it came from.

POLITE

Be polite

A User-Agent that says who you are and what for. One request, not a loop of them. You are a guest on somebody else's server.

12

07 · FIVE WAYS

The same numbers, five ways

a line bars a clock thirty days at once a month, day x hour

a line · bars · the clock · thirty days overlaid · September as a grid, one row per day, one cell per hour

13

02 · THE PATH

Three parts of the interaction

INPUT

A person chooses

The day selector supplies 17.

STATE

The app keeps the value

The current run sees day = 17.

RESPONSE

The surface changes

The chart draws that record.

14

05 · THE LOOP

One promise, four steps

01 Write the test

Say what response would convince you.

02 See it fail

Read the failure: does it point to the missing feature?

03 Add the route

Implement the smallest change that meets the promise.

04 Run it again

The same test now passes.

15

04 · FRONTEND / BACKEND · 1 OF 2

Ask for September

/tides?month=9 BROWSER Frontend Choose September Ask for records SERVER Backend Validate month Read saved data GET
16

04 · FRONTEND / BACKEND · 2 OF 2

Return data. Draw in the browser.

200 OK · 30 daily records BROWSER Frontend Choose a day Draw 24 heights SERVER Backend September records Return JSON JSON
17

01 · SPATIAL AXES + COLOUR CHANNELS

One position. Three channel values.

x = column (width) y row 0 [255,40,20] 0 [20,200,70] 1 [30,90,240] 2 1 [255,210,40] [80,80,80] [240,230,215] pixel[y][x] = [red, green, blue]
18

03 · IMAGE VS VIDEO

Time is another axis of change

One RGB image: height x width x channels.

A raw frame sequence: frames x height x width x channels.

Playback speed and frame order shape the motion we perceive.

A simple animation is a list of still images in order.

frame 0 -> time 0
frame 1 -> time 0.2 s
frame 2 -> time 0.4 s
 
same frames + new order = different motion
19

04 · U-NET · TRAINING AND GENERATION

Learn to remove noise; then use that skill.

TRAIN VAE encoder image to latent z0 add noise noisy latent zt U-Net predict noise compare prediction vs noise GENERATE random noise zT starting latent U-Net x N clean latent z0 VAE decoder latent to pixels RGB image visible result Prediction error updates model weights. Generation changes the latent; model weights stay fixed.

Code: week05/diffusion/generate.py

20

01 · ORDERED VALUES

A sound gives values positions in time

A mono sound can use a one-dimensional array.

Each number describes the signal at one instant.

The index tells us which sample comes next.

Zero is the centre of this signed signal.

samples = [
    0.00, 0.04, 0.08,
    0.04, 0.00, -0.04,
    -0.08, -0.04
]
 
print(samples[2])  # 0.08
21

01 · THE AUDIO CLOCK

A sample rate gives the sequence a duration

22,050 samples per second.

Two seconds need 44,100 mono samples.

Duration = sample count / sample rate.

sample_rate = 22050
seconds = 2
 
count = sample_rate * seconds
print(count)  # 44100
 
# one sample per time step
time = index / sample_rate
22

02 · TWO DIFFERENT RATES

Frequency and sample rate

Keep SAMPLE_RATE at 22050.

Change FREQUENCY from 220 to 440.

Predict what changes and what stays the same.

# sample clock
SAMPLE_RATE = 22050
 
# repeating waveform
FREQUENCY = 440
 
# unchanged duration
SECONDS = 2
23

BEFORE 10:00 / CLASSPOINT / YOUR QUESTIONS

Ask me anything.

What still feels unclear?

Send your questions before the 10:00 test.

ClassPoint · short answer — answer on the projector

24

MIDTERM / 22 OCTOBER / 10% OF COURSE

Get ready for Canvas.

40 multiple-choice questions. 30 minutes. Open book.

The test covers taught material from Weeks 1–6.

Open the quiz when instructed. Report access problems immediately.

Follow the announced rules for tools and collaboration.

25

CANVAS / 40 QUESTIONS / 30 MINUTES

Midterm quiz.

10:00–10:30.

26

10:30–10:35 / AFTER THE CANVAS TEST

Take a short break.

Back at 10:35.

27

AFTER THE BREAK / CLASSES / PFAD WEEK 7

A class defines each ball.

class Ball:
    def __init__(self, x, y, vx, vy):
        self.x = x
        self.y = y
        self.vx = vx
        self.vy = vy
        self.radius = 1

Ball is the class. Each object gets its own position and velocity.

28

AFTER THE BREAK / CLASSES / PFAD WEEK 7

A method changes this ball.

class Ball:
    # __init__ is shown on the previous slide.
 
    def update(self, seconds):
        self.vy += GRAVITY * seconds
        self.x += self.vx * seconds
        self.y += self.vy * seconds

GRAVITY = 28. self is this ball; seconds is the time to advance.

29

AFTER THE BREAK / CLASSES / PFAD WEEK 7

Call red. Does blue move?

red = Ball(x=16, y=8, vx=14, vy=-5)
blue = Ball(x=44, y=14, vx=-10, vy=-9)
 
red.update(0.1)
print(f"red=({red.x:.2f}, {red.y:.2f})")
print(f"blue=({blue.x}, {blue.y})")

Predict first. Run ball.py to check which object moves.

30

ONE MODEL / TWO VIEWS

Same motion. Two ways to draw it.

One simulation

red + blue

x, y, vx, vy

ASCII

R B

Pygame

Coloured circles

Both views read the same Ball objects.

31

LAPTOP DEMO / WATCH, PREDICT, SAVE

Change the class. Watch both views.

From pfad: uv run week07/ball_both.py

Keep week07/ball.py open beside the two views.

Predict: what changes if GRAVITY goes from 28 to 56?

Save. Both views reset and use the edited class.

Example and optional practice

32

NEXT / 10:45–11:15 / YOUR GROUP PROJECT

Build something amazing

with your team.

33

INSPIRATION / REINVENT AN APP

What do you wish it did?

Choose an app you know, or a tool you genuinely need.

Observe one useful behaviour. Describe its inputs, outputs and edge cases.

Rebuild that interaction in your own way. Add the feature you wish existed.

Explore REA: tools for inspecting software

34

INSPIRATION / GAME MASHUPS

Two mechanics. A new experience.

What if a puzzle game had rhythm? What if a racing game changed with sound?

Combine mechanics around one compelling player action.

Give the result its own rules, look and sound.

Explore Melty’s game-remix examples

35

AMBITION / A BIG VISION, A FIRST PLAYABLE MOMENT

Start with the exciting part.

Imagine the version you would love to use or play.

Choose one interaction that makes the idea special.

What will a person do? What changes? What feedback tells them it worked?

Identify the hardest assumption. Make that your first experiment.

36

10:44–10:45 / TEAM REGISTRATION

Find your people. Join one team.

Watch Gio demonstrate the actual Canvas group-registration route.

Form a team around an idea you want to build together.

Choose one representative for the text and image submissions.

Use the same team name on both. Ask for help if you need a team.

37

10:45–11:00 / TEAM TEXT · 01 / TEAM IDEA

15 min

Form your team. Aim big.

Join the same Canvas team. Pick a direction everyone wants to make.

Describe who it is for, what they do, and how your app or game responds.

Name what you will reinvent or combine, and the first interaction you will test.

One representative submits one idea text on ClassPoint, with your team name.

ClassPoint · short answer — answer on the projector

38

11:00–11:15 / TEAM IMAGE · 02 / PROJECT MOCK-UP

15 min

Show what you want to build.

Sketch, mock up or generate one image of the app or game in use.

Show the main screen or moment of play. Label the action and response.

Match the idea you just submitted. A photographed paper sketch is fine.

The same representative submits one image on ClassPoint, with the team name.

ClassPoint · image upload — answer on the projector

39

11:15–11:20 / CHECK AND WRAP UP

One idea. One image. One team.

Your idea text and image mock-up are both visible in ClassPoint.

Both use the same team name and describe the same project.

Everyone has joined the correct Canvas team.

Reopen both submissions together; ask for help before leaving.

40

GROUP PROJECT / 40%

Turn the idea into a shared build.

One shared GitHub repository showing everyone’s contributions.

Original code and multimedia. Credit the tools and assets you use.

Agree the project scope by Week 8.

Today’s idea and mock-up are the starting point for that conversation.

41

SEPARATE / INDIVIDUAL ASSIGNMENT 3 / 15%

Your interactive experience.

Due Sunday 1 November 2026, 23:59 HKT.

Build something with meaningful user input and clear feedback.

Submit your own GitHub repository URL on Canvas.

Follow the existing brief, README, PROCESS and credit requirements.

42

Aim big.

Build together.

An idea worth making. An interaction worth trying.

SD5913 / WEEK 07 / 22 OCTOBER 2026