Introduction to Software Engineering#
The rapid growth of cloud computing, microservices, and DevOps practices has transformed how modern software is built and deployed. Today’s software engineers need more than just coding skills — they must understand concurrency models, API development, database design, authentication, testing methodologies, and architectural patterns to build robust, scalable applications.
This track provides a comprehensive foundation in essential software engineering practices. Whether you’re building AI applications, web services, or enterprise systems, these skills are crucial for delivering production-quality software.
Learning Path#
The curriculum is organized into four progressive tiers followed by quick-reference cheatsheets and a final project exam:
Tier 1 — Foundations#
Web fundamentals, OS concepts, and Python concurrency — the building blocks every backend engineer must understand:
HTTP protocol, client-server communication, and REST principles
Threading, the GIL, multiprocessing, and process forking
Python asyncio: event loops, coroutines, and cooperative concurrency
Greenlets and lightweight context switching
File descriptors, sockets, and event-driven I/O
CPython internals
Tier 2 — API Development#
Building web APIs with FastAPI — request handling, data validation, and dependency injection:
FastAPI introduction, ASGI, and Uvicorn
Path parameters, query parameters, headers, cookies, and request bodies
Pydantic data modeling and validation
Dependency injection with FastAPI’s
Depends()system
Tier 3 — Data Persistence#
PostgreSQL database setup, async sessions, schema migrations, and CRUD patterns:
PostgreSQL with SQLAlchemy ORM setup
Async database sessions with SQLAlchemy
Alembic database migrations
Complete CRUD application architecture
Tier 4 — Security & Testing#
Securing and testing production APIs:
JWT fundamentals (HS256, RS256, token lifecycle)
OAuth2 authorization framework and Google authentication
Authentication patterns in FastAPI
Unit testing with pytest, TestClient, and async mocks
Cheatsheets#
Quick-reference pages covering cross-cutting topics used throughout all tiers:
Git collaboration workflows and branching strategies
Relational databases, SQL, and indexing
RESTful API design and security
Testing methodologies and TDD
Docker fundamentals and container orchestration
CI/CD pipelines with GitLab CI
Secure coding practices
Code review best practices
Clean architecture and layered design
Microservices vs serverless architecture
Final Project Exam#
An end-to-end project integrating all four tiers — building a complete authenticated CRUD API with database persistence and AI integration.
Glossary#
Term |
Description |
|---|---|
Version Control |
A system that records changes to files over time, enabling collaboration and history tracking. |
CI/CD |
Continuous Integration/Continuous Deployment — automating the build, test, and release process. |
Containerization |
Packaging applications with their dependencies into isolated, portable containers. |
Microservices |
An architectural style that structures an application as a collection of loosely coupled services. |
RESTful API |
An architectural style for designing networked applications using HTTP methods and stateless communication. |
TDD |
Test-Driven Development — writing tests before implementing the actual code. |
Clean Architecture |
A software design philosophy that separates concerns into distinct layers with clear dependencies. |
ASGI |
Asynchronous Server Gateway Interface — the async successor to WSGI for Python web applications. |
ORM |
Object-Relational Mapping — a technique for querying databases using programming language objects. |
JWT |
JSON Web Token — a compact, URL-safe means of representing claims for stateless authentication. |