CMP5101 Data Mining
Data mining is the process of secondary analysis to search for unsuspected relationships that are of interest or value for decision making. It aims at discovering association rules, episode rules, sequential rules and other knowledge embedded in data, and is concerned with efficient data structures and algorithms that have good scaling properties. The course presents essential aspects of data mining, includes a data mining project and prepares students to program applications that use data mining techniques.
CMP5103 Artificial Intelligence
This course is a broad introduction to artificial intelligence. Topics include problem solving by searching, uninformed and heuristic search strategies, adversarial search, knowledge representation, propositional logic, predicate logic, inference, learning, supervised learning, unsupervised learning, probabilistic models, and natural language processing.
CMP5121 Network Security and Cryptography
This course gives a comprehensive introduction to the field of network security and cryptography. The course begins with the security fundamentals and basic principles. It introduces private key cryptographic algorithms, and gives an overview of stream and block ciphers used for data encryption and decryption. Standard algorithms used in practice for encryption with stream and block ciphers are covered. Hash functions, message authentication codes are discussed. An introduction is given on public key cryptography. The discrete logarithm and integer factorization problems are introduced and, based on these problems, public key algorithms such as the DiffieHellman key exchange, RSA and ElGamal are developed. Also discussed are the applications of these algorithms in digital signatures and network security protocols for authentication and key distribution.
CMP5123 Computer Networks and Mobile Communications
This course provides a comprehensive overview of computer networks and mobile communications technologies. The topics include computer networks, Internet, TCP/IP, transport layer protocols, routing layer protocols, medium access control protocols, wireless channel models, packet scheduling, multimedia networks, cellular networks (GSM, GPRS, CDMA, 3G, 4G, etc.), and wireless local area networks.
CMP5125 Multimedia Communications and Networking
This course focuses on advanced topics in the fields of multimedia communication systems and networks protocols. The main toics will cover overview of network protocols, clientserver,P2P models, important Internet applications, multimedia compression standards, MPEG2 transport layer, video streaming, error resilience in video communications.
CMP5126 Image and Video Processing
A topdown analysis of video processing applications, algorithms, tools, and fundamentals. Applications include digital TV, computer games, cinema special effects, 3D TV, medical imaging, and forensics. Algorithms include motion estimation, filtering and restoration, deinterlacing and enhancement, interpolation and super resolution, stereo and 3D video processing, coding, and compression standards.
CMP5127 Wireless Sensor and Ad Hoc Networks
This course provides a comprehensive overview of wireless sensor networks and their realworld applications. The topics include wireless sensor network protocols, network architectures and management, error control techniques, optimal packet size design, crosslayer communication protocol solutions, localization algorithms, ZigBee, IEEE 802.15.4, 6LowPAN, underwater and underground sensor networks, wireless sensor and actor networks, and wireless multimedia sensor networks.
CMP5128 3D Computer Graphics
Introduction to computer graphics, where computer generated pictures are used, graphics display devices, overview of graphics systems; getting started: drawing figures, device independent programming and OpenGL, anatomy of an OpenGL application, use of OpenGL in C++, basic 2D shapes, representation of objects on the computer screen; computer graphics elements: drawing shapes, graphics output primitives, attributes of graphics primitives, geometric transformations, 2D viewing, clipping, threedimensional viewing, OpenGL 3D viewing and projections, introduction to illumination models and shading in OpenGL, GUI design for graphics applications, introduction to computer animation and game programming.
CMP5130 Machine Learning and Pattern Recognition
A broad technical introduction to the techniques that enable computers to behave intelligently: problem solving and game playing, knowledge representation and reasoning, planning and decision making, learning, perception and interpretation. Pattern Recognition techniques, and evaluation of such techniques will be covered in depth. The application of these techniques to realworld systems, with some programming in Java.
CMP5131 Bioinformatics and Computational Genomics
This course aims to present some of the most basic and useful algorithms for sequence analysis, together with the minimal biological background necessary for a computer engineering student to appreciate their application to current genomics research. Topics to be covered include sequence alignments, multiple alignment algorithms, the probabilistic interpretation of alignments, hidden Markov models, heuristics such as Gibbs sampling, genome databases, comparative genomics, gene discovery, gene expression analyses, transcription factor binding site discovery, pathway discovery, functional genomics, and medical diagnostics using Single Nucleotide Polymorphisms.
CMP5133 Artficial Neural Networks
This course gives an introduction to fundamental neural network architectures and algorithms. Topics include: linear and logistic regression, leastmeansquare algorithm, multilayer perceptrons, backpropagation algorithm, radial basis function networks, support vector machines, selforganizing maps, and recurrent networks.
CMP5135 Formal Languages and Automata Theory
After giving the fundamentals this course gives an introduction to theories of computability and complexity. Topics include: regular languages, finite automata, regular expressions, context free grammars, pushdown automata, Turing machines, computability, halting problem, complexity theory, NPcompleteness, and polynomial time reducibility.
CMP5136 Expert and Knowledge Based Systems
This course introduces the basic concepts in expert and knowledgebased systems. The topics include: knowledge representation and reasoning, knowledge acquisition and machine learning, models of reasoning and decision making under uncertainty, software for developing expert systems, and expert system shells.
CMP5138 Analysis of Algorithms
Rigorous analysis of the time and space requirements of important algorithms, including worst case, average case, and amortized analysis will be done. Techniques include ordernotation, recurrence relations, etc. Analysis of the key data structures: trees, hash tables, balanced tree schemes, priority queues, Fibonacci and binomial heaps will be presented. Algorithmic paradigms such as divide and conquer, dynamic programming will be introduced. Selected advanced algorithms will be explored.
CMP5150 Graph Theory and Applications
Fundamental theory of graphs and its example real world applications will be studied. Initially basic definitions, graph structure and representation will be introduced. Later both basic trees and various advanced extensions will be discussed. Other classical graph theory techniques such as: Eulerian and Hamiltonian graphs, shortest path problems, connectivity, planarity, matchings etc. will be studied. Real world examples from various sciences will also be given.
CMP5151 Software Design Patterns
This course introduces the use of design patterns in the context of software engineering. The main topics are classical design patterns, including creational, structural, behavioral patterns and also some popular patterns from distributed programming, user interface and enterprise development. Antipatterns will also be described. This class introduces advanced object oriented (OO) programming techniques hence a basic knowledge of OO paradigm is prerequisite.
CMP5152 Intelligent Interactive Multimedia
This course aims at teaching fundamentals of realtime multimedia applications and various methods for different types of user interaction for multimedia systems. Related technologies such as touchpad devices, interactive Screens, digital Signage, natural user interfaces, augmented reality, virtual reality, haptics technologies, projectorcamera systems will be covered with both fundamental mathematical theories and practical concepts. System structure of each technology will be overviewed, stateoftheart methods will be introduced. Software implementation and hardware understanding are also necessary to build these systems. Objected oriented programming language(c++/Java) will be used for homeworks and projects. Basic physical and hardware concepts will be presented shortly during the class.
CMP5204 Embedded Systems
This course is a handson course that requires writing software as well as boardlevel work. It sits at the intersection of fields such as microprocessors, digital design, operating systems, software design, and industrial automation. The students are exposed to topics such as meeting realtime constraints in embedded systems, generating delays and interrupts, using the serial interface, etc. They get theoretical as well as handson experience on embedded system design by using embedded software development environments and hardware emulators, as well as by working on actual hardware where they physically connect multiple building blocks.
CMP5301 ContextAware Computing
Increased usage and availability of mobile devices, wireless networks and embedded systems resulted in the new exiting field of "context aware computing" where the applications take into account the "context" information. The student will be introduced main concepts and developments in this field. Main topics include: ubiquitous computing in general, wireless sensor networks, infrastructure, design concepts in context aware applications, related middleware and privacy. The concepts will be made more tangible through real world applications.
CMP5550 Computer Vision
This class introduces the fundamental techniques in computer vision. Initially basic concepts of image formation, representation and camera projection geometries will be given. Later some classical image processing techniques will be introduced such as edge detection, segmentation, thresholding etc. Image matching, optical flow, local image features will be described in the context of multiple image processing. Basic image recognition techniques are also to be introduced. 3D inference will be another focus where stereo imaging, 3D reconstruction and various shape from X techniques are to be discussed.
CMP5551 3D Computer Vision
This course introduces various three dimensional inference techniques that are used in computer vision. It will introduce geometric transformations and their estimations, image matching techniques, stereo and multiple camera setups, popular shape from X techniques and 3D displays. It will also review basic image processing and statistical estimation techniques.
CMP5931 Special Topics I
This is a researchoriented course and designed to teach the stateofart knowledge in various topics in computer engineering domain. There will be extensive reviews of seminal research papers in various selected topics.
CMP5932 Special Topics II
This is a researchoriented course and designed to teach the stateofart knowledge in various topics in computer engineering domain. There will be extensive reviews of seminal research papers in various selected topics.
CMP5888 Master Thesis
CMP5999 Project
CMP5887 Seminar
