32
The Problem Most children in UK schools don’t learn programming Less than 50% of UK secondary schools teach programming

The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

The Problem

Most children in UK schools don’t learn programming

Less than 50% of UK secondary schools teach programming ”

Page 2: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Key Insights

Programming is an important skill

Programming jobs are growing 12% faster than

the UK average ”

Page 3: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Key Insights

Children love coding!

I like being able to use our own creativity to make new

interesting games. ”

Page 4: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Target User

Jenny

• 11 years old

• Just starting secondary school

• No computing education

Page 5: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Jenny’s Current User Journey

1.Wakes up early.

2.Watches TV.

3.Breakfast.

4.Leaving for coding club.

5.Train is

delayed.

6.Arrives late.

7.Talking to

the teacher.

8.Sitting with

friends.

9.Doesn’t remember

what she was doing last

week. (Overwhelmed)

10.Getting help.

11.Teacher is impressed.

12.Gets stuck. Waits for

teacher. (Bored)

13.Class is over but

she's not finished.

14.Going home

with mum.

15.Wants to finish her

game but doesn't have

the software. (Upset)

Page 6: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Another Key User

Keith

• 21 years old

• University student

• Volunteers at a local coding club

Page 7: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

But What About…

Page 8: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

But What About…

Page 9: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

But What About…

Page 10: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

The Problem - Restated

• We want to engage kids and teach them how to code.

• Current solutions are not meeting this as they:

• are too complicated

• are too boring

• do not offer enough guidance

• are too simple

• require a lot of organization

• are hard to find

• are expensive

• cannot be done in the kid’s own time and place

Page 11: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

The Problem - Restated

How might we improve

learning programming

to make it more accessible for kids?

Page 12: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

CodetTeaching the next generation of coding cadets

Page 13: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Proposed User Journey

Page 14: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Digital Touchpoint: Login

User Stories

• As a student, I want an account, so that my stats and code don’t get overwritten.

• As an instructor, I want an admin account so that tutorials and challenges I write don’t get edited by others.

User Feedback

• Users tended to click the wrong button.

Page 15: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Digital Touchpoint: Index

User Stories

• As a student, I want to know what to learn next and to see my progress.

• As an instructor, I want to tailor the learning content for my own students.

User Feedback

• Make the progression clearer.

Page 16: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Digital Touchpoint: Tutorial

User Stories

• As a student, I want to be guided through the process of learning a concept and be sure I understand it.

• As an instructor, I want to be sure my students understand the content.

User Feedback

• I want to know my progress through the tutorial.

Page 17: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Digital Touchpoint: Challenge

User Stories

• As a student, I want to use my knowledge and creativity to create cool games.

• As an instructor, I want my students to be as independent as possible, offering help when needed.

User Feedback

• Some users get stuck when doing a challenge.

Page 18: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Digital Touchpoint: Shop

User Stories

• As a student, I want to be rewarded for my learning.

• As an instructor, I want my students to be motivated to learn.

User Feedback

• "I want avatars to be like memes"

Page 19: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Digital Touchpoint: Friends

User Stories

• As a student, I want to share and see all my real friend's progress and avatars.

User Feedback

• I had to refresh the page to see new friend requests.

Page 20: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Digital Touchpoint: Admin

User Stories

• As an instructor, I want it to be easy to add new content for my students.

User Feedback

• "The admin page feels very hacky and finicky"

Page 21: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our Digital Touchpoint: Classes

User Stories

• As a student, I want to be part of my coding class even when at home.

• As an instructor, I want to add content only for the classes I teach.

User Feedback

•It wouldn't tell me if I add the wrong usernames.

Page 22: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Our System Architecture

rsync

Client

codet-API codet-learn

staging.codetlearn.ml

codetlearn.ml

Page 23: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Why Vue.js?

Reactive and lightweight

• Based on reusable components

• Extremely lightweight

• More flexible than Angular

• Better separation of concerns than React

Page 24: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Why MEVN?

A popular, entirely JavaScript, tech stack

Node.js• Async I/O• Packages through npm

• Uniform data serialization

Express.js

• Widely used• Extensible with middleware

Page 25: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Why MongoDB?

So that we can achieve really fast iterations…

• Natural front-end correspondence

• Handles complex data structures

• Flexible schema

• Fast and horizontally scalable

Page 26: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Why p5.js?

Perfect for teaching kids

• Based on JavaScript

• Fewer difficult concepts

• Runs nicely client-side

• Visual feedback

• Easy to make animations / games

Page 27: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Challenges: Reporting Errors

Code Editor

Loop protection

Add hooks for console output

and errors

Inject code into iframe with p5.js

User writes code

Run code

Syntax checking AST transforms Rewrite createCanvas

Codet API

Get code Autosave code

Page 28: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Challenges: Notifications

Server

ClientEstablishes connection

Adds connection to map of clients

Receives friend request for user

Receives notification

Codet LearnEvent Bus

Codet Learn

Page 29: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Project Summary

Our project has been successful at solving

many of the problems we identifiedTutorials solve:• Too complicated• Not offering

enough guidance

Digital touchpoint solves:• Requires a lot of

organization• Difficult to find• Expensive• Cannot be done in the kid’s

own time and place

Challenges solve:• Too simple

Codettos / Incentives solve:• Too boring

Page 30: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

What we’ve learned…

Design and Organisation• Speaking to a few users often is better than speaking to many

users rarely

• How to prototype rapidly with users

• How to prioritise features

Technical• Use a CSS framework

• Use a store instead of an event bus

Page 31: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

What’s next for Codet?

• Redesigning the index page

• Achievements

• Group projects

• Saving history

• Sharing tutorials

Page 32: The Problem - Imperial College Londonjs4416/assets/codet/codet-tech.pdf · Why Vue.js? Reactive and lightweight •Based on reusable components •Extremely lightweight •More flexible

Anticipated Question:User Interaction

Friends• Sending, accepting friend requests, and unfriending

• Sharing projects between friends

Teaching• Teachers can add content for students to attempt

• Students asking for help, marking as resolved

• Instructors viewing student code

Leaderboard• Leaderboard: can see users’ avatars and XP