Computer Science
Click on a module below to view the full description or click here to visit the official website.
  • Imperative Programming
  • Introduction to Computer Science
  • Program design: Introduction
  • Software modelling
  • Computer organisation and architecture
This module introduces imperative computer programming, which is a fundamental building block of computer science. The process of constructing a program for solving a given problem, of editing it, compiling (both manually and automatically), running and debugging it, is covered from the beginning.

The aim is to master the elements of a programming language and be able to put them together in order to construct programs using types, control structures, arrays, functions and libraries. An introduction to object orientation will be given. After completing this module, the student should understand the fundamental elements of a program, the importance of good program design and user-friendly interfaces. Students should be able to conduct basic program analysis and write complete elementary programs.
  • Data structures and algorithms
  • Netcentric computer systems
  • Operating systems
  • Concurrent systems
Data abstraction is a fundamental concept in the design and implementation of correct and efficient software. In prior modules, students are introduced to the basic data structures of lists, stacks and queues. This module continues with advanced data structures such as trees, hash tables, heaps and graphs, and goes into depth with the algorithms needed to manipulate them efficiently.

Classical algorithms for sorting, searching, traversing, packing and game playing are included, with an emphasis on comparative implementations and efficiency. At the end of this module, students will be able to identify and recognise all the classical data structures; implement them in different ways; know how to measure the efficiency of implementations and algorithms; and have further developed their programming skills, especially with recursion and polymorphism.
  • Software engineering
  • Artificial intelligence
  • Computer networks
  • Programming concepts
  • Compiler construction
  • Computer security and ethics
  • Database systems
  • Computer graphics
The module exposes students to problems associated with software development on an industrial scale. Overall goals of the module are: to become familiar with the latest trends in software engineering; to understand the software engineering process and to appreciate its complexity; to be exposed to a variety of methodologies for tackling different stages of the software lifecycle; to understand and apply the concepts of systems administration and maintenance; to comple te the development of a fairly large object orientation - based software product.

The focus of the module is on a project that lasts the whole year. The project is completed in groups of approximately four (4) students and teaches students to take responsibi lity for a variety of roles within a group, and to understand the different requirements for these; to experience the advantages and problems of working in a group; professionalism with regards to particularly colleagues and clients.

After the successful completion of this module, the student will be able to: understand the psychology of a client; work in groups; and have an appreciation for planning, designing, implementing and maintaining large projects. These qualities should place the students in a pos ition in which they are able to handle software development in the corporate environment.