Over fourteen weeks we will follow one path: first you will learn a page's skeleton and appearance, then its layout, and finally its behavior. Today is the first stop; the other weeks open as we reach them.
-
Week 01today
First steps on the webHTML and CSS basics, buttons
- Week 02
Motion and boxeshover, transitions, shadows, DevTools, the box model
- Week 03
Texttext and typography, Google Fonts
- Week 04
Structurethe HTML skeleton, semantic tags, accessibility
- Week 05
Images and displayimages, inline and block. The answer to Round 1's "why side by side?" question is here.
- Week 06
Boxes inside boxesdiv and nested layouts
- Week 07
Grid and lab exam 1
- Week 08
Flexbox
- Week 09
Position and different screens
- Week 10
Clonefinishing a video site's interface, modern CSS
- Week 11
Intro to JavaScriptconsole, DOM
- Week 12
Events and functionsclicks, form validation
- Week 13
Datafetch, JSON, APIs and publishing your site
- Week 14
Presentations and lab exam 2
The plan may change; dates will be announced according to the academic calendar.
Over the term you will build two websites from start to finish, back end included: one with AI and one without. Putting them side by side, you will see for yourselves what AI speeds up for you and what it cannot think through on your behalf.
- In the no-AI project you will use at least 10 different tags and 20 CSS classes, and you will take the photos yourselves.
- You are the jury: your classmates grade every project out of 100, and the average of those grades is taken.
- The instructors give the final grade.
First steps on the web
Today we will first look at where the web came from and how an address you type into the browser turns into a page. Then you will write your own buttons in Notepad and use CSS to make them look like YouTube's buttons. At the end of the lesson we will watch together how an AI does the same job.
- We'll talk aboutthe history of the web, the internet, HTML, CSS, JavaScript
- You'll writebuttons, paragraphs, links, classes, styles
- You'll watchan AI build a website
No company invented the web. It started as a proposal, written at a research center to link documents together, and it was opened to everyone without asking anyone's permission. That openness is behind every site you use today; the dates below are the main stops along the way.
- 1989Tim Berners-Lee, working at CERN, proposes a system that links documents together. His manager writes "vague but exciting" in the margin of the proposal.
- 1991The first website goes live: info.cern.ch. It is still online; click and see for yourself.
- 1993CERN releases the web's software to everyone for free. The same year, the Mosaic browser comes out and shows images and text on the same page.
- 1994The W3C, which writes the web's rules, is founded. Håkon Wium Lie proposes the idea of writing a page's appearance in a separate language: CSS.
- 1995Brendan Eich writes the first version of JavaScript in ten days. It has nothing to do with Java; the name was a marketing decision.
- 2025Andrej Karpathy coins the term "vibe coding": getting AI to write the code and moving forward by looking at the result.
You don't have to apply to anyone to publish a page. A file and a server are enough; that is also why the web grew so fast.
The code of every site can be seen: Ctrl U⌥ ⌘ U. Whenever you like how a page is made, you can open it and read it.
Berners-Lee's message at the opening of the London 2012 Olympics: "This is for everyone."
Between the moment you type misy2213.online into your browser and press Enter, and the moment the page appears, four things happen. It all takes less than a second, but knowing these steps tells you where to look when something goes wrong.
- DNS finds the address. Computers talk in numbers, not names. DNS is a huge directory that turns a name like "misy2213.online" into that number (the IP address).
- The browser sends a request. It asks the computer at that number, the server, "give me this page". The language of this conversation is HTTP.
- The server sends the file. What arrives is an HTML file, which is a plain text file. If it mentions CSS, JavaScript or images, the browser asks for those separately too.
- The browser draws the screen. It puts all the pieces together into the page you see.
Front end, back end: a restaurant
Comparing the parts of a website to a restaurant makes it easier to remember where each one runs.
Everything the customer sees. It runs in the browser: HTML, CSS, JavaScript. This is what we will build this term.
Takes the order, passes it to the kitchen and brings the plate back. It runs on the server, so the customer never sees it.
Where the data is kept: users, orders, messages.
The requests and answers that travel between the dining room and the waiter. On the web, this conversation is called HTTP.
A web page is three languages working together. Each one has a single job, and keeping those jobs apart makes a page easier both to write and to fix.
What is on the page? Headings, paragraphs, buttons.
How does it look? Color, font, spacing.
What does it do? What happens when you click or type.
Today we will work with the first two. We will get to JavaScript in the last weeks of the term; first we want to build a solid skeleton and good clothes, because behavior can only be added on top of a solid structure.
rebeccapurple, was added in 2014 in memory of Eric Meyer's daughter Rebecca.
Try it: press CtrlU⌥⌘U to view this page's source code. Can you find this strip?
We won't use a ready-made editor. We start with the plainest text program that comes with your operating system, because first we want to see what we are working with in its bare form. We will move on to tools that color and complete your code once you understand what they do.
- Create a folder called
web-labon your desktop. Everything you write this term will live here. - In File Explorer, turn on View > Show > File name extensions. Windows hides extensions by default; if you leave them hidden, files like
index.html.txtmake it hard to tell which file is which. - Type "Notepad" in the Start menu and open it. When you save, choose Save as type: All files and Encoding: UTF-8.
- Create a folder called
web-labon your desktop. Everything you write this term will live here. - Open TextEdit (⌘ Space, "TextEdit"). Choose Format > Make Plain Text (⇧ ⌘ T). If you skip this, the file is saved as rich text and the browser cannot read it.
- In TextEdit > Settings, on the "Open and Save" tab, tick the option to display HTML files as HTML code; on the "New Document" tab, turn off smart quotes. If they stay on, your
"marks get curled and your code breaks.
First type just Hello, save the file as test.txt and drag it into the browser. Then save the same file as test.html. The two look almost identical, but the browser now reads the file as a web page: what makes a file a web page is the extension at the end of its name.
Whatever you write between <button> and </button> appears on the button. We call these opening and closing marks tags. Tags tell the browser "this is a button" or "this is a paragraph", and the browser draws each one in its own way.
<button>Click</button><p>Hello, world!</p>
<p>Today I took the shuttle to campus and made my first web page.</p>1a.html, 1b.html ...).
- Make two buttons: one with your name, the other with your favorite food.
- Write a paragraph, and below it add a second paragraph about something you did today.
- The buttons came out side by side, the paragraphs one under the other. Why the difference? Write your guess down somewhere; we will answer it in week 5.
What makes the web a web is links: being able to jump from one page to another with a single click. The <a> tag has an attribute called href, which says where the link goes. Attributes are written inside the opening tag and give the tag extra information; for example, if you add target="_blank", the link opens in a new tab.
<a href="https://www.google.com" target="_blank">
Search on Google
</a>Did your link turn purple? That's because you have visited that site before. Since the 1990s, browsers have shown unvisited links in blue (#0000EE) and visited ones in purple (#551A8B).
- Make a link to your favorite website.
- Try it first without
target, then add it. Did you notice the difference?
Now we add a <style> section to the page. This term's rule: everything about appearance lives inside style. HTML says what is on the page, CSS says how it looks; when you keep the two apart, you can change one without breaking the other.
We give the buttons a class, and in CSS we address that class by putting a dot in front of its name. Every button with the same class wears the same clothes. Our target is YouTube's SUBSCRIBE and JOIN buttons.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Buttons</title>
<style>
.subscribe {
background-color: rgb(200, 0, 0);
color: white;
border: none;
height: 36px;
width: 105px;
border-radius: 2px;
cursor: pointer;
margin-right: 8px;
}
.join {
background-color: white;
border-color: rgb(41, 118, 211);
border-style: solid;
border-width: 1px;
color: rgb(41, 118, 211);
height: 36px;
width: 62px;
border-radius: 2px;
cursor: pointer;
}
.follow {
background-color: rgb(2, 158, 255);
color: white;
border: none;
height: 36px;
width: 90px;
border-radius: 18px;
font-weight: bold;
font-size: 15px;
cursor: pointer;
margin-left: 8px;
}
</style>
</head>
<body>
<button class="subscribe">SUBSCRIBE</button>
<button class="join">JOIN</button>
<button class="follow">Follow</button>
</body>
</html>head is the back room of the page: the tab title, the character setting, the styles. body is everything you see on the screen.
Without this line, letters like é, ü, ş or ğ can turn into strange symbols. Write it at the top of every page.
- Change the button labels to fit your own channel.
- Play with
border-radius. At what value do the button's corners become fully round? - Add a fourth button: Spotify's green, round "Follow" button. Find the color yourself.
The buttons sit there but don't react. :hover catches the moment the mouse moves over a button, and :active the moment it is clicked. transition makes that change happen smoothly instead of all at once. With body we change the color of the whole page. Add these to the end of the style from Round 3:
body {
background-color: rgb(24, 20, 48);
font-family: Arial;
}
.subscribe:hover {
opacity: 0.8;
}
.subscribe:active {
opacity: 0.5;
}
.join {
transition: background-color 0.15s, color 0.15s;
}
.join:hover {
background-color: rgb(41, 118, 211);
color: white;
}
.follow:hover {
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.4);
}Color names are English words: tomato, teal, gold, orchid. The browser only knows its own list of names, so a made-up name does nothing, and names are written as one word: turquoise, darkblue. When a name isn't enough, use a color code like rgb(...) or #FF6B35.
- Give the page your own color. Is the text still easy to read? We call this difference between text and background contrast.
- Add a hover to the Spotify button too.
The text above scrolls with the <marquee> tag. It dates from the 1990s; it is no longer part of the HTML standard, but browsers still run it so that old pages don't break. The other scrolling strips on this page are built with CSS instead: a transform: translateX animation and content written out twice.
#0000EE blue and visited ones in #551A8B purple.
Try it: change your button's color in NotepadTextEdit, save, then refresh the browser.
Did you know? The <blink> tag once made text flash on and off; today no browser makes it blink.
Did you know? Tim Berners-Lee's first web server was a NeXT computer. It had a label on it that said "This machine is a server, do not power it down".
Using only what you learned today, that is a, p and button, copy the result below. I'm not showing the code; the result is enough: looking at a page and working out which tags built it will be the thing you do most often this term. Make the link go to any shopping site you like.
Use this space whenever you want to try something quickly, at home or in class. As soon as you change the code on the left, the page on the right updates. Still, make writing and saving in your own file your main habit, because you will build your projects in your own files.
You have just written every line by hand. Now we look at how the same job is done with AI, and at how the tools get more powerful step by step.
Just text. No colors, no error warnings; what you type is what you get.
An IDE: Notepad plus helpers. It colors your code, completes it and shows errors.
Google's IDE, built on VS Code. Its agent draws up a plan, writes the code, and opens the result in the browser to test it itself.
The same idea also exists in the terminal. Tools like Claude Code have no window: you tell the agent what you want from the command line, and it edits the files in your folder.
What is vibe coding?
Getting AI to write the code without reading it, looking at the result, and saying "change this" when you don't like it. It is a fast and fun way to work. But if you can't read the code it writes, you can't find what broke when something goes wrong.
AI writes, you read. You can't manage code you can't read.
Which model is better?
On LMArena you ask two anonymous models the same question at once and vote for the better answer. Who the models are is revealed only after you vote. When millions of blind votes add up, a ranking emerges.
The prompts you watched in class
We built the Işık University site in Antigravity with these four prompts. Try the same at home and watch what the agent does at each step.
Build a promotional website for the Management Information Systems department of FMV Işık University in a single HTML file: a hero section, about the department, campus, contact. Show me your plan first and don't write any code until I approve it.Redesign this like an award-winning agency project: dark theme, big typography, sections that appear as you scroll with GSAP ScrollTrigger, and moving photos.Open the site in the browser, test it at phone size, take a screenshot and fix whatever is broken.Add a form with name, email and message fields to the contact section.You filled in the form and pressed Send. Where did the message go?
Nowhere. The dining room is ready and the menu looks great, but there is no waiter to carry the order to the kitchen. For the form to do anything, you need a back end; remember the restaurant from section 2.
See the three layers with your own eyes on any site you like. The changes happen only on your screen, and everything comes back when you refresh the page; in other words, you can't break anything.
- Open the developer tools: F12⌥ ⌘ I. In the Elements tab, double-click a heading and change its text.
- Take off the clothes. Select the
<style>or<link rel="stylesheet">line and press Delete. The bare page that remains is the HTML itself. - Stop the muscles. Open the command menu with Ctrl Shift P⌘ ⇧ P, type "Disable JavaScript", press Enter and refresh the page. Everything that stops was JavaScript.
| Developer tools | F12⌥ ⌘ I |
| View source code | Ctrl U⌥ ⌘ U |
| Save | Ctrl S⌘ S |
| Refresh | F5⌘ R |
In Safari, turn on the developer menu first: Safari > Settings > Advanced > "Show features for web developers". For this course I recommend using Chrome.
Getting stuck is a natural part of this work; every error has a cause, and most of them gather in a few places. Below are the situations we run into most often in class and how to fix them. If you can't find yours here, bring the error to me along with a screenshot.
The browser shows my code instead of a page
Your file was most likely saved as 1a.html.txt: if "Save as type" stays on Text Documents, Notepad quietly adds .txt to the end of the name. Turn on file name extensions in File Explorer, rename the file so it is 1a.html, and from now on choose All files as the "Save as type" when you save. The browser recognizes a file by its extension; as long as it sees .txt, it shows the contents as plain text.
The file wasn't converted to plain text, or .txt was added to its name. In TextEdit choose Format > Make Plain Text; when saving, untick "If no extension is provided, use .txt", and if TextEdit asks, choose "Use .html". To see the file's real extension, select it in Finder, open the info window with ⌘ I and look at "Name & Extension".
Double-clicking the file opens the text editor, not the browser
Check the extension first: if the file is still .txt, follow the item above. If the extension is right, right-click the file and choose Open with > Google ChromeOpen With > Google Chrome, or drag the file into an open browser window. To edit the code, choose NotepadTextEdit from the same menu; in other words, you keep the same file open in two programs at once: you write in one and look in the other.
Special characters come out garbled (ö, ş and so on)
When the browser doesn't know which character encoding a file was written in, it misreads letters like é, ü or ş and puts these strange symbols in their place. Add the <meta charset="UTF-8"> line inside the head, at the very top. When saving in Notepad, also make sure "Encoding" is UTF-8; the file's encoding and what the meta line says must match.
My quotation marks got curled and the class doesn't work
Smart quotes are on in TextEdit, so the straight " mark was turned into a curly quote. The browser doesn't recognize curly quotes, so things like class="subscribe" break. Turn smart quotes off in the settings, then delete the quotes in your code and type them again.
I made a change but it doesn't show up in the browser
The browser doesn't reread the file on its own. Save first (Ctrl S⌘ S), then refresh the browser (F5⌘ R). If it still doesn't change, make sure you are looking at the right file: the file name in the address bar must match the name of the file you are editing. Two files with the same name, one on the desktop and one in the web-lab folder, are the most common source of confusion.
I gave it a class but the button didn't change
Check four places: does the class name have a dot in front of it in CSS (.subscribe), is it exactly the same as the name in the HTML (sub-scribe and subscribe are different), are the curly braces closed, and does every line end with a semicolon? A single curly brace left open can break every rule below it, so when you hunt for the error, check the rule just above the broken one too.
The style isn't applied at all, and the CSS shows up as text on the page
Check that your CSS sits between <style> and </style>, inside the head. A typo in the tag name (like <stlye>) or a forgotten angle bracket means the browser doesn't recognize that block as style; it may then show the CSS on the page as plain text.
The color code doesn't work
A hexadecimal color code needs a # at the front: #FF6B35. When you write rgb(...), separate the three numbers with commas and close the parenthesis: rgb(41, 118, 211). Color names are English and written as one word: darkblue, not dark blue.
Hover doesn't work
There must be no space between the class name and :hover: .join:hover is right, .join :hover is wrong. If you leave a space, CSS reads it as "when the mouse is over an element inside the join class", and the button itself doesn't change. Check once more that the class name matches the one in the HTML.
Clicking the link says the page can't be found
The address in href must start with https://. If you write just www.google.com, the browser thinks it is the name of a file sitting in your own folder and can't find that file. Check the quotes too: the address must sit between the two quotes of href="...".
I can't find the file I saved
The save window usually opens the folder you used last, so the file can end up somewhere you didn't expect. When saving, look at the location at the top of the window and choose the web-lab folder. To find a lost file, type its name into the search box in File Explorerthe Finder search you open with ⌘ F.
It works in the playground but not in my own file
The playground shows what you type instantly, without saving; in your own file you have to save first. If it still doesn't work after saving, the cause is almost always the extension or the encoding: look at the first and third items in this list.
Bring your web-lab folder and a screenshot to the next class. The items you tick are saved in this browser, so you can see where you left off.
The flow of the exercises and the button examples are adapted from SuperSimpleDev's free HTML & CSS course. If you want to review at home, you can watch it there: lessons 1 and 2 this week.