Mathematics for Computing

This subject focuses on specific areas of discrete mathematics such as set theory, logic, counting, relations, functions, graphs, etc. The knowledge gained from this course is meant to serve as a sound basis in understanding the fundamental concepts in algorithm theory, data structure, programming, cryptography, computer networking, software engineering, information systems, artificial intelligence and automata theory.

Data Structures and Algorithms

The course deals with basic algorithm analysis techniques, fundamental data structures and important algorithms such as orders of growth; lists, stacks, queues and their programming implementations; trees, binary search trees, balanced search trees, AVL trees; hashing techniques; priority queues; sorting algorithms: insertion sort, mergesort, quicksort; graph algorithms: topological sorting, shortest-path algorithms, depth-first and breadth-first search techniques, etc.

Introduction to Affective Computing

This course introduces the fundamentals of computing that relate to, arises from, or deliberately influences emotions. It represents a broad interdisciplinary research and practices aiming to make computers understand affect and emotions, experience them and respond accordingly. Starting with an overview of psychological theories of human emotions, various machine learning and computational approaches are also discussed.