Everything for this course is on this page — the plan, the marking, and how to hand work in. You do not need to read all of it today.

/* start here — before the end of week 2 */

1  Create one private repository on github.com/new, named cosmos-2026.
2  Add me as a collaborator: @EIF-COURSES
3  Fill in the registration form.

That is all the setup there is. You need a browser and an editor — nothing else to install, and no framework.

Registration form Lessons — HTML & CSS Lessons — JavaScript Questions — Teams
Credits 6 ECTS
Semester 5
Assessment Exam
Contact hours 80
Self-study 76
Languages HTML · CSS · JavaScript

Who teaches this

Marius Gžegoževskis — lecturer, Electronics and Informatics Faculty. I wrote the two lesson tracks on programuoki.lt that this course uses, so if something there is unclear or wrong, I am the person who can fix it.

Office hours: will be given later. No appointment needed — bring your laptop and the page that will not behave. If that time does not work for you, email me and we will find another one.

Email: m.gzegozevskis@eif.viko.lt — I answer within two working days.

Three channels, three purposes — using the right one gets you an answer faster:

whereuse it foranswer in
Teams channel Anything another student might also hit: console errors, CORS, the API being slow, task wording. Ask here first. 1 working day
Email Anything personal: illness, a defence or presentation you cannot attend, your marks, your topic or feature proposal. 2 working days
Lab / office hours Anything faster to show than to describe. Have the Console open before you call me over. Immediately

On this page

1 · About the course 2 · Semester plan 3 · Assessment 4 · Repository and handing in 5 · When something goes wrong 6 · Tools and reading

1 About  /* what this course is */

About the course

The subject covers building the client side of a website: hypertext documents, cascading style sheets, and the JavaScript that makes a page do something. Attention is paid throughout to design, standards compliance and testing.

Rather than a series of unrelated exercises, we build one site across the semester — a browser for NASA's Astronomy Picture of the Day. Themes 1 to 8 build its structure and appearance in HTML and CSS: semantic markup, a responsive layout, forms, and a look you chose rather than inherited. Themes 9 to 16 make it work: fetching real pictures from an API, rendering them, handling events, validating input, and testing the result across browsers.

Each topic arrives when the site needs it. You will position things by hand until it becomes painful, and only then meet modern layout. You will update the page directly until it gets tangled, and only then separate the data from the display. The problem first, the tool second.

The platform carries the whole thing in two tracks that fit together: HTML ir CSS pagrindai builds the static page (weeks 1–7), and Interneto svetainių kliento dalies kūrimas makes it work (weeks 9–15). The stylesheet you write in the first carries straight into the second unchanged — the page itself gets rebuilt in JavaScript, and that is the interesting part rather than a repetition.

By the end you will be able to

↑ top 1 About 2 Plan ▾ 3 Assessment 4 Repository 5 Errors 6 Tools

2 Plan  /* sixteen weeks, one site */

Semester plan

One site, sixteen weeks. The small grey code under each week number is its theme in the approved subject description. Lesson links to the platform lesson for that week — weeks 1–7 use the HTML ir CSS pagrindai track, weeks 9–15 the Interneto svetainių kliento dalies kūrimas track; the second line is the file or folder that week adds.

wk · themetopic and what the site gainslesson · adds
01
T1
The web, and your first page
How a page reaches a browser. Standards, hypertext, dev tools.
web00 · 1
index.html
02
T2
Cascading style sheets
Selectors, the cascade, inheritance, custom properties.
web00 · 2
style.css
03
T3
Semantic HTML
Choosing the right element. Landmarks, headings, real buttons.
web00 · 3
04
T4
Links, images and colour
Navigation, responsive images, colour systems and contrast.
web00 · 4
05
T5, T7
Layout
Flexbox and grid. Page templates that hold together at any width.
web00 · 5
06
T6
Forms and responsive design
Form elements, native validation, one layout for every screen.
web00 · 6
07
T8
Frameworks
What Bootstrap does for you, what it costs, and when to write your own.
web00 · 7
08
Milestone 1
The site built and responsive, in HTML and CSS. Assessed in the lab.

assessed
09
T9
JavaScript — the language
Values, functions, control flow, and how the browser runs your code. Presentations begin.
js03 · 1
js/utils.js
10
T10
Functions, objects, modules
Structuring code across files with import / export. Presentations continue.
js03 · 1
js/
11
T11
The Document Object Model
Reading and changing a live page. Your first component.
js03 · 2
js/components/
12
T12
Browser objects and fetch
window, location, history — and real data from an API.
js03 · 4
js/api.js
13
T13
Events and state
Delegation, and one place that holds the truth the page follows.
js03 · 3
js/state.js
14
T14
Regular expressions
Matching and validating text — and when not to reach for them.
js03 · 11
js/validation.js
15
T15, T16
Milestone 2 · libraries in context, and testing
What jQuery solved and what replaced it. Validators, browsers, accessibility. The finished site, with your own feature, defended in the lab.
js03 · 20
assessed
16
Exam
Open and closed questions covering every theme.

The two shaded weeks are the assessed ones. On a phone, swipe the table sideways.

/* falling behind is worse here than in other courses */

There is one project, so week 10 cannot be done without week 9. If you miss a week, catch up before the next lab — not in January. Every week's state is on the platform and in the lecture, so catching up alone is possible.

↑ top 1 About 2 Plan 3 Assessment ▾ 4 Repository 5 Errors 6 Tools

3 Assessment  /* marking */

Assessment

Assessment is cumulative. Because there is one project rather than weekly exercises, the site is assessed at two points during the semester — week 8 and week 15 — alongside your research presentation and the exam.

P 50% S 20% E 30%

BV = 0,2 × S + 0,5 × P + 0,3 × E

componentweightwhat it assesses
P — practical work 50% Practical tasks completed to the stated requirements and defended in the lab, assessed at the week 8 and week 15 milestones.
S — literature review presentation 20% A review conducted to the given requirements and presented to the group in week 9 or 10.
E — exam 30% Open and closed questions covering every theme, from recall to analysis.

Practical work (P) — 50%

The largest part of your mark, and the one you build steadily. Practical tasks are set through the semester and defended — meaning you show the work running, and answer questions about how it is built and why you chose that approach. A task that works but cannot be explained is not finished.

Tasks are assessed against the requirements stated in each task. Marks are not awarded for the site looking impressive; they are awarded for meeting the requirements, using the right element for the job, and being able to justify the decision.

Your own feature

Everyone builds the same site from the same lessons. What makes yours yours is one feature nobody asked for, and it carries real weight within the practical mark.

It has to be big enough to need its own state. A restyled card or an extra colour is not enough. The test: does it need its own module, its own slice of state, its own render function and its own view? If yes, it counts — because building it means repeating everything from weeks 11 to 14 for something that does not already exist in the site.

Reasonable size, to give you the range: search by keyword across the pictures you have loaded · a saved collection that survives closing the browser · comparing two pictures side by side · a slideshow with keyboard control · filtering by media type, since the API returns video as well as images · sharing a link that opens one specific picture.

Agreed with me by week 6. Not at the end — by then your structure is settled and a new feature gets bolted on the side. Decided in week 6, it shapes how you build everything after it. If it lines up with your research topic, better still: research it, present it, then build it. Come to me with a suggestion; a proposal of your own is always better than one I hand you.

/* about the reference site */

The finished version of this site exists and its source is public, and you will get it — in week 9, after the first assessment, as something to read and compare against your own. Not before. Weeks 1 to 8 are for building it yourself from the lessons, because that is where the learning is. Handing in the reference site with a different name is not a grey area, and the defence finds it in about ninety seconds.

Research presentation (S) — 20%

You take one topic from the list below, read what has been written about it, and present what you found to the group in about ten minutes. In the subject description this is the literature review presentation; in practice it is closer to "go and find out how this is really done, then tell everyone."

Then you apply it to your own site. Every topic on the list is something the project needs, so the review is not a detour — you research it, present it, and the following weeks put it into your own work. That part is assessed as practical work.

Topics

Grouped by where they fit in the semester. Pick one — or propose your own in this area, which is usually a better presentation than a topic handed to you.

Layout and CSS

Frameworks and tooling

Data, storage and the network

Accessibility and quality

Performance, security and practice

Thirty topics, so in most groups everyone has their own. If two of you do want the same one, that is fine — tell each other, and present different angles rather than two summaries of the same three articles.

What is required

Topic chosen by week 4. Presentations run across two lab sessions in weeks 9 and 10. What you recommended should be visible in your site by week 13.

How the 20% is made up

That last one is not a formality — it is nearly a third of this component. Attend both presentation sessions and come ready to give reasoned feedback, not a number.

Exam (E) — 30%

Open and closed questions covering every theme of the subject, ranging from recall through to analysis and evaluation. It covers the whole syllabus, not only the second half.

Late work

There is one project rather than weekly submissions, so "late" means three different things here.

Weekly tags. Push the week's tag before the next lab. A tag pushed late still counts and is still graded normally — but the tag times are how I see steady work, and a repository where every tag appears in the last fortnight will not survive the defence, because the work is not there to explain.

Milestones. Weeks 8 and 15, in the lab, with the site in front of me. If you cannot be there, email me before the lab and we arrange another time within two weeks. A milestone missed without warning is assessed from whatever is in your repository at that week's tag — which is usually worse than turning up with something half-finished and explaining it.

The presentation is the one fixed date. It runs in weeks 9 and 10 and your classmates assess it, so it cannot be moved for one person without moving it for everyone. Miss your slot without arranging it beforehand and the presenting component of S is lost. Tell me in advance and we find another slot.

The one hard limit: everything must be pushed by the end of week 15. After that I close the grading and cannot count it.

If something serious happens (illness, family, visa or travel delays), email me before the deadline and we will agree on a new date. A date agreed in advance is not late work.

AI tools

You may use Claude, ChatGPT, Copilot and similar tools — but to understand, not to do the work for you. Good use: ask the AI to explain a console error, to compare two layout approaches, or to review markup you already wrote. Bad use: paste the task in and push what comes back.

  1. You must be able to explain and change every line you push. At the milestones and at the exam I will ask you to change your code in front of me, without any tools. Code you cannot explain is graded as not your work, whatever produced it.
  2. It must meet the requirements of the task. AI happily produces a wall of nested <div>s with click handlers on them. It looks right in a browser and fails both the validator and a keyboard — and this course marks semantic structure, standards compliance and accessibility, not appearance.
  3. Be honest. If an AI contributed materially, say so in the commit message — for example w12: fetch layer, error handling discussed with Claude. This costs you nothing.
  4. The exam is written without AI tools, and the presentation must be your own reading. Practice the same way you will be tested.

These rules sit on top of VIKO's guidelines on the ethical use of AI, which apply to every course — see the faculty policy. Where this page is stricter, this page applies.

Your marks

Everything assessed appears in the Moodle gradebook for this course, under Grades in the course menu. If a mark there does not match what you expected, tell me — it is easier to fix in October than in January.

↑ top 1 About 2 Plan 3 Assessment 4 Repository ▾ 5 Errors 6 Tools

4 Repository  /* git, tags, handing in */

Your repository and how to hand in

One private repository for the whole semester, named cosmos-2026. Add me as a collaborator (Settings → Collaborators → Add people, @EIF-COURSES), then fill in the registration form once. Your repository is private, so if you skip the collaborator step I cannot see your work and it cannot be graded.

cosmos-2026 · folder structure

cosmos-2026/
├── index.html
├── style.css
└── js/

What must never be committed

.gitignore · in the repository root

node_modules/
.DS_Store
.env              # if you put your API key in one

A NASA key is free and low-risk, but treat it as a secret anyway — the habit is what is being assessed, and in other courses the same mistake is serious.

Marking each week's state with a tag

Terminal · in the project folder

git add .
git commit -m "w07: state layer"
git tag w07
git push --tags

A tag is a permanent name for one commit, so w07 is still reachable in January after the file has changed thirty times. Tags are how the milestones are assessed and how you show steady work.

One catch worth knowing now: git push on its own does not push tags. That is why the last line says --tags. A tag that exists only on your laptop is invisible to me.

/* push, do not just commit */

A commit on your laptop does not exist as far as I am concerned. git push --tags is the last step every week. If in doubt, open your repository on github.com in a browser — what you see there is what I see.

↑ top 1 About 2 Plan 3 Assessment 4 Repository 5 Errors ▾ 6 Tools

5 Errors  /* errors and fixes */

When something goes wrong

Find your message below. Reading the error is half of fixing it — that is a skill this course teaches on purpose.

Nothing happens and there is no error

Open the Console. Client-side errors appear there and nowhere else. If the Console is empty, check the Network tab: your request may not have been made at all.

Cross origin requests are only supported for HTTP

ES modules do not work from file://. You must serve the folder. Any static server will do: npx serve, the VS Code Live Server extension, or python3 -m http.server.

Cannot read properties of null (reading 'addEventListener')

Your querySelector found nothing. Either the selector is wrong, or the script ran before the element existed. Check the spelling first; it is usually the spelling.

429, or a 403 mentioning rate limits

You are using DEMO_KEY and have run out. Get your own free key at api.nasa.gov; it takes a minute and the limit is far higher.

Unexpected token '<' is not valid JSON

You asked for JSON and got an HTML page, almost always a 404. Look at the actual URL in the Network tab; a typo in the path is the usual cause.

Your change does not appear

Hard refresh (Ctrl+Shift+R). The browser caches scripts aggressively, and you will lose time to this at least once.

Anything else — ask in the Teams channel so everyone gets the answer, or bring it to the lab. Bring the error text and a screenshot of the Console, not "it doesn't work".

/* if the problem is not the code */

Falling behind is usually not about programming. Illness, work, money, moving to a new country, or a stretch where nothing feels manageable — these are ordinary, and the college has people for them.

↑ top 1 About 2 Plan 3 Assessment 4 Repository 5 Errors 6 Tools ▾

6 Tools  /* tools, reading */

Tools and reading

toolnotes
A browser with dev tools Chrome or Firefox. You will live in the Console and Network tabs
An editor — VS Code Plus the W3C validator in a browser tab
A static server Any one-line server. Opening the file directly does not work — see part 5
A NASA API key Free, instant, from api.nasa.gov. Get your own in week 5
Git + a GitHub account Version control and handing work in

Core: the two lesson tracks on programuoki.ltHTML ir CSS pagrindai and kliento dalies kūrimas — and MDN, which is the reference for everything in this course and is written by people who know what they are talking about.

Required (from the subject description): Duckett, HTML and CSS: Design and Build Websites (2014); Duckett, JavaScript & jQuery (2014); Robbins, Learning Web Design (2012); Verou, CSS Secrets (2015); Flanagan, JavaScript: The Definitive Guide (2011). Several are available through the college's EBSCO subscription.

Also useful: the W3C CSS specifications, the W3C validator, and the NASA API docs.

First two weeks — checklist

☐  Editor installed
☐  A way to serve a folder locally
☐  GitHub account created
☐  Private repository cosmos-2026 pushed
☐  Lecturer added as collaborator
☐  Registration form submitted
☐  A page of your own HTML open in a browser
☐  Tag w02 pushed

↑ top 1 About 2 Plan 3 Assessment 4 Repository 5 Errors 6 Tools

Client-side web development · Vilniaus kolegija, EIF · Contact: m.gzegozevskis@eif.viko.lt
If a link on this page is dead, tell me and I will fix it the same day. The semester plan and assessment weights may be refined at the start of the semester.