Introduction to Software Engineering
Complete learning path from fundamental concepts to advanced software development practices. Master processes, algorithms, coding paradigms, architecture, and AI-assisted development.
120 hours
10
beginner
0%
Processes
Theoretical foundations of processes and flowcharts. Learn how to think systematically about workflows, decision points, and process optimization.
Comment
Understanding processes is fundamental to all software engineering. Before writing code, you must understand the problem and how to break it down into steps.
Ideas to Practice
- Create a flowchart for your morning routine
- Map the process of ordering food at a restaurant
- Document a work process using flowchart symbols
Prerequisites
Next Steps
Foundation of Algorithms
Algorithm foundations and quality principles without code. Learn to think algorithmically through conceptual examples, pseudocode, and real-world analogies. Understand what makes an algorithm efficient, readable, and maintainable.
Computing Imperative Algorithm
How computers work, basic data structures, and imperative algorithms in Python. Learn variables, control flow, loops, functions, and basic data structures through hands-on Python coding.
Clean Code & Design Patterns
Writing maintainable, readable code and understanding common design patterns. Learn naming conventions, code organization, refactoring techniques, and classic patterns like Singleton, Factory, Observer, and Strategy.
SOLID Principles & OOP
SOLID principles and Object-Oriented Programming paradigm. Master Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion principles through practical OOP examples.
Clean Architecture
Architectural patterns and separation of concerns. Learn about layers, boundaries, dependency rules, and how to structure applications for testability, maintainability, and independence from frameworks.
Functional & Declarative Coding
Functional programming concepts and declarative paradigms. Learn immutability, pure functions, higher-order functions, map/filter/reduce, and how to think in transformations rather than mutations.
DDD & Software Architecture
Domain-Driven Design and advanced software architecture. Learn ubiquitous language, bounded contexts, entities, value objects, aggregates, and how to model complex business domains effectively.
TDD & Code Quality Tools
Test-Driven Development and code quality ecosystem. Master the Red-Green-Refactor cycle, unit testing, integration testing, pre-commit hooks, linting, code formatting, static analysis, and code scanning tools.
Agentic AI Software Development
AI-assisted software development with agents. Learn about AI agents, skills, context management, pipelines, best practices, and how to use OpenCode as a powerful development tool. Master the future of software development.