Learn to code, line by line.
Every course steps through a real, working program a line or two at a time — source code, a plain-language explanation, and the program's actual output, side by side.
For new users
Use code UUSI50 for 50% off
Enter the code when you subscribe. The discount lasts for as long as your subscription continues.
14
courses
249
modules
2,386
pages
and more every month
What a lesson looks like
Real screenshots of the course system — the same view you'll actually see. Click an image to enlarge it.
How it works
- 1
Code
You see a real, working program — never disconnected snippets.
- 2
Explanation
Each line or two gets a plain-language explanation, right when you need it.
- 3
Output
You see exactly what the code actually prints.
You move one page at a time, at your own pace, and can always go back.
Why this works
One subscription, the whole library
A subscription gives you access to every course — including ones added later. Cancel anytime from your account.
Go at your own pace
Stop any time and pick up later exactly where you left off.
Carefully written content
Every explanation is written and reviewed by hand, in both Finnish and English.
Learning path
Courses build on each other. Start with Python, the web, or both — the paths eventually converge.
1. Start here
No prerequisites — pick where you start.
A free orientation to the software development profession — what the job actually looks like day to day, the tools and processes real teams use, and the different paths you could specialize in. No coding experience needed; start here if you're not sure where to begin.
View courseA free, beginner-friendly introduction to programming — learn by stepping through real example programs, one or two lines at a time.
View course- HTML & CSS FundamentalsSubscription
A from-zero course in building and styling web pages — structure with HTML, presentation with CSS, one small concept at a time. No JavaScript.
View course A free, from-zero course in everyday local Git: repositories, commits, branches, and merging — plus the model underneath the commands, one small concept at a time. No prerequisites.
View course
2. Go deeper in one language
Take the language you chose further.
- Python II: Deeper Into the LanguageSubscription
For students who've finished the introduction course — a deeper look at Python itself: error handling, functions, iterators, functional-style programming, and object-oriented programming, one small concept at a time.
Requires: Introduction to Programming with Python
View course - JavaScript FundamentalsSubscription
For students who've finished HTML & CSS Fundamentals — the language itself first (variables, functions, arrays), then the DOM and real browser interactivity, one small concept at a time.
Requires: HTML & CSS Fundamentals
View course - CSS II: Layout and MotionSubscription
For students who've finished HTML & CSS Fundamentals — deeper CSS: named grid areas, responsive tracks with minmax()/auto-fit, custom properties (CSS variables), transitions, transforms, and @keyframes animation, one small concept at a time.
Requires: HTML & CSS Fundamentals
View course
3. Broaden your skills
Skills you'll want on either path.
- JavaScript II: Async, APIs, and the Modern WebSubscription
For students who've finished JavaScript Fundamentals — asynchronous code (Promises, async/await), fetch() against a real public API, and organizing code with JavaScript modules, one small concept at a time.
Requires: JavaScript Fundamentals
View course For students who've finished Git & Version Control — remotes, GitHub itself (pull requests, Issues, forking, branch protection, Actions), and the advanced local Git commands the first course held back: rebase, cherry-pick, reset, stash, tags, reflog, and bisect.
Requires: Git & Version Control
View course- Databases & SQL FundamentalsSubscription
A from-zero course in relational databases and SQL — tables, querying, filtering, joining, and designing a simple schema, one small concept at a time, using real SQLite.
Requires: Introduction to Programming with Python
View course - Testing & DebuggingSubscription
For students who've finished Python II: Deeper Into the Language — a practical process for finding real bugs (reading a traceback backward, print-statement bisection) and writing trustworthy pytest tests, from your first assert to red-green-refactor, one small concept at a time.
Requires: Python II: Deeper Into the Language
View course
4. Bring it all together
A backend course and a final project tying everything together.
- Python for the Web: Building a BackendSubscription
For students who've finished Python II: Deeper Into the Language and Databases & SQL Fundamentals — build a real web API with FastAPI: routes, path and query parameters, validated request bodies, real HTTP status codes, and a genuine SQLite-backed database connection, one small concept at a time.
Requires: Python II: Deeper Into the Language, Databases & SQL Fundamentals
View course For students who've finished JavaScript Fundamentals or JavaScript II, Python for the Web, and Git & GitHub II — combine everything into one real project: a FastAPI backend, an HTML/CSS/JS frontend, a real Git/GitHub workflow, and deploying the result somewhere real.
Requires: JavaScript Fundamentals, Python for the Web: Building a Backend, Git & GitHub II: Remote Collaboration and Advanced Git
View course
Anytime
No prerequisites — fits anywhere along the path.
- Scrum & Agile Practices in DepthSubscription
For anyone working on or with a software team — the real depth behind Scrum: every role, artifact, and event, how estimation and planning actually work, and how Kanban offers a genuinely different way to deliver value. No coding — a process course, built around diagrams and real charts.
View course