Learn how to plan, build, and maintain robust software systems in a disciplined way, combining theory (UML, design patterns, testing strategies) with hands-on tools and teamwork to prepare for real-world software engineering challenges.
Learn the core concepts that form the foundation of modern operating systems including processes and threads, CPU scheduling, synchronization and concurrency, memory management and file systems.
This module covers a broad spectrum of topics in Artificial Intelligence and Machine Learning, from classical search algorithms that operate on state spaces, to statistical learning methods like regression, and modern neural network architectures.
This modules teaches techniques for designing and analyzing algorithms, covering complexity analysis, recurrences, classical paradigms (divide-and-conquer, dynamic programming, greedy, randomized), and advanced topics like amortized analysis and NP-completeness, including reductions and understanding computational problem limits.