Back to Course

Course Preparation

Essential software and tools for the course. Please ensure everything is installed before the course starts.

An AI-powered code editor that helps you write code faster. It features AI-assisted editing and codebase indexing to help you understand and build projects efficiently.
How to check:

Open Cursor and verify it runs.

A graphical Git client that helps you inspect commit history, compare changes, and manage branches with a visual workflow for team development.
How to check:

Open SourceTree and verify you can create or connect to a local Git repository.

Flutter SDK

Google's UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase. It is our core framework for cross-platform development.
How to check:

Run `flutter doctor` in your terminal.

Successful Installation Example:
Flutter SDK Installation Success

XCode & Developer Tools

Apple's essential development environment for creating apps for iPhone and Mac. Required for iOS development and testing.
How to check:

Run `xcode-select --version` in terminal or open XCode.

Successful Installation Example:
XCode & Developer Tools Installation Success

Android Studio

The official IDE for Android. Used for managing Android SDKs and running the Android Emulator to test apps on virtual devices.
How to check:

Open Android Studio and ensure it starts.

A JavaScript runtime that allows you to run code outside of a browser. Includes essential tools like npm and yarn for managing project libraries.
How to check:
NodeJS:node -v
npm:npm -v
npx:npx -v
yarn:yarn -v

MongoDB Compass

A graphical tool for interacting with your MongoDB database. Visually explore, query, and manage your data without using the command line.
How to check:

Open MongoDB Compass.

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.