#### Περιγραφή Προγράμματος

**Σκοπός**

Σκοπός του Προγράμματος BSc in Computer Science είναι να αναδείξει ολοκληρωμένους επιστήμονες με κατανόηση των θεωριών, τεχνολογιών και εφαρμογών της επιστήμης της Πληροφορικής. Το Πρόγραμμα, πέρα από την απόκτηση πρακτικών δεξιοτήτων, εξοπλίζει τους αποφοίτους με την ικανότητα να εξελίσσονται και να προσαρμόζονται στις ραγδαίες αλλαγές που παρατηρούνται στο χώρο της Πληροφορικής. Το Πρόγραμμα επικεντρώνεται στην παροχή γνώσης στην κατανόηση του θεωρητικού υπόβαθρου της επιστήμης της Πληροφορικής, στην ανάπτυξη γνώσεων και δεξιοτήτων στα συστήματα υπολογιστών συμπεριλαμβανομένων των λειτουργικών συστημάτων, δικτύων Η/Υ και αρχιτεκτονικής Η/Υ, και στη δημιουργία προηγμένων εφαρμογών πληροφορικής που να αντιμετωπίζουν σύγχρονα προβλήματα.

** Το Πρόγραμμα σπουδών προσφέρεται στην Αγγλική γλώσσα για να προετοιμάσει καλύτερα τους φοιτητές για περαιτέρω σπουδές και να τους προσφέρει επιπλέον εφόδια για την αγορά εργασίας. Για φοιτητές που δεν έχουν την Αγγλική ως μητρική γλώσσα ή αντιμετωπίζουν δυσκολίες ή ελλείψεις, το Πανεπιστήμιο Frederick παρέχει διάφορα μέτρα στήριξης ώστε να μπορέσουν να αντεπεξέλθουν στις απαιτήσεις του προγράμματος.*

Πολλά από τα μαθήματα του Προγράμματος υποστηρίζονται από εργαστηριακές δραστηριότητες, ώστε οι φοιτητές να αποκτήσουν την απαιτούμενη πρακτική εμπειρία και δεξιότητες. Το Τμήμα Πληροφορικής και Μηχανικής Η/Υ διαθέτει άρτια εξοπλισμένα εργαστήρια που αναβαθμίζονται συνεχώς με σύγχρονο εξοπλισμό, ώστε να παρέχεται στους φοιτητές το καλύτερο δυνατό περιβάλλον για μάθηση. Στα εργαστήρια συμπεριλαμβάνονται: εργαστήρια Η/Υ γενικής χρήσης, εργαστήριο Τεχνολογίας Λογισμικού, εργαστήριο Ψηφιακών Συστημάτων, εργαστήριο Δικτύων Η/Υ, εργαστήριο Ρομποτικής, εργαστήριο για Υπολογιστικά Συστήματα Υψηλής Επίδοσης και το νεοσύστατο Εργαστήριο Κινητών Συσκευών (Mobile Devices Laboratory).

Μερικές από τις κύριες ικανότητες και δεξιότητες που θα αποκτήσουν οι απόφοιτοι είναι:

- Να αναλύουν, να σχεδιάζουν και να αναπτύσσουν λύσεις λογισμικού (software) που να ανταποκρίνονται σε διάφορα σύγχρονα προβλήματα.
- Να γνωρίζουν τις δυνατότητες και τους περιορισμούς και να χρησιμοποιούν τεχνολογίες Η/Υ, όπως δίκτυα υπολογιστών, βάσεις δεδομένων, λειτουργικά συστήματα και οργάνωση και αρχιτεκτονική Η/Υ.
- Να έχουν επίγνωση των σημαντικών εξελίξεων και σύγχρονων ερωτημάτων σε τομείς αιχμής, όπως η Τεχνητή Νοημοσύνη, το Διαδίκτυο και τα Πολυμέσα.
- Να μπορούν να συνεργαστούν με επιστήμονες άλλων τομέων, όπως Μηχανικής, Διοίκησης Επιχειρήσεων και Γραφικών Τεχνών, για να συμβάλουν στην αντιμετώπιση σύνθετων προβλημάτων.

Οι απόφοιτοι του Προγράμματος έχουν τη δυνατότητα άμεσης πρόσληψης στον ιδιωτικό και δημόσιο τομέα ως επιστήμονες πληροφορικής. Εργοδοτούνται κυρίως σε εταιρείες ανάπτυξης λογισμικών λύσεων ως προγραμματιστές/ αναλυτές, ως σύμβουλοι ή λειτουργοί μηχανογράφησης σε διάφορους οργανισμούς, ως σύμβουλοι ή στελέχη σε οργανισμούς παροχής εξοπλισμού και υπηρεσιών στο χώρο της πληροφορικής και των Η/Υ, και ως υπεύθυνοι σχεδιασμού, διαχείρισης και συντήρησης συστημάτων Η/Υ. Επίσης, οι απόφοιτοι του προγράμματος έχουν τη δυνατότητα να προσληφθούν ως εκπαιδευτικοί στον ιδιωτικό και δημόσιο τομέα.

Το Πρόγραμμα παρέχει επίσης στους αποφοίτους όλες τις απαραίτητες γνώσεις, ικανότητες και δεξιότητες για να συνεχίσουν τις σπουδές τους σε μεταπτυχιακό επίπεδο. Οι μισοί περίπου απόφοιτοι των τελευταίων ετών έχουν συνεχίσει σπουδές για απόκτηση διπλώματος Μάστερ σε προγράμματα σπουδών συναφή με την Πληροφορική σε διάφορα πανεπιστήμια, κυρίως του Ηνωμένου Βασιλείου και της Κύπρου.

Κατηγορία Μαθημάτων |
ECTS |

Υποχρεωτικά Μαθήματα | 186 |

Επιλεγόμενα Μαθήματα Ειδικότητας | 40 |

Ελεύθερης Επιλογής | 14 |

ΣΥΝΟΛΟ |
240 |

**Υποχρεωτικά Μαθήματα**

Ο φοιτητής πρέπει να συμπληρώσει επιτυχώς 186 ECTS, από την ακόλουθη λίστα μαθημάτων:

No. | Κωδικός | Όνομα | ECTS | Ώρες / εβδ. |

1 | ACOE161 | Ψηφιακή Λογική για Υπολογιστές | 7 | 3 + 2 |

2 | ACOE201 | Αρχιτεκτονική Υπολογιστών Ι | 7 | 3 + 2 |

3 | ACOE301 | Αρχιτεκτονική Υπολογιστών ΙΙ | 5 | 3 + 1 |

4 | ACOE313 | Δίκτυα Υπολογιστών Ι | 6 | 3 + 1 |

5 | ACOE323 | Δίκτυα Υπολογιστών ΙΙ | 5 | 3 |

6 | ACSC110 | Εισαγωγή στην Επιστήμη της Πληροφορικής | 6 | 3 + 1 |

7 | ACSC124 | Εισαγωγή στις Πιθανότητες και Στατιστική | 5 | 3 |

8 | ACSC155 | Ανάλυση και Σχεδιασμός Συστημάτων | 5 | 3 |

9 | ACSC182 | Αρχές Προγραμματισμού Ι | 6 | 3 + 1 |

10 | ACSC183 | Αρχές Προγραμματισμού ΙΙ | 6 | 3 + 1 |

11 | ACSC191 | Διακριτά Μαθηματικά | 5 | 3 |

12 | ACSC223 | Βάσεις Δεδομένων | 6 | 3 + 1 |

13 | ACSC271 | Λειτουργικά Συστήματα | 5 | 3 + 1 |

14 | ACSC285 | Αριθμητική Ανάλυση | 5 | 3 |

15 | ACSC288 | Δομές Δεδομένων | 5 | 3 + 1 |

16 | ACSC299 | Οπτικός Προγραμματισμός και Διεπαφή Ανθρώπου-Υπολογιστή | 5 | 3 |

17 | ACSC301 | Θεωρία Υπολογισμού | 5 | 3 |

18 | ACSC330 | Γραφικά Υπολογιστών | 5 | 3 |

19 | ACSC368 | Τεχνητή Νοημοσύνη | 6 | 3 + 1 |

20 | ACSC371 | Θεωρία Γλωσσών Προγραμματισμού | 5 | 3 |

21 | ACSC372 | Προγραμματισμός Συστημάτων | 6 | 3 + 1 |

22 | ACSC382 | Αντικειμενοστρεφής Προγραμματισμός | 6 | 3 + 1 |

23 | ACSC383 | Τεχνολογία Λογισμικού | 5 | 3 |

24 | ACSC384 | Προχωρημένες Βάσεις Δεδομένων | 6 | 3 + 1 |

25 | ACSC389 | Εργασία Τεχνολογίας Λογισμικού Ι | 3 | 1 |

26 | ACSC390 | Εργασία Τεχνολογίας Λογισμικού ΙΙ | 3 | 1 |

27 | ACSC401 | Αλγόριθμοι και Πολυπλοκότητα | 5 | 3 |

28 | ACSC404 | Ανάπτυξη Εφαρμογών Παγκόσμιου Ιστού | 6 | 3 + 1 |

29 | ACSC476 | Τεχνολογίες Διαδικτύου | 6 | 3 + 1 |

30 | ACSC489 | Οργάνωση Διπλωματικής Εργασίας | 4 | 1 |

31 | ACSC490 | Διπλωματική Εργασία | 5 | 1 |

32 | AENG223 | Επαγγελματική Ηθική και Συμπεριφορά | 3 | 2 |

33 | AENG224 | Συγγραφή Τεχνικών Εκθέσεων | 3 | 2 |

34 | AMAT111 | Απειροστικός Λογισμός και Αναλυτική Γεωμετρία Ι | 5 | 3 |

35 | AMAT122 | Απειροστικός Λογισμός και Αναλυτική Γεωμετρία ΙI | 5 | 3 |

36 | AMAT181 | Γραμμική Άλγεβρα με τη Χρήση «MATLAB» | 5 | 3 |

**Επιλεγόμενα Μαθήματα Ειδικότητας**

Ο φοιτητής πρέπει να συμπληρώσει επιτυχώς 40 ECTS, από την ακόλουθη λίστα μαθημάτων:

No. | Κωδικός | Όνομα | ECTS | Ώρες / εβδ. |

1 | ACOE401 | Παράλληλη Επεξεργασία | 5 | 3 + 1 |

2 | ACOE414 | Ρομποτική | 5 | 3 + 1 |

3 | ACOE422 | Ασύρματα Δίκτυα Υπολογιστών | 5 | 3 |

4 | ACOE426 | Ασφάλεια στις Τεχνολογίες Πληροφορικής και Επικοινωνιών | 5 | 3 + 1 |

5 | ACOE428 | Ψηφιακή Επεξεργασία Εικόνας | 5 | 3 |

6 | ACSC105 | Πληροφοριακά Συστήματα Διοίκησης | 5 | 3 |

7 | ACSC224 | Πιθανότητες και Στατιστική ΙΙ | 5 | 3 |

8 | ACSC300 | Λογικός Προγραμματισμός | 5 | 3 |

9 | ACSC373 | Μεταγλωττιστές | 5 | 3 |

10 | ACSC374 | Σχεδιασμός στον Υπολογιστή | 5 | 3 + 1 |

11 | ACSC375 | Συστήματα Πολυμέσων | 5 | 3 |

12 | ACSC402 | Νευρωνικά Δίκτυα και Γενετικοί Αλγόριθμοι | 5 | 3 |

13 | ACSC416 | Έμπειρα Συστήματα και Συστήματα Υποστήριξης Λήψης Αποφάσεων | 5 | 3 |

14 | ACSC423 | Κινητά και Διάχυτα Υπολογιστικά Συστήματα | 5 | 3 |

15 | ACSC424 | Προγραμματισμός Εφαρμογών Δικτύου | 5 | 3 |

16 | ACSC425 | Εισαγωγή στην Επιχειρηματική Έρευνα | 5 | 3 |

17 | ACSC468 | Μάθηση Μηχανών | 5 | 3 |

18 | AMAT204 | Διαφορικές Εξισώσεις | 5 | 3 |

19 | AMEM417 | Διαχείριση Έργου για Μηχανικούς | 5 | 3 |

#### Course Contents

**Number systems and codes:** Introduction to computer numbering systems: Binary number representation. Conversion from decimal to any base and from any base to decimal. BCD representation. Fractional and negative number representation: Sign-magnitude, radix –1 and radix complement representation. Addition and subtraction using radix complement. Excess and floating-point number representations

**Combinational circuits:** Basic digital components, truth tables and logic functions Karnaugh maps and algorithmic minimization techniques. Circuit implementation of logic functions. Design of combinational MSI digital circuits such as decoders, encoders, adders/subtracters, multiplexers, comparators etc.

**Sequential circuits:** Latches and Set/Reset, Data, JK and Toggle flip-flops. Positive and negative edge triggered flip flops. Asynchronous flip-flop inputs. Asynchronous counters, synchronous counters and shift registers.

**Programmable Logic Devices:** PLAs, PALs, CPLDs and FPGAs. Programming of FPGAs using schematic diagrams. Use of computer programs to design and simulate digital circuits.

**Laboratory Exercises: **Individual and small group experiments including simulation of digital circuits and implementation using TTL ICs.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Explain how and why information is coded and manipulated in a variety of different ways.
- Apply Boolean algebra, Karnaugh maps and algorithmic minimization techniques to analyze and design combinational digital circuits.
- Use latches and flip flops to design and analyze synchronous and asynchronous sequential digital circuits such as counters and registers.
- Employ EDA tools and programmable logic devices for the design and implementation of digital circuits.
- Simulate, build and test combinational and sequential logic circuits using TTL ICs and programmable logic devices such as FPGAs.

#### Course Contents

**Introduction to computer organization and architecture:** Instruction cycle and flow of information at the register level. Instruction Set Architectures, instruction formats and instruction decoding. Relation between machine language, assembly language and high level languages.

**CPU design basics:** Datapaths, register files, ALU, shift and rotate circuits. Register transfer operations and micro-operations. Control unit implementation, hardwired control and microprogrammed control. Single-cycle and multi-cycle non-pipelined CPU design.

**Semiconductor Memory:** Internal structure of semiconductor memory devices, signals and basic characteristics. Types of memory devices, ROM (masked, programmable, flash) and RAM (dynamic and static). Memory expansion and memory addressing.

**Memory Hierarchy:** The memory wall problem and the locality principle. Cache memory organization and mapping. Cache replacement and write policies. Cache performance metrics. Virtual memory.

**Laboratory Work:** Individual or small group experiments performed with the use of common FPGA boards and VHDL. Experiments include the design and analysis of the basic units of a typical CPU such as register files, ALUs, memory devices and simple cache units.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Describe the instruction execution cycle with reference to the flow of information at the register level, and analyse typical Instruction Set Architectures with respect to the number of operands, addressing modes and branch types.
- Describe the internal structure and operation of a CPU datapath and design a simple single-cycle and a multi-cycle non-pipelined CPU.
- Describe the internal structure of the types of semiconductor memory devices, evaluate them with respect to memory capacity, speed and power consumption, and design memory modules.
- Explain how the memory wall problem affects the performance of a computer and how cache memory exploits locality to reduce the memory wall problem.
- Describe the operation and evaluate the performance of the common cache memory mapping methods, cache replacement policies and write policies.
- Explain the function of virtual memory mechanisms, and analyse the mechanisms found in modern high performance microprocessors that support virtual memory.
- Use EDA tools, VHDL code and FPGA boards to design, simulate, verify, implement and test the operation of datapath units, a simple CPU, memory devices and a simple cache unit.

#### Course Contents

**Introduction to Computer Architecture: **Organisation and abstraction of a computer. ISAs. Emerging computer architecture technologies. Processor, caches, memory and I/O devices.

**Performance Metrics: **Measuring performance and metrics. Improve performance, clock cycles, CPI, instructions count, MIPS, MOPS, MFLOPs. Benchmarks. Amdahl's Law.

**Instruction Set Architecture (ISA): **Specifications, classes, registers, memory addressing and addressing modes. The complete MIPS architecture and in-depth analysis. The 80x86 and Pentium 4 processors. Compilers and ISAs.

**RISC Processor Design: **Full ALU design of the MIPS processor. Multiplication and division algorithms in hardware. Single-cycle, multi-cycle data path and controller design.

**Pipelining: **Single-cycle, Multi-cycle versus Pipeline. Structural, data and control hazards. Forwarding. Exceptions. MIPS R3000 pipeline and design of a pipelined processor. Loop unrolling in scalar and superscalar computer systems. Software pipelining.

**Memory Hierarchy: **Locality and memory hierarchy. SRAM and DRAM. Memory organization. Advanced cache memory. Virtual memory. Protection. Translation Lookaside Buffer (TLB).

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Describe the evolution of computer architecture and the factors involved in it.
- Evaluate and compare the performance of computer systems through the use of common metrics and benchmarks.
- Develop assembly programs for RISC processors.
- List the advantages and limitations of current microprocessor features such as pipelining, caches and virtual memory.
- Design complex digital circuits required for the implementation of the functional units of computer hardware.

#### Course Contents

**Computer Networks and the Internet:** Impact of networks in daily lives. The role of data networking in the human network. Key components of any data network. Opportunities and challenges posed by converged networks. Characteristics of network architectures: fault tolerance, scalability, quality of service and security.

**Communicating over the Network: **Structure of a network, including the devices and media that are necessary for successful communications. The function of protocols in network communications. Advantages of using a layered model to describe network functionality. The role of each layer in two recognized network models: The TCP/IP model and the OSI model. The importance of addressing and naming schemes in network communications.

**Application Layer Functionality and Protocols**: Use of the Application Layer to communicate across the information network. Functionalities of well-known TCP/IP applications and their related services (HTTP, DNS, SMB, DHCP, SMTP/POP, and Telnet). File-sharing processes, peer-to-peer applications, the Gnutella protocol.

**OSI Transport Layer**: The need for the Transport layer. The role of the Transport layer. TCP/IP Transport layer protocols: TCP and UDP. Key functions of the Transport layer, including reliability, port addressing, and segmentation. How TCP and UDP each handle key functions. Examples of applications that use TCP or UDP protocol.

**OSI Network Layer:** The role of the Network layer. Internet Protocol (IP) and its features for providing connectionless and best-effort service. Principles used to guide the division, or grouping, of devices into networks. Hierarchical addressing of devices. The fundamentals of routes, next-hop addresses, and packet forwarding to a destination network.

**Addressing the Network – IPv4: **The structure of IP addressing. Classification of IPv4 addresses. How addresses are assigned to networks by ISPs and within networks by administrators. The network portion of the host address, and the role of the subnet mask in dividing networks. Calculation of appropriate addressing components, given IPv4 addressing information and design criteria. Common testing utilities to verify and test network connectivity and operational status of the IP protocol stack on a host. Network Address Translation (NAT).

**Data Link Layer: **The role of Data Link layer protocols in data transmission. Different types of media access control methods. Common logical network topologies and their correlation to the media access control method for that network. Encapsulation of packets into frames to facilitate media access. Layer 2 frame structure and its generic fields. The role of key frame header and trailer fields, including addressing, QoS, type of protocol, and Frame Check Sequence.

**OSI Physical Layer:** The role of Physical layer protocols and services in supporting communication across data networks. Physical layer signaling and encoding. The role of signals. The basic characteristics of copper, fiber, and wireless network media, and their common uses.

**Ethernet:** The evolution of Ethernet. The fields of the Ethernet Frame. The function and characteristics of the media access control method used by Ethernet protocol (CSMA/CD). The Physical and Data Link layer features of Ethernet. Ethernet hubs and switches. Address Resolution Protocol (ARP).

**Planning and Cabling Networks: **Basic network media required to make a LAN connection. Types of connections for intermediate and end device connections in a LAN. Pinout configurations for straight-through and crossover cables. Different cabling types, standards, and ports used for WAN connections. The importance of network designs.

**Configuring and Testing your Network:** The role of the Internetwork Operating System (IOS). Purpose of a configuration file. Factors contributing to the set of IOS commands available to a device. IOS modes of operation. Basic IOS commands.

**Laboratory Work:** Introduce students with an understanding of how data is transmitted over the network, and get familiar with the layered-design of network protocols, through laboratory exercises, using computer simulations and/or packet analysis software.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Recognize, and apply the essential concepts, design principles of data and computer networks.
- Define the functionality and the services provided by the layers of the OSI model, and examine the concepts and issues related to the Internet layers and protocols.
- Analyse the requirements of a computer network, and deduce the network, broadcast, subnet, host IP addresses.
- Design and evaluate computer networks with the aid of computer simulations.
- Illustrate the behaviour of Internet protocols and applications with the aid of packet analysis software.

#### Course Contents

**Computer Networks and the Internet:** Delay, loss, and Throughput in packet-switched networks (Overview of delay, Queuing delay and packet loss, End-to-end delay, Throughput in computer networks). Non-persistent and persistent connections. Networks under attack.

**Reliable Data Transfer:** Multiplexing and demultiplexing. Principles of reliable data transfer (Pipelined reliable data transfer protocols, Go-Back-N, Selective Repeat). Round-trip time estimation and timeout. Principles of congestion control (The causes and the costs of congestion, Approaches to congestion control). TCP congestion control.

**Routing:** Virtual circuit and datagram networks. What’s inside a router (Input ports, Switching fabric, Output ports, Where does queuing occur). Routing algorithms (The link-state routing algorithm, The distance-vector routing algorithm, Hierarchical routing). Routing in the Internet (Intra-AS routing: RIP, OSPF, Inter-AS routing: BGP). Broadcast and multicast routing. IPv6.

**Socket Programming:** Socket definition. Ports. Port numbers assignment. Socket domain families. Socket types. Client/Server TCP connection. Basic server functions. Basic client functions. Byte-order transformations. Socket descriptors. Socket creation. Socket address formats, Associating addresses with sockets. Listening to incoming connection requests. Accepting incoming connection requests. Connection establishment. Data transfer. Closing the connection. IP address conversions. More miscellaneous functions. Client/Server Example.

**Wireless and Mobile Networks:** Wireless links and network characteristics (CDMA). WiFi: 802.11 Wireless LANs. Bluetooth and WiMAX. Mobility management principles (Addressing, Routing to a mobile node). Mobile IP. Wireless and mobility: Impact on higher-layer protocols.

**Security in Computer Networks:** What is network security. Principles of cryptography (Symmetric key cryptography, Public key encryption). Message integrity (Digital signatures). End-point authentication. Securing email. Securing TCP connections: SSL. Network-layer security: IPSec. Securing wireless LANs (IEEE 802.11i). Operational Security (Firewalls, Intrusion detection systems).

**Laboratory Work/Homework:** Perform comparisons and evaluate performance of various issues in computer networks through supervised and/or unsupervised laboratory exercises/homework, using computer simulations and/or packet analysis software (The familiarization of computer network simulators and/or packet analysis software has been gained through the ACOE313 course).

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Use simple quantitative models for end-to-end throughput and delay that take into account transmission, propagation and queuing delays.
- Identify, explain and analyze the principles for reliable data transfer.
- Illustrate how congestion occurs, its effects and mechanisms to control it.
- Describe the properties of dynamic routing algorithms, analyze the operation of the dynamic routing algorithms, illustrate the operation of interior and exterior routing protocols, and justify the need for hierarchical routing.
- Develop client-server models with the aid of socket programming.
- Identify and illustrate the key concepts in wireless and mobile networked environments.
- Provide solutions to protect organizational networks from attacks.
- Design and evaluate computer networks, and illustrate the behaviour of Internet protocols and applications with the aid of computer simulations/packet analysis software.

#### Course Contents

**Overview of the computing discipline**: Historic evolution of computing. Disciplines of computing, relation of the computer science discipline with related disciplines such as computer engineering, information systems and software engineering.

**Elements of a computer system**: Hardware: digital logic level, CPU, memory Input/Output and peripheral devices. Software: programming languages, compilers/interpreters, operating system, and application software.

**I****ntroduction to computer programming**: fundamental programming constructs, flowcharts and implementation of simple algorithms in pseudo code, algorithmic problem solving.

**Computer Science**: Overview of the directions of the computer science course: Information and Database Systems, Theoretical Computer Science, Software Engineering and Development, Artificial Intelligence, System Development and Administration, Computer Networks.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Describe and understand the function of the basic components and peripherals of a computer and its uses in the modern world.
- Examine and apply number and data conversion techniques and understand the importance of binary coding and the operations permitted on binary digits.
- Describe and distinguish the different areas of Computer Science and appreciate the value and contribution of each area of CS.
- Explain how the various areas of computing complete the sphere of knowledge of Computer Science.
- Demonstrate basic knowledge to providing solutions in troubleshooting computer software, hardware, and peripheral devices.

#### Course Contents

**Tabular and graphical methods **

Statistics in practice. Kinds of data (discrete and continuous, ordinal and nominal). Different kinds of variables. Frequency tables, cumulative distribution tables and graphs (histograms, bar charts, pie charts). Shape of various data distributions (skewed, and symmetric).

Descriptive statistics: Numerical methods

Summarizing quantitative data. Measures of location (mean, mode, and median) and measures of dispersion (variance, standard deviation, range) for group data and raw data. Difference between measures of location and measures of dispersion and their significance. Extreme values, outliers and their importance.

**Introduction to Probability **

The idea of probability. Experiments, events, outcomes and sample space. Relative frequencies. Calculation of probabilities and basic relationships of probability (union of events, complement of event, intersection of events). Mutually excusive, mutually exhaustive and independent events. Conditional probability and multiplication law.

Discrete Probability Distributions

Probability distribution tables. Theory and their applications in Business problems concerning the discrete probability distributions: Binomial, Poisson. Expected values and variance.

**Continuous Probability Distributions**

Theory and their applications in Business problems concerning the continuous probability distributions: Normal distribution. Standard normal distribution and table of the standard normal distribution. Applications in Business problems. Discrete versus Continuous distributions.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Recognise and identify the kinds of data (discrete and continuous, ordinal and nominal). Construct, present and interpret frequency tables, cumulative distributions and graphs (histograms, bar charts, pie charts). Understand and explain the shape of various distributions (skewed, and symmetric).
- Summarizing, calculate and interpret the measures of location (mean, mode, and median) and measures of dispersion (variance, standard deviation, range). Identify extreme values and outliers and explain their significance in business applications.
- Describe and explain the idea of probability, experiments, events, outcomes and sample space and construct the sample space given an experiment.
- Calculate probabilities and basic relationships of probability (union of events, complement of event, intersection of events, conditional probability).
- Distinct the difference between mutually exclusive, mutually exhaustive and independent events. Apply these in business problems.
- Recognize and construct and explain probability distribution tables.
- Recognize, use, apply and explain the theory and their applications in Business problems concerning the probability distributions (Binomial, Poisson, Normal distribution). Use the tables of the standard normal distribution for solving problems and interpret correctly the answers.

#### Course Contents

**Introduction to Information Systems**

**Introduction to System Analysis and Design**

Opportunity to improve a system

**System Development fundamentals**

System Development Life Cycle

System Development Techniques and methodologies

Computer-Aided Systems Engineering

**Systems Planning and Systems Analysis**

Systems Planning

Systems Analysis

Data Modelling (Entity Relationship Diagrams ERDs)

Process Modelling (Data Flow Diagrams DFDs, Decomposition Diagram)

Network Modelling

** **

**System Design**

Selection Phase

Acquisition phase and system design

Establish Integration Requirements

Data Analysis (Normalization Process), Event Analysis

Process Analysis and Design

Event analysis__ __

Installation of the system: Phase, Direct, Pilot, Parallel

Input/Output Design and user interfaces

File and Database Design

Program Design

**Testing and Debugging**

Testing; Selection of test data

Installation

Integration

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Understand the fundamentals of System Development, how to analyze and design an information system and how the development of an information system can be viewed as an opportunity for improvement.
- Identify a problem and use problem solving methodologies like System Development Life Cycle, System Development Techniques and methodologies, and prototyping, to solve such problems.
- Demonstrate their ability to analyze and design a system using Data Modelling, Process Modelling, and Network Modelling for real cases (as a mini project).
- Apply using examples the normalization process, event analysis, process analysis and design, file and database design, input output design, and user interface design.
- Develop skill to distinguish a friendly and efficient system from a bad designed system,

#### Course Contents

**Introduction to Computer Programming:** Computer Systems: Hardware, Networks, Computer organization, Computer memory, Computer software, Running a program, High-level languages, Low-level languages, Compilers, Compiling and running a C program, Linkers. Programming and Problem-Solving: Algorithms, Logic Diagrams, Pseudocode, Flowcharts, Program design, Problem solving phase, Implementation phase, Programming guidance, Programming steps, Program creation, Object Oriented Programming (OOP), OOP characteristics, Software life cycle.

**Programming Basics:** A sample C program. Explanation of code. Program layout (include directives, main function, variables, comments). Running a C program. Testing and Debugging. Program errors. Variables and Assignments: Identifiers, Keywords, Declaring variables, Assignment statements, Initializing variables.

Input and Output: Output using cout, Include directives, Escape sequences, Formatting real numbers, Showing decimal places, Basic cout manipulators, Input using cin, Reading data from cin, Designing input and output. Data Types and Expressions: Writing integer constants, Writing double constants, Other number types, Integer types, Floating point types, Type char, char constants, Reading character data, Type string, Type bool, Type compatibilities (int - double, char - int, bool - int), Arithmetic, Results of operators, Division of doubles, Division of integers, Integer remainders, Arithmetic expressions, Operator shorthand.

**Conditional Statements:** Flow of Control. Branch. Designing the branch. Implementing the branch. if-else syntax. Boolean expressions. Relational operators. if-else flow of control. Logical operators. Compound statements. Program Style: Indenting, Comments, Constants. Using boolean expressions. Evaluating boolean expressions. Truth tables. Order of precedence. Precedence rules. Short-Circuit evaluation. Type bool and Type int. bool return values. Multiway branches. Nested statements. Nested if-else statements. Multi-way if-else statements. The switch-statement: syntax, the controlling statement, the break statement, the default statement, Switch-statements and menus. Blocks with local variables. Statement blocks. Scope rule for nested blocks.

**Repetitive Statements:** Loop statements. while-loop syntax, operation and flow of control. do-while loop. Infinite loops. Prefix & Postfix Increment/Decrement Operators. The for-statement. for/while loop comparison. Which loop to use. The break-statement. Designing Loops. Ending a loop: List headed by a size, Ask before iterating, List ended with a sentinel value. Running out of input. General methods to control loops: Count controlled loops, Exit on flag condition, Exit on flag caution. Nested loops. Debugging loops. Fixing Off by one errors. Fixing infinite loops. Tracing variables. Loop testing guidelines.

**Program Modularity:** Top-down design. Predefined functions. Function calls. Function call syntax. Function Libraries. Programmer-defined functions. Function declaration. Function definition. The return statement. The function call. Alternate declarations. Order of arguments. Function definition syntax. Placing definitions. Procedural abstraction. Information hiding. Formal parameter names. Local variables. Global constants and variables. void-functions, Call-by-reference parameters, Mixed parameter lists. Choosing parameter types.

**Composite Data types:** Declaring an array. The array variables. Array variable types. Indexed variable assignment. Loops and arrays. Constants and arrays. Array declaration syntax. Arrays and memory. Array index out of range. Out of range problems. Initializing arrays. Default values. Uninitialized arrays. Arrays in functions. Arrays as function arguments. Array parameter declaration. Function calls with arrays. Function call details. Array formal parameters. Array argument details. Array parameter considerations. Programming with arrays. Partially filled arrays. Searching arrays. The search function. Sorting an array. The selection sort algorithm. Sort algorithm development. Multi-dimensional arrays. Multi-dimensional parameters.

**Laboratory Work:** The role of the C programming language as a tool for solving simple and complex mathematical and engineering problems is emphasised through practical work carried out.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Recognise the goals, capabilities and benefits of structured programming and the basis of algorithmic thought.
- Examine written programs and identify their function and underlying algorithmic logic.
- Demonstrate the ability to express elementary algorithms in the syntax of an imperative programming language (C++).
- Choose the appropriate data types, apply the correct operations, and form the necessary statements.
- Analyse simple problems, construct algorithms to programmatically solve them, and formulate corresponding programs using selective, iterative and sequential statements.
- Illustrate the ability to define and use one- and multi-dimensional arrays programmatically.
- Recognize and illustrate the predefined functions, and user-defined functions prototypes, definitions, and calls.

#### Course Contents

**Review of Programming Principles:** Data and Algorithms. Variables, operators and statements. Sequential, Selective and iterative processes. Understanding complex code. Interacting with input and output.

**Using Composite Data Types:** Limitations of built-in data types. Mechanisms for constructing composite data types: Arrays and Structures. Building complex data types. Combining arrays and structures. Handling composite types. Efficiency considerations. Composite data types in functions.

**Pointers and Dynamic Data:** Understanding pointers and memory addresses. Pointer syntax. Parameter Passing revisited.

**Pointers in Programmatic Development**: Pointers and arrays. Dynamic memory allocation. Memory allocation lifetime and memory leaks. String handling.

**Persistent Storage:** Files, file pointers and file objects. Reading and writing methods. File manipulation.

**Modular Programming Revisited:** Tackling larger programming tasks. Dividing the problem into parts. Designing software solutions. Effects of structures, pointers and dynamic content in functions. Breaking programs into units. Use of header files and custom-made libraries.

**Combining Data and Algorithms – Introduction to Object-Orientation:** Introducing a new way of programming: functions as members of ‘objects’. Key features of object-orientation: Classes, objects, properties and methods. Objects and memory management.

**Laboratory Work:** The role of the C programming language as a tool for solving advanced mathematical and engineering problems is emphasised through practical work carried out.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Recognize the use of structures and arrays, and apply them to construct and manipulate programmatically composite data types.
- Develop programs that read and write from/to files and can handle strings.
- Show the ability to use pointers and dynamic data types in programming exercises.
- Design medium size programs using a modular approach, and apply the use of functions for developing algorithmic units and their communication through parameter passing and function returns.
- Examine the benefits and core concepts of object oriented C++ programming, and develop simple programs using object-oriented terminology.

#### Course Contents

**Mathematical logic**: Propositional Algebra; Logical Operators; Basic logic Equivalences; Predicates; Quantifiers.

**Proof Methods**: Direct Proofs; Mathematical Induction; Contradiction and Contraposition.

**Sets**: Basic Definitions; Set operations; Venn diagrams; Set Identities

**Relations and Functions**: Relations; Equivalence Relations; Equivalence Classes; Definition and Properties of Functions; Inverse Functions; Composition of Functions.

**Combinatorics**: Basic counting principles; Permutations and Combinations.

**Graph Theory**: Terminology, Graph Representation and Isomorphism; Connectivity; Traversability; Eulerian graphs; Kruskall’s algorithm for finding Minimal Spanning Trees.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Discuss the core principles of mathematical logic and its applicability to computer science.
- Use symbolic logic and truth tables to prove equivalence of statements by determining the validity of arguments and formulate statements into symbolic form using logical connectives and quantifiers.
- Identify and correctly employ different methods of proofs including direct proofs, proofs by contradiction and mathematical induction.
- Develop ability of dealing with abstract notions and reasoning through the introduction and manipulation of basic ideas from the theory of sets, functions and relations.
- Apply Boolean combination of sets and operations on such expressions, examine various characterisations of functions and relations, analyse their properties and ways of combining them; and compare matrix and graphical methods for their representation.
- Describe main counting techniques including the Inclusion-Exclusion and Pigeonhole principle and employ them to solve problems of combinatorial nature.
- Discuss basic concepts of Elementary Graph Theory, decide whether a graph is Eulerian or not and employ Kruskall’s algorithm for finding minimal spanning trees in related problem situations.

#### Course Contents

**Introduction to databases.** Data, information and knowledge. Approaches to working with data. Definition of database and database system.

**Types of Databases systems:** Three-level architecture. Data models (relational, network, hierarchical). Functions and components of DBMS.

**The relational Model:** Tables, rows, attributes and data types. Primary and Foreign Keys. Table Relations. Integrity constraints. Physical and logical views.

**Relational Algebra and Calculus:** Selection, Projection, Union, Set difference, Cartesian Product, Join, Theta-join, outer and left joins.

**Manipulating Databases:** The SQL language. Table construction (CREATE, DROP, ALTER). Data manipulation (INSERT, UPDATE, DELETE, SELECT). Joins and join types.

**Database analysis and specification:** Database System Development, Planning fact-finding and specification.

**Database design:** Entity-Relationship diagrams. Enhanced ER. Normalization and Normal Forms. Translating diagrams into databases – Logical and Physical Design.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- To introduce databases as a special type of software systems for storing and retrieving huge amount of data, related models and implementation techniques.
- To describe the mathematical foundation and internal mechanisms based on relational algebra as well as to ensure practical skills for analysing data and design of relational database using entity-relationship diagrams.
- To explain and show how to apply in practice the normalization techniques for logical design of non-redundant databases with high performance.
- To describe and use fourth generation language (SQL) for creating and manipulating databases using different types of interface.
- To ensure that the students can work with the most popular database systems MySQL and MS Access and their programming environments.

#### Course Contents

**Overview**: Operating System definition and services, Common types of Operating Systems, interrupt driven operating systems, System Components Protection and Security, System Calls and Types of System Calls.

**Processes**: Definitions, Process States , diagrams, Parent, Child, memory sharing and the PCB, Context Switching and diagram, Process Scheduling, Process Creation, Windows and Linux Processes.

**Threads**: Definitions, Single and Multithreaded, Multithreading Programming, Thread Context Switching, Benefits, User and Kernel Threads, Multithreading Models and Diagrams, Threading Issues, Windows and Linux Threads.

**CPU Scheduling**: Overview, CPU Scheduler and Dispatcher, Scheduling criteria, Optimisation criteria, Scheduling Algorithms, Gantt Charts, Pre-emptive and Non-preemptive Scheduling, and Algorithm Evaluation

**Process Synchronisation**: Producer / Consumer, Solution to Critical Section Problem, Algorithms and Semaphores, Deadlock and Starvation, Synchronisation Problems – Dining Philosophers Problem.

**Memory**: Overview, Binding Instructions and Data to Memory, Memory Management, Memory Management Unit, Swapping, Dynamic Loading, and Dynamic Linking Contiguous Allocation, Dynamic Storage Allocation, Fragmentation, Page faults sand segmentation.

**Virtual Memory**: Overview and Implementation, Demand and pure demand paging, Page Tables and Page Faults, Page Replacement and Algorithms, Page Fault and Page fault Correction.

**File System Interface**: File system, Definitions and operations on files and directories, Different structures (NAS, SAN), File systems, Different storage methods and Scheduling Algorithms.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Describe computer organisation and architecture, as well as the structure and operations of an operating system with regards to resource management (CPU, memory and storage) and explain the concepts of CPU scheduling, process synchronisation and virtual memory.
- Explain scheduling algorithms to solve synchronisation problems for processes and threads and memory usage (main and virtual) with the use of system calls for single and multiprocessor systems.
- Examine the critical-section problem in process synchronisation and outline the use of semaphores for classic problems of synchronisation.
- Evaluate and compare resource management, file-system interface, protection and security of different operating systems.
- Design and construct programs for monitoring system resources and applying scheduling algorithms for process management and synchronisation.

#### Course Contents

**Tools for Scientific Computation: **Mathematical background from Calculus, Floating point representation and arithmetic; rounding errors and its consequences. Approximation of functions and derivatives; measuring and controlling errors.

**Solving non-linear equations**: Iterative methods; bracketing and bisection method; Newton-Raphson & secant method; convergence rates and criteria.

**Curve Fitting: **Polynomial Interpolation with Monomial Basis; Newton ’s Divided-Difference Interpolating Polynomials; Langrange Interpolating Polynomials; Spline Interpolation; Least Squares Regression Approximation

**Numerical Integration and Differentiation**: Newton-Cotes Rules (Trapezoidal and Simpson’s Rules); Taylor-series Method; Richardson ’s Extrapolation.

**Solving first-order** **Ordinary Differential Equations:** Euler and Midpoint Method; Multistep Method.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Discuss the need for numerical methods and how they can be successfully applied to many important scientific problems that cannot be solved exactly within a reasonable amount of time.
- Identify limitations and compromises inherent in numerical computation.
- Examine the influence of the nature of the problem to be solved, understand the properties of floating-point arithmetic, the architecture of available computers and determine the effect of round off errors or loss of significance.
- Analyze various methods for solving non-linear equations, including bracketing, bisection, Newton-Raphson, secant and iterative methods. Evaluate their appropriateness for different examples, and assess their robustness and accuracy, as well as their rate of convergence.
- Acquire a basic knowledge of numerical approximation techniques (Taylor-series Method or Newton-Cotes Rules) for mathematical expressions, such as derivatives and definite integrals, and learn how, why, and when these techniques can be expected to work. Evaluate various methods (Euler, Midpoint and Multistep method) for solving first-order Ordinary Differential Equation.
- Compare a number of different polynomial interpolation techniques for Curve Fitting (Monomial Basis, Newton’s Divided-Difference and Langrange Interpolating Polynomials) and illustrate their applicability.
- Write simple programs for the proposed numerical algorithms in Matlab or other programming environments.

#### Course Contents

Part 1: Data representation under imperative programming.

Data, data representation and data storage. Static data types. Memory requirements and implications.

Part 2: Dynamic Data and pointer programming

Pointer programming. Construction of dynamic data in C - new and delete operators. Persistence of dynamic memory. Memory Deallocation. Dynamic (vectors) vs static arrays.

Part 3: Dynamic Linked Lists

Development of dynamic linked lists. Basic list operations (append, delete, insert, etc). Implementation of linked lists and performance issues. Comparison with arrays. Types of linked lists: circular linked lists, double linked lists.

Part 4: Linear Abstract Data Types

Implementing abstract types. Stacks and Queues. Dynamic and static implementations and performance considerations. Applications of stacks and queues.

Part 5: Multidimensional Data Structures

Two-dimensional linked lists. Trees: Implementation of generic trees and applications. Binary trees and implementations. Special binary trees: Heaps, Binary search trees. Hash tables.

Part 6: Introduction to Algorithmic Complexity

What is algorithmic complexity. Tractability. Investigation of performance on general problems such as sorting and searching. Investigation of ADTs provided by the Standard Template Library (vector, maps, multimaps, valarray, sets, etc).

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Recognize the limitations of static data structures, compare and discuss the differences in memory allocation of static and dynamic data and construct programs that can handle, create, manipulate, and destroy dynamic data.
- Demonstrate the ability to implement linear abstract data types such as lists (single/double linked, circular), stacks and queues programmatically (C++). Identify how such structures can be applied in Computer Science, distinguish the use of each and effectively employ them.
- Describe and explain how tree data structures can be developed and implemented, discriminate between the different tree types (generic, binary) and identify where they can be used. Evaluate tree traversal methods and be able of designing and constructing core tree operations using recursive functions. Examine implementation approaches for special tree structures such as priority queues.
- Define and describe data structure classes available in the standard template library in C++, employ them for solving relevant problems and develop the necessary conceptual understanding that would help them adapt to similar programmatic environments (e.g. Collections in Java).
- Recognize the importance of algorithmic time and space complexity. Evaluate the complexity of basic algorithms and explaining the concept of big O notation as well as terms such as NP-complete and intractability. Select, experiment, and programmatically develop appropriate data structures and algorithms for handling the searching and sorting problems and judge the advantages.

#### Course Contents

**Introduction to Human-Computer Interaction: **Explain the difference between good and poor interaction design, what interaction design is and how it relates to human-computer interaction and other fields. What is involved in the process of interaction design, the different forms of interaction design, the human factor etc.

**Interaction Design: **Explain what is communication and collaboration, the main kinds of social mechanisms that are used by people to communicate and collaborate, the range of collaborative systems that supports this kind of social behavior, how field studies inform the design of collaborative systems, etc.

**The Computer and Human-Computer Interaction: **Involves the various devices and implementation beds as well as technological constraints and opportunities, the problem space, how to conceptualize interaction, the pros and cons of using interface metaphors as conceptual models, the relationship between conceptual design and physical design, etc.

**Web Interfaces: **The notion of a paradigm and set the scene for how the various interfaces have developed in interaction design, overview of the many different kinds of interfaces, highlight of the main design and research issues for each of the different interfaces, considerations which interface is best for a given application or activity, etc.

**Introduction to Interactive System Design: **Includes what ‘doing’ interaction design involves, some advantages of involving users in development, the main principles of a user-centered approach, etc.

**Interfaces Design and Prototyping: **Includes prototyping and different types of prototyping activities with regards to systems interfaces design, production of simple prototypes from the models developed during the requirements activity, production of a conceptual model for a product, use of scenarios and prototypes in design, a range of tool support available for interaction design, etc.

**Visual C# Windows Applications: **Design and implement Windows Applications.** **Use forms, controls, menus and dialog boxes, modify their properties, write code for their events and employ their methods in Visual C#. Have the ability to experiment with and use new controls, properties, events and methods.

**Windows Mobile Phone 7: **Explain the major differences of user interfaces between windows applications and mobile phone applications. Introduce major tools and environments including Silverlight, XNA and Expression Blend. Use windows phone templates and their major controllers (e.g., text blocks, buttons, slide bars). Orientation and layouts of windows mobile phones. Introduce XAML and C# programming for Windows Mobile Phone 7 development. Write the code behind events and transforms. How to get an application in the market (security, privacy, copyrights and certificates).

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Explain the theoretical foundations of designing for interaction between humans and computers and discuss what and who is involved in the process of interaction design.
- Explain the user experience and describe how to characterize the user experience in terms of usability, user experience goals, and interactive system design principles.
- Describe Windows Concepts and Interfaces as well as discuss how to design interfaces for different environments, people, places, and activities.
- Present an overview of the major interface developments, ranging from WIMPs (windows, icons, menus, and pointer) to wearables.
- Describe prototyping activities with regards to systems interfaces design.
- Demonstrate basic knowledge on designing user interfaces and developing windows applications using Visual C#.
- Demonstrate basic knowledge on designing user interfaces and developing mobile phone applications on Windows Mobile Phone 7.

#### Course Contents

**Introduction to Automata Theory:** Introduction to Finite Automata; Structural representations; Automata and complexity; Central concepts of Automata Theory: alphabets, strings, languages, problems.

**Finite Automata:** Informal view of Finite Automata; Deterministic Finite Automata; DFA notation; DFA transition function; The language of a DFA; Nondeterministic Finite Automata; NFA transition function; DFA and NFA equivalence; Finite Automata with epsilon transitions; Epsilon-closures; DFA and Epsilon NFA equivalence.

**Regular Expressions and Languages:** Operators of Regular Expressions; Building Regular Expressions; Precedence of operators; Converting DFA’s to Regular Expressions; Converting Regular Expressions to Automata; Applications of Regular Expressions; Algebraic laws of Regular Expressions.

**Properties of Regular Languages:** Proving languages not to be regular; Closure properties of Regular Languages; Decision properties of Regular Languages.

**Context-Free Grammars and Languages:** Definition of Context-Free Grammars; Derivations using a grammar; Language of a grammar; Sentential forms; Constructing parse trees; Inference, derivations and parse trees; From inferences to trees; From trees to derivations; from derivations to recursive inferences; Applications of CFG’s; Ambiguity in Grammars and Languages.

**Pushdown Automata:** Definition of Pushdown Automata; Graphical notation for PDA’s; Instantaneous descriptions of a PDA; Languages of a PDA; From CFG’s to PDA’s; From PDA’s to CFG’s; Deterministic PDA’s.

**Properties of Context-Free Grammars:** Normal forms of CFG’s; The pumping lemma for CFG’s; Closure properties of CFG’s; Decision properties of CFG’s.

**Turing Machines:** Turing Machine notation; Instantaneous descriptions of TM’s; Transition diagrams for TM’s; The language of a TM; TM’s and Halting; Programming techniques for TM’s.

**Undecidability: **The halting problem; Reducing one problem to another; A language that is not recursively enumerable; Recursive languages; Complements of recursive and RE languages; The universal language; Undecidability of the universal language; Undecidable problems about TM’s; Post’s correspondence problem.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Describe in detail what is meant by a finite state automaton, a push-down automaton, a grammar and a Turing Machine.
- Work out and illustrate the behaviour of a given example of these machines.
- Design a machine of this type corresponding to a particular language.
- Reason about the capabilities of such machines and demonstrate that they have limitations.
- Describe a decision procedure in terms of a language and define a language by using a grammar.

#### Course Contents

**Computer Systems and Models: **Applications of Computer Graphics, A Graphics System, Images: Physical and Synthetic, Imaging Systems, The Synthetic-Camera Model, The Programmer’s Interface, Graphics Architectures, Programmable Pipelines, Performance Characteristics

**Graphics Programming: **The Sierpinski Gasket, Programming Two-Dimensional Applications, The OpenGL API, Primitives and Attributes, Color, Viewing, Control Functions, The Gasket Program, Polygons and Recursion, The Three-Dimensional Gasket, Plotting Implicit Functions

**Input and Interaction:**** **Interaction, Input Devices, Clients and Servers, Display Lists, Programming Event-Driven Input, Menus, Logic Operations

**Geometric Objects and Transformations: **Scalars, Points, and Vectors, Three-Dimensional Primitives, Coordinate Systems and Frames, Frames in OpenGL, Modeling a Colored Cube, Affine Transformations, Translation, Rotation and Scaling, Transformations in Homogeneous Coordinates, Concatenation of Transformations, OpenGL Transformation Matrices, Interfaces to Three-Dimensional Applications

**Viewing: **Classical and Computer Viewing, Viewing with a Computer, Positioning of the Camera, Simple Projections, Projections in OpenGL, Hidden-Surface Removal, Interactive Mesh Displays, Parallel-Projection Matrices, Perspective-Projection Matrices, Projections and Shadows

**Shading: **Light and Matter, Light Sources, The Phong Reflection Model, Computation of Vectors, Polygonal ShadingApproximation of a Sphere by Recursive Subdivision, Light Sources in OpenGL, Specification of Materials in OpenGL, Shading of the Sphere Model, Global Illumination

**Discrete Techniques: **Buffers, Digital Images, Writing into Buffers, Bit and Pixel Operations in OpenGL, Mapping Methods, Texture Mapping & Texture Mapping in OpenGL, Texture Generation, Environment Maps, Compositing Techniques

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Understand the basic computer systems and models used in computer graphics
- Understand Graphics Programming and the OpenGL API
- Input and Interaction in Windowing Systems using OpenGL
- Geometric Objects and Transformations
- Viewing and Shading in computer graphics
- Texture mapping and other advanced techniques
- Project Development

#### Course Contents

**Introduction to Artificial Intelligence:** What is Artificial Intelligence; The Turing test; History of Artificial Intelligence; The state of the art.

**Intelligent Agents:** Agents and environments; The concept of rationality; Task environment specification and characteristics; Agent structures; Agent programs; Simple reflex agents; Model-based agents; Goal-based agents; Utility-based agents; Learning agents.

**Solving Problems by Searching:** Problem-solving agents; Formulating problems; Example toy and real world problems; Measuring problem-solving performance; Breadth-first search; Uniform-cost search; Depth-first search; Depth-limited search; Iterative deepening search; Uninformed search comparison; Avoiding repeated states.

**Informed Search Strategies: **Greedy best-first search; A* search; Admissible heuristics and optimality of A* search; Heuristic functions; The effect of heuristic accuracy on performance; Inventing admissible heuristic functions.

**Local Search Algorithms and Optimization Problems:** Local search problem formulation; State space landscape; Hill-climbing search; Simulated annealing search; Local beam search; Genetic algorithms.

**Adversarial Search:** Optimal decisions in Games; Optimal strategies; The minimax algorithm; Alpha-beta pruning; Evaluation functions and cutting off search; Games with chances; The expectiminimax algorithm; Complexity of expectiminimax.

**Logical Agents:** Knowledge-based agents; Logic; Propositional logic; Syntax and semantics of propositional logic; Inference; Equivalence, validity and satisfiability; Reasoning patterns in propositional logic; Resolution; Forward and backward chaining; Propositional inference; Agents based on propositional logic.

**First-Order Logic:** Syntax and semantics of first-order logic; Assertions and queries in first-order logic; Numbers, sets and lists; Knowledge engineering in first-order-logic.

**Inference in First-Order Logic:** Propositional vs. First-order inference; Unification and lifting; Forward chaining; Backward chaining; Resolution.

**Machine ****Learning:**** **Forms of learning; Inductive learning; Learning decision trees; Expressiveness of decision trees; Inducing decision trees from examples; Noise and overfitting; Ensemble learning; Instance-based learning; The nearest neighbours algorithm.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Identify and describe some of the main areas that comprise the field of Artificial Intelligence and discuss the practical application of Artificial Intelligence techniques in computer systems.
- Describe and explain the fundamental concepts behind some of the most important Artificial Intelligence algorithms.
- Analyze and propose ways of dealing with the main issues involved in various areas of Artificial Intelligence.
- Formulate and assess problems in Artificial Intelligence.
- Demonstrate and explain the execution of some of the most important Artificial Intelligence algorithms.
- Analyse, evaluate and compare the suitability of different Artificial Intelligence techniques for given problems.

#### Course Contents

· **Introduction to Programming Languages:** Why programming languages? Why different languages, Main programming languages paradigms. Goals and tradeoffs. Domains of application. Comparison of programming languages. Historical development for PL.

· **Languages and Grammar:** Language definition languages – Grammar Definition. Derivations and parse trees. Chomsky hierarchy. Regular expressions and finite state automata. Context free grammars. Overview of the compilation process and links to grammar definition. Compiled vs interpreted languages

· **Von-Neumann architecture and imperative programming:** Processors and memory.

o __Names, Scopes, Binding__: Lifetime of objects and storage management, variables and the concept of binding (sextuple definition). Scope rules. Static, stack dynamic and heap dynamic storage allocation. Garbage collection

o __Control Flow__: Expression evaluation. Sequence, selection and iteration - common constructs. The concept of recursion.

o __Data types__**: **Type checking and strong typing. Arrays, pointers, records and unions. Enforcing type compatibility

** **

o __Subprograms:__

** **Implementing the call stack, parameters and return values.

· **Overview of data abstraction and core OO features**

· **Exception handling**: The need for exception handling and abstraction from error handling. Error handling mechanisms (Java)

· **Lambda calculus and functional programming:** Reductions in lambda-calculus. Functional programming paradigm. Scheme programming language. Functional calculations, Recursion and tail recursive definitions. List processing in Scheme. The ‘let’ statement and efficiency considerations.

· **Logic Programming Introduction:**

** **Introduction to Prolog. Clauses, functors, facts and rules. Variables and Unification. Recursion. Lists in Prolog.

· **The emergence of Scripting languages: **Common characteristics and problem domains. Examples of impact and importance.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Differentiate programming paradigms and the theoretical foundations of each and develop criteria for deciding what programming language should be used for a given task for a specific domain.
- Demonstrate basic familiarity with languages from imperative, object-oriented, logic and functional paradigms.
- Develop an understanding of components of programming languages including control structures, names, bindings, scopes, types, exceptions, etc., evaluate how these properties are implemented in particular languages and argue on their impact in language evaluation.
- Examine the basic syntactical structure of a language (BNF, derivation, parsing).
- Develop skills to describe, analyse, and learn to use the features of new programming languages.

#### Course Contents

**UNIX System Overview:** UNIX operating system overview. Access to the Resources of a Computer. Basic Elements of the Kernel. System calls. Shell / Shell programming. UNIX history. UNIX for PC.

**UNIX commands**: Elementary and advanced UNIX shell commands. Directories structure, Files and directories manipulation, Files examination, Input/Output streams, Files redirection, Pipes, Access permissions, Regular expressions, Process control.

**Bash Environment:** Introduction to bash shell. Shells evolution. Environment and variables. Shell initialization files. Shell variables. Default global variables. User shell variables. Creating, deleting and exporting variables. Built-in shell commands. Executing shell scripts. Read user input data. Command line arguments. Special characters and quotes. Printing in the shell.

**Bash Programming:** Exit status code. Conditional statement if. Relational operators. File testing. Command line parameters. Logical operators. Arithmetic expressions. The case statement. The while loop and the until loop. Commands break and continue. The for loop. Shell functions. Parameters in functions. Scope of function variables. Initialization and processing of arrays. Advanced Shell Programming: Debugging bash scripts, Catching signals, Pipes and devices, Implementation of pipes with files, Implementation of pipes with two variables, The File descriptor table, Standard in/out/err, Devices, Input/Output redirection.

**File I/O:** Error handling in C. Introduction to files and file system. File types in UNIX. How files are stored (Partitions, i-Nodes, Blocks). Example of finding a file using the i-nodes. File processing operations. Standard I/O vs. System Calls (Low-level I/O). System calls advantages and disadvantages. System calls for I/O.

**Process Environment & Control:** Process Identifiers. Memory layout of a process. Creation of processes (When it is needed, What is not inherited). Environment Variables. Orphan process vs. Zombie process. Processes and files. Waiting of processes. How to avoid zombie processes.

**Processes and Signals:** exec() Functions. System call system(). Signals Handling. Signals and Processes. Asynchronous avoidance of Zombie processes using Signals. System call alarm(). Inter-process signals. System call kill().

**Inter-Process Communication:** Processes and Files. System calls dup() & dup2(). Inter-Process Communication (IPC) – Introduction. IPC with Pipes. System call pipe(). IPC with Named Pipes (FIFO). FIFOs in the shell. FIFOs in C. Pipes vs. FIFO.

**Socket Programming:** Socket definition. Ports. Port numbers assignment. Socket domain families. Socket types. Client/Server TCP connection. Basic server functions. Basic client functions. Byte-order transformations. Socket descriptors. Socket creation. Socket address formats, Associating addresses with sockets. Listening to incoming connection requests. Accepting incoming connection requests. Connection establishment. Data transfer. Closing the connection. IP address conversions. More miscellaneous functions. Client/Server Example.

**Laboratory Work:** Familiarise students with the development of system-level software in the C programming language, while providing an understanding of the UNIX operating system. Perform various important tasks using UNIX commands and formulate shell scripts using structured shell programming.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Recall operating system concepts, and review the UNIX operating system and environment by explaining the structure and organisation.
- Implement shell configuration and programming, and making use of UNIX shell commands.
- Examine process creation, communication and management by inspecting the use of system calls, signals and interrupts.
- Recognize and implement low level File Input/Output.
- Design programs for inter-process communications, and develop client-server models with the aid of socket programming.

#### Course Contents

**The nature of object-orientation:** Programming paradigms. The notion of object. Principles of object-oriented programming. Java programming language – characteristics, comparison with other programming languages, JDK installation and use.

**Procedural programming elements in Java:** data, functions, types, statements, control structures and data structures.

**Classes and Objects:** Abstraction. Instances, state and behaviour. Constructors. Objects communication by messages.

**Packages:** Modularity. Reusable components. Namespace. Standard Java packages.** **

**Encapsulation:** Information hiding. Data and method access types.

**Inheritance: **The dual meaning of inheritance. Superclasses and subclasses..** **Abstract** **classes. Interfaces.

**Polymorphism:** Extensibility, based on building class hierarchy. Static and dynamic binding.** **

**Exception handling:**** **Errors and exceptions. Exception handling in Java.** **

**I/O and Serialization:** java.io package, streams and serialization.** **

**Event handling and User interface programming:** java.awt and swing for user interface programming.

**Applets in Java:** Applications and applets. Mechanism of implementing Java applets.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- To describe and explain the principles of object orientation – abstraction, data encapsulation and information hiding, message passing, inheritance and polymorphism and their implementation in Java programming language.
- To compare, clearly explain and apply the transition from data types in procedural programming paradigm to abstract data types, from simple variables to classes and instances, from library of functions to packages of classes.
- Building ability of students to write programs applying the principles of object orientation in different object-oriented programming languages.
- To show practical competence and skills of students to write high quality programs in Java using exception handling mechanism, streams and object serialization.
- To show skills for organizing complex programs using built-in classes and packages in Java programming environment.

#### Course Contents

**The nature of software engineering:** Technology and Business processes, modelling software, complexity of software, estimation of risks, roles and responsibilities.

**Software Development Life Cycle:** Waterfall, Rational Unified Process, Agile process. Prototypes. CASE tools and reverse engineering.** **

**Requirements analysis:** Requirements and Specifications. Documentation.** **

**UML:** visual modelling language. Parts, views, models, tools.

**Use Case modelling:**** **Use Cases and Actors. Use Case-driven software development.** **

**System Analysis: **Approaches to modelling.** **

**Object Orientation:** The fundamentals. Objects as modules.

**Object-Oriented Analysis:**** **Information modeling. Object identification and applying Entity-Relationship modeling.

**Object-Oriented Analysis: **Dynamic modeling. Events and event tracing. Sequence diagrams. State modeling. Data flow modeling and diagrams.

**System Design: **System and software architecture. Basic architectural components. Design as a continuation of analysis. Implementation as a bridge between analysis and design.

**Object-Oriented Software (detailed) Design: **Software characteristics. External and internal quality factors. Modularity and its object-oriented interpretation and implementation. Class design guidelines.** **

**Components, Patterns and Frameworks: **Transition from objects to components and frameworks through analysis and design patterns.** **

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- To explain the systematic approach to development of software as product emphasising the basic analysis and design phases of the software development lifecycle and to compare different development lifecycle models.
- To show knowledge and skills for specifying the system requirements in a given problem domain as starting point of development process applying Use Case modelling.
- To show ability to apply UML as de-facto standard for CASE working with Use Case, Class and Object, State, Collaboration and Sequence diagrams for analysis and design of object-oriented software systems.
- To describe and explain the nature of design as continuation of analysis and to be able to apply specific methods and techniques to system (architectural) and detailed (software) design.
- To introduce the concept of component-based software engineering as extension of objects, use of analysis and design patterns and development of complex systems based on frameworks.

#### Course Contents

**Preview:** Preview of data models. Relational Database Systems – Architecture and implementation models. Design of database systems.

**Programmatic Use of Database Systems:** Connecting databases to applications. Mechanisms of using MySQL database system from Java, C/C and C# applications.

**DBMS Functionalities:** Transactions, Concurrency, Recovery and Security.

**Database Systems Administration:** Data Administration and Database Administration.

**Introduction to Object-Oriented Database Systems:** The Object Data Model. Object-Oriented DBMS and Object-Relational DBMS.

**Introduction to Distributed Database Systems:** Concepts, Architecture and Functions. Database Pooling and Replication. Mobile Databases.

**Introduction to XML Database Systems:** Semistructured Data and XML. Development of XML - based Applications using Native XML Databases and Relational Databases.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- To describe in details the functions and role of DBMS as an interface between end users and database. To define transactions and supporting mechanisms embedded in DBMS for working with them in concurrent computing environment, including recovery and security of databases.
- To show both in theory and practice the programmatic use of databases on the example of connecting applications to database system.
- To show the nature of object-oriented databases and their practical use. The students to have the ability to analyze the problem domain and make selection of respective relational or object-oriented database.
- To describe and compare the basic models and mechanisms for development and use of distributed databases for supporting distributed applications, including Internet/Web applications.
- To build ability of students to apply XML databases, based on the characteristics of XML as a machine-readable tool for exchanging data.

#### Course Contents

**Project and team organization: **Objectives of the project. Team structure and roles and responsibilities of different team positions.

**Software system development life cycle: **Review of different models of SDLC. Transition to agile software development.

**Problem domain and system components: **Text description of the problem domain and expected functionalities of the system. Identification of the basic system components and necessary interfaces.

**Use Case modeling: **Identification of system functionalities and respective actors and use cases and their representation using Use Case modeling tools. Formal description of identified use cases.

**Creating the information model of the system: **Allocating use cases to the system components. Identification of objects supposed to implement each use case. Creating the system requirements specification document.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- To apply in practice previously learned software development knowledge and independently learn new skills to build a software system according to client requirements and deadlines. In addition the students develop research skills to identify and use appropriate software development tools and other resources.
- Build ability of students to extract requirements from the client, analyze and organize the information, formulate ideas and to communicate all the information and ideas effectively and fluently, in both written and oral forms using appropriate communication technologies.
- To describe the meaning and significance of agile software development of real systems based mainly on team work and prototyping. Through assigning respective team positions and rotating them throughout the development life cycle the students will understand the process of project management.
- Students will be able to formulate user requirements and convert them into software specifications applying modern methods and techniques as well as respective CASE tools.
- Having software specifications the students will be able to plan their next steps according to the software development life cycle, including implementation and testing.

#### Course Contents

**Software system analysis and design: **Creating dynamic model of the system components to identify behaviour of the working elements (objects), using respective CASE tools (sequence or collaboration diagrams).

**Implementation of the system****: **Analysis of suitability of different programming and platform environments for implementing the system and respective selection. Choice of the required database and preparing its usage. Programming and code verification.

**Problem domain and system components: **Text description of the problem domain and expected functionalities of the system. Identification of the basic system components and necessary interfaces. Introduction to CASE tools supporting system analysis.

**Testing and preparing the documentation: **Testing the specified functionalities of the system using detailed description of respective use cases for components and the system as a whole. Finalizing the software. Preparing documentation of the system – description, specifications, system requirements and configuration, manuals, user guide.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Students will show ability to apply previously learned software development knowledge and independently learn new skills to build a software system according to created software specifications.
- Students will show ability to apply in practice agile methods and techniques for static and dynamic analysis of software systems and preparing detailed design specifications.
- Students will be able to identify the basic system components, define their characteristics and specify the communication between system modules.
- Depending on the chosen by the team working methodology the students will be able practically to make detailed design of complex software systems and implement them as a code in modern programming environment, including testing the correspondence of system functionality with user requirements.
- Working as a team and sharing the responsibilities the students will be able to create system documentation and presentation of the system for client approval. In addition the students will be involved in the process of team evaluation as an element of project management.

#### Course Contents

**Computability issues**, need for axiomatic models of computations; unsolvable problems and computers limitation

**Analysing Algorithms and Problems**: Notion of an algorithm; Principles and Examples; Time and space complexity; Classifying functions by their growth rates; Brute force and greedy algorithms. Divide and Conquer paradigm; Master Theorem for solving recurrences.

**Algorithms design - Sorting**: Selection and Insertion Sort; Heapsort, Merge-sort, Quick-sort. Lower bounds for sorting by comparison keys.

**Algorithms design - Arithmetic & Matrix Computations **Divide and Conquer paradigm applied for integer and matrix multiplication. Dynamic Programming paradigm and examples (Matrix chain multiplication)

**Searching**: Balanced Binary Search Trees (Red-Black, AVL, B-Trees) and string matching (Rabin-Karp and Knuth-Morris-Pratt algorithms)

**Graphs and Trees**: Terminology and graph representation. Graph traversing (Breath/Depth First Search). Kruskal’s and Prim’s algorithms for Minimal Spanning Trees. Dijkstra’s Single Source Shortest-path (SSSP) algorithm. Maximum flow problem and Ford-Fulkerson algorithm

**Complexity** **theory**: Classes P and NP, NP-Completeness and Reducibility. Approximation algorithms for finding near-optimal solutions in polynomial time for intractable problems.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Discuss computability issues and need for axiomatic models of computations. Introduce the notion of an algorithm noting the existence of unsolvable problems.
- Discuss the notion of time and space complexity and classify functions by their growth rates.
- Analyze the running time of various algorithms; employ in particular, the Master Theorem for solving recurrences.
- Describe and use general techniques, such as the Divide and Conquer and the Dynamic Programming paradigms, for designing correct and effective algorithms
- Develop, evaluate and reason about the correctness and performance, of sorting algorithms (Insertion Sort, Merge Sort, Heapsort and Quick Sort), write programs to implement these and prove lower bounds for sorting by comparison keys.
- Analyze graph traversing algorithms (BFS/DFS), compare Kruskall’s and Prim’s method for finding minimal spanning trees and explain Dijkstra’s Single Source Shortest-path algorithm. Discuss the Maximum flow problem and Ford-Fulkerson algorithm.
- Explain the general notion of complexity classes, P and NP, completeness and hardness, and the relationships between classes by reduction. Compare a range of computational problems according to their classification. Consider approximation algorithms for solving hard problems.

#### Course Contents

**Introduction to Web enabled applications**. What are web-enabled applications. E-Commerce applications. B2C and B2B applications. Characteristics of successful web applications (flexibility, security, interfaces, integration). Components of a web application system. Major web development technologies.

**Server-side components**: Handling an HTTP request at the server. Dynamic content creation. The Servlet Class in Java.

**Multi-tiered architectures**: Limitations of basic client/server architectures. 3-tier and 4-tier architectures. Overview of the MVC model. Development of middleware components, JSP and JavaBeans.

**Objects in web applications**: Scopes and lifetime of components (request, page, session, application). Connectivity to data backends. Connection pooling mechanisms.

**Constructing thick clients**: DOM construction and representation at the browser. AJAX requests and DOM manipulation. HTML 5 and advanced JavaScript manipulation.

**Introduction to Web Services**: Extending the traditional distributed computing paradigm. Service oriented architectures. Benefits of web services and changes in software development methodologies. Review of core technologies - the WS-XML approach: SOAP and WSDL. Incorporating web services in web applications. Alternative web services paradigms: RESTful web services. Exposed resources and the HTTP methods / CRUD association.

**Data Interexchange on the web**: Diverse components, independent format. The XML meta-language. XML languages and definition (XSD, DTD). XML parsing. XML transformations. Lighter alternatives to interexchange: the JSON format. Libraries for form-to JSON translation (JAVA and JavaScript)

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Identify the components of web enabled applications and types of e-commerce systems and recognize their impact.
- Demonstrate how multi-tier architectures can be employed for developing web enabled applications. Design multi-tiered web applications and develop them programmatically using technologies such as JSP, JavaBeans and Servlets.
- Experiment and utilize with concepts such as session tracking, object scope and persistence/lifetime, collaboration with client-side components for DOM manipulation (AJAX), and backend connectivity and evaluate and select appropriate solutions according for problems faced.
- Understand the role of web services (both XML based and RESTful) and service-oriented architecture in web-based applications and construct and incorporate such services with applications
- Explain the challenge of data interexchange between resources on the web and argue on the efficiency of mechanisms used to address it, including XML documents and JSON.

#### Course Contents

Part 1: Review of Networking Essentials: Networking Layers and the TCP/IP stack. Sockets. Common Internet applications and their protocols. Understanding HTTP, SMTP, POP3 and other dominant protocols. Elementary socket programming. Packet analysing.

Part 2: Web Content Development: Syntax of XHTML, Basics of web page construction. Web page presentation and web browsers. Page Styling. Advanced Design features with CCS3. Principles of web design, design and usability issues. HTML5.

Part 3: Programmatic Support in Web Applications: Client-side versus server-side programming. Client-side technologies. The DOM structure. The JavaScript language and client-side applications. Elementary server-side programming. PHP code. Basics of server-side data management (variable visibility, containers). Cookies and session tracking.

Part 4: XML Documents and the future of the Web (2 weeks): The XML meta-language. XML languages and documents. Well-formed and valid documents. XML language definition (DTD, XSD). Impact of XML on Internet development. The receding of XML today and the emergence of alternative approaches. Introduction to the Semantic Web and Web 2.0.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Describe and explain how the main application-layer protocols (for web, email, etc) operate and discuss their actual usage in the Internet.
- Design and construct high-quality static web pages using XHTML and CSS.
- Evaluate the differences between client-side and server-side programming, be familiar with the dominant programming languages that support each type, and argue on the efficiency/effectiveness of each on various scenarios.
- Develop client-side web programs employing technologies such as JavaScript and employ commonly used libraries such as JQuery.
- Construct elementary server-side components to process HTTP requests in PHP.
- Discuss the impact of XML technologies in the development of the web and evaluate and critique the emergence of the Semantic Web. Appreciate the impact of various emerging technologies in the Internet domain (e.g. HTML5, web services).

#### Course Contents

To satisfy the requirements of the program, students must successfully complete a Senior Project. This is achieved through a two-semester course sequence (ACSC489 and ACSC490) that students must complete during their senior year (last two semesters of their studies). The project should be concerned with addressing a problem in the realm of computer science that requires a substantial body of work to be resolved. These projects can either be research focused, where the student will investigate an open question in the field and attempt to address it, or applied, where the student is expected to provide an applied solution.

With the Senior Project Preparation (ACSC489) course, students must consult with the faculty of the Department in order to select the topic of their project and specify its objectives. After choosing the senior project topic each student is assigned by the Department a project Advisor and a “Second Reader”. The Second Reader participates in the assessment of the project.

The student, in consultation with his advisor, should conduct the necessary background reading so as to obtain a deep understanding of the problem area and better appreciate the problems faced and goals set. Students should also investigate appropriate research methods where applicable. Finally students are expected to develop a project plan outlining the activities that are to be undertaken within the timeframe provided.

By the end of the course, the student must submit to the Department a project planning report that includes the project proposal with the detailed objectives and contributions of the project, a literature review on the topic of their project, the methodology to be used, the expected results, and the planning for the implementation of the project. Finally, the students must present their project proposal and planning to their advisor, the second reader, other faculty members and their classmates.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Integrate and apply the knowledge acquired throughout their undergraduate studies in order to identify and formulate computer science related problems that can form the basis of a senior level design project.
- Perform literature searches and retrieve and analyze information.
- Propose and justify a methodology to be employed for the implementation of a Bachelor’s level Project.
- Demonstrate competency in the methodologies needed for a successful design project proposal, planning, and implementation.
- Employ written and oral communication skills, communicate effectively through a variety of media including oral, visual, written, diagrammatic and on-line.

#### Course Contents

To satisfy the requirements of the program, students must successfully complete a Senior Project. This is achieved through a two-semester course sequence (ACSC489 and ACSC490) that students must complete during their senior year (last two semesters of their studies). The project should be concerned with addressing a problem in the realm of computer science that requires a substantial body of work to be resolved. These projects can either be research focused, where the student will investigate an open question in the field and attempt to address it, or applied, where the student is expected to provide an applied solution.

With the Senior Project (ACSC490) course, students must implement the objectives specified in their project proposal in ACSC489 according to the specified planning. By the end of the course, the student must submit to the Department a project report that includes the project objectives and contributions, a literature review on the topic of their project, the methodology used and the results achieved. Finally, the students must present their project work to their advisor, the second reader, other faculty members and their classmates.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Integrate and apply the knowledge acquired throughout their undergraduate studies in order to solve computer science related problems that can form the basis of a senior level design project.
- Employ analytical, modelling and experimental methodologies for the implementation of a design project.
- Use appropriate software and hardware tools to support the implementation and evaluation of the project.
- Employ appropriate assessment criteria to validate and evaluate the outcome of a design project.
- Draw conclusions on the implementation of the project, and propose areas for improvements and future developments.
- Produced a structured written report on the work of a design project.
- Employ a variety of tools and media to present and orally defend the work of a Bachelor’s level design project.

#### Course Contents

**Impact of Technology**: Recognise the social and ethical impacts that computer technologies have.

**Process of Preparing a Speech**: Demonstrate the ability to speak coherently and organised in public both in presenting information and in interactive multi-agent discussions.

**Developing speech skills**: Delivering a good speech. Supporting ideas and organizing arguments. Dealing with audience questions. Construct efficient presentations using electronic means.

**Professionals Issues and Public Speaking**: Understand the social and professional issues in the social context of computing, professional and ethical responsibilities, intellectual property, social implications of the Internet, privacy and anonymity and computer crime.

**Intellectual Property and Rights**: Distinguish between the different aspects of socially sensitive issues and explain concepts such as intellectual property, implications of the Internet era, privacy and anonymity and computer crime.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Explain the components of the communication process, and relate those components and that process to public speaking.
- List, describe and demonstrate procedures for overcoming obstacles that can interfere with effective public communication.
- Demonstrate increased competency at narrative, expository, and persuasive speaking in front of an audience.
- Use research, outlines and media aids in the preparation and delivery of speeches.
- Understand the importance of effective speaking.
- Evaluate the professional codes of ethics from the ACM, the IEEE Computer Society, and other organizations.

#### Course Contents

**Preparing a Project**: The students should be able to prepare and present project proposals.

**Research skills**: Develop skills needed to acquire extract and synthesize information.

**Application Packages**: Use suitable software for word processing (Latex, Word), creating graphs, and managing projects.

**Evaluating Information**: Develop skills for finding information and information evaluation through the Internet, and the library and encourage the use of books, periodicals, and academic papers. To be able to evaluate information accumulated for validity.

**Synthesize Information**: Construct and synthesize and referencing and acknowledging information sources.

**Academic Writing**: Finally to write formal reports, writing styles, organization and structure of a project report.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Illustrate the ability to employ different information finding methods (Internet searching, library investigation, use of books and periodicals, etc) and correctly reference them in reports.
- Explain, evaluate and synthesize new information obtained from multiple sources in written form.
- Recognise the purpose and importance of the different sections of a report.
- Demonstrate the ability to write technical reports.
- Construct reports that are aesthetically coherent and pleasant by using appropriate language and software applications.

#### Course Contents

Linear and other Inequalities in one Variable. Absolute Values and their Properties.

Exponents, roots and their properties. The concept of the logarithm and its properties. Exponential and logarithmic equations.

Basic trigonometric functions and their graphs (sinx, cosx, tanx, cotx, secx, cscx) and basic identities of trigonometric functions including trigonometric functions of sums and differences of two angles.

Real valued functions of one variable: functions**, **operations of functions, inverse functions, logarithmic and exponential functions and their properties, parametric equations. Graphs of linear, quadratic, cubic, square root, exponential and logarithmic functions.

Limits and continuity: introduction to calculus, limits, and continuity.

Differentiation: The derivative as a function, the derivative as a rate of change and as the slope of a graph, techniques of differentiation, chain rule, derivatives of trigonometric, exponential, and logarithmic functions, higher derivatives, implicit differentiation, and differentials.

Applications of differentiation: related rates, increase, decrease, and concavity, relative extrema, first and second derivative tests, curve sketching, absolute minimum and maximum values of functions, applied maximum and minimum value problems.

Introduction to the concept of integration.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Explain the notion of a function of a real variable, define the absolute value function, state and use its properties and sketch the graph of linear, quadratic, and absolute value functions.
- Solve inequalities with absolute values, quadratic inequalities by factorizing and considering the two linear terms, rational inequalities and illustrate a geometric interpretation of the above inequalities by sketching the graph of the corresponding function.
- Define, sketch the graph, and describe the properties of the exponential function, the logarithmic function and the basic trigonometric functions.
- Explain the notion of limits and continuity of functions, identify and verify limits and points of discontinuity from a graph.
- Describe the derivative as a limit of finite differences, find the derivative of specific categories of functions, state and apply the general rules of differentiation to calculate derivatives, use the first and second derivative of a function to find its local extrema , points of inflection, and regions in which it is increasing, decreasing, concaving upwards or downwards.
- Apply the knowledge of derivatives in the field of engineering and in optimization problems.
- Explain in broad terms the concept of the integral of a function of a real variable.

#### Course Contents

**Definite and Indefinite integrals: **The notions of definite and indefinite integrals. Fundamental Theorem of Calculus.

**Applications of the Definite Integral:** Areas between two curves, volumes by the methods of slices and cylindrical shells, and areas of surfaces of revolution.

**Techniques of Integration:** Method of u-substitution, Integration by Parts, partial fraction decomposition. Trigonometric integrals, inverse trigonometric and hyperbolic functions: their derivatives and integrals, integrals of powers of sines, cosines, tangents and secants by using reduction formulae, trigonometric substitutions.

**Introduction to Partial Derivatives and Double Integrals.**

**Series:** Infinite series, Power Series, Taylor and MacLaurin Series, tests of convergence.

**Polar Coordinates:** Polar coordinates and conversion of Cartesian to Polar coordinates. Areas in polar coordinates.

**An introduction to complex numbers:** Geometric interpretation, Polar form, Exponential form, powers and roots.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Explain the notion of definite and indefinite integrals, state and use the Fundamental Theorem of Calculus.
- Solve simple definite and indefinite integrals of polynomials, functions involving rational powers of the variable, exponential, trigonometric, and rational functions.
- Solve more complicated integrals by using the methods of integration by parts, u-substitution, partial fraction decomposition, and trigonometric substitution.
- Explain the concept of functions of two variables, find partial derivatives,
- Explain the concept of infinite series, state Taylor’s and MacLaurin’s Theorems, and expand simple functions in such series.
- Explain the notion of complex numbers, evaluate simple expressions involving complex numbers, and express complex numbers in polar form.
- Apply definite integration in order to compute areas between curves, and volumes of solids of revolution by using the methods of slices and cylindrical shells.

#### Course Contents

**Vectors and Linear spaces.** Vector concept, operations with vectors, generalization to higher dimensions, Euclidean space, basis, orthogonal basis: linear dependence, Cartesian products, vector products, vector transformations, Gram-Schmidt orthogonalization, vector spaces and subspaces. Geometric examples.

**Matrices and Determinants.** Matrix concept, operations with matrices, Special matrices, definition of a determinant and its properties, determinant of a product, inverse matrix, properties and computation.

**Linear Transformations.** Definition of linear transformations, properties, elementary transformations, rank and determinants.

**Simultaneous Linear Equations.** Cramer’s rule, Gaussian elimination, Gauss-Jordan elimination, homogeneous linear equations, geometric interpretation.

**Quadratic forms and Eigenvalue Problem.** Quadratic forms, definitions, Normal form, eigenvalue problem, characteristic equation, eigenvalues and eigenvectors, singular value decomposition.

**MATLAB Applications.** Basic matrix algebra, the determinant of a matrix of n-order, solving simultaneous equations with n unknowns with a number of techniques, finding eigenvalues and eigenvectors. Elementary vector manipulation, finding linear dependence. Linear Transformations, plotting transforms on the x-y plane.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Explain the notion of a matrix, including its transpose, identify the properties of special types of matrices and perform different matrix operations.
- Generate determinants of any order using minors, compute 2x2, 3x3 determinants directly and find the inverse of a matrix by employing its determinant and the transpose of the matrix of cofactors.
- Use Cramer’s Rule for solving square linear systems with the aid of determinants, employ Gaussian Elimination for solving systems of linear equations, perform elementary row matrix reduction to echelon form and back substitution to obtain the solution of the system, apply Gaussian Elimination to find the inverse of a square matrix using augmentation, execute Gauss-Jordan elimination and implement a readily available inverse of the matrix of coefficients to solve a square linear system.
- Explain the notion of multiplicity of roots of the characteristic equation, employ these concepts to various applications and compute eigenvalues and corresponding eigenvectors of square matrices.
- Defend the notion of vectors in two, three and higher dimensions, perform operations with vectors including dot/Cartesian and vector products, outline the concept of an orthogonal basis of the Euclidean space as well as the geometric structure of linearly independent vectors, show vector linear transformations in concrete geometric examples and exploit the properties of vector spaces and subspaces.
- Define linear transformations, perform elementary transformations available, rank and determinants and apply these concepts to real-life examples identifying their geometric implications.
- Employ the computer programming language Matlab to solve different matrix operations and systems of linear equations, to compute eigenvalues and eigenvectors, to execute elementary vector manipulation, to exhibit linear transformations and to construct plots.

#### Course Contents

**Introduction to Parallel Processing:** Historic evolution of parallel processing. Motivation for parallel processing. Parallel processing applications case studies.

**Parallel Computer Models and Systems:** Classification of parallel computer architectures, SIMD and MIMD systems. Shared address space, message passing and data parallel processing. Networks of Workstations, clusters, SANs, MPP.

**Performance Metrics:** Workloads and benchmarks, execution time, throughput, speedup and efficiency. Latency tolerance techniques, load balancing and data locality issues.

**Interconnection Networks:** Communication performance, latency and bandwidth. Interconnection organization, links, switches and interconnection topologies. Switch design, routing and flow control. High speed LANs.

**Shared Memory Multiprocessors:** The cache coherence problem, snoop-based and directory based cache coherence. Memory consistency and replication. Synchronization mechanisms, mutual exclusion, event and global synchronization.

**Microarchitecture Parallelism****:**** **Levels of parallelism, DLP, ILP, TLP. The temperature and power wall problem, clock skewing and soft errors. Single-chip parallel processing architectures such as multithreaded processors, CMP and multi-core processors, and tile architectures. Networks-on-Chip, Heterogeneous architectures.

**Parallel Programming:** The parallelization process, decomposition, assignment, orchestration and load balancing. Message passing programming using MPI, basic instructions, point to point communication, collective communication and barrier Synchronization. Shared memory programming using OpenMP, parallel regions, worksharing, data environment, and synchronization.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Classify parallel architectures based on the Flynn’s classification and propose other parameters that are essential for the classification of modern parallel processing systems.
- Justify the need and describe the methodologies employed for synchronization and memory consistency and cache coherence in shared memory systems.
- Describe and compare the different types of interconnects employed in parallel processing systems.
- Outline and analyse the features of microarchitecture parallel systems such as superscalar, VLIW, vector, multithreading, CMP multi-core and tile processors.
- Describe how the performance of a parallel system can be measured, list possible sources for performance losses and propose ways to improve the performance of a system.
- Write efficient programs for message passing and shared memory parallel processing platforms using MPI and OpenMP.
- Outline the present developments in the field of parallel processing and show familiarity with the forefront of the relevant knowledge.

#### Course Contents

**Locomotion with legs and wheels: **Locomotion Concepts: Principles Found in Nature, Locomotion Concepts: Biped Walking, Walking and rolling, Characterization of locomotion concept, Mobile Robots with legs, Humanoid Robots, Mobile Robots with Wheels: Wheels Types, Characteristics of Wheeled Robots and Vehicles, examples.

**Mobile Robot Kinematics:** Kinematics Model, Representing Robot Position, Wheel Kinematic Constraints, Robot Kinematic Constraints, Mobile Robot Maneuverability, Five Basic Types of Three-Wheel Configurations, Mobile Robot Workspace: Degrees of Freedom, Motion Control (kinematic control)

**Perception: **Sensors: case studies, classification, performance, technology overview, Vision, Uncertainties, Fusion, Features: Edges, Histograms, Fingerprints, Lines, Planes

**Localization and Mapping: **Intro, odometry, map representations, Markov localization, Kalman filter and SLAM

**Path Planning and Navigation: **Configuration Space for a mobile robot, Road-Map Path Planning: Visibility Graph, Voronoi Diagram, Cell Decomposition, Path / Graph Search Strategies, Potential Field Path Planning, Obstacle Avoidance: Vector Field Histogram, The Bubble Band Concept, Basic Curvature Velocity Methods, Lane Curvature Velocity Methods, Dynamic Window Approach, The Schlegel Approach, ETH-ASL Approach, Localization: Position Estimation, Mapping: Environment Representation.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Understand the various type of mobile robot locomotion (Legs and Wheels).
- Understand the kinematics models and motion control of mobile robots.
- Introduction to sensors, sensing and perception, and uncertainty representation, feature extraction.
- Odometry, map representation, introduction to probabilistic map-based localization, Markov localization, Kalman filter localization, map building.
- Path planning techniques, obstacle avoidance, techniques of decomposition.
- Project development.

#### Course Contents

- Introduction to Wireless Computer Networks: Applications of wireless/mobile communications (vehicles, emergencies, business, replacement of wired networks, mobile and wireless devices). Short history of wireless communication

- Wireless Transmission: Frequencies for radio transmission – regulations. Signals. Antennas. Signal propagation (path loss, multi-path propagation, shadow fading). Multiplexing. Spread Spectrum. Cellular systems.

- Medium Access Control: SDMA, FDMA, TDMA (Fixed TDM, Classical Aloha, Slotted Aloha, Carrier sense multiple access, Demand assigned multiple access, Reservation TDMA, Multiple access with collision avoidance, Polling), CDMA.

- Telecommunications Systems: Principles of cellular networks. Cellular network organization. Operation of cellular systems. Mobile radio propagation effects. Handover. Power control. Traffic engineering. GSM (Mobile services, System architecture, Radio interface, Protocols, Handover). 2.5G GPRS (System architecture). UMTS (Releases and standardization, System architecture, Radio interface, Radio access network (UTRAN), Core network, Handover).

- Wireless LAN: Infrastructure and ad-hoc networks. IEEE 802.11 (System architecture, Protocol architecture, Physical layer, Medium access control layer, MAC management, Standards (802.11b, 802.11a, and newer developments)). Bluetooth (User scenarios, Architecture, Radio layer, Baseband layer, Link manager protocol, IEEE 802.15).

- Broadband Wireless Access Standards: IEEE 802.16 – WiMAX (System architecture, Protocol architecture, Services, MAC layer, Physical layer, IEEE 802.16a differences).

- Mobile Network Layer: Mobile IP (IP packet delivery, Agent discovery, Registration, Tunnelling and encapsulation, Optimizations, Reverse tunnelling).

- Mobile Transport Layer: Mobility on TCP congestion control mechanisms. Classical TCP improvements.

- Laboratory Work/Homework: Perform comparisons and evaluate performance of various issues in wireless/mobile networks through supervised and/or unsupervised laboratory exercises/homework, using computer simulations and/or packet analysis software (The familiarization of computer network simulators and/or packet analysis software has been gained through the ACOE313 course).

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Present the recent revolutions in wireless, mobile and cellular networks, and distinguish the benefits and trade-offs of using the various available technologies.
- Describe basic techniques for medium access control and discriminate/compare them.
- Discuss the organization of cellular systems and details of their implementation.
- Identify and explain the advantages and disadvantages related to Wireless LANs.
- Analyse today’s Internet lack of mechanisms to support users travelling around the world, and describe protocols and mechanisms developed for the network layer to support mobility.
- Justify the research activities in improving TCP, operating in a wireless/mobile environment, in terms of performance, congestion control and efficient retransmissions.

#### Course Contents

**Introduction to Security:** Security properties. Security Attacks. Security Services. Security Mechanisms. Security policies and models (Bella-badula, Clinical information model, ORCON, Chinese wall model, RBAC).

**Cryptography:** Symmetric Encryption and Message Confidentiality (Symmetric encryption principles and algorithms, Cipher block modes of operation, Location of encryption devices, Key distribution). Public-Key Cryptography and Message Authentication (Approaches to message authentication, Secure hash functions and HMAC, Public-key cryptography principles and algorithms, Digital signatures, Key management).

**Networks Security Applications:** Authentication Applications (Kerberos, X.509 directory authentication service, Public Key Infrastructure). Electronic Mail Security (PGP, S/MIME). IP Security (IP Security architecture, Authentication header, Encapsulating security payload, Combining security associations, Key management). Web Security (Secure Socket Layer (SSL) and Transport Layer Security (TLS), Secure Electronic Transaction (SET)). Network Management Security (SNMP Community Facility, SNMPv3).

**System Security:** Intruders (Intrusion Detection, Password Management). Malicious software (Viruses and Related Threats, Virus Countermeasures, Distributed Denial of Service Attacks). Firewalls (Firewall design Principles, Trusted systems). Operating Systems Security (UNIX Security, Windows Security).

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Outline the underlying principles of system and network security.
- Recognize the concepts and issues involved in networks security applications.
- Examine the cryptographic algorithms and protocols underlying network security applications.
- Explain the operation of various security models and their application scenarios within an organization.
- Identify system-level security issues, and illustrate the principles of intrusion detection and firewalls, and describe their characteristics.

#### Course Contents

**Introduction to Digital Image Processing:** Define and understand the several types of images. Understand concepts of Imaging geometry, Imaging Devices, Image acquisition and Image Representation

**Binary Image Processing:** Understand binary Image and their creation. Logical Operations on images. Apply algorithms for Blob Coloring, Binary Morphology, Binary Image Compression.

**Image Histogram and Point Operations:** Understand what the histogram of an Image represents. How can we apply Linear Point operations, Nonlinear point operations, Histogram Shaping and Matching, Algebraic Image Operations, Geometric Image Operations.

**Non Linear Gray Scale Image Filtering:** Understand concepts of Non-Linear Gray Scale Image filtering and apply filters like median. Understand image noise and modelling.

**Discrete Fourier Transform:**0 Sinusoidal Image, Discrete Fourier Transform, Meaning of Image Frequencies, Sampling Theorem

**Laboratory Work:** Read gray scale images, present histogram, find the optimum threshold to transform into binary, Transform gray scale to binary, count blobs, present blobs of images, Binary functions on images, OR, NOT, AND, XOR. Apply morphological filters on images, Use morphological filters on binary images, so as to change the shape. Find the average optical density of a gray level image, apply histogram shifting and scaling. Gray level images, contrast stretch and flattening. Gray level images, histogram fitting, image filtering. Fourier transform, application on images and results verification.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Be able to identify the components of an image processing system.
- Be able to work on digital images having binary, grayscale and RGB format.
- Employ techniques for image enhancement, restoration, coding and compression.
- Understand image frequencies and transformations
- Write programs in Matlab or a high level language to implement image processing algorithms.

#### Course Contents

Introduction to information systems

Explain the new role of information systems in organizations

Key information systems in organizations

Define key information systems in organizations according to:

Functional areas

Management levels

Clarify key challenges to information systems

Enterprise Applications

Explain the key characteristics of Enterprise Applications

ERP; SCM, CRM systems)

Identify new opportunities and challenges

**Data Management & Business Intelligence**

Discuss

Data management

Business Intelligence

**Building Information Systems**

Discuss

Business process reengineering

IT development

IT Implementation

**Process Improvement Exercise**

Identify and analyse the information requirements for a new student registration system

Design new processes

**Managing IT projects**

Explain key steps in information systems project management

**E-commerce & m-commerce**

Discuss the key principles of

E-commerce

M-commerce

**The Business of New Online Social Media**

Discuss

What are online social media?

How do businesses utilize online social media to their benefit?

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Explain the role of different types of information systems for different business settings
- Clarify the relationship between organizations, information systems, and business processes
- Analyze existing business processes and design new ones using business process reengineering principles.
- Identify project risks and utilize ways of managing those through project management principles
- Distinguish the key principles of e-commerce & m-commerce
- Indicate the business aspects of new social media (e.g. facebook)

#### Course Contents

**Sampling and sampling distributions: **The various kinds of sampling techniques (simple, stratified, clustering). Sampling from finite and infinite population. Sampling distribution of the mean.

**Interval estimation: **Recall of the normal distribution. Point estimation of the population mean. Interval estimation of the population mean for large sample with s known and s unknown. The t-distribution and the table of t-distribution. Interval estimations of the population mean for small sample with s known or s unknown. Interval estimation of the population proportion. Determining the sample size for estimating mean or proportion.

**Hypothesis testing: **Hypothesis testing. Null and alternative hypothesis. Significant level. Types or errors (type I and II).

**Tests of goodness of fit and independence: **Chi-square distribution and its table. Chi square goodness of fit test. Contingency tables and the chi square test of association. “Statistical significance”.

**Correlation: **Independent and dependent variables. Pearson’s coefficient and the values of it

**Simple linear regression: **Independent and dependent variable. Scatter diagram. Coefficients (b0 and b1) of the simple linear regression model. Regression, using data from the business environment. Forecasting.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Understand and implement the sampling distribution of the mean. Use the t-distribution and read the table of t-distribution
- Understand, calculate and interpret interval estimation of the population mean for either small or large sample with σ known or unknown
- Determine interval estimation of the population proportion and determining the sample size
- Understand the concept of hypothesis testing and be in a position to state the null and alternative hypothesis. Also understand the meaning of the significant level and recognise the two types or errors (type I and II).
- Distinguish the difference between independent and dependent variable and construct the scatter diagram. Calculate and interpret the Pearson’s coefficient, and, estimate and interpret the coefficients (b0 and b1) of the simple linear regression model. Apply regression, using data from the business environment and do forecasting.
- Recognize the chi-square distribution and make use of its table.
- Implement the two chi square tests, goodness of fit test and test of independence, with real data and interpret the results. Explain the meaning of the “statistical significance”.

#### Course Contents

**Introduction to Logic Programming:** The declarative programming paradigm; The Prolog programming language and what it is used for.

**Basics of Prolog Programming:** Terms, clauses, predicates, facts, rules and queries; The logical meaning of a Prolog program; Recursion and defining recursive rules.

**Syntax and Meaning of Prolog Programs:** Atoms, variables and structures; Matching; The declarative and the procedural meaning of Prolog programs; Prolog execution and search trees; Backtracking in Prolog.

**Arithmetic and Lists:** Arithmetic operators; Various kinds of equality and comparison operators; Representation of lists; Defining operations on lists; Sorting lists.

**Using Structured Data:** Creating a simple database; Retrieving structured information from a database; Data abstraction; Solving logic puzzles with Prolog.

**Input and Output:** Getting input from the keyboard; Writing output to the screen; File input and output; The repeat predicate.

**Controlling Backtracking: **Preventing backtracking; Using cut; Green and red cuts; Negative information; Negation as failure; The closed world assumption; Problems with cut and not.

**System Predicates:** Testing the type of terms; Constructing and decomposing terms; Assert and retract; Control facilities; The bagof, setof and findall predicates.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Describe the differences between the declarative and procedural programming paradigms, discuss the potential applications of the Prolog programming language and identify its strengths and weaknesses.
- Define and interpret the syntax and semantics of Prolog’s core concepts, develop basic Prolog programs and queries, and devise and employ compound terms to represent complex information.
- Recognise, analyse, explain, develop and illustrate the execution of, recursive predicates and predicates that manipulate lists, arithmetic and structures.
- Employ Prolog’s built-in predicates for obtaining input from the keyboard or a file and for producing output to the screen or a file, explain the outcome that backtracking has for predicates with side effects and use the repeat predicate to achieve repeated execution of input/output predicates.
- Employ Prolog’s built-in predicates for testing the type of terms, constructing and decomposing terms, adding and deleting clauses to/from a program, and collecting all the objects that satisfy some goal into a list (bagof, setof, findall).
- Demonstrate backtracking, employ Prolog’s control facilities (cut and not), identify green and red cuts and explain their difference, illustrate the execution of predicates that contain cuts and analyse the issues associated with negation in goals.
- Develop and illustrate the execution of a non-trivial Prolog program.

#### Course Contents

**Introduction to Compiling:** What is a compiler? Language processors. High level overview of the structure of a typical compiler (the analysis-synthesis model of compilation, Phases of a compiler: Lexical analysis, Syntax analysis, Semantic analysis, Intermediate code generation, Code optimization, Code generation, Symbol-table management, The grouping of phases into passes, Compiler-construction tools). The evolution of programming languages. The science of building a compiler. Applications of compiler technology.

**Lexical Analysis:** The role of the lexical analyzer. Lexical analysis versus parsing. Tokens, patterns, and lexemes. Attributes for tokens. Lexical errors. Input buffering. Alphabet, Languages, and Strings definitions. Operations on languages (union, concatenation, kleene closure, positive closure). Regular expressions. Regular definitions. Transition diagrams. Finite automata (NFA, DFA). From regular expressions to automata. The lexical-analyzer generator tool Lex.

**Syntax Analysis:** The role of the parser. Syntax error handling. Error-recovery strategies. Context-free grammars (Definition of terminals, nonterminals, start symbol, and productions. Notational Conventions, Derivations, Parse trees. Ambiguity. Verifying the language generated by a grammar. Context-free grammars versus regular expressions). Writing a grammar (Eliminating ambiguity. Elimination of left recursion. Left factoring). Top-down parsing (Recursive-descent parsing. FIRST and FOLLOW. LL(1) grammars. Nonrecursive predictive parsing. Error recovery in predictive parsing). Bottom-up parsing (Reductions. Handle pruning. Shift-reduce parsing. Conflicts during shift-reduce parsing). LR(k) parsers (Items and the LR(0) automaton. The LR-parsing algorithm. Constructing SLR-parsing tables. Viable prefixes). The canonical-LR and LALR parsers. Constructing LALR parsing tables. Using ambiguous grammars (precedence and associatively to resolve conflicts. The “Dangling-Else” ambiguity. Error recovery in LR parsing). Parser Generator tool yacc.

**Syntax-Directed Translation:** Syntax-directed definition (SDD). Inherited and synthesized attributes. Dependency graphs. “S-attributed” and “L-attributed” classes of SDD’s. Applications of syntax-directed translation (Construction of syntax trees. The structure of a Type). Syntax-directed translation (SDT) schemes (Postfix translation schemes, parser-stack implementation of postfix SDT’s, SDT’s with actions inside productions, eliminating left recursion from SDT’s, SDT’s for L-attributed definitions), Implementing L-attributed SDD’s.

**Type Checking:** Rules for type checking. Static and dynamic checking of types. Flow-of-control checks. Uniqueness checks. Name-related checks. Type expressions. Error recovery. Type conversions. Overloading of functions and operators.

**Intermediate-Code Generation:** Intermediate languages. Variants of syntax trees (Directed acyclic graphs). Three-Address code. Types of three-address statements. Syntax-directed translation into three-address code. Implementation of three-address statements. Declarations. Control -flow translation of Boolean expressions. Short-circuit code. Backpatching. Intermediate code for procedures.

**Code Generation:** Issues in the design of a code generator. The target language. Addresses in the target code. Basic blocks and flow graphs. A simple code generator. Register allocation and assignment. Peephole optimization.

**Code Optimization:** Criteria for code-improving transformations. Causes of redundancy. Global common subexpressions. Copy propagation. Dead-code elimination. Code motion. Induction variables and reduction in strength.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Discuss the trends in programming languages and machine architecture that are shaping compilers.
- Recall the relationship between compiler design and computer-science theory.
- Examine the basic principles and techniques that form the construction of compiler.
- Identify the difficulties in developing modern compilers, and describe the techniques used to support such features.
- Appraise the theory and practice of compiler design.
- Design, construct, implement, and test/verify a compiler for a simple programming language

#### Course Contents

#### Learning Outcomes of the course unit

#### Course Contents

- Basics

An Overview of Multimedia, definition

Media types and characteristics (images, audio, animation, video etc)

Application areas – storage – DVD, MM databases, transmission (conferencing, streaming etc)

Multimedia Authoring

Case Studies

Basic Programming in Director

- Hypermedia

Principles of User Interface (including GUIs)

User Interface & Screen Design

Navigation Techniques

Storyboarding & Story Development

- Audio & Video Processing

Digital audio representation and processing

Fundamentals of digital video

Java 3D API

- Synchronization

Synchronizing multiple media streams

Responding to media events

Multithreaded programming

- Compression

Lossless compression algorithms

Huffman coding

Arithmetic coding

LZW algorithm

Loose compression algorithms

- Multimedia storage, communication, standards

Multimedia storage devices

RAID, CD, DVD etc

Network multimedia

Multimedia databases

MP3, JPEG, MPEG4, MPEG7, MPEG21

- Applications

Visualizing Quantitative Information

Form vs. Function

Appropriate Applications of Multimedia – When should a book be a book?

Accommodating Multiple Views

- Media

Basic Electronic Imaging

Image File Formats

Importing/Exporting between Programs

Scanning for Screen & Printer

Traditional & Computer Animation

Sound Processing, Representation of Sound Waves

Recording, Mixing and Editing

The Movie Image: Digitizing Video

Video Editing & Production

- Design Issues

History & Impact of Typography

Page Layout Techniques

Basic Design Principles

Colour Theory Principles

- Publishing for the Future

The WWW as a Culture

Designing for the Web

The HTML Language & its Future

- Related Issues

A Philosophical Perspective of multimedia

The Impact of Technology on Learning

The Presentation of Information

The Impact of Technology on Art

Copyright, Ethics & Society

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Develop a broad foundation in issues related to multimedia/ hypermedia. Identify its original as well as its most recent form.
- Widen a broad foundation in the different emerging applications of multimedia as well as hypermedia.
- Enhance knowledge on issues related to HCI, optimisation, digital representation and editing media.
- Distinguish and make clear the connections between Multimedia, VR, Simulation and/or Animation.
- Understand the importance of media compression in Multimedia environments. Differentiate between Audio and Video Compression as well as lossless and lossy compression.
- Understand the importance of media transmission in Multimedia environments.
- Develop small multimedia applications in computer labs that simulate the different application areas covered in (2) above.

#### Course Contents

- Introduction to Neural Networks: Biological motivation; Classification and regression problems; Characteristics of Neural Networks; General structure of neurons.

- Perceptrons: Computations of a perceptron; Representational interpretation and limitation; perceptron learning algorithm; Gradient descent; Delta learning algorithm.

- Multilayer Neural Networks: Characteristics; The log-sigmoid, tan-sigmoid and softmax activation functions; The backpropagation training algorithm; Representational power; Issues: local minima and overfitting; Momentum term.

- Self-Organizing Maps: Unsupervised learning; Competitive learning; Structure of SOM networks; Kohonen’s learning algorithm; Adding bias to learning.

- Genetic Algorithms: Biological motivation; Search spaces; General structure of a genetic algorithm; Chromosome representation; Fitness function; Selection methods; Genetic operators; Convergence and diversity.

- Applications of Genetic Algorithms: Combinatorial optimization with GAs; Solving pattern recognition problems with GAs; Hypothesis chromosome representation; Evolving neural network weights.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Define and explain the theoretical foundations of Neural Networks and Genetic Algorithms.
- Evaluate the strengths and weaknesses of Neural Networks and Genetic Algorithms and recognize the situations where each technique can be applied successfully.
- Point out, explain and propose ways of dealing with the issues involved in the application of Neural Network and Genetic Algorithm techniques.
- Compare and evaluate different types of Neural Networks and Genetic Algorithms and identify the most appropriate one for a given problem.
- Design, implement and apply a suitable Neural Network or Genetic Algorithm for solving a particular problem and evaluate and report the results appropriately.

#### Course Contents

**Decision Support Systems:** What are decision support systems. Ingredients of a DSS. Data and model management. DSS knowledge base. The concept of knowledge. User interfaces. The DSS user. Categories and classes of DSS systems.

**Decisions:** What are decisions. Why are decisions so hard. How can DSS help in making decisions. Rational decision-making. Bounded rationality. The process of choice. Cognitive processes. Biases and heuristics in decision-making. Effectiveness and efficiency.

**Modelling Decision Processes:** Defining the problem and its structure. Decision Models. Types of probability. Techniques for forecasting probabilities. Calibration and sensitivity.

**Data Warehouses:** Data warehousing concepts. Data warehousing benefits and problems. Stores, warehouses, and marts. The data warehouse architecture. Tools and technologies. The metadata. Data warehouse design. Design methodology. Criteria for assessing dimensionality. Analysis and design tools. Data warehouse implementation.

**Data Mining:** What is data mining. Online analytical processing and its purpose. Key features of OLAP applications. Multidimensional OLAP. Relational OLAP. Data mining techniques, technologies and applications. Market basket analysis. Limitations and challenges to data mining. The relationship between data mining and data warehousing.

**Data Visualisation:** What is data visualisation. Human visual perception and data visualisation. Geographical information systems. Data visualisation applications. Data visualisation technologies.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Describe the generic structure of decision support systems, identify their categories and classes and discuss the behavioural and normative theories of decision making.
- Recognize the value of decision support systems to individuals and organisations and report current practices in the use of decision support systems.
- Explain decision analytic techniques and apply these techniques in solving simple decision problems.
- Define and analyse the concepts and structure of expert systems and data warehouses, and propose ways of dealing with the issues involved in their design and development.
- Identify, appraise and discuss the main concepts, techniques, technologies and applications of data mining and data visualisation.
- Design and evaluate a decision support system for supporting a given decision-making process, by analysing and comparing the suitability of the available technologies.

#### Course Contents

- **Introduction on Wireless and Mobile Networks:** Satellite Networks, Wireless PAN, LAN, WANs, Cellular Networks, Signal Propagation, Multiplexing, Wireless Sensor Networks, Ad-Hoc Networks, Mobile Ad-hoc Networks, Vehicular Ad-hoc Networks, RFID, NFC.

- **Distributed Computing:** Centralized,client/server architecture, distributed systems, strengths and weaknesses, message passing, distributed objects, remote procedure calls (RPC), Middlewares, Java Remote Method Invocation (Java RMI), CORBA.

- **Mobile Computing:** Motivation,Challenges, Models, Databases and Mobile Computing, Mobile Agents, Data Management, Disconnections, Weak Connectivity, Mobility, Failure Recovery.

- **Pervasive and Ubiquitous Computing:** Vision, Motivation, Challenges, Sensing in Ubiquitous computing,UbiComp Systems, Applications

- **Next-generation Mobile Systems:** Smartphones and Tablets.

- **Context-aware computing:** Context-Awareness,Context, Challenges, Handling multiple contexts, Applications,Location-awareness, Localization

- **Smartphones:** History and evolution, Operating Systems, Technologies, Tools and Platforms, Market places and stores, Market-share and Monetization

- **Laboratory:** Introduction on Smartphones OSs (Windows Phone, Android, iOS, Blackberry), Development on Windows Phone 7 & 8, Application Fundamentals, User Interface, Working with Controllers, Working with Resources, Working with Sensors, Using Maps, Using Services, Localization.

- **Industrial Lectures and Workshops**

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- By the end of the course, the students should be able to:
- Understand the major concepts and components of wireless and mobile networks
- Describe and discuss the next generation mobile systems (e.g., smartphones, tablets) and their application areas.
- Introduce the principles of distributed computing, mobile computing and their applications
- Describe and discuss the emerging topics (vision, motivation, challenges) of pervasive and ubiquitous computing as well as context-aware computing and their applications
- Explain and show the ability to implement concepts related to the design and utilization of smart (mobile) systems.
- Demonstrate basic knowledge in developing smartphone applications using various platforms, toolkits, APIs and third-party libraries.

#### Course Contents

**Introduction to networks:** Overview of Network Programming. The OSI and TCP/IP reference models. Data Link and Application Layers Protocols. Sockets. Ports. Streams.

**TCP/IP:** Understand TCP/IP naming, addressing etc. Use sockets TCP and UDP programming models (client server)

**Web protocols, mail, naming, network monitoring:** Understand the main web server protocol HTTP and communicate with a web server. Send Mail Transfer Protocol (SMTP). POP3 protocol. FTP protocol. DNS and commands for monitoring a network

**Secure a network and setup a network:** Firewalls. Proxy servers. Routers

**Next generation of Internet and IPv6:** An introduction to IPv6 and the next generation of internet

**Laboratory Work: **

Windows and .NET environment

Programming in .NET using C#

Understanding network programming

Using SDKs etc.

Working with sockets

Create TCP/IP client server program

Working with sockets

Create UDP client server program

HTTP protocol and communicating with web servers

SMTP and POP3 protocols, communicating with email servers

FTP communicating with file servers

Network security, building a network, firewalls, proxy server’s routers

Ping, DNS, network monitoring, packets analysis

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

#### Course Contents

**Introduction to Operations Research**

What is Operations Research. Scope, applications and impact

Role of Optimization in OR

Data acquisition and model development

**Linear Programming systems. The Simplex Method **

Structure of a Linear Program.

Solving a simple LP visually

The Simplex method. Solving a linear program

Main characteristics of the Simplex method

Modelling problems as LP

Use spreadsheet software to practically solve LP systems.

Overview of large scale solvers

**Practical Sensitivity Analysis **

Overview of the dual model

Reduced costs and shadow prices

**Limitations of LP and extensions. **

Integer variables. MIP programming techniques. Advanced models

Limitations of MILP programs. Overview of branch and bound approach

Other extensions: Stochastic Programming, Nonlinear Programming

**Dynamic Programming. **

The dynamic programming approach and applications

**Non MP optimization. **

Ill defined and complex problems.

Near optimality. Heuristic and metaheuristics (SA, GA, VNS)

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Outline the scope of Operations Research, the impact it has, and the core underlying technologies it involves
- Formulate optimization problems in Mathematical Programming (linear and integer)
- Apply the Simplex method to solve small LP formulations
- Use spreadsheet software packages to solve small to medium size MP problems and perform sensitivity analysis.
- Discuss the limitations of MP models and its application in real world settings
- List and briefly describe alternative (non mathematical programming) approaches to optimization

#### Course Contents

**Introduction: **Basic notions of learning; Unsupervised, semi-supervised and supervised learning; Goals and applications of machine learning; Aspects of developing a learning system: training data, concept representation, function approximation.** **

**Concept Learning: **The concept learning task; Concept learning as search through a hypothesis space; General-to-specific ordering of hypotheses; Finding maximally specific hypotheses; Version spaces and the candidate elimination algorithm; Inductive bias and its importance.

**Decision Tree Learning: **Decision tree representation; The ID3 algorithm; Picking the best splitting attribute: entropy and information gain; Searching for simple trees and computational complexity; Occams razor; Overfitting, noisy data, and pruning; Continuous attributes and missing values.

**Artificial Neural Networks: **Neurons and biological motivation; Neural network representation; Perceptrons: representational limitation and gradient descent training; Multilayer networks; The backpropagation learning algorithm; Early stopping.

**Instance-Based Learning: **Induction versus transduction; The k-nearest neighbour algorithm; Locally weighted regression; Radial basis functions; Case-based reasoning.

**Bayesian Learning: **Basic concepts of probability theory; Bayes Theorem and MAP concept learning; Minimum description length principle; Bayes optimal classifier; Naive Bayes learning algorithm.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Define and explain the fundamental concepts and terminology of machine learning and of its main areas.
- Analyse and discuss a range of machine learning techniques and their theoretical background and recognize the situations where they could be applied successfully.
- Examine, explain and propose ways of dealing with the issues involved in the use of machine learning methods.
- Evaluate the strengths and limitations of learning procedures and identify the most appropriate learning algorithm for a given problem.
- Apply machine learning methods to particular target problems and evaluate and report the results appropriately.

#### Course Contents

**First Order Ordinary Differential Equations:** Basic concepts and classification of differential equations. Separable, linear with integrating factor, exact, and homogeneous ordinary differential equations, Applications of First-Order Differential Equations.

**Second and nth-Order Ordinary Differential Equations:** Linear homogeneous with constant coefficients, nth-order linear homogeneous with constant coefficients. The method of reduction of order, the method of undetermined coefficients, and the method of variation of parameters. Initial value problems and applications of second order linear ordinary differential equations.

**Series of Solutions: **Definition and properties, convergence, and solution of linear differential equations with constant and non constant coefficients.

**Laplace Transform:** Definition and properties, partial fractions, Laplace transform and inverse Laplace transform. Solution of linear differential equations with constant coefficients.

**Partial Differential Equations:** Basic concepts and classification. Introduction to separation of variables.

**Applied Engineering Problems using MATLAB: **Calculation of solutions with readily available codes and analysis of results.

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Define and explain the concept of an ordinary differential equation, employ the appropriate method to solve Separable, Linear, Homogeneous, and Exact first-order differential.
- Define the concept of second order linear ordinary differential equations, describe the general method of their solution, and calculate the general solution of second-order homogeneous differential equations with constants coefficients.
- Describe the method of Reduction of Order in the solution of second order homogeneous differential equations, and employ the method to obtain the second linearly independent solution.
- Describe the Methods of Undetermined Coefficients, and Variation of Parameters, use these methods to find the general solution of second-order non-homogeneous differential equations, and compare the two methods identifying their advantages and disadvantages.
- Explain the concept of Power Series expansions as solutions of linear differential equations, employ the method to obtain solutions of non-homogeneous differential equations that arise in applied engineering problems, and compare the method with the methods of undetermined coefficients and variation of parameters.
- Identify the importance of the method of Laplace transform in the solution of differential equations, employ the method to obtain solutions of important differential equations, and compare the results with the ones given by previous methods wherever this is possible.
- Define partial differential equations, and apply the method of Separation of Variables on partial differential equations to deduce a system of ordinary differential equations.
- Use readily available Matlab codes to calculate solutions of differential equations that arise in Applied Engineering Problems, and compare the results with the analytic solutions obtained with the techniques learned in the course.

#### Course Contents

·**Part 1: Project Management Overview:**

o Meaning and scope of projects and project management

o Key roles and responsibilities: The project manager, the Sponsor and the User

o Forms of contracts and project structure

o Alternative project organizations

·**Part 2: Project planning and scheduling **

o Sponsor’s & Project’s Requirements Definition

o Work Breakdown Structures (WBS)

o Gantt charts and project network logic diagrams

o Critical Path Method (CPM)

o Project time-cost trade-offs

o Project planning under uncertainty and risk analysis

o Resource allocation and scheduling

#### Learning Outcomes of the course unit

By the end of the course, the students should be able to:

- Provide students with a sound understanding and knowledge of the basic concepts and analytical skills underpinning the effective management of projects in any industry sector.
- Write a sponsor and project requirements definition.
- Construct a comprehensive project schedule.
- Evaluate a project plan subject to time, cost and resource constraints.

Για ενημέρωση σχετικά με τη διαδικασία εγγραφής στα προπτυχιακά προγράμματα κάντε κλικ στον παρακάτω σύνδεσμο.

Για οποιαδήποτε απορία σας σχετικά με τα προπτυχιακά προγράμματα επικοινωνήστε μαζί μας μέσω της φόρμας που θα βρείτε στο παρακάτω σύνδεσμο.