Course Recap

Comprehensive review of essential web development concepts for your final exam preparation.

Course Recap - Essential Web Development Review

This comprehensive recap consolidates the most critical concepts for your final exam. Review essential knowledge from Phases 1-3 (Fundamentals, HTML, CSS) and Phases 5-6 (Project Development, Deployment).

Exam Focus: All concepts are directly relevant to both the written exam and your project presentation.


Part 1: Web Fundamentals & HTML

Web Fundamentals

Client-Server Architecture

The web operates on a client-server model:

┌─────────┐                          ┌─────────┐
│         │   1. HTTP Request        │         │
│ Client  │ ───────────────────────> │ Server  │
│(Browser)│                          │         │
│         │   2. HTTP Response       │         │
│         │ <─────────────────────── │         │
└─────────┘                          └─────────┘

The Journey of a Web Page:

  1. User types URL in browser
  2. DNS translates domain name → IP address
  3. Browser sends HTTP request to server
  4. Server sends back HTML, CSS, JavaScript files
  5. Browser renders webpage

📚 Learn more: Lesson 1.1: Introduction to the World Wide Web


Browser Rendering Pipeline

When a user visits your project, the browser follows this process:

1. Parse HTML → Build DOM Tree
2. Parse CSS → Build CSSOM Tree
3. Combine → Render Tree
4. Layout → Calculate positions
5. Paint → Display pixels on screen

What this means:

  • Clean HTML structure = faster DOM building
  • Efficient CSS = faster CSSOM building
  • Optimized images = faster painting

📚 Learn more: Lesson 1.1: Introduction to the World Wide Web


URL Structure

Understanding URLs is essential for navigation:

https://www.example.com:443/path/to/page?name=value#section
│      │   │           │   │            │          │
│      │   │           │   │            │          └─ Fragment
│      │   │           │   │            └─ Query string
│      │   │           │   └─ Path
│      │   │           └─ Port (optional)
│      │   └─ Domain name
│      └─ Subdomain
└─ Protocol

For your project:

  • Use https:// when deployed
  • Keep paths simple: /about.html, /contact.html
  • Use fragments for smooth scrolling: <a href="#section">

📚 Learn more: Lesson 1.2: URLs and Domain Names


HTTP Methods & Status Codes

HTTP Methods:

MethodPurposeUsage
GETRetrieve dataLoading pages, images, CSS
POSTCreate/submit dataContact form submissions

HTTP Status Codes:

Success:

  • 200 OK: Page loaded successfully ✅

Client Errors:

  • 404 Not Found: Page doesn't exist
  • 403 Forbidden: Access denied

Server Errors:

  • 500 Internal Server Error: Server crashed
  • 503 Service Unavailable: Server temporarily down

For debugging: Check the Network tab in DevTools to see status codes.

📚 Learn more: Lesson 1.3: HTTP and Web Communication


Browser DevTools

Your most important debugging tool:

Essential Panels:

  1. Elements/Inspector: Inspect and modify HTML/CSS in real-time
  2. Console: See JavaScript errors
  3. Network: Monitor HTTP requests, check file sizes
  4. Application: View cookies, localStorage

DevTools Shortcuts:

  • F12 or Ctrl+Shift+I (Cmd+Option+I on Mac): Open DevTools
  • Ctrl+Shift+C (Cmd+Option+C): Inspect element
  • Ctrl+Shift+M (Cmd+Option+M): Toggle responsive design mode

For your project:

  • Use Elements panel to test CSS changes
  • Check Network panel: images should be < 200KB
  • Test responsive design at different screen sizes
  • Fix console errors before submission

📚 Learn more: Lesson 1.5: Development Environment Setup


Web Standards & Validation

W3C Standards: Ensure your project works across all browsers

Validation Tools:

  1. HTML Validation: validator.w3.org
  2. CSS Validation: jigsaw.w3.org/css-validator

Browser Testing: Test on Chrome, Safari, Firefox, and Edge

📚 Learn more: Lesson 1.4: Web Standards and W3C


HTML Essentials

HTML Document Structure

Every page must have this structure:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Brief page description for SEO">
    <title>Page Title - Your Project Name</title>
    <link rel="stylesheet" href="css/styles.css">
    <link rel="icon" href="images/favicon.ico">
</head>
<body>
    <!-- Your content here -->
    <script src="js/script.js"></script>
</body>
</html>

Critical elements:

  • <!DOCTYPE html> - Must be first line
  • <meta charset="UTF-8"> - Character encoding
  • <meta name="viewport"> - Required for responsive design
  • <title> - Unique title for each page

📚 Learn more: Lesson 2.1: HTML Document Structure


Semantic HTML5

Required semantic structure:

<header>
    <!-- Logo, site title, main navigation -->
    <nav>
        <ul>
            <li><a href="index.html">Home</a></li>
            <li><a href="about.html">About</a></li>
            <li><a href="portfolio.html">Portfolio</a></li>
            <li><a href="contact.html">Contact</a></li>
        </ul>
    </nav>
</header>

<main>
    <!-- Main content of each page -->
    <article>
        <header>
            <h1>Page Heading</h1>
        </header>
        <section>
            <h2>Section Heading</h2>
            <p>Content...</p>
        </section>
    </article>
</main>

<footer>
    <!-- Copyright, contact info -->
    <p>&copy; 2024 Your Name. All rights reserved.</p>
</footer>

Element Usage:

ElementUsageExample
<header>Top sectionLogo + navigation
<nav>Navigation linksMain menu
<main>Main contentOnly ONE per page
<article>Self-contained contentBlog post, portfolio item
<section>Thematic grouping"About", "Skills", "Projects"
<footer>Bottom sectionCopyright, social links

Exam Deduction: Using <div id="header"> instead of <header> shows lack of understanding. Always use semantic elements!

📚 Learn more: Lesson 2.7: Semantic HTML5


Forms

Contact form requirements:

<form action="/submit" method="post">
    <label for="name">Your Name:</label>
    <input type="text" id="name" name="name" required>

    <label for="email">Email:</label>
    <input type="email" id="email" name="email" required>

    <label for="message">Message:</label>
    <textarea id="message" name="message" rows="5" required></textarea>

    <button type="submit">Send Message</button>
</form>

Requirements:

  • ✅ Use method="post" (not GET!)
  • ✅ Every input must have a <label> with matching for attribute
  • ✅ Use appropriate input types: email, tel, date, url
  • ✅ Add required attribute for mandatory fields

📚 Learn more: Lesson 2.6: Forms & Input Elements


Images

Proper image usage:

<img src="images/portrait.jpg"
     alt="Descriptive text for screen readers"
     width="800"
     height="600"
     loading="lazy">

Requirements:

  • ✅ Store all images in images/ folder
  • ✅ Use relative paths: images/photo.jpg
  • Always include alt attribute
  • ✅ Optimize file size: < 200KB per image
  • ✅ Use appropriate format: JPG for photos, PNG for graphics, SVG for icons

Hotlinking is PROHIBITED:

<!-- ❌ HOTLINK - WILL FAIL EXAM -->
<img src="https://example.com/images/photo.jpg" alt="Photo">

<!-- ✅ CORRECT - LOCAL IMAGE -->
<img src="images/photo.jpg" alt="Photo">

📚 Learn more: Lesson 2.4: Images & Media


Part 2: CSS Styling & Responsive Design

CSS Fundamentals

Linking CSS

Only use external stylesheets:

<!-- ✅ External stylesheet (REQUIRED) -->
<head>
    <link rel="stylesheet" href="css/styles.css">
</head>
<!-- ❌ Inline styles (AVOID) -->
<p style="color: red;">Text</p>

<!-- ❌ Internal styles (DON'T USE) -->
<style>
    p { color: red; }
</style>

📚 Learn more: Lesson 3.1: CSS Introduction & Syntax


Selectors & Specificity

/* Element selector (specificity: 0,0,1) */
p { color: black; }

/* Class selector (specificity: 0,1,0) - PREFER THIS */
.highlight { background: yellow; }

/* ID selector (specificity: 1,0,0) - AVOID for styling */
#header { color: blue; }

/* Descendant selector */
nav a { text-decoration: none; }

/* Pseudo-classes */
a:hover { color: red; }
li:first-child { font-weight: bold; }

Specificity Hierarchy (low to high):

  1. Element selectors (p, div)
  2. Class selectors (.button, .card)
  3. ID selectors (#header)
  4. Inline styles (avoid!)
  5. !important (never use!)

Best practice: Use classes for styling. Reserve IDs for JavaScript and anchor links.

📚 Learn more: Lesson 3.2: Selectors & Specificity


Box Model

Every element is a box with four areas:

CSS Box Model

CSS:

.box {
    width: 300px;
    height: 200px;
    padding: 20px;
    border: 2px solid #333;
    border-radius: 8px;
    margin: 20px;
}

IMPORTANT - Box Sizing:

/* Add this to prevent layout surprises */
* {
    box-sizing: border-box;
}

📚 Learn more: Lesson 3.3: Box Model & Layout Fundamentals


CSS Layout

Flexbox - One-Dimensional Layout

Perfect for:

  • Navigation menus
  • Card layouts in a row
  • Centering content

Basic pattern:

.container {
    display: flex;
    gap: 20px;
    justify-content: space-between;
    align-items: center;
}

Common patterns:

/* Navigation menu */
nav ul {
    display: flex;
    gap: 20px;
    list-style: none;
}

/* Center content */
.hero {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 400px;
}

/* Card layout */
.cards {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
}

📚 Learn more: Lesson 3.4: Flexbox Layout


Grid Layout - Two-Dimensional Layout

Perfect for:

  • Page layouts
  • Image galleries
  • Card grids

Basic pattern:

.container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

Responsive grid (no media queries needed!):

.gallery {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 20px;
}

📚 Learn more: Lesson 3.5: Grid Layout


Responsive Design

Responsive Meta Tag (REQUIRED)

This ONE line makes your site responsive:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Must be in the <head> of all pages!


Media Queries

Mobile-first approach:

/* Base styles for mobile (< 600px) */
.container {
    padding: 10px;
    font-size: 14px;
}

nav ul {
    flex-direction: column;
}

/* Tablet (≥ 600px) */
@media (min-width: 600px) {
    .container {
        padding: 20px;
        font-size: 16px;
    }
}

/* Desktop (≥ 1200px) */
@media (min-width: 1200px) {
    .container {
        max-width: 1200px;
        margin: 0 auto;
        padding: 40px;
    }

    nav ul {
        flex-direction: row;
    }
}

Test at these breakpoints:

  • 📱 Mobile: 320px, 375px, 414px
  • 📱 Tablet: 768px, 1024px
  • 💻 Desktop: 1200px, 1920px

Responsive Images

img {
    max-width: 100%;
    height: auto;
}

This ensures images never overflow their container!

📚 Learn more: Lesson 3.6: Responsive Design & Media Queries


header {
    position: sticky;
    top: 0;
    background: white;
    z-index: 100;
}

Header "sticks" to top when scrolling - improves navigation accessibility.


Part 3: Project Development

File Structure

Required organization:

my-project/
├── index.html              # Homepage (REQUIRED)
├── about.html
├── portfolio.html
├── contact.html
├── css/
│   └── styles.css
├── js/
│   └── script.js
├── images/
│   ├── logo.png
│   ├── hero-image.jpg
│   └── ...
└── README.md

File naming:

  • ✅ Lowercase: about.html
  • ✅ Hyphens: my-portfolio.html
  • ✅ Descriptive: team-photo-2024.jpg
  • ❌ No spaces

📚 Learn more: Lesson 5.2: Personal Homepage Structure


Testing Checklist

Functionality:

  • All 4+ pages load without errors
  • All navigation links work
  • All images display correctly
  • Contact form has proper labels
  • No broken links

Quality:

  • HTML validates
  • CSS validates
  • No console errors
  • Works on mobile
  • Works on desktop
  • Images < 200KB each

Code Quality:

  • Semantic HTML used
  • External CSS (no inline styles)
  • Consistent indentation
  • Descriptive class names

Content:

  • No placeholder images
  • No "Lorem ipsum" text
  • Professional, complete content

📚 Learn more: Lesson 5.5: Testing & Debugging


Git Basics

Basic workflow:

# Initialize repository
git init

# Check status
git status

# Add files
git add .

# Commit changes
git commit -m "Add homepage structure and navigation"

# View history
git log --oneline

Good commit messages:

  • ✅ "Add contact form with email validation"
  • ✅ "Fix mobile navigation menu overflow"
  • ❌ "update" (too vague)

📚 Learn more: Lesson 6.1: Git & Version Control


Important Reminders

Quality Over Complexity: A simple, complete, professional 4-page website scores better than a complex, unfinished project!

Focus on:

  1. ✅ All features work properly
  2. ✅ Professional appearance
  3. ✅ Clean, valid code
  4. ✅ Clear presentation

Additional Resources

Course Materials:

Tools:

Related Exam Resources:

Good luck with your exam! 🚀