Welcome
In short: The Software Engineering course teaches how to write code that survives change: design patterns, clean code, algorithms, concurrency, security and software architecture.
Problem
You know the language. It still isn't enough
The program runs. Then the orders become a million and it waits a minute. A colleague adds a new payment method and breaks three other places. The visit counter is sometimes a few short, and nobody touched the code. Someone gets into an account that isn't theirs with one quote in the name field.
None of these is a syntax error. The compiler won't catch them. They come from how the program is arranged and what it does with the data, and they are the same in Java, C#, Python and JavaScript.
The idea
What you learn
- Design patterns. Solutions to problems that come back in every project: how to add a new payment method without touching the old ones. And when a pattern is too much.
- Clean code and refactoring. How to read someone else's code, see why it is hard to change, and improve it in small steps without breaking it.
- Algorithms and complexity. The biggest module, with submodules: complexity, searching, sorting, recursion, data structures, graphs, dynamic programming, greedy algorithms, techniques and a project at the end.
- Concurrency and race conditions. Why two threads lose increments of a counter, and how to protect the data.
- Security for developers. Untrusted input, passwords, sessions and CSRF, tokens, secrets, dependencies and random numbers.
- Software architecture. How a whole system is arranged: layers, modules and services, events, APIs, caching, scaling, and how to record why one option was chosen over another.
- The architect at work. An add-on for solution and enterprise architects: from a business need to measurable requirements, options with their cost, a decision and a migration without downtime.
The idea
How you learn here
Every lesson starts from a problem in real code, like the one on the first card. Then the idea is shown with a scene, synced to the code line by line: how the objects move, how the number of steps grows, how the threads interleave. Then come small tasks and a test.
The text is the same for the four languages. The code is in the language you choose with "Code in:" above the lesson, and you can change it at any time. Every program in the course has been run and checked.
The idea
What you need to know
From the language you need at least the modules "Classes and objects" and "Collections". For concurrency, also "Real-world programs". Every module says at its start which lessons of the language it uses.
If something is missing, the course map is in JavaScript.Test