cs@cs.ucy.ac.cy | +357-22-892700

| | | | MyCS Portal |

Undergraduate Programme Courses Description

Each course description includes the name of the instructor that offers the course in the current academic year 2016-2017. For the restricted courses that are not offered in this academic year, the name of the instructor who suggested the course is included instead. The language of instruction for most courses is Greek. Courses taught in English are indicated.

CS111 Discrete Structures in Computer Science and Computation

Type: Compulsory for all direcitons

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: A. Kakas

Objectives: Introduction to basic mathematical concepts that are applicable to Computer Science. Development of mathematical way of thinking about problems. Provision of some necessary mathematical tools.

Content: Foundations: sets and functions. Logic: Propositional Logic: basics of Predicate Logic. Mathematical Reasoning: methods of proof, induction. Counting: basics of counting, pigeonhole principle, permutations and combinations. Relations: properties and applications, equivalence relations, partial orders. Graphs: basic concepts.

Prerequisites: ----------

Bibliography:

  1. K. Rosen, Discrete Mathematics and its Applications, 5th Edition, McGraw-Hill, 2003.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam and homework.

CS121 Digital Systems

Type: Compulsory for all direcitons

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: P. Kolios

Objectives: Introduce various representations of information in a digital computing system. Presentation of the building blocks of digital computing systems. Teach the basic methods for the design and analysis of digital systems. Practical implementation of a simple digital computing system.

Content: Principles of design and construction of digital electronic systems and computers. Representation of data with binary sequences. Data storage and processing by electronic digital circuits. Consolidation of theoretical knowledge through practical exercises in the design and construction of digital circuits.

Prerequisites: -------------

Bibliography:

  1. M. Mano, D.Kime, Logic and Computer Design Fundamentals, 5th Edition, Pearson, 2015.

Teaching Methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam, quizzes and homework (final project and exercises).

CS131 Programming Principles

Type: Compulsory

Level: Undergraduate

Semester: Fall and Spring

Credit: 7.5 ECTS units

Instructor: E.Keravnou-Papailiou (fall /spring)

Objectives: Introduction of methods for problem-solving through programming. Development of procedural and object-oriented problem solving skills and algorithmic thinking. Provision of deep understanding of basic programming principles and algorithmic techniques, design, implementation, testing and debugging of modular programs. Understanding the important concepts of program abstraction and data abstraction. Mastering of a high-level programming language (Java).

Content: Presentation of the software development process and introduction to the basic principles of programming and program design using the Java language. Global overview of the Java language with emphasis on built-in and abstract data types, control structures, functions, modular programming and reusability.

Prerequisites: -------------

Bibliography:

  1. R. Sedgewick and K. Wayne, Introduction to Programming in Java: An Interdisciplinary Approach, Addison Wesley, 2008.

Teaching methods: Lectures (3 hours weekly), Laboratory sessions (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam, homework (programming assignments) and quizzes.

CS133 Object Oriented Programming

Type: Compulsory

Level: Undergraduate

Semester: Fall and Spring

Credit: 7.5 ECTS units

Instructor: M. Dikaiakos

Objectives: This course provides students with an extended introduction to Object Oriented Programming principles with Java. Students are expected to develop advanced programming and problem-solving skills, applying Object Oriented principles and advanced programming techniques in Java.

Content: Use of object oriented methodology for problem solving. Abstraction and information hiding. Packages. Strings, CRC cards and class diagrams. Inheritance. Polymorphism, Exceptions. Inner classes. Input-output. Type Information. Generics. Collections. Annotations and lambda expressions.

Prerequisites: CS131

Bibliography:

  1. W. Savitch, K. Mock. Absolute JAVA. 6th Edition, Pearson, 2016.

  2. C. S. Horstmann. Object-Oriented Design & Patterns. 2nd Edition, Wiley, 2005.

  3. R-G. Urma, M. Fusco, A. Mycroft. Modern Java in Action. Manning, 2021.

  4. B. Eckel, Thinking in Java, 4th Edition, Prentice Hall, 2006.

Teaching methods: Lectures (3 hours weekly), Laboratory sessions (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam and homework.

CS202 Explorations into Computer Science

Type: Compulsory

Level: Undergraduate

Semester: Spring

Credit: 3 ECTS units

Instructor: M. Belk

Objectives: Introduction to topics that compose a global picture of Computer Science. Creation of enthusiasm and interest in Computer Science. Update about current developments in Computer Science. Familiarization with practical applications of Computer Science.

Content: Weekly lecturers/seminars that cover a broad spectrum of Computer Science and its basic areas, starting from its birth and reaching its modern evolutions. Revolutionary ideas for the foundation and development of Computer Science.

Prerequisites: ----------

Bibliography: ----------

Teaching methods: Lectures / Seminars (1.5 hours weekly).

Assessment: Group project and presentation, class participation and attendance.

CS211 Theory of Computation

Type: Compulsory

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: A. Philippou

Objectives: Introduction to foundational concepts of the Theory of Computation. Development and cultivation of formal and syllogistic reasoning. Familiarization with fundamental techniques for proofs and mathematical reasoning. Realization of the limitations on the capabilities of computers.

Content: Formal methods of computation based on machines, grammars and languages: finite automata vs. regular languages; pushdown automata vs. context-free grammars; Turing machines vs. unrestricted grammars. Models of computation equivalent to Turing machines and Church’s Thesis. Computability and Uncomputability. Introduction to Theory of Computational Complexity with emphasis on the Theory of NP-completeness.

Prerequisites: CS111, MAS012

Bibliography:

  1. M. Sipser, Εισαγωγή στη Θεωρία Υπολογισμού, Πανεπιστημιακές Εκδόσεις Κρήτης, 2007
  2. M. Mavronicolas, Θεωρία Υπολογισμού, προσχέδιο βιβλίου, Αύγουστος 2005.
  3. H. R. Lewis, C. H. Papadimitriou, Elements of the Theory of Computation, 2nd Edition, Prentice Hall, 1998.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam and homework.

CS221 Computer Organization and Assembly Language Programming

Type: Compulsory

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: Y. Sazeides / H. Volos

Objectives: Introduction to the basic concepts and methods of computer organization. Present trends of various computer technology parameters. Introduction of the concept of instruction set architecture. Teach different instruction sets and assembly programming. Design of a pipelined datapath. Learn basic principles of memory hierarchy. Implement a simple computing system. Practical experience in the Digital Logic and Microprocessors Laboratory.

Content: Introduction to computer organization and architecture. Types of instructions, coding of instructions, Arithmetic and Logic Unit. Basic principles of the organization of the main functional units of a computer system at machine level: Central Processing Unit (CPU), memory, and Input/Output. Interfacing CPU and peripheral units. Programming in assembly language for MIPS R2000/R3000 and Intel Pentium.

Prerequisites: CS121, CS131

Bibliography:

  1. D. A. Patterson, J. L. Hennessy, Computer Organization and Design - The Hardware/Software Interface, Third Edition, Morgan Kaufmann, 2005.

Teaching Methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final and midterm exams, quizzes and homework (final project and exercises).

CS222 Operating Systems

Type: Compulsory

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: G. Papadopoulos

Objectives: Introduction to the basic principles of design and operation of modern operating systems. Familiarization with the various operation levels and mechanisms, case studies involving typical operating systems like UNIX and Windows as well as the dual role of the operating system, as manager of the various parts of the computer hardware and supplier of offered services to the user.

Content: Introduction, history and evolution of operating systems. General structure, operations and characteristics of an operating system. Concurrency. Process management. Scheduling and dispatch. Real and virtual memory management. I/O management and disk scheduling. File management.

Prerequisites: CS221, CS232

Bibliography:

  1. W. Stallings, 'Operating Systems: Internals and Design Principles’, Prentice Hall, 9th edition, 2015, ISBN-10: 1-292-21429-5, ISBN-13: 978-1-292-21429-0 (Global edition).

Teaching methods: Lectures  (3  hours  weekly),  Recitation  (1  hour  weekly)  and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (theoretical and programming assignments).

CS231 Data Structures and Algorithms

Type: Compulsor

Level: Undergraduate

Semester: Fall and Spring

Credit: 7,5 ECTS units

Instructor: M. Mavronicolas (Fall) / ................ (Spring)

Objectives: Familiarization with data structures and the algorithms manipulating them. Appreciation of the importance of careful organization of information for efficient searching and modification. Acquaintance with techniques for the analysis of algorithm efficiency. Developments of capabilities for designing algorithms to minimize their execution time and space requirements

Content: Study of data structures for the organization and efficient processing of data. Linear and non-linear data structures. Hashing techniques. Issues of memory management. Sorting Algorithms. Graph Algorithms. Introduction to algorithm design techniques. Analysis of the average and worst-case complexity of algorithms.

Prerequisites: CS111, CS132

Bibliography:

  1. T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Algorithms, 3rd Edition, The MIT Press, 2009.
  2. M. T. Goodrich, R. Tamassia, Μ. H. Goldwasser, Data Structures and Algorithms in JAVA, 6th Edition, John Wiley & Sons, 2014.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (theoretical and programming assignments).

CS232 Programming Techniques and Tools

Type: Compulsory

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: A. Aristidou

Objectives: The course teaches intermediate and advanced programming concepts, techniques and tools through a language that compiles to machine code. The course familiarizes the students with advanced programming constructs utilized for handling memory and files. Advanced topics in compilation, debugging, documentation and optimization of software. Methodological aspects in developing large-scale system software that addresses complex problems. Basic commands for programmers in the UNIX operating system.

Content: i) Introduction to C for Programmers: types x86/x64, loops, selections, expressions, arrays, functions, IO, basic program organization, ii) Advanced C programming constructs: program anatomy and processes, memory and addresses (pointers, pointers and arrays, strings and examples), structures, unions and enumerations. Linear and non-linear programming data structures (dynamic memory allocation, lists, queues, doubly-linked lists, trees, applications and examples). iii) Advanced Compilation Topics and Tools: preprocessor directives, compiling multiple files with makefiles, static (.a) and dynamic (.so) linking of object files (.o), error handling (assert.h), static and dynamic code analysis  (valgrind and gprof). iv) low-level programming (binary operators and examples, binary files and hexdump). v) Basic commands for programmers in the UNIX operating system: file system, redirection and pipes, permissions and basic filters.

Prerequisites: CS 131

Bibliography:

  1. K.N. King, C Programming: A Modern Approach, 2nd Edition, ISBN-10: 0393979504, ISBN-13: 978-0393979503, W. W. Norton & Company, 2008.

  2. St. G. Kochan Programming in C, 4th Edition, ISBN-10: 0321776410, ISBN-13: 9780321776419, Addison-Wesley Professional, 2015

  3. S. Das, Your UNIX/Linux: The Ultimate Guide, 3rd Edition, McGraw Hill, ISBN-13 9780073376202, 2013.

  4. Ν. Χατζηγιαννάκης, Η Γλώσσα C σε Βάθος, Τρίτη Έκδοση, 978-960-461-208-6, Κλειδάριθμος, 2009.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam, programming assignments.

CS236 Algorithms and Complexity

Type: Compulsory

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: M. Mavronicolas (Fall) / Chr. Georgiou (Spring)

Objectives: Familiarization with fundamental techniques of designing and analyzing algorithms. Familiarization with significant algorithms in various fields that have been suggested in the literature. Familiarization with techniques for implementing and empirically evaluating algorithms.

Content: Topics in the design and analysis of efficient algorithms and their complexity. Significant algorithms in Graph Theory, Algebra, Geometry, Number Theory and Combinatorics. General algorithmic techniques (e.g., divide-and-conquer, backtracking, dynamic programming). Randomized, Parameterized and Approximation algorithms. Fast Fourier Transform. Inherent lower bounds on problem complexity.

Prerequisites: CS231

Bibliography:

  1. J. Kleinberg, E. Tardos, Σχεδίαση Αλγορίθμων, Εκδόσεις Κλειδάριθμος, 2008. (English Version: J. Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2006).
  2. S. Dasgupta, C. Papadimitriou, U. Vazirani, Αλγόριθμοι, Εκδόσεις Κλειδάριθμος, 2009.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam and homework (theoretical and programming assignments).

CS324 Communications and Networks

Type: Compulsory

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: A. Pitsillides / V. Vassiliou

Objectives: Familiarization with fundamental topics in communication networks, with a focus on the Internet.\

Content: Introductory course in Communication Networks. The goal is the understanding and use of concepts related to fundamental issues in Communication Networks, using the Internet as an example. Deals with Networking layers, such as the application, transport, network, and data link layers. Open systems and internetworking. Networking technologies including wired and wireless Local Area Networks and network topologies. Algorithms, including routing and congestion control. Introduction to quality of service (QoS) and multimedia applications. Introduction to emerging networking topics, as e.g. the Internet of Things, Network Softwarization and 5G/5G. Laboratory session includes practical exercises with wireshark and simulations using OPNET.

Prerequisites: CS131

Bibliography:

  1. J. F. Kurose, K. W. Ross, Computer Networking: A Top-Down Approach Featuring the Internet, 7th Edition, Addison-Wesley, 2016.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (including laboratory exercises).

CS325 Parallel Processing

Type: Compulsory

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: Y. Sazeides / H. Volos

Objectives: Introduction to the fundamental concepts of Parallel Processing with emphasis on parallel machines and parallel programming.

Content: The entire spectrum of parallel machines as appearing in Flynn’s classification: SISD, SIMD, MISD, MIMD. The main approaches for design and operation of multiprocessor systems. Conventional and non-conventional machines (Data-flow and reduction). Parallel programming approaches: (1) Automatic-parallelizing compilers, (2) Extending serial languages with parallelizing constructs, (3) parallel languages for Functional Programming. Special emphasis on parallel architectures and parallel programming.

Prerequisites: CS221

Bibliography:

  1. D. E. Culler, J. P. Singh, Parallel Computer Architecture – A Hardware/ Software Approach, Morgan Keufmann, 1999.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam, homework and final project.

CS326 Systems Security

Type: Compulsory

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: E. Athanasopoulos

Objectives: Introduction to systems security which covers a wide range of concepts. Primarily, the course helps students to become familiar with different research areas of modern systems security by covering topics such as applied cryptography, software vulnerabilities and exploitation, defenses, mobile security, web security, network security, privacy, and anonymity. Additionally, students will be able to perform engineering tasks in cryptography, software exploitation, network security, and program analysis.

Content: Introduction to applied cryptography (early ciphers, modern symmetric and asymmetric ciphers, cryptographic hash functions and MACs, applications). Software vulnerabilities (buffer overflows, integer overflows, use-after-free). Control-flow attacks (code injection, code reuse). Defenses (non-executable pages, stack canaries, code randomization, CFI). Isolation techniques (SFI). Static and dynamic analysis of software. Mobile security (Android, iOS). Web security (cross-site scripting, CSRF, clickjacking, phishing). Network security (TLS, botnets, DDoS). Authentication and passwords. Privacy and anonymity (TOR).

Prerequisites: CS232

Bibliography:

  1. A. J. Menezes, P. C. van Oorschot, S. A. Vanstone. Handbook of Applied Cryptography, CRC Press.

  2. R. Anderson. Security Engineering: A Guide to Building Dependable Distributed Systems, 2nd Edition, Wiley (http://www.cl.cam.ac.uk/~rja14/book.html)

  3. C. Paar, J. Pelzl, Understanding Cryptography: A Textbook for Students and Practitioners, Springer.

  4. Published papers.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (including laboratory assignments).

CS341 Artificial Intelligence

Type: Compulsory

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: Y. Dimopoulos

Objectives: Ιntroduction to the fundamental principles and techniques that underline software systems that exhibit “intelligent” behavior. Upon completion of this course, students will have acquired a good understanding of modern Artificial Intelligence, the problems that it addresses and the fundamental solution methods that it uses.

Content: Introduction to Artificial Intelligence. Intelligent Agents. Search. Constraint Satisfaction Knowledge Representation and Reasoning. Action Planning. Machine Learning. Uncertainty.

Prerequisites: CS231

Bibliography:

  1. S. Russel, P. Norviq, Artifitial Intelligence: A Modern Approach, 3rd Edition, Prentice Hall, 2014.
  2. E. Keravnou, Τεχνητή Νοημοσύνη και Έμπειρα Συστήματα, Ελληνικό Ανοικτό Πανεπιστήμιο, 2000.

Teaching methods: Lectures (3 hours weekly) and Recitiation (1 hour weekly).

Assessment: Final exam, midterm exam and homework (theoretical and programming assignments).

CS342 Databases

Type: Compulsory

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: D. Zeinalipour

Objectives: Introduction to the basic principles needed for the design and the use of ta database. Provision of practical exercises in the application of these concepts with the use of an industrial system for database.

Content: Introduction to Databases. Organization and proper management of large quantities of data for use in applications. Database models such as the entity-relation model, the relational model, the network model and the hierarchical model.

Prerequisites: CS231

Bibliography:

  1. R. Elmarsi, S. Navathe, Fundumentals of Database Systems, 5th Edition, Addison-Wesley, 2007.

  2. R. Elmarsi, S. Navathe, Θεμελιώδεις Αρχές Συστημάτων Βάσεων Δεδομένων, 5η Έκδοση, 1ος τόμος, Εκδόσεις Δίαυλος, 2007.

  3. R. Ramakrishnan, J. Gehrke, Database Management Systems, 3rd Edition, McGraw-Hill, 2003.

Teaching methods: Lectures (3 hours weekly), Recitation (1.5 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (theoretical assignments, final project).

CS343 Software Engineering

Type: Compulsory

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: G. Kapitsaki

Objectives: Familiarization with and assimilation of the approaches, methodologies, models and tools used to develop quality software systems. Understanding of software architectures, software modeling and testing. Understanding of software testing process and of software architecture design patterns. Applications of software creation methodologies on the construction of a real software system. Understanding of software testing procedures. Use and application of architecture design patterns.

Content: Methods, tools, and procedures for the development and maintenance of large-scale software systems. Existing life-cycle models (e.g. waterfall model). Introduction to Agile development. Requirements analysis and specification techniques. Software development methodologies. Unified Modelling Language (UML) and supported static and dynamic diagrams. Code transformation. Practical experience with CASE tools for modeling data and procedures (Modelio). Prototyping for Web applications (HTML, CSS). Archιtectural Design patterns (Model View Controller etc.). Software verification and validation. Unit testing and frameworks (JUnit etc.). CASE tools. Project planning and management.

Prerequisites: CS133

Bibliography:

  1. I. Sommerville, Software Engineering, 10th Edition, Addison-Wesley, 2016.

  2. R. Pressman, Software Engineering: A Practitioner's Approach, 8th Edition, Mc Graw Hill, 2015.

  3. H. van Vliet, Software Engineering: Principles and Practice, 3rd edition, John Wiley & Sons, 2008.

  4. P. Stevens, R. Pooley, Using UML Software Engineering with Objects and Components, 2nd edition, Addison-Wesley, 2006.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam, and semester team project.

CS344 Internet Technologies

Type: Restricted choice

Level: Undergraduate

Semester: Fall or Spring

Credit: 7,5 ECTS units

Instructor: -----------

Objectives: Introduction to Internet and the World-Wide Web Technologies. Emphasis on WWW protocols and programming of Internet Systems and Services.

Content: Internet Fundamentals, Principles of Hypertext, HTML and Mark-up Languages, Cascading Style Sheets, Page Layouts, Web Design & Development,  Dynamic content and HTML Forms, Client-Side Programming,  Introduction to Web2.0 principles and AJAX.

Prerequisites: CS133, CS324

Bibliography:

  1. A. Moller, M. Schwartzbach, An Introduction to XML and Web Technologies, Addison Wesley, 2006.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam, homework assignments.

CS412 Logic in Computer Science

Type: Restricted choice

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: A. Philippou

Objectives: The main objective of the course is to prepare students for using logic as a formal tool in Computer Science. Furthermore, it aims to develop and cultivate formal and syllogistic reasoning and provide a thorough introduction to computational logic and its applications in Computer Science.

Content: Propositional Logic Syntax, Semantics, Normal Forms, Decision Procedures, Proof Theory, Compactness and Resolution. Predicate Logic: Syntax and Semantics, Proof Theory Soundness and Completeness and Resolution. Logic Programming. Programming Language Semantics and Verification. Linear and Branching Temporal Logics: Syntax, Semantics, and model-checking algorithms.

Prerequisites: CS111

Bibliography:

  1. M. Huth, A. Ryan, Logic in Computer Science: Modeling and Reasoning about Concurrent Systems, Cambridge University Press, 2000.
  2. M. Ben-Ari, Mathematical Logic for Computer Science, Springer-Verlag, 2nd Edition, 2003.
  3. U. Schoning, Logic for Computer Scientists, Springer-Verlag, 2nd Printing, 2008.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam and homework.

CS414 Basic Principles of Programming Languages

Type: Restricted choice

Level: Undergraduate

Semester: ----------

Credit: 7,5 ECTS units

Instructor: A. Philippou

Objectives: The objective of the course is to study the basic principles of programming languages through the representation of basic programming notions into a uniform mathematical framework. At the same time, the course will follow the practical application of the notions under study into popular programming languages. In particular, the course will study the abstract syntax, the syntax, semantics, and the practical application of functional, procedural, object-oriented, and programming structures. Attention will be given to the static (type systems) and dynamic (execution behavior) properties of programming languages, as well as the notions of type soundness and execution safety. The course will introduce principles/notions of distributed programming and study modern execution safety problems in a distributed setting.

Content: History of Programming Languages. λ – calculus. Functional Programming (The Haskell programming language, Haskell type system, Haskell’s Type Inference, Pure vs impure programming languages). Procedural and Object-Oriented Programming (Basic object-oriented programming notions, Mathematical representation of the Java programming language). Distributed programming (Actors programming model, Process Calculi as mathematical models for representing distributed programming).

Prerequisites: CS211, CS231

Bibliography:

  1. B. C. Pierce, Types and Programming Languages, The MIT Press.
  2. G. Hutton, Programming in Haskell, 2nd Edition, Cambridge University Press, 2016.
  3. G. Agha, Actors: A Model of Concurrent Computation in Distributed Systems, Τhe MIT Press.
  4. At. Igarashi, B. C. Pierce, P. Wadler, Featherweight Java: A Minimal Core Calculus for Java and GJ, ACM Trans. Program. Lang. Syst., 23(3), 2001.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam and homework.

CS420 Computer Architecture

Type: Compulsory

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: P. Evripidou

Objectives: Introduction to current methodology for performance evaluation and comparison of computer systems. Presentation of basic and advanced concepts in the organization of modern microprocessors. Examination of current trends in the computer architecture area.

Content: Introduction to the state-of-the-art uniprocessor, high performance computer architecture. Emphasis on quantitative analysis and cost/performance trade-offs in the design of the basic units of a processor: instruction set, pipelining, memory system and input/output systems. Qualitative analysis of real machines and their performance data.

Prerequisites: CS222

Bibliography:

  1. J. Henessy, D. Patterson, Computer Architecture: A Quantitative Approach. 3rd Edition. Morgan Kaufmann, 2002.
  2. Selected research articles

Teaching Methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (project and exercises).

CS 421 Systems Programming

Type: Restricted choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: D. Zeinalipour

Objectives: The main objective of this undergraduate course is to allow students develop complex system-level software in the C programming language while gaining an intimate understanding of the UNIX operating system (and all OS that belong to this family, such as Linux, the BSDs, and even Mac OS X). Topics covered will include the user/kernel interface, fundamental concepts of UNIX, user authentication, basic and advanced I/O, filesystems, signals, process relationships, and inter-process communication. Fundamental concepts of software development and maintenance on UNIX systems will also be covered. The taught concepts have an application to the whole family of UNIX OSs (e.g., Linux, MacOS, HP-UX, AIX, Solaris, Android, iOS, Raspbian) but also apply to Windows (e.g., Powershell and windows system calls).

Contents: i) Advanced commands of the UNIX operating system for administrators: filters with regular expressions, system utilities and stream editors (awk, sed). ii) Advanced shell programming with an emphasis on Bash: environment, control structures, debugging. iii) Low-level I/O system calls with C. iv) Process management: environment, control and signals, inter-process communication (IPC) with an emphasis on pipes and named pipes (FIFO), XSI IPC: semaphores, shared memory and message queues, network IPC (TCP Sockets) and the client/server model. v) Multithreaded programming, concurrency and performance aspects. Implementing network protocols from RFC documents. v) System security aspects, managing cluster computers and clouds: virtualization, data centers and Green IT.

Prerequisites: CS 222

Bibliography:

  1. S. Das, Your UNIX/Linux: The Ultimate Guide, 3rd Edition, McGraw Hill, 2013.

  2. E. Nemeth, G. Snyder, T. R. Hein, B. Whaley, UNIX and Linux System Administration Handbook, 4th Edition, ISBN-10: 0131480057, ISBN-13: 9780131480056, Prentice Hall, 2011.

  3. R. E. Bryant, D. R. O'Hallaron, Computer Systems: A Programmer's Perspective, 3rd Edition, Pearson, 2016.

  4. W. R. Stevens, St. A. Rago, Advanced Programming in the UNIX Environment, 3rd Edition, Addison-Wesley Professional, 2013.

Teaching Methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (2 hour weekly).

Assessment: Final exam, midterm exam, programming assignments.

CS422 Advanced Networks

Type: Restricted choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: V. Vassiliou / A. Pitsillides

Language: English

Objectives: Extension of the basic knowledge about Computer Networks regarding architectures, techniques and protocols for the Intenet.

Content: Advanced topics in Computer Networks and the Internet, such as: IPv6, Multicast Routing, QoS Routing, TCP Congestion Control, Performance Analysis, Multimedia Networking Applications, Realtime services and protocols, Quality of Service, MPLS, Traffic Engineering, Mobile and Wireless Networks, Issues in Security for Computer Networks. Introduction to advanced research topics (e.g. Internet of Things, wireless sensor networks, VANETs, 5G, Nanonetworks). Introduction to Network Management, Software Defined Networks. Cloud and Fog Computing.

Prerequisites: CS324

Bibliography:

  1. J. F. Kurose, K. W. Ross, Computer Networking – A Top Down Approach Featuring the Internet, 7th Edition, Addison-Wesley, 2016.
  2. Y.-D. Lin, T.-H. Hwang, F. Baker , Computer Networks, An Open Source Approach , McGraw Hill, 2011.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (including laboratory exercises).

CS423 Network and Information Security

Type: Restricted choice

Level: Undergraduate

Semester: -----

Credit: 7,5 ECTS units

Instructor: V. Vassiliou

Objectives: Introduction to network and information security principles, understanding of basic areas in Cryptography, Authentication and Confidentiality. Gain of knowledge in methods for the evaluation of Software, Applications and Systems with respect to security. Application of tools for the protection of networks, applications and information.

Content: Introduction to Security Threats and Attacks, Cryptographic Techniques (encryption, cryptanalysis, authentication, confidentiality), identification and authentication (Kerberos, PKI), Internet Application security protocols (PGP, SSL/TLS), Network security (Firewalls, IDS), Defending against threats on endsystems, Checking of networks and applications for vulnerabilities, Other issues in network and information security (privacy, ethics, legal framework).

Prerequisites: CS324

Bibliography:

  1. W. Stallings, Network Security Essentials, 3rd Edition, Pearson-Prentice Hall, 2007.
  2. C.P. Pfleeger, S.L. Pfleeger , Security in Computing, 4th Edition, Prentice Hall, 2006.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory (2 hours weekly).

Assessment: Final exam, midterm exam and homework.

CS424 Digital Signal Processing

Type: Restricted choice

Level: Undergraduate

Semester: ............

Credit: 7,5 ECTS units

Instructor: A. Pitsillides

Objectives: Introduction to Digital Signal Processing (DSP) methods and applications.

Content: Discrete signals and systems, sampling of signals, frequency analysis of discrete systems and signals, z-transform, Fourier-Transform, Discrete Fourier Transform, and Fast Fourier Transform, digital filters, application examples.

Prerequisites: CS111, MAS016, MAS017

Bibliography:

  1. S. Theodorides, Digital Signal Processing, University of Patras Publishing, 1992.
  2. J. H. McClellan, R. W. Schafer and M. A. Yoder, DSP First, Prentice Hall, 1998.
  3. The Student Edition of Matlab: User’s, Guide, Prentice Hall, 2005.

Teaching methods: Lectures (3 hours weekly) and Laboratory sessions (1.5 hours weekly).

Assessment: Final exam, midterm exam and homework (laboratory exercises, additional exercises, final project).

CS426 Computer Graphics

Type: Restricted choice

Level: Undergraduate

Semester: Fall or Spring

Credit: 7,5 ECTS units

Instructor: A. Aristidou

Objectives: Introduction to the basic principles of digital image synthesis. Explain how a 3-dimensional virtual world is defined starting from the geometry, the materials, the lights and cameras and how the 2-dimensional resulting image is produced by going through the graphics pipeline. Provision of both the theoretical foundations as well as practical skills through the use of industry standards, such as OpenGL or DirectX. Finally, the students will learn to use popular game consoles to develop an application, such as Unity3D.

Content: Scene construction, scene hierarchies, camera specification, projections of primitives, clipping, visible surface determination, polygon rasterisation (z-buffer), texture mapping, local and global illumination, shadows, ray tracing, radiosity, real-time acceleration techniques, AR/VR, introduction to character animation.

Prerequisites: CS232

Bibliography:

  1. J. F. Hughes, A. van Dam, M. Mcguire, D. F. Sklar, J. D. Foley, S. K. Feiner, K. Akeley, Computer Graphics: Principles and Practice, Addison-Wesley Professional; 3rd edition, ISBN-13: 978-0321399526, 2013.

  2. M. Slater, A. Steed, Y. Chrysanthou, Computer Graphics and Virtual Environments: From Realism to Real-Time, Addison Wesley publishers, ISBN 0-201-62420-6, 2001.

  3. T. Theoharis, G. Papaioannou, N. Platis, N. M. Patrikalakis, A K Peters, Graphics and Visualization: Principles & Algorithm, ISBN-13: 978-1568812748, 2007.

  4. E. Angel, D. Shreiner, Interactive Computer Graphics with WebGL Pearson, 7th edition, ISBN-13: 978-1292019345. 2014.

Teaching methods: Lectures (3 hours weekly) and Laboratory sessions (1.5 hours weekly).

Assessment: Final exam, midterm exam and homework.

CS427 Mobile Computer Networks

Type: Restricted Choice

Level: Undergraduate

Semester: Fall or Srping

Credit: 7,5 ECTS units

Instructor: P. Kolios

Objectives: The objective of this course is to introduce students into wireless mobile/local/cellular networks with an emphasis on the fundamental concepts and principles of the technology which are important for the design, application, evaluation and development of these systems. The course will also cover new architectures and topologies, existing and proposed standards as well as open research issues.

Content: Wireless environment, Interference and other problems in wireless communications, Architectures and technologies of wireless networks and wireless communication, Wireless MAC protocols, Wireless Local Area Networks (WLAN), Mobile Networks (emphasis on latest architectures, 3G, 4G, 5G), Mobility Management, wireless network technologies (ad-hoc, sensor, vehicular networks, Internet of Things), Open research issues and challenges.

Prerequisites: CS324

Bibliography:

  1. C. Beard, W. Stallings, Wireless Communication Networks and Systems, Pearson, 1st Edition, 2015.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam, mobile app project and lab exercises.

CS428 Internet of Things: Programming and Application

Type: Restricted Choice

Level: Undergraduate

Semester: Fall or Spring

Credit: 7,5 ECTS units

Instructor: P. Kolios

Language: English

Objectives: Build embedded systems for IoT applications.

Content: Introduction to the Internet of Things. Programming of embedded systems. Network connectivity: Bluetooth, LoRa, WiFi, 5G. Edge/ Fog/ Cloud Computing. Decisions and Optimization. Dynamics and Control.

Prerequisites: -

Bibliography:

  1. Model-Based Approaches to the Internet of Things, Pascal Hirmer, Springer Cham, 2023
  2. Internet Of Things: Architecture and Design Principles, Raj Kamal, Mc Graw Hill India, 2017
  3. Data Driven Science and Engineering, S. Brunton, J. Kutz, Cambridge University Press, 2019
  4. IoT Fundamentals: Networking Technologies, Protocols, and Use Cases for the Internet of Things, D. Hanes, G. Salgueiro, P. Grossetete, R. Barton, J. Henry, Cisco Press, 2017

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory (2 hours weekly).

Assessment: Final exam, midterm exam, project and lab exercises.

CS429 Theory and Practice of Compilers

Type: Restricted choice

Level: Undergraduate

Semester: Fall or Spring

Credit: 7,5 ECTS units

Instructor: E. Athanasopoulos

Objectives: Introduction to advanced techniques of compiler design and implementation.

Content: Fundamental principles of compiler design. Relation of translators to formal languages and automata theory. Lexical, syntactic and semantic analysis, code generation and optimization, etc. Practical exercises using lex and yacc.

Prerequisites: CS211, CS231

Bibliography:

  1. V. Aho, R. Sethi, J. D. Ullman, Compilers – Principles, Techniques, and Tools, Addison-Wesley, 1986.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (theoretical and diagnostic assignments and semester project).

CS431 Synthesis of Parallel Algorithms

Type: Restricted choice

Level: Undergraduate

Semester: Fall or Spring

Credit: 7,5 ECTS units

Instructor: Ch. Georgiou

Objectives: Introduction to the fundamental techniques of parallel algorithm design and the use of these techniques in designing and analyzing parallel algorithms for basic problems. Introduction to the basic failure types appearing in parallel computing and the appropriate fault-tolerance techniques.

Content: Introduction to parallel computing. Complexity and efficiency measurements of parallel algorithms. Parallel computing models. Basic techniques for the design of parallel algorithms. Efficient parallel algorithms in Combinatorics, Graph Theory, and Matrix Theory. Complexity analysis of algorithms on the Parallel Random Access Machine (PRAM). Comparison between various models of computation. Advanced topics (fault-tolerance, atomicity, synchronization, computational limitations of PRAM).

Prerequisites: CS231

Bibliography:

  1. J. Jaja, An Introduction to Parallel Algorithms, Addison-Wesley, 1992.
  2. R. Miller, L. Boxer, Algorithms Sequential & Parallel: A Unified Approach, Prentice Hall, 2000.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam and homework (theoretical assignments).

CS432 Distributed Algorithms

Type: Restricted choice

Level: Undergraduate

Semester: Fall o Spring

Credit: 7,5 ECTS units

Instructor: ............

Objectives: Familiarization with the fundamental concepts of the Theory of Distributed Computing. Development of capabilities of designing, proving correct and analyzing distributed algorithms. Cultivation of syllogistic and mathematical approach to the field of distributed algorithms.

Content: Formal models of distributed computing: shared memory versus message passing, determinism versus randomization, concepts of synchronism, asynchrony and real-time. Design and analysis of distributed algorithms and impossibility/improbability results for fundamental problems such as mutual exclusion, consensus, synchronization, leader election, construction of minimum spanning trees. Fault tolerance: Byzantine generals, wait-free algorithms, fault degrees. Formal methods for proving correctness of distributed algorithms. Advanced topics. Special emphasis throughout the course on lower and upper bounds on time and memory.

Prerequisites: CS211, CS231

Bibliography:

  1. H. Attiya, J. L. Welch, Distributed Computing: Fundamentals, Simulations and Advanced Topics, Second Edition, John Wiley and Sons, 2003.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam, homework, participation in class and attendance.

CS433 Constraint Programming and Satisfaction

Type: Restricted choice

Level: Undergraduate

Semester: Fall or Spring

Credit: 7,5 ECTS units

Instructor: Y. Dimopoulos

Objectives: A significant number of problems in Computer Science over a wide spectrum are special cases of Constraint Satisfaction problem. This course introduces ways to approach such problems and the associated software. Students will be able to understand the structure and the behavior of Constraint Satisfaction problems and will get exposure to basic algorithms solving them. They will get experience over tools for Constraint Programming, the range of solvable problems and their applications to problem solving.

Content: Definition of constraint satisfaction problems. Constraint representation and complexity. Various forms of consistency. Backtracking, look-ahead and conditions for efficient solving. Algorithms for Propositional Satisfiability. Available commercial products. Study of problems from different application domains, their modeling and solution methods.

Prerequisites: CS111, CS231

Bibliography:

  1. F. Rossi, P. van Beek, T. Walsh. Handbook of Constraint Programming. Elsevier, 2006.
  2. R. Dechter, Constraint Processing, Morgan Keufmann, 2003.

Teaching methods: Lectures (3 hours weekly) and Recitation (1 hour weekly).

Assessment: Final exam, midterm exam and homework (programming assignments).

CS434 Logic Programming and Artificial Intelligence

Type: Restricted choice

Level: Undergraduate

Semester: Fall or Spring

Credit: 7,5 ECTS units

Instructor: A. Kakas

Language: English

Objectives: Familiarization with the basic concepts of Logic Programming and practical exercises in implementing them with the PROLOG language. Development of capabilities of applying Logic Programming to problems of Artificial Intelligence.

Content: Basic principles of Logic Programming and implementation using the language Prolog. Relation of Logic Programming to modern considerations regarding Artificial Intelligence. Solving application problems drawn from the fields of Artificial Intelligence and the Semantic Web, making use of Logic Programming and Constraint Logic Programming.

Prerequisites: CS111

Bibliography:

  1. L. Sterling, E. Shapino, The Art of Prolog, 2nd Edition, The MIT Press, 1994.
  2. M. Bramer, Logic Programming with Prolog, Springer, 2009.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1 hour weekly).

Assessment: Final exam, midterm exam and homework.

CS435 Human Computer Interaction

Type: Restricted choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: G. Papadopoulos

Objectives: Appreciation of the importance of designing good user interfaces and the relation of user interface design and the way users interact with computers. Experience with applying a well-known methodology for designing interactive systems, starting from identifying user’s needs, to applying usability evaluation methods.

Content: Analysis of the human as a computer system user (knowledge models, graphical animation, cognitive models). Interactive technologies (input-output devices, window environments, systems for collaborative support, virtual reality). Methodologies for the design of interactive systems.

Prerequisites: ----------

Bibliography:

  1. N. Αβούρης, Εισαγωγή στην επικοινωνία ανθρώπου-υπολογιστή, Εκδόσεις ΔΙΑΥΛΟΣ, Αθήνα, 2000.
  2. J. Preece, Y. Rogers, H. Sharp, Interaction Design: Beyond Human-Computer Interacrtion, John Wiley and Sons, 2002.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework.

CS441 Advanced Software Engineering

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: G. Papadopoulos

Language: English

Objectives: Familiarization and understanding of advanced principles, concepts and practices of software engineering. A number of contemporary areas of software engineering will be covered. This course further serves as a “roadmap” for advanced electives and graduate courses in software engineering.

Content: Software reuse. Distributed software engineering. Service oriented architectures. Real-time systems. Project Management. Human-Computer Interaction for Software Engineering (interaction design, design rules, implementation and evaluation, universal design, user support).

Prerequisites: CS343

Bibliography:

  1. Ian Sommerville, 'Software Engineering’, Pearson, 10th edition, 2016, ISBN 10: 1-292-09613-4, ISBN 13: 978-1-292-09613-1.
  2. Alan Dix, Janet Finlay, Gregory D. Abowd, Russell Beale, ‘Human Computer Interaction’, Prentice Hall, 3rd edition, 2004, ISBN 10: 0-13-046109-1, ISBN 13: 978-0-13-046109-4.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam, homework (theoretical problems – study / analysis of a software system) and laboratory exercise.

CS442 Computational Learning Systems

Type: Restricted Choice

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: Ch. Christodoulou

Objectives: Familiarization with theoretical and practical issues involved in Computational Learning Systems. Study of machine learning methods as they have developed in recent years. Implementation and assessment of Computational Learning Systems

Content: Introduction to Pattern Recognition, Multilayered Neural Networks and backpropagation learning algorithim, Recurrent Neural Networks, Reinforcement Learning, Hopfield Networks & Boltzmann Machines, Radial Basis Functions, Self-Organising Maps. Survey of the developments in artificial intelligence, machine learning, expert systems, cognitive science, robotics and artificial neural networks, which contributed to the development of the theory of learning systems

Prerequisites: CS231

Bibliography:

  1. C. M. Bishop, Neural Networks for Pattern Recognition, Oxford University Press, 1995.
  2. S. Haykin, Neural Networks and Learning Machines, 3rd Edition, Prentice Hall, 2009.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (laboratory exercises).

CS443 Software Reuse

Type: Restricted Choice

Level: Undergraduate

Semester: Fall or Spring

Credit: 7,5 ECTS units

Instructor: -----------

Objectives: Understanding the usefulness of software reuse. Deepening in the different levels of reuse and understanding the differences between them. Use of software components in practice.

Content: Levels of reuse. Component-based development and composition. Best practices for reuse. Evolution of reuse. Software repositories. Search and retrieval. Design patterns. Object-oriented programming standards. Open source software. Open source licensing and legal issues. Organization policies and open-source based development. Outsourcing. Model-Driven Engineering principles. Service-Oriented Computing. Aspect-Oriented Programming.

Prerequisites: CS233, CS361

Bibliography:

  1. Μ. Ezran, Μ. Morisio, C. Tully, Practical Software Reuse, Practicioner Series, 2002.
  2. E. Freeman, E. Robson, B. Bates, K. Sierra, Head First Design Patterns, O'Reilly Media, 2004.
  3. C. Horstmann, A Practical Guide to Open Source Licensing, Wiley, 2nd Edition, 2006.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam and midterm exam, homework and semester project.

CS444 Computational Intelligent Systems

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: Chr. Christodoulou

Objectives: Global overview of Computational Intelligence and its applications in solving "real" problems in various disciplines such as decision making support, classification, prognosis and prediction, system optimization and recreational design. Moreover there will be an introduction to computational neuroscience/neuroinformatics as well as in cognitive science.

Content: Evolutionary Computing. Genetic Algorithms. Artificial Neural Networks. Fuzzy Systems. Artificial Life. Computational Neuroscience/Neuroinformatics; Hodgkin & Huxley and Integrate-and-Fire neuron models; Neural Coding; Hebbian Learning and Synaptic Plasticity; introduction to cognitive science. Development and Implementation of Computational Intelligence Systems.

Bibliography:

  1. P. Engelbrecht, Computational Intelligence: An Introduction, John Wiley and Sons, 2nd edition 2007.
  2. R. C. Eberhart, Y. Shi, Computational Intelligence: Concepts to Implementations, Elsevier, 2007.
  3. E. R. Kandel, Αναζητώντας τη Μνήμη, (Μετάφραση A. Καραμανίδης), Πανεπιστημιακές Εκδόσεις Κρήτης, 2008.
  4. P. Dayan, L. Abbott, Theoretical Neuroscience: Computational and Mathematical Modelling of Neural Systems, MIT Press, 2001.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (laboratory exercises, additional exercises, final project).

CS445 Digital Image Processing

Type: Restricted Choice

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: ..............

Language: English

Objectives: Introduction to the basic principles of Digital Image Processing: Digital Image and Video. Analysis and implementation of image and video processing and analysis algorithms and their application in industrial and biomedical systems. Content: Binary Image Representation. Image Histogram and Point Operations. Discrete Fourier Transform. Linear Image Filtering. Non Linear Image Filtering Pipeling. Image Compression. Image Analysis I. Image Analysis II. Digital Video Processing.

Prerequisites: CS133, MAS029

Bibliography:

  1. R. C. Gonzalez, R. E. Woods, Digital Image Processing, 2nd Edition, Addison-Wesley, 2002.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (laboratory exercises, additional exercises, final project).

CS446 Advanced Topics in Databases

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: D. Zeinalipour

Objectives: Familiarization with advanced topics in the design and management of Databases (and special kinds of those). Exposure to significant open problems and research directions in the field of Databases.

Content: Theoretical approach to logical and physical design of databases. Algorithms for logical and physical design of databases. Primary and secondary indexing techniques. Advanced query processing and query optimization. Query parallelism. Concurrency control and recovery, integrity and security of data. Distributed databases and introductory concepts distributed transaction processing involving multiple and heterogeneous databases. Problems of interfacing a database with software.

Prerequisites: CS342

Bibliography:

  1. R. Ramakrishnan, J. Gehrke, Database Management Systems, 3rd Edition, McGraw-Hill, 2003.
  2. R. Elmasri, S. Navathe, Fundamentals of Database Systems, 7th Edition, Addison-Wesley, 2016.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1 hour weekly).

Assessment: Final exam, midterm exam, programming exercises and presentation.

CS447 Computer Vision

Type: Restricted Choice

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: C. Pattichis

Objectives: Familiarity with the basic concepts and methods of developing a simple computerized vision system. Introduction and understanding of commands in a programming language to support the required functionality for developing computational vision systems. Development of applications utilizing the previous

Content: Basic concepts and methodologies relating to the subject of Computer Vision. Image information, image processing, feature extraction. Image segmentation, clustering, multiple-image processing, case studies.

Prerequisites: CS231, MAS016

Bibliography:

  1. D. Forsyth, J. Ponce, Computer Vision: A Modern Approach, 2nd Edition, Pearson, 2011.
  2. S.D. Prince, Computer Vision: Models, Learning and Inference, 2012.
  3. R. Hartley, A. Zeisserman, Multiple View Geometry, Cambridge University Press, 2003.
  4. C. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2007.
  5. O. Faugeras, Q.T. Luong, Geometry of Multiple Images, MIT Press, 2001.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1 hour weekly).

Assessment: Final exam, midterm exam, programming exercises and presentation.

CS448 Data Mining on the Web

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: G. Pallis

Objectives: Introduction to data mining, Clustering, Classification, Association Rules, Link Analysis, Web communities, Web Personalization.

Content: Data mining on the Web refers to the automatic discovery of interesting and useful patterns from the data associated with the usage, content, and the linkage structure of Web resources. It has quickly become one of the most popular areas in computing and information systems because of its direct applications in e-commerce, information retrieval/filtering, Web personalization, and recommender systems. The primary focus of this course is on examining techniques from data mining to extract useful knowledge from Web data. This course will be focused on a detailed overview of the data mining process and techniques, specifically those that are most relevant to Web mining. Several topics will be covered such as Map-Reduce framework, Web data clustering, classification, association rules, recommendation systems, link analysis, social networks and Web advertising.

Prerequisites: CS231, CS342

Bibliography:

  1. A. Rajaraman, J. D. Ullman, Mining of Massive Datasets, Cambridge University Press, 2011.
  2. J. Han, M. Kamber, Data Mining: Concepts and Techniques, 2nd Edition, Morgan Kaufmann, 2006.
  3. B. Liu, Web Data Mining: Exploring Hyperlinks, Contents and Usage Data, Springer, 2007.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (2 hour weekly).

Assessment: Final exam, midterm exam, homework (programming and theoretical assignments) and semester project.

CS449 Professional Practice in Software Engineering

Type:Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: G. Kapitsaki

Language: English

Objectives: Embedding and practical application of the theoretical approaches and methodologies of Software Engineering for the development of a product-software system that serves the needs of an organization belonging to the local market. Practical use of processes and tools, such as central and distributed version control systems (SVN and GitHub), testing at different levels, group communication, professionalism, and ethical conduct.

Content: Undertake and carrying out to completion a significant software project by small student groups (of about 2-6 students each). All phases in the development of software. Some of the specific projects come from the industrial sector. Version control systems (Git and GitHub). Use of the Scrum development methodology (Scrum review meeting, Scrum retrospective, etc.). Testing and automated testing. Software system analysis through software metrics. Specialized issues depending on the project nature (e.g., deployment on web servers, GUI tools and frameworks etc.).

Prerequisites: CS343

Bibliography:

  1. Selected articles

Teaching methods: Students are grouped in teams of 2-6 persons. Meetings/discussions are held regularly (weekly per team), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment:Assessment of the product-software system, assessment of the corresponding documentation, quizzes, oral presentation and final exam.

CS450 Network Virtualisation and Management

Type:Restricted Choice

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: A. Pitsillides / V. Vassiliou

Language: English

Objectives: Familiarization with fundamental topics in the management of communication networks, with a focus on the Internet and latest trends, including SDN, OpenFlow, and Network Virtualisation.

Content: Network management is an essential component in today’s networks, as the world increasingly relies on networked systems and services to function. The course aims to cover the latest approaches in network management, including virtualisation of the network itself (e.g. Software Defined Networks, Network Function Virtualisation, Virtual Infrastructure Management, VNF-Virtual Network Functions, NFV Management and orchestration, Network Services) and the cloud (e.g. OpenStack), as well as more traditional techniques of network management (e.g. SNMP).

Prerequisites: CS324

Bibliography:

  1. M. Subramanian, Network Management: Principles and Practices, 2nd Edition, 2012, Prentice Hall.

  2. A. Clemm, Network Management Fundamentals, 2006, Cisco Press® Fundamentals Series.

  3. N. L. S. da Fonseca, R. Boutaba, Cloud Services, Networking, and Management, IEEE Press Series on Networks and Services Management, April 2015.

Teaching methods: The course combines lectures and tutorials with assignments, labs and experimentation with networking management techniques and tools. It will be delivered in the form of Seminars, which will cover theory and be intertwined with hands-on experience in a real context, where students will apply theory, techniques and available tools in a real network. Seminar type Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly)..

Assessment: Individual project, assignments and laboratory work. No exams will be given.

CS451 Software Analysis

Type:Restricted Choice

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: E. Athanasopoulos

Language: Greek or English

Objectives: The course explores fundamental concepts in analyzing software of multiple forms and for different purposes. Many times, we need to analyze software for (a) locating bugs (debugging), (b) measuring performance bottlenecks (profiling), (c) adding instrumentation that enhances a program’s behavior (e.g., add a security defense). The course exposes several techniques for working directly with the binary form of software (binary analysis and re-writing), as well as exploring and augmenting the source of C/C++ programs through the extension of modern compiler toolchains (LLVM).

Content: ELF format of Unix binaries. Tools that can work and explore binaries in Unix (show different sections, symbols, shared libraries, etc.). How relocations and shared libraries work in binaries (e.g., the usage of GOT). Using ptrace(). Disassembling binaries using the Capstone framework. Re-writing binaries programmatically. Pre-loading binaries. Dynamic and static analysis of binary code. C/C++ instrumentation through LLVM passes. Applications of software analysis.

Prerequisites: CS211, CS232

Bibliography:

  1. Practical Binary Analysis: Build Your Own Linux Tools for Binary Instrumentation, Analysis, and Disassembly. Dennis Andriesse. ISBN-10: 1593279124.

  2. LLVM documentation.

  3. Published papers.

Teaching methods: Lectures (3 hours weekly) and Laboratory sessions (1.5 hour weekly).

Assessment: Final exam, midterm exam, programming assignment.

CS452 Datacenter Computing

Type:Restricted Choice

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: H. Volos

Language: Greek or English

Objectives: The course aims to study the key principles and concepts that underlie a modern data center. The course conducts a vertical study of datacenter technology covering the entire system stack, including hardware architectures, systems software, and application programming frameworks. The course also explores cross-cutting concerns, such as total cost of ownership, service level objectives, reliability and availability, energy efficiency, and privacy and security.

Content: Server design, heterogeneous hardware and accelerators, total-cost of ownership (TCO) analysis, performance analysis, data-center storage, data-center networking, cloud computing, virtualization and containers, resource management, microservices, serverless computing, side channels, trusted execution.

Prerequisites: CS222

Bibliography:

  1. Luiz André Barroso, Urs Hölzle, and Parthasarathy Ranganatha. The Datacenter as a Computer: Designing Warehouse-Scale Machines. Third Edition Morgan & Claypool (2019).
  2. John Hennessy and David Patterson. Computer Architecture: A Quantitative Approach. Sixth Edition Morgan & Claypool (2016)
  3. Selected articles from the international literature

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).

Assessment: Final exam, midterm exam, and homework.

CS481 Software Engineering for Software as a Service

Type: Restricted Choice

Level: Undergraduate

Semester: .........

Credit: 7,5 ECTS units

Instructor: G. Kapitsaki

Objectives: Understanding of advanced concepts of software engineering. Use of Agile software methodology with applications for cloud computing. Practice via the implementation of a software system. Regression testing.

Content: Agile development models. Versoion control systems. Software systems for Software as a Service (SaaS). Test-driven development, user-centric design, refactoring and deployment. License compliance. Pair programming.

Prerequisites: CS343

Bibliography:

  1. A. Fox, D. Patterson, Engineering Software as a Service: An Agile Approach Using Cloud Computing, 2nd Edition, 2021.
  2. Selected articles from the literature.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final and midterm exam, homework and semester project.

CS482 Software Validation, Verification and Quality

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: G. Kapitsaki / G. Papadopulos

Objectives: Teaching and assimilation of basic and specialized concepts on software validation and verification. Acquisition of knowledge for designing and implementing different types of audits and debugging procedures. Deepening in concepts and practices for ensuring quality in software systems.

Content: Basic concepts and terminology for validation and verification, reviews, inspections, control (parts, system combination, regression, acceptance, coverage criteria), control of specific categories of software systems, analyzing problems and documentation. Basic principles of quality factors and quality characteristics of software, methodologies, tools, quality procedures, quality standards, models and quality metrics, quality software production process, quality plan, organize quality assurance process, quality assessment process

Prerequisites: CS361

Bibliography:

  1. P. Jorgensen, Software Testing, A Craftsman's Approach, 3rd edition, Auerbach Publications, 2008.
  2. P. Ammann, J. Offutt, Introduction to Software Testing, Cambridge University Press, 2008.
  3. J. Tian, Software Quality Engineering: Testing, Quality Assurance, and Quantifiable Improvement, Wiley, 2005.
  4. William E. Lewis, Gunasekaran Veerapillai, Software Testing and Continuous Quality Improvement, 3rd Edition, 2008.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam, homework and laboratory assignments.

CS483 Software Analysis, Modelling and Design

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: G.Kapitsaki, G. Papadopoulos

Objectives: Deepening in fundamental concepts of software analysis, modelling and design. Design of effective, efficient and competitive software products. Training in software architectures, notations, standards and methods.

Content: Fundamental concepts of software modeling (principles, conditions, properties), modeling languages, virtual models, model types. Early analysis (consistency, sufficiency, accuracy, quality). The role of models in the development and the connection with software development methodologies. Model-driven engineering. The role of software architecture in the software development lifecycle (user needs, design, implementation). The architectural design of a software system. Architectural representation.

Prerequisites: CS343

Bibliography:

  1. K. Qian, X. Fu, L. Tao, C. Xu, Software Architecture and Design Illuminated, Jones and Bartlett Learning, 2010.
  2. A. Kleppe, J. Warmer, W. Bast, MDA Explained. The Model Driven Architecture: Practice and Promise, Addison-Wesley Professional, 2003.
  3. R.N. Taylor, N. Medvidovic and E.M. Dashofy, Software Architecture, Wiley, 2010.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam, homework and laboratory assignments.

CS499 Special Issues in Computer Science: Mobile Computing Systems

Type: Restricted Choice

Level: Undergraduate

Semester: ......

Credit: 7,5 ECTS units

Instructor: .......

Objectives: The objective of this course is to promote the technology culture in the undergraduate program of the Computer Science Department. The course focuses on a specific topic of Computer Science. Further information regarding the prerequisites, description, requirements and assessment of the course will be presented when the course is announced on the Department’s website.

Content: The content of the course is formulated according to the specific topic.

Prerequisites: The consent of the instructor.

Bibliography: .......

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).

Assessment: Final exam, midterm exam and homework (laboratory exercises and additional exercises).

CS500 Industrial Placement

Type: Restricted Choice

Level: Undergraduate

Semester: Summer

Credit: 7,5 ECTS units

Instructor: E. Athanasopoulos / Chr. Georgiou / M. Dikaiakos

Objectives: Linking and applying in a real work environment the knowledge that students have acquired in the curriculum courses. Bringing students in direct contact with the new trends and needs of the industrial market as well as the demand for specific skills and competencies. Providing the students with a first experience and opportunity to adapt to a working environment and to recognize the requirements of a professional space as well as the possibility of demystifying some fears about this space: all necessary for the preparation for future entry into the industry market. In exceptional cases, it may be a precursor to future professional cooperation between the student and the employer.

Content: The industrial placement provides students with employment for a short period of time in a real work environment and on a subject related to the curriculum of the Department of Computer Science.

Prerequisites: Completion of the 3rd year of study (completion of at least156 ECTS) with a weighted average of at least 7/10

Bibliography: ......

Teaching methods: .......

Assessment: Final report.