The Department’s undergraduate course material is conceptually divided into the following areas or components: Theory, Computer Systems, Problem Solving and Applications.
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 elaborates on the concepts of parallel and embedded systems. 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 as indicated 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 in the framework of the course Software Engineering Professional Practice. 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. The course dependencies between the compulsory courses are depicted here.
Since the academic year 2016/2017, the Department of Computer Science is offering the following specialisations (existing students follow the previously offered programme of study):
- Computer Networks
- Fundamentals of Computer Science
- Big Data and Internet Computing
- Real World Computation
- Artificial Intelligence
- Software Engineering
- Digital and Embedded Systems
Each specialisation is linked to a number of courses. The aim of the specialisations is to give students the possibility and the motivation to focus on a specific area of Computer Science, via the Elective Courses and an individual diploma project, called undergraduate thesis project. If a student selects at least 3 Elective Courses from the courses indicated for each specialization and undertakes an undergraduate thesis project from the same specialization under the supervision of a faculty member then the respective specialization will be indicated in her transcripts. Applications for the recognition of the specialization need to be submitted by the student, in the dedicated form, to the Undergraduate Program Committee after the period of changes in enrollments in the last semester of studies. The Department is not obliged to offer all restricted choice courses, in order to cover all specializations, nor will it change the restrictions regarding the class size and the process for selecting the undergraduate thesis project.
Almost all courses offered by the Department in the first four semesters are compulsory and common to all students. Students are asked to choose a direction at the beginning of the fourth semester of their studies. In the fifth and sixth semesters, students are required to take the compulsory courses of their chosen direction, as well as elective courses from other departments. The last two semesters include restricted elective courses (three courses from the chosen direction and any two courses in Computer Science 300 or 400 level) within the direction and elective courses; also, each student must undertake an individual Diploma Project, under the supervision of a member of the Department’s academic staff. The topic of the Undergraduate Thesis Project must relate to the student’s chosen direction of study.