Developing and managing efficient and effective database applications requires understanding the fundamentals of database management systems, techniques for the design of databases, and database administration principles. This course will focus on three key areas related to databases: understanding fundamental concepts, practical application, and staying abreast of emerging trends. Special emphasis will be placed on the hands-on design of databases and the development of database applications using contemporary software tools. 

This course delves into the fundamental principles of operating systems, examining their basic structure and key concepts such as abstraction, concurrency, scalability, persistence, and resource allocation. Additionally, it explores the roles of operating systems in managing user program execution, facilitating device interaction, and acting as vital intermediaries between users and hardware components. 


The course aims to delve into topics in algorithm design and analysis, focusing on intricate problem-solving techniques applicable across diverse computational domains. The course will explore algorithms, data structures, graphs and beyond, providing students with a comprehensive understanding of algorithmic efficiency and its applications in various fields.  

Through a combination of theoretical exploration and practical applications, students will develop proficiency in analyzing, designing, and implementing algorithms to tackle complex computational challenges. Moreover, students will cultivate adeptness in confronting algorithmic dilemmas encountered in real-world scenarios, thereby augmenting their ability in problem-solving across a spectrum of computational realms.

This course offers a comprehensive study of programming languages, focusing on core concepts and design tradeoffs. It 
covers the history, classifications, and characteristics of languages, along with their real-world applications. Key topics 
include interpreters, compilers, syntax, semantics, functional programming, and building domain-specific languages. 
Emphasis is placed on analyzing, evaluating, and designing solutions to address modern computing problems.

This course covers the theory and practical algorithms for machine learning from a variety of perspectives and will introduce the fundamental concepts that enable computers to learn from experience. An emphasis will be placed on practical application and real world problems.
Foundation of Software Engineering course is designed to prepare graduates for careers that involve the development, design, testing, maintenance, and documentation of various software products. This gives in-depth coverage of the areas of software engineering that are essential for becoming proficient in the field.
Human-Computer Interaction (HCI) focuses on the theories and technologies that establish an understanding of the complexity and relationship between humans and computing systems. The course includes the human-computer interface in the design and development of technologies, using cognitive and social characteristics of people, as well limitations that affect design and implementation decision making.

The global technology revolution has progressed to the point that every home and workplace is equipped with digital devices and electronic appliances, all of which are vulnerable to intruder attacks from anywhere on the planet. As a result, both at home and at work, there is a pressing need to ensure cyber security to protect ourselves from hackers. This course will introduce the important theories, tools, and techniques that are needed for the students to become knowledgeable in the field of cybersecurity, whereby, they will be introduced to computer software and programming to become efficient ethical hackers or to take up the ethical hacking examination.


The final year capstone project for the MSIT program is designed to enable students to apply their knowledge of information technology, computer science and other disciplines to the analysis of complex computing problems. Throughout the course, students will be expected to design and evaluate solutions to complex computing problems using industry-recognized best practices and standards. 

The course will provide students with the opportunity to analyze user needs in the development and implementation of computing-based solutions. Moreover, students will learn to assess the ethical considerations in the development, implementation, evaluation, and management of IT systems. The course will also emphasize the importance of constructing clear, well-organized arguments supported by credible research-based evidence.