Software prototyping
Spring 2025
Spring 2025
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 ⭐️
Monday - Wednesday 10:00 am - 12:00 pm (noon)
Building N25, Room 215 (2nd floor) - OFFLINE
Office hours: before and after class, or by appointment
Slides 1.1 - Course introduction + Setting up
Slides 1.2 - Types and Variables
Setting up (due Sunday March 2nd, 11:59 pm)
Sign in git.prototyping.id (use your KAIST email or KAIST ID, the default password is "software" => then change the default password)
Homework
Intro survey / Quiz 0 (due Thursday, February 27th at 11:59 pm)
Homework 0 (due Sunday, March 2nd at 11:59 pm)
This is a video to help you getting started
Monday March 3rd - No class
Slides 2.2 - Control structures and git
Homework
Homework 1 (due Tuesday, March 11th at 11:59 pm)
Slides 3.1 - Arrays and objects
Slides 3.2 - Functions & sort
Homework
Homework 2 (due Tuesday, March 18th at 11:59 pm)
Slides 4.1 - Recursion
Slides 4.2 - DOM and event handling
Homework
Homework 3 (due Tuesday, March 25th at 11:59 pm)
Slides 5.1 - Higher Order functions (+ wrapping up DOM)
Slides 5.2 - Composition
Optional
Slides 5.3 - jquery
Homework
Homework 4 (due Sunday, April 6 at 11:59 pm)
Slides 6.1 - Module and Libraries
Slides 6.2 - Event Loop, Tasks and Transformations
Slides 7.1 - Markdown + Beginning Svelte
Slices 7.2 - Custom Events and Runes
Homework
Homework 5 (due Sunday , April 13th at 11:59 pm)
Slides 8.1 (Monday) - Project feedback
Wednesday: no class
Individual Project
Game Project (due Sunday , May 11th at 11:59 pm)
Slides 9.1 - OOP and classes
Slides 9.2 - Inheritance
Slides 10.1 - Dealing with errors (video lecture)
👷 The rest of this schedule is tentative and it will be adjusted
Monday - Holiday (no class)
Slides 11.2 - Design patterns
Homework6 out
Slides 12.1 - Async programming
Slides 12.2 - Node and a simple server
Final project starts
Project feedback
Slides 13.2 - Firebase
Slides 14.1 - Cursor and Vibe Programming (May 26)
Slides 14.2 - Connecting to hardware (may 28)
Project feedback
Project Feedback
Slides 15.2 - Wrapping up
⭐️ FINAL PRESENTATIONS ⭐️ Wednesday June 11 @ 10:00 am - noon in N25 - 215