
Object-Oriented Programming
After completing this course you will be able to decompose a real-life scenario into programmable objects that are related. Further, you will be able to design programs using abstraction, inheritance and polymorphism, and apply concurrency using threads and synchronization.

Data Structures & Algorithms
After completing this course, you will be able to analyze the complexity of basic algorithms, implement and use common data structures, select appropriate data structures and algorithms for a given situation, and apply basic algorithm design techniques for solving problems.

Operating Systems
After completing this course you will be able to describe the abstractions provided by a typical Operating System (OS), use threads for simple concurrent applications, solve standard synchronization problems, identify deadlock situations in codes and correct them, and explain the operations of commonly used file systems.

Computer Vision & Image Processing
After completing this course you will be able to understand how the human visual system functions, how a digital image is formed, how to process an image for different purposes, how a camera works, and how stereo vision technics are used to achieve 3D perception.

Advanced Algorithms
After completing this course you will be able to modify basic data structures to overcome drawbacks, apply advanced techniques for the analysis of algorithms and apply advanced techniques for the design of algorithms.