Software prototyping
Spring 2023 (Archived)
Class overview
This software prototyping (ID311) course offered in the department of Industrial Design at KAIST aims to provide students with the theoretical and practical programming background to develop software for the web. Students who take this course should be already familiar with the basics of programming and are expected to spend considerable time during the semester programming short assignments and a final project. The course objectives are 1) to teach computational thinking through programming, 2) to familiarize students with the developing environment and language for web applications (i.e. Ecmascript 6 a.k.a. JavaScript), 3) to practice with common programming paradigms such as Object-Oriented Programming, Functional Programming, and Event-Driven programming.
⭐️Highlights 2023 ⭐️
Class resources 🔗
Class material
Syllabus 📃
Discord link
TA: Justin Moon
Quick links
Homework system
Homework demos
Attendance
Other resources
Javascript language specifications (Ecmascript6)
SCHEDULE ⏰
Tuesday - Thursday 10:00 am - 12:00 pm (noon)
Building N25, Room 414 409 (4th floor) - OFFLINE
Office hours: before and after class, or by appointment
Week 1
Slides 1.1 - Course introduction + Setting up
Slides 1.2 - Types and Variables
Setting up (due Sunday, 11:59 pm)
Join Discord
Sign in git.prototyping.id (use your KAIST email or KAIST ID, the default password is "software" => then change the default password)
Install VSCode, git, and Docker (optional)
[Optional] Docker is now optional. To see why you might want it, here it is a video that show you.
[Optional] Docker instructions for Windows (Mac and Linux should be straightforward)
Homework
Homework 0 (due Sunday, March 5th at 11:59 pm)
This is a video to help you getting started
Intro survey (Quiz 0) (due Thursday, March 2nd at 11:59 pm)
Week 2
Slides 2.1 - p5.js / control structures / git
Slides 2.2 - Arrays / Objects / json
Homework
Homework 1 (due March 13th at 11:59 pm)
Week 3
Slides 3.1 - Functions, procedural programming, and sorting
Slides 3.2 - Recursion
Homework
Homework 2 (due March 21th at 11:59 pm)
Week 4
Slides 4.1 - How to debug / DOM and Events
Slides 4.2 - Functional programming: JS Array functions
Homework
Homework 3 REVISED (due March 30th at 11:59 pm) use this one if you did not start yet
Homework 3 (due March 30th at 11:59 pm)
Week 5
Slides 5.1 - Functional programming (function compositions)
Slides 5.2 - Tools and transformations
p5js vite starter template
Homework
Homework 4 (due April 12th at 11:59 pm)
Week 6
Slides 6.1 - Javascript frameworks (Svelte)
Slides 6.2 - Markdown + Continuing with Svelte
Week 7
Slides 7.1 - OOP, Objects, Classes and UML
Slides 7.2 - Mixins and class inheritance
Homework
Homework 5 (due April 19th at 11:59 pm)
Week 8
Slides 8.1: OOP design patterns
Slides 8.2: Tasks / Error handling + Project Feedback
Homework
Homework 6 (due April 30th at 11:59 pm)
Week 9
April 25 & 27: No classes (substituted with week 8)
Week 10
Slides 10.1: Node and socket.io
Slides 10.2: Async programming and promises
Project
Project 1 starts (weeks 10-12, due May 19th at 11:59 pm)
Week 11
Slides 11.1: Firebase tutorial
Thursday: Progress update + Individual Mentoring Session about Project 1 progress (everybody)
Week 12
Tuesday: Individual Mentoring Session about Project 1 progress (time slots)
Thursday: Team assignments (sheet) and initial group meetings
Slides 12.2
Project
Project 2 starts (weeks 13, 14, 15, 16)
Team assignments (sheet)
Week 13
Tuesday, May 23 no class
Thursday: Team feedback with TA
Week 14
Team Mentoring Session (Tuesday & Thursday)
Week 15
Tuesday, June 6 no class
Slides 15.2 (Thursday) - Wrapping up + Last Team Mentoring Session (all teams)
Final anonymous survey (due on Week 16)
Week 16
⭐️ FINAL PRESENTATIONS ⭐️ Thursday June 15 @ 10:00 am - noon in N25 - 414