The following are some of the key modules I have taught so far:-

1. Applied Cryptography

This course covers the basics of modern cryptography as used to secure e-commerce transactions and code distributed over the internet. The course explores efficient implementation techniques for the most popular symmetric and asymmetric cryptographic algorithms, such as AES and RSA. A discussion on the application of physical attacks on cryptographic systems, to include but not limited to timing and power analysis, and fault injection attacks. Countermeasures to protect practical security systems against physical attacks complete the course.

2. Distributed Systems

This course aims at introducing students to the principles, models, abstractions and tools used in designing and implementing multiple hosts/multiple server communication networks, with focus on file server design, network programming, naming, storage systems, security, and fault tolerance.

3. Introduction to Computer Programming in C

This course introduces students to the concepts of computer programming using a procedural language.This will enable the students to have a better understanding of more advanced programming concepts and to tackle programming problems logically.

4. Computer Graphics

This course exposes students to computer graphics hardware, 2D and 3D objects and animation tools.

5. Visual Languages and Programming

This course is designed to introduce the students to fundamentals of visual language theory, iconic and symbolic representations, parsing techniques, semantics and pragmatics of visual languages, visual programming systems, visual query systems, visual information systems and visual software engineering.

6. Computer Organisation and Architecture

Computer organization and architecture aims to develop a deeper understanding of the hardware environment upon which all of computing is based, and how a hardware layer is interfaced to the software layers that comprise the applications that perform modern computing. Students need to understand computer architecture to develop programs that can achieve high performance through a programmer’s awareness of hardware functional components, their characteristics and limitations. In selecting a system to use, students should be able to understand the trade-offs among various components, such as CPU clock speed, cycles per instruction, memory size, and average memory access time.

7. Embedded Systems Design

Embedded Systems is simply the brain of most of the electronics based systems to access, process, store and control  the  dataThough programming is a major task in embedded systems. Programming knowledge alone won't help much in getting into this world. The real challenge is in understanding the electronics hardware and also other interface hardware (Automobile engine, heart patient's ECG, to a motor in a satellite).

8. Contemporary Issues in Information Systems Management

Contemporary Issues in Information Systems Management investigates a number of topical issues in the rapidly changing information technology environment. Considers social and ethical issues in information technology. It also investigates in depth a number of contemporary theoretical issues and practical information technology tools and broadens students' perspective and skills.

9. Internetworking and WAN technologies

This course introduce students to the different ways of implementing wide-area networks. It covers the design and deployment as well as management and troubleshooting of WANs

10. Systems Administration

This course aim to give students an overview of operating systems and how operating systems work with other hardware in computer systems. The labs will cover the tasks involved in installing, configuring and maintaining different types of operating systems. To demonstrate key features, functionality and maintenance of different operating system families, the windows and Linux operating systems will be covered. The students will be given a solid appreciation of the tasks involved in a systems administration in a modern networked computer environment.