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.
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:
| where | use it for | answer in |
|---|---|---|
| Teams channel | Anything another student might also hit: console errors, CORS, the API being slow, task wording. Ask here first. | 1 working day |
| 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 */
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.
↑ top 1 About 2 Plan ▾ 3 Assessment 4 Repository 5 Errors 6 Tools
2 Plan /* sixteen weeks, one site */
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 · theme | topic and what the site gains | lesson · 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.
3 Assessment /* marking */
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.
BV = 0,2 × S + 0,5 × P + 0,3 × E
| component | weight | what 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. |
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.
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.
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.
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
prefers-reduced-motion.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.
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.
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.
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.
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.
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.
<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.w12: fetch layer, error handling discussed with Claude. This costs you nothing.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.
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.
4 Repository /* git, tags, handing 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/
.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.
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 */
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 */
| tool | notes |
|---|---|
| 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.lt — HTML 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
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.