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

**Σκοπός**

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

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

**Εργαστήρια**

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

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

Οι φοιτητές του Προγράμματος, μέσω της Διπλωματικής Εργασίας τους και των εξειδικευμένων μαθημάτων, έχουν τη δυνατότητα πρόσβασης στις υποδομές των ερευνητικών εργαστηρίων του Τμήματος, όπως είναι το εργαστήριο Υπολογιστικών Συστημάτων Υψηλής Επίδοσης και Ενσωματωμένων Συστημάτων (High Performance Computing and Embedded Systems), το εργαστήριο Δικτύων και Κινητών Συσκευών (Computer Networks and Mobile Devices), το εργαστήριο Ρομποτικής, και το εργαστήριο Ηλεκτρονικής Υγείας και Ιατρικής Πληροφορικής (eHealth and Medical Informat ics).

**Πρακτική Άσκηση**

Στα πλαίσια του μαθήματος “Πρακτική Άσκηση Μηχανικών Η/Υ” οι φοιτητές, στο 6ο εξάμηνο των σπουδών τους, παρακολουθούν εργαστηριακά σεμινάρια που σχετίζονται με την ανάπτυξη, διαχείριση και συντήρηση του υλικού, του λογισμικού και των δικτύων Η/Υ. Οι φοιτητές ακολούθως εργάζονται, συνήθως κατά την καλοκαιρινή περίοδο, για τέσσερις εβδομάδες (160 ώρες) στη βιομηχανία, σε τομείς σχετικούς με το επάγγελμα του μηχανικού Η/Υ.

Οι απόφοιτοι του Προγράμματος θα έχουν:

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

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

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

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

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

Μαθήματα Τεχνικής Επιλογής | 31 |

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

ΣΥΝΟΛΟ |
240 |

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

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

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

1 | ACOE101 | Εισαγωγή στην Επιστήμη της Μηχανικής Η/Υ | 6 | 3 + 1 |

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

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

4 | ACOE243 | Διασύνδεση Υπολογιστών | 5 | 3 + 1 |

5 | ACOE255 | Μικροεπεξεργαστές | 6 | 3 + 2 |

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

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

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

9 | ACOE343 | Ενσωματωμένα Συστήματα Πραγματικού Χρόνου | 6 | 3 + 1 |

10 | ACOE347 | Συλλογή Δεδομένων και Συστήματα Αυτοματισμών | 5 | 2 + 2 |

11 | ACOE361 | Σχεδιασμός Ψηφιακών Συστημάτων | 6 | 3 + 1 |

12 | ACOE399 | Πρακτική Άσκηση Μηχανικών Η/Υ | 5 | 0 + 2 |

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

14 | ACOE419 | Σχεδιασμός VLSI | 5 | 3 |

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

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

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

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

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

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

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

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

23 | ACSC359 | Τεχνολογία και Ανάπτυξη Λογισμικού | 5 | 3 |

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

25 | AELE210 | Σήματα, Συστήματα και Μετασχηματισμοί | 5 | 3 |

26 | AELE221 | Ανάλυση Κυκλωμάτων | 6 | 3 + 2 |

27 | AELE237 | Ηλεκτρονικά Ι | 6 | 3 + 2 |

28 | AELE337 | Ηλεκτρονικά ΙΙ | 6 | 3 + 2 |

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

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

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

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

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

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

35 | AMAT300 | Πιθανότητες και Στατιστική | 5 | 3 |

36 | APHY111 | Μηχανική, Θερμότητα και Κύματα με Εργαστήριο | 5 | 3 + 2 |

37 | APHY112 | Ηλεκτρομαγνητισμός και Οπτική με Εργαστήριο | 5 | 3 + 2 |

**Μαθήματα Τεχνικής Επιλογής**

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

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

1 | ACOE412 | Ψηφιακές Επικοινωνίες | 5 | 3 |

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

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

4 | ACOE423 | Δίκτυα Διασύνδεσης | 5 | 3 |

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

6 | ACOE433 | Προχωρημένα Ενσωματωμένα Συστήματα | 5 | 3 + 1 |

7 | ACOE452 | Νευρωνικά Δίκτυα | 5 | 3 |

8 | ACOE455 | Αρχιτεκτονική Επεξεργαστών Υψηλής Απόδοσης | 5 | 3 |

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#### Course Contents

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

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

**Introduction to computer programming:** fundamental programming constructs, implementation of simple algorithms in pseudo code, structural and object oriented programming.

**The Computer Engineering Course:** Overview of the directions of the computer engineering course: artificial intelligence, digital signal and image processing, digital systems and VLSI design, parallel processing, and networking.

**Laboratory Work:** Individual or small group experiments performed with the use of breadboards to build and test analogue and digital circuits.

#### Learning Outcomes of the course unit

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

- Outline the historic evolution of computing and relate the computer engineering discipline with other related disciplines such as computer science, information systems and electrical engineering.
- Describe the function of the basic hardware elements (digital circuits, CPU, memory Input/Output and peripheral devices) and software elements (programming languages, compilers/interpreters, operating system, algorithms, and application software) of a computer system.
- Give an overview of the directions of the computer engineering discipline: digital systems, computer architecture, data communications and networks, digital signal and image processing, and VLSI design, parallel processing, and artificial intelligence.
- Trace a simple computer program and implement simple algorithms in pseudo code and a high-level language.
- Use circuit theorems such as Ohms law, Kirchhoff’s law, Thevenis theorem and Norton’s theorem to analyse simple resistive, capacitive and inductive circuits.
- Outline the main functions of an operating system and show expertise in working with the Unix/Linux operating system.
- Work with laboratory equipment to build and test simple analogue and digital circuits on breadboard.

#### 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

**Computer Interfacing:** Switching electronics and common TTL devices. Microprocessor bus interfacing, interfacing standards (ISA, PCI) as well as interfacing through the parallel port (LPT) and serial ports (COM, USB and SPI). Digital-to-analog and analog-to-digital converters. Programmed controlled, interrupt, and DMA modes of data transfer.

**Laboratory Work: **Individual or small group experiments performed with the use of special hardware attached on the computer's ports. Experiments include serial and parallel data transfer, interfacing with 2-state devices, interfacing with analog-to-digital and digital-to-analog converters.

**Project Work:**** **Students are expected to built and test a board to be interfaced on a computer through a standard port such as the LPT or the USB port, and develop the necessary software that will enable the use of a computer as the control unit of a process. Typical applications to be developed include home and industrial automation systems.

#### Learning Outcomes of the course unit

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

- Describe the operation of transistors circuits that implant the function of the basic logic gates, and distinguish between the types of outputs in logic gates (open collector, totem pole, and three-state).
- Outline the characteristics of the standard ports and slots of a personal computer such as the COM, LPT, USB and PCI and select the most suitable port for a given application.
- Design hardware to be interfaced on the standard ports and slots of a personal computer such as COM, LPT, USB and PCI.
- Describe the basic characteristics of common Input/Output devices, and how these devices can be interfaced with a computer.
- Develop programs to control the operation of I/O devices such as displays, motors and analogue data converters.
- Built and test the operation of typical circuits interfaced on the standard ports of a computer.

#### Course Contents

**Introduction to microprocessors:** Overview of microprocessor technologies.

**Introduction to the x86 family: **Pin and signal descriptions, loading and timing of the 80x86 microprocessors. Bus drivers, clock and reset circuits.

**x86 Assembly Language:** 80X86 programming model, segmentation and memory models. Data representation and correlation with high-level language data structures. Instruction types and addressing modes. Assembly language implementation of control structures such as IF-THEN, CASE, FOR-LOOP, WHILE and REPEAT-UNTIL. The stack, and the call and return mechanism. Parameter passing using registers, memory, pointers and stack.

**Memory interfacing, and synchronization:** Interfacing with EPROMs, Static and Dynamic RAMs. Address decoding, memory maps and memory mirroring. Static and dynamic bus contention. Memory timing analysis, synchronization using asynchronous buses and wait states.

**Input/Output interfacing:** Isolated and memory mapped I/O. Interfacing with two state devices such as LEDs, 7-segment displays, switches, keyboards relays and ac loads. I/O synchronization using interrupts and the polling technique. Software and hardware aspects of interrupts. Use of programmable I/O devices.

**Interrupts and DMA:** Programmable Interval Timers (PIT), Programmable Interrupt Controllers (PIC) and Direct Memory Access Controllers (DMAC), and USART. Computer bus standards.

**Laboratory Work:** Individual or small group experiments performed with single board computers. Experiments include monitor commands, reset circuits, buffering, memory interfacing and I/O interfacing.

#### Learning Outcomes of the course unit

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

- Outline the characteristics of classical and modern microprocessors.
- Interface semiconductor memory devices with a microprocessor and perform address decoding and timing analysis calculations.
- Analyse data formats, and relate them to data types used by high level languages.
- Implement basic program control structures in assembly language and relate them with high level languages.
- Design Interfaces with two state devices using programmable devices, and write programs to control their operation.
- Design Interfaces with analogue devices using data converters, and write programs to control their operation.
- Use interrupt and DMA software and hardware mechanisms to interface the microprocessor with peripherals devices.
- Use laboratory instruments and tools to analyse the operation of single board microprocessor systems.

#### 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

- • Microcontrollers vs GPPs vs DSPs: Architecture and ISA of the microcontroller, GPP and DSP.
- • Embedded C/C and Assembly Languages: Embedded C and assembly for programming microcontrollers and DSPs. Real-Time Design Techniques. Software optimization techniques for constrained embedded systems
- • Real-Time Embedded and Internet-of-Things (IoT) Applications: Analog and Digital Input/Output, Remote sensing and control applications. Point-to-point communications in embedded systems.
- • DSP Techniques: FIR and IIR filter Applications. Digital modulation techniques and Applications.
- • Laboratory Work: Individual or small group experiments based on using a variety of EDA tools for programming, debugging and testing applications developed on 32-bit PIC microcontroller boards

#### Learning Outcomes of the course unit

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

- List the distinguishing differences between computers and embedded systems in terms of implementation and constraints.
- Demonstrate the concept of real-time processing and identify the strengths and limitations of microcontrollers and DSPs.
- Produce efficient real-time designs using microcontroller and DSP processors.
- Apply real-time algorithmic design techniques for embedded applications using assembly and C/C++ programming.
- Implement, test and verify real-time control and DSP applications in laboratory experiments.
- Identify the key technologies involved in embedded systems and Internet-of-Things design

#### Course Contents

**Instrumentation Technology: **Elements of measurement systems: transducers, signal conditioners, display/recorder measurement systems. Operation and use of transducers such as strain gauges, thermistors, lvdt’s, piezo-electric transducers. Digital to Analog and Analog to Digital Converters, accuracy and resolution of data converters..

**Automation Systems: **Types of controllers used in automation systems: microprocessors based controllers, computer based controllers, microcontrollers and Programmable Logic Controllers. Characteristics, advantages and disadvantages. Overview of present technology. Types of sensors and actuators used in automation systems.** **

**Programmable Logic Controllers:** Hardware components of PLCs: CPU, Memory, I/O Interfacing. Programming of PLCs: Use of instruction sets, ladder diagrams and combination logic design techniques. Applications using timers, set/reset, shift, registers, sequential control techniques and analogy input/output. PLC communications (RS 232 - RS 422/ER3)

**Laboratory Work:** Individual or small group experiments performed on microcomputers, equipped with data acquisition cards and software such as Labview, as well as programmable logic controllers related to real world applications.

#### Learning Outcomes of the course unit

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

- List and describe the function of the main components of an automation system.
- Describe and explain the operation and characteristics of two-state sensors and actuators found in automation and process control systems.
- Program the PLC using ladder diagrams to control the operation of systems such as a conveyor belt, assembly system, traffic lights etc.
- Explain what data acquisition is, and distinguish and select between the various systems available for data acquisition applications.
- Describe the operation and characteristics of various sensors and transducers used in data acquisition systems.
- Describe the basics of electronic measurements and instrumentation theory with respect to signals, amplification, grounding, noise, conditioning, accuracy and resolution.
- Explain how analogue signal can be encoded into digital code, and employ sampling theory in data acquisition applications.
- Design, build, program and test data acquisition and automation systems using industry standard software such as Labview and hardware such as data acquisition cards.

#### Course Contents

**VHDL:** Top-Down Design. File organization. Entity and Architecture. Structural and Behavioural Description. VHDL Primitives. State System. Signal Queues and Delta times. Concurrent and sequential statements. Procedures and functions. Packages and design for reuse.

**Verification:** Basic verification methodology. VHDL testbenches: directed and constrained-random testing, self-checking testbenches

**ASIC architectures and Implementation Options: **Synthesis and EDA tools for ASIC and FPGA emplementation. Semi-custom / full custom ASICs. Gate Array, Standard Cell, Full Custom. CMOS/BI-CMOS technologies. PLDs and FPGAs.

**Digital Systems Design - ASMs: **ASMs, Mealy and Moore machines. ASM charts. VE ? minimization. IFL/OFL minimization and implementation. State machine implementation using PROMs and multiplexers. PLDs. Finite state machine implementation using FPLAs. Timing. Glitch minimization techniques. Asynchronous input systems. Implementation selection trade-offs: performance, cost, production size etc.

**ASIC/VLSI design for testability: **Testing, verification and production. Design for Testability (DFT). Built-in self-test, signature analysis.

**Laboratory work:** Individual or small group experiments using VHDL, FPGA implementation and testing.

#### Learning Outcomes of the course unit

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

- Use EDA tools for ASIC/VLSI design.
- Describe ASIC, PLD and FPGA technologies.
- Design hazard free synchronous Digital Systems using ASMs and reliably synchronise asynchronous inputs.
- Use HDLs and develop RTL design mentality.
- Implement, test and verify the basic units of a CPU and memory using VHDL and FPGA boards.

#### Course Contents

·

**Introduction to the Personal Computer**: Identifying components of a computer system, including cases and power supplies, internal components, ports and cables, and input and output devices.

·

**Safe Lab Procedures and Tool Use**: Safe working conditions and procedures along with the tools and software used with personal computer components and implement proper tool use.

·

**Computer Assembly – Step by Step**: Open the computer case, install the power supply, attach the components to the motherboard, and install the motherboard, internal drives, drives in external bays, and adapter cards. Connect all internal cables, reattach the side panels, and connect external cables to the computer and boot the computer for the first time.

·

**Basics of Preventive Maintenance and Troubleshooting**: Explain the purpose of preventive maintenance and helps you identify the elements of the troubleshooting process.

·

**Fundamental Operating Systems**: Covering the fundamentals, properties and characteristics of operating systems. Install an operating system, navigate a GUI, apply common preventive maintenance techniques, and troubleshoot. Understand and implement dual boot systems and multiple operating systems with virtualization.

·

**Fundamental Laptops and Portable Devices**: Identify external laptop components, comparing and contrasting desktop and laptop components and maintenance.

·

**Fundamental Printers and Scanners**: In this chapter you learn the types of printers and scanners currently available and how to install and configure them. You also learn how to apply common preventive maintenance techniques and troubleshoot.

·

**Fundamental Networks**: The principles of networking are explained and the different types of networks, basic networking concepts and technologies, and the physical components of a network. Understand the OSI, TCP/IP and LAN topologies and architectures and can identify standards organizations and Ethernet standards.

·

**Fundamental Security**: You’ll learn why security is so important in this chapter, which describes security threats and identifies security procedures, and learn common preventive maintenance techniques for security.

·

**Communication Skills**: Developing PC technician and good communication skills. Ethics and legal aspects of working with computer technology. Modern call-centre environment and technician responsibilities.

#### Learning Outcomes of the course unit

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

- Define information technology (IT) and describe the components of a personal computer.
- Perform a step-by-step assembly of a desktop computer and install and navigate an operating system, explain and perform preventive maintenance.
- Diagnose and apply upgrade or replace components of a laptop, printer, or scanner based on customer needs. Explain the steps of the troubleshooting process and perform basic troubleshooting.
- Configure computers to attach to an existing network and implement basic physical and software security principles.
- Assess customer needs, analyze possible configurations, and provide solutions or recommendations for hardware, operating systems, networking, and security.

#### 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

- Introduction to CMOS Design

- MOS Transistor Theory

- CMOS Processing Technology

- Performance and Circuit Analysis

- Simulation

- Combinational Circuit Design

- Sequential Circuit Design

- Testing and Verification

#### Learning Outcomes of the course unit

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

- Explain the function of nMOS an pMOS transistors.
- Design the transistor-level schematic and layout of digital CMOS circuits.
- Design CMOS VLSI circuits using a variety of EDA tools.
- Optimize circuits for performance, area and power consumption.
- Describe the evolution of CMOS VLSI devices.
- Predict the impact of technology scaling on future CMOS devices.

#### 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

To satisfy the requirements of the program, students must successfully complete a Senior Project. This is achieved through a two-semester course sequence (ACOE489 and ACOE490) that students must complete during their senior year (last two semesters of their studies). This is a design project where students are expected to design hardware units, interface them with existing hardware units and develop software to solve problems. It also possible for a student to only develop software or use existing software tools to analyse and evaluate a proposed scheme in the content of Computer Engineering.

With the Senior Project Planning (ACOE489) 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 engineering 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 (ACOE489 and ACOE490) that students must complete during their senior year (last two semesters of their studies). This is a design project where students are expected to design hardware units, interface them with existing hardware units and develop software to solve problems. It also possible for a student to only develop software or use existing software tools to analyse and evaluate a proposed scheme in the content of Computer Engineering.

With the Senior Project (ACOE490) course, students must implement the objectives specified in their project proposal in ACOE489 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, the 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 engineering 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 a design project.
- Employ appropriate assessment criteria to validate and evaluate the outcome of a design project.
- Draw conclusions on the implementation of a design 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

**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

**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

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

**Principles of Software Engineering:** **Design** – User Interface (Menus and GUIs), Design Principles and Guidelines Interface Design. **Modularity** – Components type, size and complexity, Information hiding, Coupling and cohesion, OO Programming. **Structured Programming** – Selecting Control Structures. **Data Flow Design** – Identifying data flows, Creation of structure chart. Data Structure Design. OO Design. **Process Models – **The Waterfall Model. The spiral model. Prototyping. Incremental Development. Open-Source. Extreme Programming. The unified Process. **Project Management** – Teams. Software Metrics and quality assurance. Management.

** **

**Introduction to Databases: **Databases and Database Users, Database System Concepts and Architecture, Data Modeling Using the Entity-Relationship (ER) Model, Conceptual Model, The Enhanced Entity-Relationship (EER) Model, The Relational Data Model and Relational Database Constraints, Relational Database Design by ER, EER-to-Relational Mapping, Normalization for Relational Databases.

** **

**Introduction to Structured Query Language (SQL**): Queries ( Select, From, Where clause, Like clause, Having clause, Order By clause, Count, Group By, Join Inner/Right, Outer/Left Join). **DDL:** Create Table, Alter Table, Truncate Table, Drop Table. **DML:** Insert Into statement, Update statement, Delete From statement.

** **

**Java Programming Language:** History, Introduction to Java, Selecting a Development Tool (JDK, SDK etc.), JDK Contents (java, javac, javadoc etc) Compile and run from command line. NetBeans. Encapsulation. Library Classes. Inheritance. Polymorphism. Packages. Abstraction and Interfaces. Exceptions and exception handlers. Input/output Mechanisms. Objects and Instances. Constructors. Setters and Getters.

** **

**Java Database Connectivity (JDBC): **Connecting to JDBC data source. Querying JDBC data source. Manipulating databases with JDBC. Example Application.

** **

**Laboratory Work:** Design and develop fully functioning and well-behaved database systems using SQL, applications using Java Object-oriented programming language as well as their integration using JDBC.

#### Learning Outcomes of the course unit

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

- Describe modern practices in the development of software and introduce the principles of software engineering.
- Explain the key aspects for developing robust software including modularity, object orientation, reusability and human interface design.
- Explain and critically evaluate the key process models for constructing software (waterfall, spiral, prototyping, agile).
- Examine project management and feasibility analysis issues related to software projects.
- Explain and show the ability to implement concepts related to the design and utilization of database management systems using SQL.
- Demonstrate basic knowledge in developing Java Object-oriented applications.
- Demonstrate basic knowledge on the integration of Java and SQL using JDBC.

#### 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

**Introduction to Signals, Systems and Transforms:** Basic concepts of signals, What is a signal and how is represented? Signals classifications and properties. Elementary signals (unit-step, ramp function, sampling, unit impulse) Basic concepts of systems. What is a system and how is represented? Systems classifications and properties. Signals and systems relationship. Linear time-invariant systems. Series and Transform. Continuous and Discrete Transformations (Fourier and Laplace).

**Discrete/Continuous Time Signals/Systems:** Classification. Basic concepts of Discrete/Continuous Time Systems. Discrete/Continuous Time Impulse. Discrete/Continuous Time Convolution. Properties of Discrete Time. Eigenfunctions of Discrete Time LTI Systems. Linear Constant Coefficient Differential Equations

Solving Linear Constant Coefficient. Differential Equations. State-Variable Representation.

**Laplace/Z Transform:** Introduction to Laplace Transform. Common Laplace Transforms. Properties of the Laplace Transform. Inverse Laplace Transform. Poles and Zeros in the S-Plane. Region of Convergence for the Laplace Transform. Rational Functions and the Laplace Transform. Differential Equations. Continuous Time Filter Design. Introduction to Z-Transform. Common Z-Transforms and their properties. Inverse Z-Transform. Poles and Zeros in the Z-Plane. Region of Convergence for the Z-transform. Difference Equations. Discrete Time Filter Design. R-L, R-C and RLC circuits analysis using Laplace Analysis.

** Fourier Transform:** Discrete and Continuous Fourier Representations. Fourier Series. Continuous Time Fourier Series (CTFS). Common Fourier Series. Properties of the CTFS. Continuous Time Circular Convolution and the CTFS. Convergence of Fourier Series. Discrete Time Fourier Series (DTFS). Common Discrete Fourier Series. Properties of the DTFS. Continuous Time Fourier Transform (CTFT). Common Fourier Transforms. Properties of the CTFT. Continuous Time Convolution and the CTFT. Fourier Transform Discrete Time. Sampling Theorem. Signal Reconstruction. Perfect Reconstruction. Aliasing Phenomena. R-L, R-C and RLC circuits’ analysis using Laplace Analysis.

**Matlab Laboratory:** Basic Matlab programming and plotting. Use the Matlab Signal Processing toolbox to program signal representations and generate waveforms. Design and develop signal processing systems using Matlab. Programming transformations.

#### Learning Outcomes of the course unit

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

- Discuss the basic concepts, properties and representations of discrete and continuous time signals and systems.
- Describe time-domain analysis and modelling of systems.
- Apply Laplace and Fourier transformations to analyse continuous-time systems and relate to analogue filter design.
- Apply Discrete Fourier and Z transformations to analyse discrete-time signals and relate to digital filter design.
- Use the MatLab signal processing toolbox to plot graphs, represent signals, generate waveforms, and design signal processing systems.

#### Course Contents

**Introduction to circuit theory and analysis:** system of units and the scientific notation. Quantities of current, voltage, resistance and their units as well as the independent and dependent voltage sources and current sources. Definitions of current and voltage. Hydraulic analogies to current and voltage. Reference polarities and actual polarities.

**Analysis of circuits:** What a circuit element is? Resistors and Ohm’s Law. Equivalent circuits. Definitions of series and parallel. Series and parallel resistors. Kirchoff's laws,

**Mesh and nodal analysis:** The steps for writing the Node-Voltage Equations. Tips on picking the best reference node. How to handle dependent sources. Voltage sources in the Node-Voltage Method. Voltage sources in series with an element. Voltage sources between reference node and another essential node. Voltage sources between two non-reference essential nodes. The steps for writing the Mesh-Current. Equations. How to handle dependent sources. The steps for writing the Mesh-Current Equations. How to handle dependent sources.

**Thevenin's and Norton's theorem:** Introduction to Thvenin’s Theorem. Finding Thvenin’s equivalents. Examples of finding a Thvenin’s equivalent. Introduction to Norton’s Theorem. Finding Norton’s equivalents. Examples of finding a Norton’s equivalent.

Capacitive and inductive circuit transient and steady state analysis.

SPICE simulations using a variety of popular commercial software packages.

**Laboratory Work:** Experimental verification of circuit theorems. Series dc circuits. Parallel dc circuits. . Series parallel d.c. circuits. Methods of analysis. Superposition Principle (dc). Thevenin’s Theorem and MPT. Norton’s Theorem and Source Conversions

#### Learning Outcomes of the course unit

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

- Discuss the system of units and the scientific notation and understand the quantities of current, voltage, resistance and their units as well as the voltage and current sources.
- Examine Ohms Law and apply it in simple resistive circuits and study the reduction of series and parallel combinations of resistors as well as discuss the terms of circuit loop and node.
- Demonstrate basic knowledge in the use of Kirchoff's voltage law (KVL) and Kirchoff's current law (KVL) in simple resistive circuits to determine currents voltages and power as well as discuss the importance of voltage and current divider rules in circuit analysis.
- Demonstrate basic knowledge in systematic analysis of linear resistive circuits and study the basic circuit analysis methods such as Mesh Analysis, Node Voltage, Source Transformations and the principle of Superposition. Describe, apply and compare the various analysis methods and be able to choose the most appropriate and efficient method to analyze a specific circuit.
- Discuss the importance of Thevenin’s theorem and demonstrate basic knowledge in deriving the Thevenin equivalent circuit and calculate maximum power transfer to the load.
- Present and examine the concept of impedance and simple ac circuit analysis, R-L, R-C, and R-L-C circuits.

#### Course Contents

- • Introduction to Electronics: Structure of the atom and the Bohr’s model. Semiconductor materials, atomic bonding, impurities, free electrons and holes. P-type and N-type semiconductors.
- • Diodes: The PN-junction and junction diodes. Forward and reverse biasing, diode characteristics and diode models. Diode circuits and applications. Waveform shaping. Rectifier circuits and regulator circuits using the Zener diode.
- • Bipolar Junction Transistor (BJT): Physical structure, parameters and operating characteristics of transistors. Transistor DC analysis, biasing and operation regions (cut-off, active and saturation). BJT models, large-signal and small signal models. The BJT as a switch. Introduction to BJT amplifiers.
- • Switching and Logic Circuits: Diode-Logic, Resistor-Transistor and Diode-Transistor logic circuits and basic logic gates. TTL implementation of logic gates with open collector, totem pole and three-state outputs. Transfer characteristics, loading and fan-out. Power consumption and propagation delay. Introduction to Field-Effect Transistors, and CMOS digital logic design.
- • Analog/digital interfacing techniques: Input interfacing circuits, switch debouncing, opto-switch inputs. Output interfacing circuits, driving circuits, darlington arrays, inductive loads, opto-isolators.
- • Laboratory Work: Individual experiments on simulating, constructing and testing electronic circuits.

#### Learning Outcomes of the course unit

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

- Describe the physical structure, operation, electrical characteristics and models of diodes and bipolar junction transistors (BJT).
- Employ junction diodes and analyze typical limiter and waveform shaping circuits.
- Analyze the operation rectifier and zener-based regulator circuits.
- Design simple switching circuits based on bipolar junction transistors
- Demonstrate awareness of BJT small and large signal amplifier analysis.
- Use junction diodes and BJT to design switching logic circuits that implement the basic logic functions.
- Distinguish and analyze the operation of output circuits found in basic logic gates such as open collector, totem pole and three state outputs.
- Analyze the electrical characteristics (voltage, current, power) of logic circuits and relate them to their loading and fan-out characteristics.
- Interpret data from datasheets related to the electrical and dynamic characteristics of digital devices.
- Demonstrate awareness of the Field-Effect-Transistor (FET) and the Complementary-Metal-Oxide-Silicon (CMOS) technologies.
- Design interfacing circuits and device drivers for two state input/output devices.

#### Course Contents

- • Basic Operational Amplifier Circuits: Inverting and non-inverting amplifier, voltage follower, comparators, summing and difference amplifier. Frequency response, gain-bandwidth product and cascaded amplifier analysis. Programmable Analog Technology and Field Programmable Analogue Arrays.
- • Instrumentation Circuits: Data Converters, Anolog-to-Digital and Digital-to-Analog basics and characteristics, data converter circuits. Instrumentation amplifier, Isolation amplifier and the trans-conductance amplifier. Analogue multiplexers, digital potentiometers and digital volume control.
- • Square Waveform and Pulse Generators: Types and characteristics of oscillators and square waveform generators. Feedback RC square wave generators using op-amps, Schmitt trigger and logic gates. Crystal square wave generators. Lookup table based complex waveform generators. Monostable multivibrators, one-shot circuits and applications. The 555 timer as a monostable, square waveform generator, and PWM oscillator.

#### Learning Outcomes of the course unit

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

- Outline the characteristics and describe the operation of the differential amplifier and the operational amplifier.
- Analyse the operation and characteristics of operational amplifier circuits such as the inverting and non-inverting amplifier, the summing, difference, and comparators
- Employ operational amplifiers in the design of instrumentation and data acquisition circuits such as data converters, instrumentation amplifiers, isolation amplifiers, as well as analog multiplexers.
- Use operational amplifiers and logic gates to design, astable and monostable multivibrators, as well as square waveform generators.
- Perform experiments on simulating, constructing and testing electronic circuits based on operational amplifiers. Use programmable analog technology to implement typical analog electronics circuits.

#### 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

**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

**Descriptive Statistics:** Introduction to Statistics, Data Collection, Describing and Summarizing Data, Measures of Central Tendency, Dispersion and Skewness, Tables, Charts, Exploratory Data Analysis.

**Probability:** Sample Spaces and Events. Introduction to set theory and relations in set theory. Definitions of Probability and properties. Conditional probability.

**Discrete Random Variables:** Probability Distribution Function and cumulative distribution function, Mathematical Expectation, Mean and Variance. Probability Distributions: Binomial, Poisson.

**Continuous Random Variables:** Probability density Function and cumulative distribution function, Mathematical Expectation, Mean and Variance. Probability Distributions: Uniform, Normal Distribution. Approximations for Discrete Distributions.

**Sampling distributions:** Properties of sample distributions: Unbiasedness and minimum variance. The central limit theorem.

**Estimation: **Confidence Internal Estimation for Mean, Proportion, Difference of Means, Difference of Proportions. Sample size determination.

**Hypothesis** **Testing:** Hypothesis Testing for Mean, Proportion, Difference of Means, Difference of Proportions.

**Introduction to regression: **Simple Linear Regression and Correlation

#### Learning Outcomes of the course unit

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

- Use descriptive statistics to present data by constructing Bar Charts, Pie Charts, Histograms and Box Plots.
- Explain and apply measures of central tendency such as mean, median and mode, measures of Dispersion such as Range, IQR, Variance and standard deviation and the coefficients of Variation and Skewness to different types of data.
- Describe the notion of sample space for an experiment, describe events as subsets of the sample space and construct events by using set theoretic operations and with the use of Venn diagrams.
- Construct the probability function on the space of events with its properties, define conditional probability and calculate probabilities of events in simple problems.
- Describe the concepts of discrete and continuous random variables as functions from the sample space to the set of real numbers and explain and use the probability distribution function and cumulative distribution function to calculate simple probabilities.
- Calculate the expected number, variance and standard deviation of a random variable and use discrete and continuous distributions in examples to calculate probabilities in real life problems.
- Calculate point estimators and construct confidence intervals for means and proportions of one and two populations.
- Test hypothesis for means, proportions and difference of means, apply hypothesis testing to real life problems and construct linear models for a given set of data using linear regression.

#### Course Contents

**Kinematics in one dimension:** Motion along a straight line, motion with constant acceleration and deceleration, graphical representations, motion with constant deceleration, motions due to gravity (Free Fall, Fall with initial velocity, objects thrown upward).

**Dynamics:** Newton ’s Laws of motion, type of forces, free-body diagrams, adding forces graphically, static and kinetic friction, inclines.

**Work and energy:** Work done by a constant force, kinetic energy, work-energy principle, potential energy due to position and due to a spring, conservation of mechanical energy, dissipative forces.

**Linear Momentum:** Momentum and forces, conservation of linear momentum in one and two dimensions, elastic and inelastic collisions, impulse, energy and momentum in collisions.

**Oscillations:** Simple harmonic motion, conservation of mechanical energy, simple pendulum.

**Rigid Body:** Moments, equilibrium of a rigid body, kinematics of a rigid body (motion and rotation about a fixed axis), dynamics of a rigid body (torque, work, energy and power in rotational motion, conservation of angular momentum).

**Waves:** Wave motion, superposition, sound waves, speed of sound, Doppler effect).

**Ideal gas:** density, ideal gas law, temperature scales.

**Laboratory Work:** General Laboratory Instructions and Error Analysis-Error bars are initially covered. Small group experiments on: Measurement of the Acceleration of Gravity, Force of Equilibrium, Newton 's Second Law, Kinetic Friction, Conservation of Mechanical Energy, Conservation of Linear Momentum, Collision – Impulse, and Simple Pendulum.

#### Learning Outcomes of the course unit

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

- Describe with equations and graphically the motion along a straight line, the motion with constant acceleration and deceleration, and the motion due to gravity, distinguish and analyse motions to solve problems.
- Explain and apply the Newton’s Laws of motion to write the equations of motions, draw forces, solve problems by adding forces using free-body diagrams, and experimentally determine the acceleration due to gravity, investigate the Newton’s Second Law, the factors effecting kinetic friction and force equilibrium.
- Define and apply the concepts of work by a constant force, the kinetic energy, the potential energy due to the position and a spring, the work-energy principle, to solve problems with conservation of mechanical energy with/out dissipative forces, and experimentally determine the spring constant and investigate the conservation of mechanical energy.
- Identify the concept of linear momentum and its relation to forces, define the concept of impulse, explain the circumstances under which momentum is a conserved quantity, distinguish elastic and inelastic collisions, solve problems that involve elastic and inelastic collisions in one and two dimensions using the conservation of momentum and conservation of energy, and experimentally investigate the impulse and the conservation of linear momentum in elastic collisions.
- Describe simple harmonic motion, apply conservation of mechanical energy on problems with simple harmonic oscillators, determine under what circumstances a simple pendulum resembles simple harmonic motion, calculate and experimentally investigate its period and frequency.
- Define the concept of moments and the circumstances that a rigid body is in equilibrium, determine the rotation of a body about a fixed axis, calculate its torque, work, energy and power, and solve problems involving the principle of conservation of angular momentum.
- Describe with equations and graphically the wave motion, define the types of waves and the concept of superposition (overlapping waves), describe the characteristics of sound waves, define Doppler effect, use the abovementioned terms and concepts to solve associated problems.
- Describe the characteristics of ideal gas, determine under what circumstances the ideal gas law is valid, and solve associated problems using different temperature scales.

#### Course Contents

**Review: **Basic concepts of electricity, atomic structure.** **

**Electrostatics: **Coulomb’s Law, electric field intensity due to one or more point charges, electric potential, motion of a point charge in a uniform electric field.

**Further electrostatics: **Gauss Law and applications, capacitors and combination of capacitors, electrostatic energy of charged capacitors, dielectrics.

**Dynamic electricity: **Electric current, resistance and Ohm's Law, resistivity of conductors, combination of resistances.** **

**Direct Current Circuits: **Electromotive force (EMF), Kirchhoff’s rules, power, potential across resistors, RC circuits.

**Magnetism: **Definition of magnetic field, magnetic field at a point due to current carrying wires (Biot-Savart Law) and closed loop wires (Ampere’s Law), magnetic forces on current carrying parallel/antiparallel wires, motion of a charged particle in a constant magnetic field.

**Optics: **The nature of light, measurement of the speed light, Huygen's principle, reflection, refraction, and polarization.

**Geometrical Optics: **Convex and concave** **mirrors, thin lenses, optical instruments.

**Laboratory Work: **Small group experiments on: Electrostatic Charge, Ohm’s Law, Exploratory Study of Resistance, Resistances in Circuits, EMF, Kirchhoff's Rules, Resistor – Capacitor Network, Wheatstone Bridge, Law of Reflection, Law of Refraction.

#### Learning Outcomes of the course unit

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

- Demonstrate graphically and calculate the forces experienced on a charged particle by other charged particles, the electric field intensity and the electric potential due to several point charges at a particular point, describe and solve problems of charged particles motion in a uniform electric field.
- Explain and apply the Gauss law to evaluate the electric field intensity in problems where spherical or cylindrical or translational symmetry exists
- Define the electrostatic energy of a charged capacitor with/out dielectrics, describe and experimentally investigate the resistance’s and the Ohm’s Law variables, explain and experimentally measure the electromotive force.
- Develop skills to solve problems with circuits including several capacitors, several resistors, and resistors-capacitors, experimentally investigate the equations in Wheatstone Bridge and RC circuits, and experimentally demonstrate the Kirchhoff's Rules in electrical circuits.
- Define, demonstrate graphically and calculate the magnetic field at a point due to one or more current carrying wires (Biot-Savart Law) and closed loop wires (Amperes Law),
- Define, demonstrate graphically and calculate the magnetic forces on two current carrying parallel/antiparallel wires, and the path of a charged particle motion in a constant magnetic field.
- Describe and experimentally demonstrate the laws of reflection and refraction, show with appropriate drawings how these laws apply to light rays at plane and spherical surfaces (mirrors, thin lenses), and solve associated problems.

#### Course Contents

**Data transmission:** Data transmission terminology. Parameters (amplitude, phase, frequency) of an analog and a digital signal in time and frequency domains. Comparison of analog and digital data transmission. Transmission impairments. Shannon’s and Nyquist’s theorems. Channel capacity over noisy and noise-free environments.

**Transmission media:** Introduction to the electromagnetic spectrum. Guided and unguided transmission media and their associated characteristics. Wireless transmission. Signal routes over wireless propagation links. Free space loss over line of sight transmission.

**Signal encoding techniques:** Digital encoding schemes (RZ, NRZ-L, NRZI, Bipolar-AMI, Pseudoternary, Manchester , Differential Manchester). Modulation techniques for digital data, analog signals (ASK, FSK, BFSK, MFSK, PSK, DPSK, QPSK, QAM).

**Multiplexing:** Frequency Division, Synchronous and Statistical Time Division Multiplexing techniques. Asymmetric Digital Subscriber Line.

**Digital Data Communication Techniques:** Asynchronous and synchronous transmission methods over serial digital data communication links. Types of error for digital data. Error detection and correction techniques. Line configurations of various data links. Characteristics and relevant specifications of serial interfaces (USB, RS-232, Firewire).

#### Learning Outcomes of the course unit

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

- Describe the basic principles and characteristics of digital communications.
- Establish a good background in digital communication systems.
- Apply the main data encoding and digital modulation techniques on digital data.
- Illustrate error detection and correction techniques for digital data communications.
- Explain the switching and multiplexing techniques employed in modern computer networks.

#### 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

- • Computer Interfacing:
- o Electrical characteristics of digital devices, power, current and voltage limitations, loading and fan-out. Two-state input/output devices, and hardware drivers.
- o Computer Interfacing standards, Microprocessor bus interfacing, motherboard expansion slots (ISA, PCI), parallel ports (LPT) and serial ports (COM, USB).
- o Interfacing with analogue devices, Digital-to-analog and analog-to-digital converters.
- o Software I/O issues, logic and mask operations, timers and timing issues, building and using software device drivers. Serial and parallel data transfers. Use of interrupts.
- • Laboratory Work: Individual or small group experiments performed with the use of special hardware attached on the computer's ports. Experiments include serial and parallel data transfer, interfacing with 2-state devices, interfacing with analog-to-digital and digital-to-analog converters.
- • Project Work: Students are expected to built and test a board to be interfaced on a computer through a standard port, and develop the necessary software that will enable the use of a computer as the control unit of a process.

#### Learning Outcomes of the course unit

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

- Describe at the transistor level the electrical characteristics (voltage, current and power) and loading effects of digital drivers and loads.
- Outline the characteristics of the standard ports and slots of a personal computer such as the COM, LPT, USB and PCI and select the most suitable port for a given application.
- Design hardware to be interfaced on the standard ports and slots of a personal computer such as COM, LPT, USB and PCI.
- Describe the basic characteristics of common Input/Output devices, and how these devices can be interfaced with a computer.
- Develop programs to control the operation of I/O devices such as displays, motors and analogue data converters.
- Built and test the operation of typical circuits interfaced on the standard ports of a computer.

#### 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 microprocessors for general purpose and embedded systems – Embedded microprocessor evolution – Design metrics and constraints (performance, power, cost, time-to-market) and design optimization challenges.

- Key embedded system technologies – Integrated Circuit technology – Microprocessor technology – CAD tool technology. Comparison of embedded system implementation options (Microprocessor/ DSP/FPGA/ASIC/Embedded platform) in terms of performance, cost (NRE and total), power consumption and time-to-market.

- Embedded system specification and modeling – Object-oriented specification (UML/C /SystemC).

- Computer Architecture – Instruction sets – RISC vs. CISC – pipelining - The ARM microprocessor architecture.

- ARM assembly – ARM mode – Thumb mode - ARM and Thumb instruction set - ARM conditional execution.

- Processor I/O – Serial I/O – Busy/wait I/O – Interrupts – Exceptions – Traps – ARM memory mapped I/O.
- Caches – Memory Management Units – Protection Units – ARM cache and MMU.

- Programme design and analysis – DFGs – CDFGs – Compilers – Assemblers – Linkers – Basic compiler optimizations/code transformations – Measuring programme speed – Trace-driven performance analysis – Energy optimization – programme size optimization.

#### Learning Outcomes of the course unit

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

- Evaluate the main constraints and trade-offs in embedded system design.
- Develop teamwork and the ability to write detailed document and executable embedded system specifications.
- Implement applications on embedded processors (ARM) using assembly and/or high-level languages.
- Use programme traces and emulation tools to estimate performance, memory area and power consumption.
- Apply code transformations to optimize performance/area/power consumption.

#### 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

Issues raised and tradeoffs in modern high performance processor and computer designs. Latency tolerance and technology trends and limitations

Instruction Level Parallelism: Complex Pipelines, superscalar, superpilelined, VLIW/EPIC and Vector microarchitectures and OOO execution. Branch prediction and Speculative execution.

Thread Level Parallelism: Latency and latency tolerance. Multithreading, implicit/explicit multithreading, blocking/non-blocking multithreading, and thread switching mechanisms. Simultaneous multithreading, hyperthreading, Subordinate Multithreading SSMT/Helper threads.

Technology Issues: Clock frequency trends, transistor density trends, power scaling and temperature issues, wire scaling, wire fan out and soft errors.

Chip multiprocessors and tiled architectures and multi-core processors. The cache coherence problem and cache coherence protocols. CMP interconnects and networks-on-chip.

#### Learning Outcomes of the course unit

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

- Explain the effect and limitations of semiconductor technology on modern microarchitectures, with respect to the clock frequency, power consumption, heat dissipation and transistor size
- Apply ILP techniques on single-core pipelined, superscalar, VLIW and multithreaded microarchitectures and employ optimizations such as branch prediction and out-of-order execution.
- Describe the memory hierarchy optimizations found in high performance processors and employ cache optimizations such as multilevel caches, software and hardware prefetching, victim caches, etc.
- Employ thread-level parallelism on multi-core microarchitectures such as SMT, chip-multiprocessors and tiled architectures.
- Explain how modern microarchitecture optimizations are employed by current high performance processors.
- Use appropriate performance metrics and employ the performance monitoring registers of high performance processor to monitor, evaluate and improve their performance.

#### 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 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

**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

**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 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 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

**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

- 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

**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

**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 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

**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

- **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

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).

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

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