Module Descriptors

Introduction to Computers

The aim of this module is to examine computer systems and learn how they can enhance personal productivity. The module will focus on essential computer skills in today’s world, including computer hardware, important software applications, such as word processing, worksheets, database, and presentation graphics.

Introduction to Programming

The course teaches the basics of programming. Students will learn about fundamental programming concepts such as control conditions, loops, and recursion. Fundamental data structures such as Arrays and Strings will also be studied. The course has extensive lab sessions to ensure students get hands-on experience of taught materials.

Discrete Structures I

This module introduces the foundations of discrete mathematics as they apply to computer science, focusing on providing a solid theoretical foundation for further work. Topics include functions, relations, sets, simple proof techniques, Boolean algebra, propositional logic, digital logic, elementary number theory, and the fundamentals of counting.

Object-oriented Programming

The course teaches the basics of object-oriented programming. Students will learn about fundamental programming concepts such as recursion, abstraction, higher-order functions and data types, whilst at the same time emphasising the practical use of such constructs by applying them. Students will also learn the general principles of object-oriented frameworks.

Data Structures and Algorithms

This course introduces the fundamental concepts of data structures and the algorithms that proceed from them. Topics include recursion, the underlying philosophy of object-oriented programming, fundamental data structures (including stacks, queues, linked lists, hash tables, trees, and graphs), the basics of algorithmic analysis, and an introduction to the principles of language translation.

Discrete Structures II

This module continues the discussion of discrete mathematics introduced in Discrete Structures I. Topics in the second course include predicate logic, recurrence relations, graphs, trees, matrices, computational complexity, elementary computability, and discrete probability.

Introduction to Software Engineering

This module introduces principles of software engineering; requirements, design and testing; review of principles of object orientation; object-oriented analysis using UML; frameworks and APIs; analysis, design and programming of simple servers and clients. It also includes an introduction to the client-server architecture and to user interface technology.

Database Systems

This course is an introduction to the principles underlying the design and implementation of databases and database management systems. It will cover the languages that have been developed for relational databases, their implementation and optimisation. It will also introduce some recent developments in databases including object-oriented, object-relational systems, and semi-structured data. The bare essentials of transaction processing will also be covered.

Software Construction

This module includes general principles and techniques for disciplined low-level software design; BNF and basic theory of grammars and parsing; use of parser generators; basics of language and protocol design; formal languages; state-transition and table-based software design; formal methods for software construction; techniques for handling concurrency and inter-process communication; techniques for designing numerical software; tools for model-driven construction; introduction to middleware; hot-spot analysis and performance tuning.

Web Technology

This course covers mark-up languages and methods for manipulating marked-up content. In particular, the students will learn techniques for developing web pages using XHTML and Cascading Style Sheets (CSS).

Computer Architecture

This module introduces students to the organisation and architecture of computer systems, beginning with the standard von Neumann model and then moving forward to more recent architectural concepts.

Introduction to Artificial Intelligence

This course will introduce the basic principles in artificial intelligence research. It will cover simple representation schemes, problem solving paradigms, constraint propagation, and search strategies. Areas of application such as knowledge representation, natural language processing, expert systems, vision and robotics will be explored.

Human-Computer Interface Design

The design and implementation of efficient, effective and user-friendly computing systems depends upon understanding both the technology and its users. Only then can designers be confident that computer systems will be properly matched to the skills, knowledge and needs of their users. The study of Human-Computer Interaction (HCI) seeks to combine perspectives and methods of enquiry drawn from disciplines such as Psychology and Sociology with the tools, techniques and technologies of Computer Science to create an approach to design which is both relevant and practical.

System Design and Practical Project

The System Design Project is intended to give students practical experience of (a) building a large scale system, and (b) working as members of a team. The project involves applying and combining material from several courses to complete a complex design and implementation task. At the end of the course each group demonstrates its implemented system and gives a formal presentation to an audience of students, supervisors, and visitors from industry.

Operating Systems

This course provides an introduction to the design and implementation of general purpose multi-tasking operating systems. It concentrates on the kernel aspects of such systems with the emphasis being on concepts which lead to practical implementations. Throughout the course reference is made to a number of significant actual operating systems (Linux, Windows variants etc.) to illustrate real implementations.

Professional Issues

There are many commercial, engineering and professional issues, complementary to the necessary scientific knowledge and technical skills, that impinge on the work of the computing professional. The Professional Issues course aims to provide a general awareness of these issues and to cover some of them in depth. The course will mostly involve directed reading but there will be some lectures from members of staff and visitors.

Professional Software Engineering Practice

This module includes history of computing and software engineering; principles of professional software engineering practice and ethics; societal and environmental obligations of the software engineer; role of professional organisations; intellectual property and other laws relevant to software engineering practice.

Computer Communications and Networks

This is an introductory course on Computer Communications and Networks, focusing on fundamental concepts, principles and techniques. The course will introduce basic networking concepts, including: protocol; network architecture; reference models; layering; service; interface; multiplexing; switching and standards. An overview of digital communication from the perspective of computer networking will also be provided. Topics covered in this course include: Internet (TCP/IP) architecture and protocols; network applications; congestion/flow/error control; routing and internetworking; data link protocols; error detection and correction; channel allocation and multiple access protocols; communication media; and selected topics in wireless and mobile networks.

CS Software Design and Architecture

This module includes an in-depth look at software design; continuation of the study of design patterns, frameworks, and architectures; survey of current middleware architectures; design of distributed systems using middleware; component based design; measurement theory and appropriate use of metrics in design; designing for qualities such as performance, safety, security, reusability, reliability; measuring internal qualities and complexity of software; evaluation and evolution of designs; basics of software evolution, reengineering, and reverse engineering.

Web Development

The module aims to cover the concepts, relevance and practical implementation of use of open source web frameworks to develop complex, data driven, web applications, and of distributed web solutions, focusing primarily on the development of XML web services via Visual Studio.NET. The module also aims to discuss issues, core technologies and applications whilst further developing students’ problem solving, coding and investigative skills.

Software Engineering with Objects and Components

This course provides an introduction to the design and implementation of software systems using object-oriented techniques. The techniques we consider are oriented to creating component based designs. The course will review basic object-oriented techniques and how they support the creation of component based designs. We also consider the high level modelling of systems as a means of supporting the Software Engineering process. Here we study the Unified Modelling Language (UML), which provides programming language independent notations for design.

Software Engineering Approach to Human Computer Interaction

This modules includes psychological principles of human-computer interaction.; evaluation of user interfaces; usability engineering; task analysis, user-centred design, and prototyping; conceptual models and metaphors; software design rationale; design of windows, menus, and commands; voice and natural language I/O; response time and feedback; colour, icons, and sound; internationalisation and localisation; user interface architectures and APIs; case studies and project.

Software Project Management

This module includes project planning, cost estimation, and scheduling; project management tools; factors influencing productivity and success; productivity metrics; analysis of options and risks; planning for change; management of expectations; release and configuration management; software process standards and process implementation; software contracts and intellectual property; approaches to maintenance and long-term software development; case studies of real industrial projects.

Software Quality Assurance

This module introduces the basic concepts of quality assurance (QA) and existing standards by looking at the nature of software systems, the underlying technologies, the architecture, and the applications of QA onto software systems.

Software Requirements Analysis

This module includes domain engineering; techniques for discovering and eliciting requirements; languages and models for representing requirements; analysis and validation techniques, including need, goal, and use case analysis; requirements in the context of system engineering; specifying and measuring external qualities: performance, reliability, availability, safety, security; specifying and analysing requirements for various types of systems: embedded systems, consumer systems, web-based systems, business systems, systems for scientists and other engineers; resolving feature interactions; requirements documentation standards; traceability; human factors; requirements in the context of agile processes; requirements management; handling requirement changes.

Software Testing

This course is intended to provide students with an overall view of Software Engineering as an engineering discipline and with insight into the processes of software development. The course highlights a number of important Software Engineering topics, mainly: Software Life-cycle Models; Software Requirements elicitation; Architectural design; Software Integration and Testing; Software evolution; Software Quality; Project Management.

Internship Training

An internship work experience is intended to help students apply their formal classroom education to “real world” work experience and help them begin to gain valuable experience in a related field of work. The work assignment must be related to their area of interest and may be conducted within business or industry, the public or private sector, state, federal or local government, or social service agencies.

3D Game Programming

This module aims to take students with a background in programming to an advanced level of understanding and experience of modern interactive 3D game engine development. On completing the module, students will have developed a fully interactive and graphically realistic 3D game application at a low level using Visual Studio.

Advanced Database Systems

This course is designed to cover advanced database system design and implementation. It quickly goes through relational databases and then moves on to advanced topics in modern database systems, including object-oriented databases, XML databases, distributed databases, and on-line analytical processing. The course also discusses various data description and query languages, database design, and query processing and optimisation, and also looks at distributed object models, and data mining and data warehouses. Students undertake a semester project that includes the design and implementation of a database system. This database project includes the use of object-oriented features and XML.

Artificial Intelligence Programming

The aim of this module is to explain basic techniques of AI programming, with special focus on the Prolog programming language and AI applications. Students will explore this through problem-solving paradigms, logic and theorem proving, search and control methods, and learning.

Decision support systems

This course covers the following topics: Introduction to decision support systems (DSS); DSS components; Decision making and DSS; DSS software and hardware; developing DSS; DSS models; types of DSS; group DSS; executive information systems; data mining; artificial intelligence and expert systems.

Document Analysis and Semantic Web

This module aims to give an insight to the process of analysing documents (scanned and electronic) to extract the information contained in them. The topics covered include: principles of labelling and analysis of web-accessible data; document engineering concepts and methodologies; and document representation and use in different contexts.

Information Security

This module gives students a solid understanding of the basic technologies for managing the security (confidentiality, integrity and availability) of information systems, their roles and relevance, and how they are used.

Intelligent Autonomous Robotics

The aims of this course are to introduce the fundamental problems of producing real world intelligent behaviour in robots, some of the different kinds of information processing techniques and control architectures that have been developed, and how biological systems can be modelled on robots and contribute to their design.

Machine Translation

Machine Translation deals with computers translating human languages (for example, from Arabic to English). The field is now sufficiently mature that Google uses it to allow millions of people to translate Web Documents each day. This course deals with all aspects of designing, building and evaluating a range of state-of-the-art translation systems. The systems covered are largely statistical and include word-based, phrase-based, syntax-based and discriminative models. As well as exploring these systems, the course will cover practical aspects such as using very large training sets, evaluation and the open problem of whether linguistics can be useful for translation.

Natural Language Generation

The course will cover common approaches to content selection and organisation, sentence planning, and realisation. The course will cover both symbolic approaches to generation, as well as more recent statistical and trainable techniques. It also aims to provide an understanding of key aspects of human language production; an understanding of evaluation methods used in this field; exposure to techniques and tools used to develop practical systems that can communicate with users; insight into open research problems in applications of natural language generation, e.g. summarisation, paraphrase, dialogue, multimodal discourse.

Blockchains and Distributed Ledgers

Blockchain technology and distributed ledgers have been hailed as a turning point in scaling information technology services at a global level. Although the digital currency Bitcoin is the best-known Blockchain application today, the technology is set to play a much broader role in cybersecurity innovation. This course is an introduction to the design and analysis of blockchain systems and distributed ledgers.


In this module students study topics related to creating a business on the web, with particular focus on e-commerce. Students will study the IT issues raised by electronic business and commerce. Techniques and technologies available for designing and implementing e-business and e-commerce applications will be discussed. Students will gain a thorough understanding of internet-based tools and services for designing e-business solutions.

Text Technologies for Data Science

The course deals with retrieval technologies behind search engines such as Google. The course will aim to strike a balance between theoretical and system-related aspects of the field. The course will cover: 1) theoretical aspects, including properties of text, queries, relevance, major retrieval models and evaluation; and 2) system-related aspects, including crawlers, text processing, index construction and retrieval algorithms.

Selected Topics in Computer Science

This module provides students with an opportunity to gain an in-depth understanding of the theories and issues on a selected topic. The course should cover new technologies that are not offered in the current module descriptions (e.g. Energy Aware Computing, Bioinformatics, Embedded Software, Adaptive Learning Environments)

Software Engineering Capstone Project

This is a major project and is intended to allow students to demonstrate their ability to organise and carry out a substantial piece of work. The project involves both the application of skills learnt in the past and the acquisition of new skills. Typical areas of activity will be gathering and understanding background information; solving conceptual problems; design; implementation; experimentation and evaluation; writing up. The project is conducted individually by the student under the supervision of a member of teaching staff. The project specification is usually provided by a member of staff, but students are also free to specify their own project. All project specifications must be approved by the Project Coordinator.

The British University in Dubai

Block 11, 1st and 2nd floor, Dubai International Academic City PO Box 345015, Dubai, UAE

Tel: +971 4 279 1400


Email: [email protected]