schedule

for lectures, workshops, deadlines, and more

monday, january 5, 2026

  • 10:00AM

    Mandatory Setup before web.lab starts: Git, Bash terminal, vscode (details emailed out)

  • 11:00AM11:30AM

    1. web.lab Kickoff!

    Lucas Bautista

    26-100

  • 11:30AM12:00PM

    2. Git Basics

    Lucas Bautista, Sasha Krigel

    26-100

  • 12:00PM12:30PM

    3. HTML/CSS Intro

    Ryan Chin, Raymond Zhang

    26-100

  • let event = getLunch();

  • 01:00PM02:30PM

    4. W0: HTML/CSS

    Ryan Chin, Raymond Zhang

    26-100

  • 02:30PM03:00PM

    5. Intro JS

    Sasha Krigel

    26-100

  • 07:00PM09:00PM

    Office Hours

    32-082

  • 11:59PM

    HW0 due eod: Install Node + NPM

tuesday, january 6, 2026

  • 11:00AM11:30AM

    6. Advanced JS: Arrays and Callbacks

    Lucas Bautista, Sasha Krigel

    26-100

  • 11:30AM12:30PM

    7. Intro to React

    Sasha Krigel, Skippy Le

    26-100

  • let event = getLunch();

  • 01:00PM02:00PM

    8. W1: Static Catbook in React

    Calvin Rodrigue, Raymond Zhang

    26-100

  • 02:00PM03:00PM

    9. React Lifecycle and Hooks

    Raymond Zhang, Skippy Le

    26-100

wednesday, january 7, 2026

  • 11:00AM11:30AM

    9. React Lifecycle and Hooks (cont.)

    Raymond Zhang, Skippy Le

    26-100

  • 11:30AM12:30PM

    10. W2: Feed + Router

    Skippy Le, Calvin Rodrigue

    26-100

  • let event = getLunch();

  • 01:00PM02:30PM

    10. W2: Feed + Router

    Skippy Le, Calvin Rodrigue

    26-100

  • 02:30PM03:00PM

    11. Intro to APIs and Promises

    Calvin Rodrigue, Lucas Bautista

    26-100

  • 07:00PM09:00PM

    Office Hours

    32-082

  • 11:59PM

    Milestone 0 due 11:59pm (Team + 10 ideas)

thursday, january 8, 2026

  • 11:00AM11:30AM

    12. Servers and Node

    Lucas Bautista

    26-100

  • 11:30AM12:30PM

    13. W3: Adding a Backend

    Calvin Rodrigue, Lucas Bautista

    26-100

  • let event = getLunch();

  • 01:00PM02:30PM

    13. W3: Adding a Backend

    Calvin Rodrigue, Lucas Bautista

    26-100

  • 02:30PM03:00PM

    14. UI + Figma

    Catherine Tu, Raymond Zhang

    26-100

  • 11:59PM

    HW2 due eod: Set Up Mongo Atlas Account

friday, january 9, 2026

  • 11:00AM12:00PM

    15. Let's Debug Catbook >:)

    Angeline Peng

    26-100

  • 12:00PM12:30PM

    16. Intro to Databases

    Sasha Krigel, Skippy Le

    26-100

  • let event = getLunch();

  • 01:00PM02:00PM

    17. W4: Databases

    Sasha Krigel, Skippy Le

    26-100

  • 02:00PM02:30PM

    18. Promises + Await

    Lucas Bautista, Calvin Rodrigue

    26-100

  • 02:30PM03:00PM

    19. Git for Collaboration

    Sasha Krigel

    26-100

  • 07:00PM09:00PM

    Office Hours

    32-082

  • 11:59PM

    Milestone 1 Due

saturday, january 10, 2026

  • 01:00PM05:00PM

    M1: Project Pitches (Teams sign up for timeslots)

    32-044

sunday, january 11, 2026

  • 01:00PM05:00PM

    M1: Project Pitches (Teams sign up for timeslots)

    32-044

monday, january 12, 2026

  • 11:00AM11:30AM

    20. Advanced React: Context + Router

    Angeline Peng, Raymond Zhang

    26-100

  • 11:30AM12:30PM

    21. Accounts + Auth

    Ryan Chin, Angeline Peng

    26-100

  • let event = getLunch();

  • 01:00PM02:30PM

    22. W5: Accounts + Auth (cont.)

    Ryan Chin, Angeline Peng

    26-100

  • 02:30PM03:00PM

    23. W6: Chatbook

    Angeline Peng, Lucas Bautista

    26-100

tuesday, january 13, 2026

  • 11:00AM12:00PM

    23. W6: Chatbook (cont.)

    Angeline Peng, Lucas Bautista

    26-100

  • 12:00PM12:30PM

    24. Sockets

    Skippy Le, Angeline Peng

    26-100

  • let event = getLunch();

  • 01:00PM02:30PM

    25. W7: Chatbook with Sockets

    Skippy Le, Angeline Peng

  • 02:30PM03:00PM

    26. Advanced CSS + Libraries

    Raymond Zhang, Angeline Peng

    26-100

  • 07:00PM09:00PM

    Office Hours

    32-082

wednesday, january 14, 2026

  • 11:00AM12:30PM

    27. W8: Games

    Calvin Rodrigue, Raymond Zhang

    26-100

  • let event = getLunch();

  • 01:00PM01:30PM

    28. TypeScript

    Sasha Krigel, Skippy Le

    26-100

  • 01:30PM02:30PM

    29. Relational Databases

    Sasha Krigel

    26-100

  • 02:30PM03:00PM

    26 (cont). Advanced CSS + Libraries

    Raymond Zhang, Angeline Peng

    26-100

  • 07:00PM09:00PM

    Office Hours

    32-082

thursday, january 15, 2026

  • 11:00AM11:30AM

    Catbook Tech Stack Competition (come on time!!)

    Angeline Peng

  • 11:30AM12:30PM

    31. Sponsor Lecture: Codeium

    Coming soon!

    26-100

  • let event = getLunch();

  • 01:00PM02:00PM

    32. Sponsor Lecture: Fetch.ai

    Coming soon!

    26-100

  • 02:00PM03:00PM

    33. Containerization and Docker

    Lucas Bautista, Calvin Rodrigue

    26-100

  • 07:00PM09:00PM

    Office Hours

    32-082

friday, january 16, 2026

  • 11:00AM12:00PM

    34. Sponsor Lecture: Akamai

    Coming soon!

    26-100

  • 12:00PM12:30PM

    35. LLM Workshop

    Ryan Chin

    26-100

  • let event = getLunch();

  • 01:00PM01:30PM

    36. How to Code Good

    Catherine Tu

  • 01:30PM02:00PM

    37. Guest Lecture

    Coming soon!

    26-100

  • 02:00PM02:30PM

    38. How to Deploy

    Catherine Tu

    26-100

  • 02:30PM03:00PM

    39. How to Win web.lab + sendoff

    Sasha Krigel

    26-100

  • 07:00PM01:00AM

    Hackathon (w/ free food!)

tuesday, january 20, 2026

  • 07:00PM09:00PM

    Office Hours

    32-082

wednesday, january 21, 2026

  • 06:00PM

    Milestone 2 due 6pm: MVP

thursday, january 22, 2026

  • 07:00PM01:00AM

    Hackathon (w/ free food!)

friday, january 23, 2026

  • 07:00PM09:00PM

    Office Hours

    32-082

monday, january 26, 2026

  • 07:00PM09:00PM

    Office Hours

    32-082

tuesday, january 27, 2026

  • 07:00PM09:00PM

    Office Hours

    32-082

wednesday, january 28, 2026

  • 12:00PM01:00PM

    FINAL SUBMISSIONS DUE

thursday, january 29, 2026

  • 12:00PM01:00PM

    FINAL SUBMISSIONS DUE (Credit Only)

  • 05:30PM06:00PM

    Pizza, Merch, and Sponsor Reps

    32-123

  • 06:00PM08:30PM

    Closing Ceremony + Awards

    32-123

friday, january 30, 2026

  • Semifinalist Luncheon (Semifinalists only)