Undergraduate Programme Course Areas
The courses offered by the Department are divided into the following areas or components:
- Computer Systems
- Problem Solving
The Theory component is concerned with the foundations of Computer Science: theory and models of computation, and the design and analysis of algorithms. Generally this component aims at cultivating a formal approach to thinking, and organizing and processing information. Logic, and its role as the calculus of Computer Science, is an important topic. Essential concepts of Discrete Mathematics are taught as an integral part of related courses offered by the Department. Students are also required to follow a number of courses offered by the Department of Mathematics and Statistics in order to develop their abilities for abstraction and formal thinking, and to acquire other useful mathematical skills.
The Computer Systems component is concerned with hardware and software systems and develops the concept of virtual or abstract machine. It includes basic principles of computer architecture and organization, operating systems, programming language design and implementation, microprocessor systems, data communications, networks, distributed systems, and parallel and novel architectures.
The Problem Solving component aims at developing algorithmic thinking, with emphasis on principles of programming and program design. Through this component, students will acquire competence in a number of programming languages using a variety of programming paradigms (imperative, object-oriented, logic-based). Concurrent, parallel, distributed and heuristic techniques of problem solving are addressed in restricted choices. In this component, students learn how to design, implement and evaluate solutions to significant, albeit relatively small, problems. (The wider integration of these techniques in building methodological frameworks to solve real-world problems is studied in courses on systems analysis and design, and software engineering in the Applications component.)
The Applications component aims at bringing together the knowledge and skills acquired in the other three components for the development of useful applications to solve "real-world problems". Important technologies such as databases, knowledge bases, graphics and user interface managers are introduced as examples of applications in themselves and as vital tools for the construction of higher level applications. Modern Software Engineering methodologies that address every stage in the planning, design, development, and maintenance of high-quality applications are studied, and subsequently put into practice in the context of a group project undertaken by all students during their sixth semester. Finally, important social and ethical issues concerned with the spread of computers are raised and discussed.
The Undergraduate Program of Studies consists of Compulsory Courses covering core material, Restricted Choices in Computer Science or related subjects, and Unrestricted Choices offered by other Departments. Some courses have other courses as prerequisites. Almost all courses offered during the first six semesters are compulsory, whereas the last two semesters comprise mostly Restricted Choices, in several topics in Computer Science.
In addition, students must fulfil the University's foreign language requirement by attending three courses in a foreing language. The Department has allocated 15 ECTS units to these courses, and specifies English as the foreign language.