Cryptography topics include: block ciphers, advanced encryption standard, public key encryption, hash functions, message authentication codes, digital signatures, key management and distribution, and public-key infrastructure. Network security topics include: user authentication, network access control, Kerberos protocol, transport layer security (TLS), IP security (IPSec), electronic mail security, and wireless network security.
Artificial Neural Networks (ANN) and Genetic Algorithms (GA) for problem solving and prediction tasks such as classification, clustering, optimization and data reduction and modeling human cognition, with application to real world problems. Ongoing research in this area in various application domains.
An introduction to computer graphics, including a review of current hardware; modelling and transformations in two and three dimensions; visual realism; perspective, hidden surface elimination, and shading; colour models; applications in several fields.
Introduction to management of small and medium-scale software projects. Advanced programming methodology using the programming language C++. Includes a significant programming project.
High-performance logic design for arithmetic circuits; memory system designs based on static and dynamic RAMs; computer bus protocols and standard I/O interfaces; mass storage devices; hardware description languages (VHDL, Verilog); fault testing, design for testability, built-in self-test, memory testing, and boundary scan architectures; asynchronous sequential circuit design; introduction to GPU architectures and GPU computing. The course is supplemented by a CPU design project that allows students to become proficient with Field Programmable Gate Array (FPGA) devices and associated CAD tools, as well as with GPU computing through nVidia CUDA or OpenCL languages.
Data Structures and Algorithms: arrays, linked lists, stacks, queues, deques, asymptotic notation, hash and scatter tables, recursion, trees and search trees, heaps and priority queues, sorting, and graphs. Advanced programming in the C language. Introduction to object oriented programming concepts in the context of data structures.
Fundamental concepts of object-oriented programming (OOP) such as encapsulation, abstraction, classes and objects, inheritance, and polymorphic programming. It provides an introduction to basic concepts of class and pattern design. Throughout this course students will also gain experience of OOP using packages and class libraries. The students will be able to debug and test their programs as well as handle exceptions. To enhance the exposure to real-world applications, they will practise OOP in various areas of applications and with graphical user interface.