Programmes / Bachelors Programmes / Bachelor of Science in Computer Science – Software Engineering / Module Descriptors
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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)
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.
Block 11, 1st and 2nd floor, Dubai International Academic City PO Box 345015, Dubai, UAE
Tel: +971 4 279 1400
Whatsapp:
Email: [email protected]