Home  Webmail  Library  Faq  Intranet  News & Events  Claroline 

Download Application Form for Bachelor Degrees
Admission Requirements for Bachelors degrees
Admission Requirements for Masters degrees
Submitting your Application
Staff in this department
The Learning environment
 
About the Computer Science Department
Letter from the Head of the Department
Research at the Computer Science Department
 

Quick Course Finder

BSc (Hons) in Computer Science

Structure of the Course

1stYear

Programming Methodology and Design
Continuous Mathematical Foundations
Computer Systems Architecture 
Introduction to Web Technologies 
Object-Oriented Programming
Discrete Mathematical Foundations
Networks Architecture
Systems Analysis and Design
Personal Tutorial: Academic and Transferable Skills

Units to the value of twenty credits from the Division of Humanities and Social Sciences.

2ndYear

Data Structures and Algorithms
Database Systems
Formal Methods and Software Reliability 
Logic Programming
Professional Issues in IT
Operating Systems
HCI and Software Development
Artificial Intelligence Techniques
Principles of Management & Entrepreneurship for IT Professionals

Units to the value of twenty credits from the Division of Humanities and Social Sciences.

3rdYear

Network Computing
Software Engineering
Individual Project
Industrial Software Project
Professional Development Seminar Series
Individual Project Preparation

Units to the value of forty credits from the following:

Managing the Information Function
Object Oriented Analysis and Design
Software Verification & Validation
Intelligent Systems
Agents and Robotics
Neural Networks
Information Security
Programming Language Concepts
Advanced Database Systems
Advanced Computer Architecture
Web Programming
Computer Games Development
Object-Oriented Modelling and Simulation
Distributed Systems
Health Informatics
Object Oriented Databases
Teaching and Learning Technologies

*This programme may be subject to minor changes.

Description of the Modules

1stYear

Programming Methodology & Design
This unit is an introductory course in computer programming intending to offer insides to basic analysis of problems and to algorithmic thinking. Emphasis is placed on developing strong and robust fundamentals of software development (especially programming) practices.  Design practices such as incremental code writing, simplicity, code improving and pair programming are introduced and practiced in the labs. The unit aims to introduce the beginning computer science student to algorithmic thinking, simple problem analysis, structured design, top-down stepwise refinement and java programming language.

Continuous Mathematical Foundations
This course is intended to introduce the students to the fundamental concepts of Calculus. It presents the students with the notions of functions, limits of functions, derivatives and integration with a particular emphasis on the application of those topics in science and especially in Computer Science. By the end of the course students should know how to apply derivatives in calculating rates of change and in solving optimization problems, know how to draw reliable graphs and how to find the largest and smallest values of a differentiable function, be able to calculate with integrals the areas between curves, understand the relationship of calculus with science, acquire and develop general evaluative and communication skills such as being able to analyse information, interpret it and draw conclusions, to consider a problem from a number of different perspectives, to contribute constructively to class discussions, to request clarification, to challenge arguments, and to defend their own point of view.

 Computer Systems Architecture
This course is an introductory course in Computer Architecture. Its aims are to provide an appreciation of computer hardware technology at a novice level, introduce students to the terminology and components of computer systems, discuss storage mechanisms and their organisation, to introduce students to the structure and operation of digital circuits and to familiarise students with digital arithmetic and digital logic. By the end of the course students should: be able to comfortably deal with computer terminology, have a basic understanding of computer architecture, have an overview of computer systems components, have a good understanding of computer number representation and conversion and have a basic understanding of digital circuits.

Introduction to Web Technologies
The aims of this unit are to provide a working knowledge of the Internet, to develop individual and group communication skills, and to provide essential information technology (IT) skills. By the end of the unit the students should understand and be able to explain the principles of Internet communication, be able to use the Internet as a practical tool for information gathering, understand the World Wide Web, and be able to write a hypertext document using HyperText Markup Language (HTML), be able to communicate their ideas more effectively, both orally and in writing, be able to use standard software packages (word processor, spreadsheet and presentation tools), and have a greater understanding of group dynamics, both as a group member and a group leader.


Object Oriented Programming
This unit is an introductory course in computer programming intending to offer insides to basic analysis of problems and to algorithmic thinking. Emphasis is placed on developing strong and robust fundamentals of software development (especially programming) practices. Design practices such as incremental code writing, simplicity, code impoving, error handling and pair programming are introduced and practiced in the labs. The aim of this unit is to introduce computer science student to the object oriented approach to computer programming, object oriented analysis and design techniques and Java sytax for object oriented programming.

Discrete Mathematical Foundations
This unit aims to introduce discrete mathematics and provides the mathematical background to first year CS students. Many areas of Computer Science rely heavily on mathematical concepts and techniques. This introductory unit covers Logic, Set Theory, Languages, Relations, Induction, Turing Machines and Graphs. It explores the relationship between mathematics and computer science units which are taught at higher levels, e.g. Logic Programming, Formal Methods, Databases, etc. The unit also aims, through practical work, to improve the analytical as well as the written communication skills of the students. At the end of this course the student should be able to comfortably deal with problems in logic, set theory and graphs, understand the relationship between mathematics and computer science, express solutions to problems in an analytical way, use mathematical background knowledge to deal easily with the computer concepts as they occur in the more advanced courses.

Networks Architecture
This unit provides an introduction to modern communication systems. It offers a comprehensive overview of the fundamental principles, theories and practices employed in computer networks and aims to develop a foundation that can be used as the basis for further study or research in the field. The unit aims to examine the structure of communication systems, to introduce fundamental computer network architectures and technologies, to present hardware components used in computer networks, to discuss the osi model as a reference for understanding and designing a network architecture and to investigate the internet model (tcp/ip) and internetworking principles.

Systems Analysis and Design
The aims of the course are to provide an overview of Information Systems in a global, information-based economy, to explore the roles of information system users, to introduce the basic techniques of systems analysis, and their application to problem analysis and software systems design, to introduce the principles of project management, to present design features common to all applications. By the end of this course, the students should be able to define the system analysis role and responsibilities in a typical organization, describe the building blocks of an information system - people, data, activities, networks and technology, describe systems planning, analysis, design, implementation and support, describe a phased approach to information systems development and describe cross-life activities.

2ndYear

Data Structures & Algorithms
This course provides the programming skills and knowledge of using an appropriate data structure for a software application. Students are introduced to the concept of data abstraction and learn how to treat data structures as ADT's. The C++ class structure provides the power in building well reusable and maintainable code. The course covers the efficient usage of data structures using the class member functions. The efficient usage and the analysis of algorithms is another component examined in this course. This course provides all the programming skills that will be used in the course Object Oriented Design to implement the designed solutions. By the end of this module the students should be able: to implement the concept of data abstraction, to build the ADT for the basic data structures, to teach the major sorting and searching algorithms and their computational complexity, to apply the appropriate data structure in each application and to emphasise design issues as cohesion and coupling.

Database Systems
The aims of this course are to introduce fundamental concepts of database technology, to present the stages of database development with particular emphasis on design, to present the existing implementation methods (hierarchical, network, relational), to analyse the theoretical background of the relational model, to demonstrate the merits and the techniques of good database design, to introduce Structured Query Language. Upon completion of the course the students should be able to demonstrate a thorough understanding of the technical and theoretical issues involved in database technology, appreciate the importance of the initial stages of the database development, develop Entity-Relationship diagrams based on narrative descriptions as well as other informational material, transform Entity-Relationship diagrams into well-designed relations, identify functional dependencies and normalize relations and write queries in SQL.

Formal Methods and Software Reliability
This course is an introductory course in Formal Methods and particularly in Formal Specification. Its aims are to discuss the reasons that led to the need for Formal Specification of software systems, to introduce the basic concepts for the design of mathematical models of software systems using Discrete Mathematics. By the end of the course students should understand what is meant by Formal Specification, appreciate the significance of Formal Specification for the design of good quality software, be able to design a complete, easy to understand and well structured mathematical model of a system in the formal specification language Z.
 

Logic Programming
The main aim of this module is to introduce Logic Programming through the Prolog language as a methodology for basic understanding of programming language concepts. A brief introduction to Predicate Calculus, Horn-Clause Logic and Logic Programming is made. Logic Programs are then defined and their Resolution Principle is discussed. The material taught also aims to provide an in depth study of Prolog, since Prolog will be widely used in future courses, like Artificial Intelligence, Expert Systems, Programming Language Concepts and 3rd year Projects. Emphasis will be given to the basic constructs of Prolog, avoiding the non-standard characteristics of any particular version used. However, possible extensions of Prolog towards parallelism, constraint satisfaction and declarativeness are discussed. By the end of the course the students are expected to have acquired good knowledge of the Prolog language, be able to comprehend the advantages of declarative programming as well as shortcomings in comparison with imperative languages, have acquired the basic background on principles of programming languages, like procedural abstraction, program design and development, parameter passing, variable binding etc.

Professional Issues in IT
Since students need to be aware of the wider social, legal and ethical issues of computing, this half-module aims to provide an understanding of the relationship between technological change, society and the law, emphasizing the powerful role that computers and computer professionals play in a technological society. It also introduces the legal areas which are relevant to the discipline of computer science (e.g. intellectual property, liability for defective software, computer misuse, etc.), and aims to provide an understanding of ethical concepts that are important to computer professionals and experience consideration of ethical dilemmas.

Operating Systems
This course offers an introduction to the fundamental principles and techniques employed in the design of operating systems; the concepts an operating system is based upon are covered in detail. Emphasis is drawn on the OS processes and their scheduling, as well as, the memory, the file system and their management. The above concepts are applied in the case of a UNIX system. By the end of the course students should be able to understand the basic concepts of operating systems, be familiar with the theory behind their design, realise the concepts of multi-tasking and time-sharing, comfortably cope with the UNIX operating system, comprehend the differences between various types of operating systems, be able to perform systems programming (processes) related tasks.

HCI and Software Development
This unit intends to introduce students to the research topics in Computer Science and the complete process of producing proper software from the conception of the original idea to testing and maintaining the final software product. The unit intends to prepare students for the processes they need to follow in their final year project and the dissertation. This will be accomplished by exposing students to the principles of formal report writing, literature reviewing, research project designs and approaches. These research approaches will include the design of data collection and analysis methods for user requirements, as well as, the representation and interpretation of the results of testing and evaluation. At the same time, students will be engaged with the process of making proper analysis and design, implementing the different parts of the software in a coherent and proper manner, as well as testing the software, in order to create a working and user friendly product. The connection is make with the use of case studies and a number of practicals as vehicles to integrate research and development of software.

Artificial Intelligence Techniques
Artificial Intelligence (AI) is the area of science with the ultimate goal to build intelligent machines, i.e. machines that exhibit human-like behaviour when solving complex problems. Following the classic equation that "ai= search + knowledge representation", this module provides an in-depth introduction to artificial intelligence problem solving techniques by presenting blind and heuristic state space search algorithms and knowledge representation techniques, such as logic, structured representations and rules. For each technique discussed special emphasis will be given on the practical issues that arise during implementation. Finally, the module provides the necessary background knowledge for the third year units.

Principles of Management & Entrepreneurship for IT Professionals
This unit aims to introduce concepts of creativity and entrepreneurial desin, to introduce successful market attainment regarding it results, techniques for successful product design aligned with market needs. To introduce methods for accessing niche markets global wide and provide methods: for successful business planning and monitoring, for evaluating risks in relation to cost benefit analysis. The unit also aims to create knowledge on the protection of intellectual property rights emerged from it projects, to introduce methods and techniques for innovation financing and to examine the management skills gained through the coursework assignments.

3rd Year

Network Computing
This unit presents advanced as well as contemporary issues of data communications and computer networking. It provides students with the ability to utilize previous knowledge of computer networks in order to gain a thorough insight of data exchange. Important and crucial subjects related to networking are examined and new technologies and infrastructures are explored. This unit aims to underpin previous introductory knowledge, to examine advanced issues related to computer networking, to introduce the architecture and functionality of current communication technologies and to investigate the current state-of-the-art achievements and trends worldwide.

Software Engineering
This course covers systematic production testing and maintenance of software products that are developed and modified under timing constraints and takes into consideration cost estimation issues. The emphasis of the course is on project management, planning and monitoring since the design and analysis part has been covered in the corresponding second level course. The objectives of this module are to conceptualise the management process of large computer systems, to understand basic concepts of software engineering, to understand the management issues involved in building large computer systems, to understand the importance and the techniques and strategies of adequate testing.

Individual Project
The project ia an extended piece of individual work throughout the third year of studies. students are expected to work on a topic of their interest and to have regular meetings with their supervisor to discuss their work. The individual project is equivalent to two full units. the project will develop students' ability to construct a project from initial, unstructured ideas, through a thorough analysis of the problem area, to plan, schedule, monitor and control own work, to defend their ideas in discussions and presentations and apply tools and techniques from taught courses.

Industrial Software Project
The purpose of this unit is to provide students with the opportunity to integrate and apply skills and knowledge they acquired so far in their studies to a realistic problem. Students are exposed to the processes involved in the team-based development of software through real-life projects that are provided by companies from the software industry. This unit aims to create an environment where students can apply their knowledge, to provide students with the experience of working in real-life project development circumstances, to  enable students to operate as a software development team and to integrate skills and knowledge of students.

Managing the Information Function
The aim of this unit is to provide students with the necessary skills for functioning as team members in a MIS implementation. This unit examines the decision making process in an organization as a whole and additionally the major areas of decision making commonly found in organizations. Students will apply their knowledge on information systems, information as an organizational resource, decision making and computer systems resources in the functional areas of finance, marketing, manufacturing and production and human resources.
 

Object Oriented Analysis & Design
The Object-Oriented (OO) approach to software development seems to be of value in building different sort of software systems. This unit is addressed to third level students of computer science that have experience in object oriented programming and aims to introduce them in object oriented modelling. More specifically, this course focuses on the application of the Unified Modelling Language (UML) in a software development process. Moreover, to improve the system design and increase the reuse, design patterns are explored and applied. Laboratory sessions contribute to the comprehension of the UML rules and notation. Group abilities such as role distribution and time management are developed during the practical teamwork. At the end of the unit students will manage to organise user requirements, analyse systems, and design the resulting object oriented software system.


Software Verification & Validation
The unit aims the students to gain a working knowledge of formal methods and tools existing for them and to understand and develop an awareness of the benefits and costs of using them in practice. Also this unit aims students to understand how formal methods fit in the various stages of software development life cycle.

Intelligent Systems
The aim of this unit is to introduce problem solving techniques used in artificial intelligence, schemes for knowledge representation, application areas of artificial intelligence (planning, natural language understanding, learning, connectionism etc.), principles, characteristics and limitations of intelligent agents, schemes and applications for distributed artificial intelligence. By the end of the unit the students should have a good knowledge of the main concepts and application areas of artificial intelligence, be able to use problem solving techniques and suitable knowledge representation schemes to specific problems, understand the abstract architecture, functionality and application areas of intelligent agents, be able to identify problems and suggest solutions to the distributed AI problem solving and be able to realise the need of incorporating intelligence in any information system component.

Agents and Robotics
This unit aims to introduce the student to the notions of intelligent agents and provide an introductory study of the various types of intelligent agents, their architecture, strengths and limitations. To introduce multi-agent systems and the various issues involved in agent communication and interaction, to discuss possible application areas of the intelligent agent technology through examples and case studies as well as demonstrate how agents can revolutionize human-computer interaction. The unit also aims to present the advantages of the agent-based approach to engineering complex software systems and to introduce the students to mobile robots, the problems associated with them and their applications. To investigate robotic technologies regarding sensing, perception, action and re-action. to discuss the evolution of robotics in the immediate future, and determine innovative applications. To underline the similarities and differences between software agents and mobile robots.

Neural Networks

This unit aims to introduce the student to the notions of intelligent agents and provide an introductory study of the various types of intelligent agents, their architecture, strengths and limitations. To introduce multi-agent systems and the various issues involved in agent communication and interaction, to discuss possible application areas of the intelligent agent technology through examples and case studies as well as demonstrate how agents can revolutionize human-computer interaction. The unit also aims to present the advantages of the agent-based approach to engineering complex software systems and to introduce the students to mobile robots, the problems associated with them and their applications. To investigate robotic technologies regarding sensing, perception, action and re-action. to discuss the evolution of robotics in the immediate future, and determine innovative applications. To underline the similarities and differences between software agents and mobile robots.This course aims to introduce Artificial Neural Networks (ANNs). In this context, it covers the evolution of ANNs from models of biological neuron complexes, basic structures and training techniques for ANNs and application of ANNs in performing inferences in problems of pattern recognition (e.g. character recognition, speech recognition) as well as performing computations in complex control related problems. On completion of this course, the students should understand the most popular neural network topologies, be able to estimate the applicability of neural networks, be able to adapt a neural network based solution to problems related with pattern recognition and decision making.

Information Security
this unit introduces the field of information security as an important area of advanced computer science and provides a broad overview of information security. the course will provide a solid theoretical foundation, as well as real-world examples, for understanding computer security. fundamental theoretical results, foundational models, and salient examples will be covered. security in computer data, operating systems, and networks will be covered, with emphasis on applied cryptography and program security. students can expect to leave the class with an understanding of the theoretical underpinnings for information and computer security, an appreciation of the strengths, weaknesses, and limitations of the major theories, and an understanding of the application of computer security theory to real-world systems. students will also gain experience and insight into the application of theory to practical systems.

Programming Language Concepts
The course aims to provide the necessary skills for the critical evaluation of existing and future programming languages, and enhance the ability to design new constructs of domain specific languages. The fundamental concepts, design issues and various language constructs are described in detail. The programming languages paradigms mostly discussed are Pascal, Ada, Fortran and Cobol as imperative languages, C++ and Java as Object Oriented Programming languages. SML, Lisp and Miranda are also presented as functional language paradigms which together with Prolog are used as a comparative study between imperative and declarative programming. Being a concluding module in programming, the main objective is to provide the students with the chance the get familiarised with terminology used, justification and differences between various programming languages constructs, the knowledge of the fundamental design issues of programming languages, the ability to critically evaluate programming languages, the ability to use the appropriate programming language given a specific domain, the ability to design new specific purpose programming languages through their practical work, oral communication skills through presentation of existing programming languages.

Advanced Database Systems
This course builds build upon the basic theory of database which was covered in the course "Database Systems". More explicitly the aims of the course are to demonstrate the usefulness of catalog and describe it in detail, to present in detail techniques and issues concerning recovery and concurrency control, to discuss distributed and object-oriented databases. On the completion of this course students should be able to provide definition and derivation of fourth and fifth normal forms, to provide description of the characteristics of a transaction, to discuss in depth recovery and concurrency issues.

Web Programming
Students study issues related to the architecture, design and development of contemporary dynamic web applications. Topics cover technologies associated with web applications including HTML/CSS, dynamic server-side pages, dynamic client-side scripts, personalisation (cookies and sessions) and client-side techniques for interactive Web applications. Other issues presented and discussed include the current and future state of the Web, Web 2.0, Semantic Web and Web Services.

Computer Games Development
This unit provides an introduction to the underlying concepts underpinning the development of computer games and a practical experience of the software engineering issues associated with computer games development. this unit aims to provide an overview of the computer game industry and the computer game impact to society. To introduce fundamental concepts underlying the development of computer games, to discuss approaches for the development of computer games, to present the computer game lifecycles. It aims to introduce techniques for capturing requirements and designing computer games, to discuss computer game project management issues and to provide an awareness of appropriate enabling technologies for computer games development.


Object Oriented Modeling and Simulation
The aims of this course are to introduce fundamental techniques and principles in the design of simulation models, to demonstrate the existing strategies for simulation program development, and to demonstrate the effective usage of programming concepts in order to simulate complex systems with the help of a C++ simulation library, and to introduce the GPSS simulation-specific language. On completion of this course the students should be able to appreciate the significance of simulation to real-life complex problem-solving, develop logical models using diagrammatic techniques, critically assess the existing simulation methodologies, and design, implement and test programs to simulate complex systems.

Distributed Systems
The study of the principles and practice of distributed computer system design. It will examine the main advantages, disadvantages and design issues of distributed systems, the main distributed programming models, some distributed data management techniques, and aspects of distributed operating system design. Upon completion of the course the student should be able to exhibit knowledge of basic distributed system features, appreciate design issues connected to them, demonstrate understanding and apply practical experience of the widely-used remote procedure call (RPC) programming paradigm, demonstrate understanding the ways in which UNIX has been integrated into distributed systems, notably NFS, knowledge of an operating system designed specifically for distributed systems (Mach), apply practical experience of network programming in C / UNIX.

Health Informatics
The purpose of this course is to equip students with a thorough grounding in the specific basic disciplines which interact with the application of information science and technology in the acquisition, representation, processing, interpretation, storage and communication of all forms of medical data. Medical Informatics has emerged as a new discipline due to rapid advances in computing and telecommunications and the enormous challenges that this has opened up in using this technology in health care systems. An emphasis on world-wide Medical Informatics courses is based on the effective management and exploitation of the vast amount of medical information and knowledge available in hospital environments nowadays. The primary objective of the Medical Informatics course is to familiarise students with the necessary tools to optimise the management of medical information and to support the decision making processes in health care. A direct outcome of the above objective is that students will be able to appreciate how Medical Informatics may help when choosing a professional career in commercial, industrial or academic activities. By the end of this course students will exhibit an awareness of appropriate techniques and technologies and the organisational, social and professional context of the health care system. In summary, upon completion of the course the student should have an understanding of both clinical and computer problems that arise in medical informatics, a good appreciation of the broad field of medical imaging, an appreciation of the use of computers and knowledge-based computing methods in medical informatics, an understanding of the scientific basis for the medical problems encountered in clinical and health care practice, the opportunity to study critically, consider and evaluate application areas and systems in medical informatics.

Object Oriented Databases
The aims of this unit are to introduce fundamental concepts of object database technology to present object-oriented design (using UML), present the theoretical background of the object model and demonstrate the advantages of the object model and to introduce Object Query Language. Upon completion of the course the students should be able to demonstrate a thorough understanding of the technical and theoretical issues involved in object database technology, utilise UML in order to design object databases, and write queries in OQL.

Go to Top of Page