# Courses

## Machine Learning

The primary focus of this course to learn techniques to make sense of numerical data. Ways to learn the hidden rules in raw data by reducing the size of data or refining the numerical data is taught in this course. Application of the methods learned in this course in finance, sociology, computer vision, psychology and other fields is also discussed. Major topics learned in this course includes: PCA, ICA, LDA, Decision Tree, clustering, ANN, HMM, SVM and varied versions of these methods.

## Reinforcement Learning

The primary focus of this course to learn how an intelligent agent behave in a simulated environment and how to design that environment. Application of the methods learned in this course in simulated environment, robotics, board game and other fields is also discussed. Major topics learned in this course includes: Agent-Environment Interface, Goals, Reward, Markov Decision Process (MDPs), Value functions, Optimality, Policy Evaluation and Improvement, Policy and Value Iteration, Monte Carlo Methods, Temporal Difference Learning (Q learning & SARSA) and varied versions of these methods.

## Computer Vision

This course aims to introduce the application areas of computer vision. How challenges related to understanding human visual system and how the understanding of the natural visual system can be implemented into computers is discussed in this course. Stereo or 3D counterpart creation from 2D images, motion detection in 2D image or video sequences, video processing for action annotation - are the main areas of discussion. After successful completion the course the students will able to know how to use low-level vision techniques learned in image processing be combined or applied to acquire higher level-visual perception.

## Advanced Artificial Intelligence

his course aims to introduce the key issues of artificial intelligence. The course has been divided into two parts. The first can be called the conventional approach to problem solving in AI i.e. by searching or more precisely, heuristics based searching. The second part will discuss relatively modern techniques related to ‘learning’ - the basis of intelligence. This will include neural networks, machine learning, and genetic algorithms. As application areas - computer vision, audio processing, path planning for robots and natural language processing will be discussed.

## Digital Image Processing

This course aims to introduce the fundamental concepts of digital image processing. Issues related to image formation and how to enhance, improve the quality of image for better perception by human or machine are discussed in this course. After completing this course successfully, one will know how, and in which circumstances the techniques learned in the course, such as contrast enhancement, histogram equalization, edge detection, morphological operations, segmentation, line or circle detection, should be used.

## Probability and Statistics for Science and Engineering

Students will be able to learn various aspects of applying statistical inference to scientific data to analyze, visualize and classify data and be able to measure the classification or performance accuracies probabilistically. Scientific data collection method is discussed in this course. Different types of soundness test of data are also covered in this course. This course will give an overview on how to design data dependent scientific (statistically/logically sound) experiments, how to analyze data, and visualize and interpret the results.

## Advanced Neural Networks

This course aims to introduce the concepts of learning in artificial neural networks. The similarity and dissimilarities between natural and artificial neural networks is discussed in this course. The main objective of this course is to give the ideas to the learners on how to use artificial neural networks in real life problems. More specifically it will address the questions of: which types of problems are more suitable for artificial neural networks and which type of artificial neural network should be used for what type of problem.

## Finite Automata and Computability

This course aims to introduce the concepts of theory of computation. It will help understand the very core of computer science. It will emphasize the limitations and power of machines from a theoretical view point. The concepts of state based machine are introduced. How structured languages such as machine language, C, C++ and higher level languages work will be discusses. Finally, topics on natural language processing, quantum computing and cellular automata will be discussed.

## Linear Algebra

This course aims to introduce the concepts of linear algebra from an application perspective. What are the common issues in vector and matrix related mathematics will be discussed in this course. After completing this course, the students should be able to identify specific linear algebra tools for specific problems. The major application areas that will be focused are: i) vector and matrix in geometric transformation i.e. 2D, 3D, ND space, ii) concepts of Eigen-vectors for reducing dimensions, iii) linear programming.

## Programming Concepts

This second course on programing teaches more formally the object oriented structure of programming. After two weeks of revision on variables, conditions and loops, higher levels of data structure and data abstraction techniques are introduced. After successful completion of this course, students should be able to solve computational problems from an object oriented view point. Documentation is also taught thoroughly which will be very helpful for future software engineering projects.

## Introduction to Computer Science

This very first course in computer science will introduce concepts such as how computers work and how to make computers work. The basics of programing a machine is discussed in this course. After completing this course, a student will be able to transfer a real life problem to a step by step process that we call algorithm and then they will know how to map the algorithmic representation of the solution of the real life problem to computer readable codes. More precisely, they will be able to identify a problem that requires a programmed solution, identify the tools of a given programming language (compiler) that are needed to solve this problem in hand and finally put the tools together following the algorithmic solution of the problem.