Skip to main content
Intake every 3 weeks! There is no "application deadline" — you can start any upcoming module!Intake every 3 weeks! — apply anytime!
Studies
Admissions
The Institute
Resources
Intake every 3 weeks! There is no "application deadline" — you can start any upcoming module!Intake every 3 weeks! — apply anytime!
Studies
Admissions
The Institute
Resources
Intake every 3 weeks! There is no "application deadline" — you can start any upcoming module!Intake every 3 weeks! — apply anytime!
Studies
Admissions
The Institute
Resources

FE402

Programming Interactivity

Barcelona Campus
Sep 28, 2026 - Oct 16, 2026
Programming Interactivity is an introductory course on how the modern web works. It covers the foundations: HTML, CSS, and JavaScript.
Barcelona Campus
Sep 28, 2026 - Oct 16, 2026
Nikolai Lopin

Faculty

Nikolai Lopin

Software Engineer at Stripe

Course length

3 weeks

Duration

3 hours
per day

Total hours

45 hours

Credits

6 ECTS

Language

English

Course type

Offline

Fee for single course

€1500

Fee for degree students

€750

Skills you’ll learn

HTMLJavaScriptDesign ProjectsAI-Assisted DevelopmentMozilla Developer Network
OverviewCourse outlineCourse materialsPrerequisitesMethod & grading

Overview

Programming Interactivity is an introductory course on how the modern web works. It covers the foundations: HTML, CSS, and JavaScript. Students learn what a browser actually does: how it turns a document into a structured page, how styles control appearance, and how code enables a page to respond to users.

The course is hands-on. Each session pairs a theory block with in-class practice, so students write code from the first day. The emphasis is on understanding the ideas and mental models underlying the web, enabling students to read, write, and reason about code independently.

AI coding tools are also part of the course. Students learn how to use them critically: to read what these tools produce, question it, and explain it rather than copy it blindly. The course concludes with a self-directed project that each student builds and presents.

Learning highlights

  • Understanding core web technologies (HTML, CSS and JS)
  • Learn fundamental mental models behind modern web
  • Understand how visual presentation and layout are controlled
  • Understand how a page works with data and changing state

Course outline

15 classes

Dive into the details of the course and get a sense of what each class will cover.
Monday
Tuesday
Wednesday
Thursday
Friday
Monday
1

How the web actually works

  • Inspiration opener: a tour of strange, beautiful, and broken websites.
  • Client, server, and what a browser does with what it receives.
  • One document, many destinations: phones, tablets, TVs, screen readers.
  • The DOM as a living tree.
  • Your first HTML file by hand, no tools.
  • DevTools as an x-ray: inspecting and breaking a real site.
Tuesday
2

Markup as meaning

  • Tags describe what things are, not how they look.
  • Why a real beats a clickable <div> — and what screen readers hear.
  • Forms: real interactivity with zero JavaScript.
  • Document structure, headings, landmarks.
  • Accessibility as a by-product of honest markup.
  • Challenge: navigate a page using only the keyboard and a screen reader.
Wednesday
3

Images, links, media & project hygiene

  • Relative vs. absolute paths — the classic beginner trap.
  • Images, audio, video, and responsive image basics.
  • Organising files so a project doesn't rot.
  • Git as save points, lightly introduced.
  • Publishing a page to the live web for the first time.
  • Inspiration opener: personal sites that show range.
Thursday
4

CSS: the box model & flow

  • Every element is a box: content, padding, border, margin.
  • Display and how the normal document flow works
  • The cascade and specificity — why isn't my style applying? (challenge!)
  • Colors, units, and custom properties (variables).
  • Dark and light themes as a first taste of designing for difference.
  • Challenge: restyle a famous site's homepage into something absurd.
Friday
5

Layout: Flexbox & Grid

  • Two coordinate systems for arranging things.
  • Flexbox for rows and components; Grid for full layouts.
  • When to reach for which.
  • Building the same layout two ways.
  • A first look at how layout bends across screen sizes.
Monday
6

Designing for everyone, everywhere

  • Responsive layouts. Media queries and relative units.
  • One layout from phone to desktop to TV.
  • Designing for touch vs. mouse vs. keyboard.
  • Respecting user preferences: dark mode, reduced motion, font size.
  • Accessibility revisited now that there's CSS to misuse.
  • Challenge: make a page that looks intentional at every width.
Tuesday
7

Motion & animation (guest lecture)

  • Inspiration: award-winning motion.
  • Transitions: easing one state into another.
  • Keyframe animations and what makes motion feel good vs. cheap.
  • Transforms: move, scale, rotate.
  • Performance: what's cheap to animate and what janks.
  • Challenge: recreate a part of the animation from the opener.
Wednesday
8

JavaScript: values & control flow

  • What a value is; types; variables.
  • Conditionals and loops as the logic of behaviour.
  • The console as a laboratory.
  • Reading errors without panic.
Thursday
9

Functions, arrays & objects

  • Inspiration opener: a tiny program that does something delightful.
  • Functions as reusable, nameable behaviour.
  • Arrays and objects: holding and shaping data.
  • Map / filter / forEach as ways of thinking.
  • Structuring code so it stays readable.
  • Small, testable pieces over one big blob.
Friday
10

The DOM & events

  • JavaScript reads and rewrites the page.
  • Listening for clicks, input, keys, and more.
  • The event-driven model.
  • Building real interactivity from scratch.
  • Connecting all three languages at last.
  • Challenge: a page that reacts to the user in an unexpected way.
Monday
11

State, data & fetching

  • Inspiration opener: small apps built on open data.
  • What "application state" means and why UIs must not lie about it.
  • Fetching remote data; async/await conceptually.
  • Showing loading, empty, and error states honestly.
  • Pulling from a public API into a live page.
  • The ceiling of the fundamentals — everything after is composition.
Tuesday
12

Learning to learn

  • MDN as the reference that actually matters.
  • How to read unfamiliar code without fear.
  • Using AI tools well.
  • Spotting code that works but is wrong, unsafe, or nonsense.
  • Final project brainstorm/menu.
Wednesday
13

Project: pitch & kickoff

  • One-minute pitch from each student.
  • Scoping ruthlessly — cutting the project down to finishable.
  • Sketching structure before writing code.
  • Setting up the file scaffold in class.
  • Choosing the right amount of ambition.
  • Project options: portfolio site, browser game, data visualiser, generative-art piece, or a single-purpose tool.
Thursday
14

Project: studio

  • Supervised build time.
  • One-on-one desk crits with the instructor.
  • Mini-lectures driven by the group's real obstacles.
  • Feature freeze: finishing over adding.
  • Testing across sizes, themes, and input methods before the deadline.
Friday
15

Demo day

  • Public presentation of each project.
  • Live demo: it has to actually run.
  • Oral defense: explaining choices and specific lines of code.
  • Peer and instructor feedback, agency-style.
  • Reflection: what you'd build next, now that you can.
  • A send-off on where the web goes from here.

Prerequisites

No prior knowledge is needed. Knowledge or previous experience in Web development will be helpful, but not required.

Methodology

Each three-hour session is divided into approximately 1–1.5 hours of theory and demonstration and 1.5–2 hours of supervised in-class practice. The studio component is the core of the course: students begin every assignment in class, where the instructor can address initial issues and set them up for success. Homework continues the work started in class.

Exercises are reviewed at the beginning of the following session, with each student given a few minutes to present their work and receive feedback from peers and the instructor. Occasionally, group discussions are held to compare different problem-solving approaches.

The instructor circulates during practice (desk critique). Mini-lectures during project sessions respond to the group’s actual challenges rather than following a fixed plan. Curiosity, experimentation, and productive mischief are encouraged as legitimate ways to learn how the web behaves.

A dedicated Slack channel is available for questions and communication with the instructor between sessions.

A standing rule governs the course: students do not submit code they cannot explain. Whether written independently or generated with the help of an AI system, if a student cannot walk through the code line by line, it is not yet theirs.

Grading

The final grade will be composed of the following criteria:
20% - Continuous evaluation
30% - Homework
50% - Final project
Grading scale (0-10): Understanding (0-5) Can the student explain why the code works, not just that it does? Soundness of reasoning, grasp of the underlying model, ability to defend choices. Craft (0-3) Is the code clean, structured, and functional? Naming, organization, correctness, absence of cargo-culting. Output & design (0-2) Does the result work well as an experience Creativity bonus point Awarded for genuine inventiveness
Nikolai Lopin

Faculty

Nikolai Lopin

Software Engineer at Stripe

Apply for this course

Snap up your chance to enroll before all spaces fill up.

Programming Interactivity

by Nikolai Lopin

Total hours

45 Hours

Dates

Sep 28 - Oct 16, 2026

Fee for single course

€1500

Fee for degree students

€750

How to secure your spot

Complete the form below to kickstart your application

Schedule your Harbour.Space interview

If successful, get ready to join us on campus

FAQ