Course Preparation
Essential software and tools for the course. Please ensure everything is installed before the course starts.
More Terms and Concepts
These are common software engineering terms used in class so you can build a shared foundation before sessions start.
Versioning
The practice of keeping track of different states of code or files so teams can review changes, compare revisions, and roll back safely.
Git
A distributed version control system used to track code history, collaborate with teammates, and manage parallel development through branches.
Gitflow
A Git branching workflow that structures work into branches such as main, develop, feature, release, and hotfix.
Test-Driven Development (TDD)
A development approach where you write tests first, then implement code to pass them, and finally refactor for cleaner design.
CI/CD
CI (Continuous Integration) automates build and test steps; CD (Continuous Delivery/Deployment) automates releasing validated changes to environments.
Unit Test
A test that validates a small isolated unit (such as a function or class method) to ensure expected behavior under specific inputs.
Test Case
A defined test scenario that includes preconditions, input data, execution steps, and expected outcomes.
Use Case
A user-focused description of how a system is used to achieve a goal, including key interactions between user and system.
Authorization vs Authentication
Authentication confirms identity (who you are); Authorization determines permissions (what you are allowed to do).
Token (JWT)
A JWT is a signed token format often used to carry login/session claims between client and server for authenticated requests.
Client-Server
The client (web/mobile app) sends requests and renders UI, while the server processes logic, accesses data, and returns responses.
HA (High Availability)
A system design approach that uses redundancy and failover so services remain available even when some components fail.
Single Point of Failure
A single critical component whose failure causes the whole system to stop; resilient architectures avoid this with backups and redundancy.

