Purpose
The purpose of Lab & Assignment 01 is to bring all students to the same baseline level of semantic HTML skill with minimal CSS and no JavaScript. Your work should clearly communicate the differences between Norman’s model, GOMS, and KLM.
Starter Project
You will receive a starter website repository (5 pages). Your task is to improve the HTML structure, clarity, and accessibility while keeping within the rules below.
index.html(Home)cv.html(Conceptual CV / structured content page)contact.html(Contact form)analysis.html(Norman vs. GOMS comparison table)norman2klm.html(Norman vs. GOMS vs. KLM + operators)
You may add content related to our Week 01–Week 04 discussion (e.g., Toggle Switch, Automatic Syringe, Who Paid Problem), but all work must remain within Lab 01 scope and the Norman/GOMS/KLM comparison theme.
Content Scope (Strict)
Use only content related to:
- Norman’s Action Cycle (and gulfs of execution/evaluation)
- GOMS (goals, operators, methods, selection rules)
- KLM (operators and execution-time prediction)
Source restriction: Use selective and relevant content from Dix et al., Human–Computer Interaction (Ch. 9 and Ch. 12). You may add hand-designed UI sketches/layouts for interaction analysis, but do not introduce unrelated topics or external sources.
HTML Requirements (Tabular)
| Requirement Area | HTML Element(s) | Rule (What to Do) | Purpose (Why) | Common Mistakes to Avoid |
|---|---|---|---|---|
| Semantic Structure |
header, nav, main, section, article, footer |
Use semantic elements according to their meaning:
header for page header, nav for navigation,
main for main content, section for thematic grouping,
article for self-contained content, footer for footer.
|
Improves clarity, maintainability, and screen-reader navigation. |
Using only div; using nav for non-navigation content.
|
| Navigation Structure |
nav, ul (unordered list), li (list item), a (anchor/link) |
Navigation must be structured as a list:
nav contains a ul,
the ul contains li,
and each li contains an a link.
|
Screen readers expect menus as a list of destinations. |
Placing a directly inside ul (missing li);
inconsistent navigation across pages.
|
| Headings | h1, h2, h3, h4 |
Use exactly one h1 per page.
Use h2, h3, etc. for subsections without skipping levels.
|
Provides a clear content hierarchy and supports assistive navigation. |
Multiple h1 elements; skipping from h1 to h3.
|
| Tables (Comparisons) |
table, caption, thead, tbody, th, td |
Use tables only for comparison/tabular data.
Include caption, thead, tbody,
and use th with correct scope.
|
Makes comparisons readable and accessible to screen readers. |
Using tables for layout; missing caption;
using only td with no headers.
|
| Links | a (anchor/link) | Use descriptive link text that clearly indicates the destination (avoid generic text like “click here”). | Links should make sense when read alone (e.g., by a screen reader). | “Click here”, “Read more”, or vague links that do not describe the destination. |
| Images | img, alt |
Every img must have an alt attribute.
Use meaningful alt text for informative images;
use alt="" for decorative images.
|
Provides accessible alternatives and fallback when images fail to load. |
Missing alt; using file names like “norman.jpg” as alt text.
|
Accessibility Requirements
- Use
aria-current="page"on the active navigation link (exactly one per page) - All form controls must have associated
<label for="..."> - Images must have appropriate
alttext (or empty alt for purely decorative images) - The site must be keyboard usable (Tab to reach links and form controls)
CSS Rules (Strict: Minimal Only)
You may use CSS only for the following properties:
colorbackground-colorfont-familyfont-size
Not allowed in Lab 01:
-
No layout or box model:
margin,padding,border,width,height,display,position,flex,grid, etc. - No animations, transitions, shadows
- No CSS frameworks
- No JavaScript
CSS can be included using <style> in the page <head>
(internal CSS) or inline styles, but keep it minimal.
Submission
- Submit your work as a GitHub repository link
- Repository should render correctly via GitHub Pages
- Due: Week 05 (as announced in class)
Lab Exam Practice (HTML Foundations)
These practice questions are within Lab 01 scope. They focus on semantic HTML, navigation structure, accessibility basics, and tables.
Part A: Find Mistakes (Identify + Fix)
In the exam, you will (1) identify the mistake in one sentence and (2) write the corrected HTML.
| UI Element / Issue | Wrong HTML (with mistake) | Correct UI Element | Correct HTML |
|---|---|---|---|
Navigation menu has a link directly inside ul (missing li) |
|
Navigation list where each link is inside a list item |
|
Form label is not associated with its control (for ≠ id) |
|
Label correctly connected to form control |
|
| Heading hierarchy is incorrect (skips a level) |
|
Headings follow proper hierarchy (no skipping levels) |
|
Comparison table missing caption and header cells (th) |
|
Accessible table with caption + headers + scope |
|
aria-current used incorrectly (more than one “current page”) |
|
Only the active page link is marked as current |
|
Part B: True / False
- T/F: Every link inside
<ul>must be placed inside an<li>. - T/F: A page may have multiple
<h1>headings to make text larger. - T/F:
aria-current="page"should be used on the active navigation item. - T/F: A form is accessible even if it has no
<label>elements. - T/F: KLM predicts execution time for expert, error-free performance.
Part C: Short Answer
- Explain the difference between a semantic element (e.g.,
nav) and a generic element (e.g.,div). - Why does KLM not model high-level planning and interpretation?