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: C. Pattichis

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 in the laboratory for Digital Systems Design and Microprocessors.

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

Bibliography:

1. M. Mano and D.Kime, Logic and Computer Design Fundamentals and Xilinx 4.2 Package, 3rd Edition, Prentice Hall, 2003.

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 (4 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: Familirazation with Object Oriented Programming principles. Understanding of advanced concepts of the Java programming language.

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. B. Eckel, Thinking in Java, 4th Edition, Prentice Hall, 2006.

2. C. Thomas Wu, An Introduction to Object-Oriented Programming with Java, 5th Edition, Mc Graw Hill, 2006

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

Assessment: Final exam, midterm exam and homework.

CS202 Explorations into Computer Science

Type: Compulsory

Level: Undergraduate

Semester: Fall

Credit: 3 ECTS units

Instructor: M. Dikaiakos

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 and 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: P. Trancoso

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. Protection, security and reliability.

Prerequisites: CS221

Bibliography:

1. W. Stallings, Operating Systems: Internals and Design Principles, 6th Edition, Prentice Hall, 2009.

Teaching methods: Lectures (3 hours weekly) and tutorial 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: G. Pallis (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. M. A. Weiss, Data Structures and Algorithms in Java, Pearson, 2012.

2. M. Goodrich, R. Tamassia. Data Structures and Algorithms in Java, Wiley, 2011.

Teaching methods: Lectures (3 hours weekly), Laboratory sessions (2 hours weekly) and Recitation (1 hour 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: D. Zeinalipour

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. C Programming: A Modern Approach, K.N. King, 2nd Edition, ISBN-10: 0393979504, ISBN-13: 978-0393979503, 832 pages, W. W. Norton & Company, 2008.

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

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

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

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (2 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 (Winter) / Ch. 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 and E. Tardos, Σχεδίαση Αλγορίθμων, Εκδόσεις Κλειδάριθμος, 2008. (English Version: J. Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2006).

2. S. Dasgupta, C. Papadimitriou and 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: V. Vasiliou

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

Content: Introductory course in Computer 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. Laboratory session includes practical exercises with wireshark and simulations using OPNET.

Prerequisites: CS131

Bibliography:

1. J. F. Kurose and 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 (2 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. Sazeidis

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: CS222

Bibliography:

1. D. E. Culler and 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

Language: English

Objectives: Introduction to systems security aiming for covering a wide range of security concepts. Primarily, the course helps students to become familiar with different fields and to render a global view of modern systems security. The course covers several topics, such as applied cryptography, software vulnerabilities and memory errors, attacks and defenses, mobile security, web security, network security, privacy, and anonymity.

Content: Introduction to applied cryptography (symmetric, asymmetric, and stream ciphers, cryptographic hash functions, cryptographic protocols) and security models (CIA). Software vulnerabilities and memory errors (buffer overflows, integer overflows, use-after-free, dangling pointers). Attacks (code injection, code reuse). Defenses (non-executable pages, stack canaries, code randomization, CFI, SFI, side channels). Mobile security (Android iOS). Web security (cross-site scripting, CSRF, clickjacking, phishing). Network security (botnets, DDoS, spam, security economics). Privacy and anonymity (TOR).

Prerequisites: CS232

Bibliography:

1. Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone. Handbook of Applied Cryptography, CRC Press, ISBN 0849385237. (http://cacr.uwaterloo.ca/hac/)

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

3. Published papers.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (2 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: Artificial Intelligence (AI) covers a broad spectrum of areas and this gives it an interdisciplinary character. The expert systems technology constitutes an important component of the applicative part of AI. The principal objectives of the course are (a) to introduce students to central areas of AI, that are directly relevant to the technology of expert systems, namely problem solving through the use of search and heiristics, and knowledge representation, and (b) to introduce students to the expert systems technology, focusing on first and second generation architectures and knowledge engineering methodologies.

Content: Problem solving techniques in Artificial Intelligence. Knowledge Representation Formalisms (logic, associative networks, frames, production rules). Expert Systems Technology. First and Second Generation Architectures for Expert Systems. Knowledge Engineering. Intelligent Agents. Multi-Agent Systems.

Prerequisites: CS231

Bibliography:

1. E. Keravnou, Τεχνητή Νοημοσύνη και Έμπειρα Συστήματα, Ελληνικό Ανοικτό Πανεπιστήμιο, 2000.

2. G.F. Luger and W.A. Stubblefield, Artificial Intelligence: Structures and Strategies for Complex Problem Solving, 5th Edition, Addison-Wesley, 2005.

3. G. Weiss (ed), Multiagent Systems: a modern approach to distributed AI, The MIT Press, 1999.

4. P. Jackson, Introduction to Expert Systems, 3rd Edition, Addison-Wesley, 1999.

5. E. Rich and K. Knight, Artificial Intelligence, 2nd Edition, McGraw-Hill, 1991.

6. S. Russel and P. Norviq, Artifitial Intelligence: A Modern Approach, 2nd Edition, Prentice Hall, 2002.

Teaching methods: Lectures (3 hours weekly) and Tutorials (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: ...........

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. Elmasri and S. Navathe, Fundamentals of Database Systems, Fifth Edition, Addison-Wesley, 2007.

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

3. R. Ramakrishnan and 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 hour weekly).

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

CS343 Software Engineering

Type: Compulsory

Level: Undergraduate

Semester: Winter

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 (ArgoUML, StarUML). 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: CS132, CS241

Bibliography:

1. H. Van Vliet, Software Engineering: Principles and Practice, 3rd Edition, John Wiley & Sons, 2008.

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

3. J. Whitten, L. Bentley και K. Dittman, Systems Analysis and Design Methods, 7th Edition, McGraw-Hill, 2005.

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

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

CS344 Internet Technologies

Type: Compulsory

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

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

Language: English

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

Content: Topics of Internet and World-Wide Web technologies, with an emphasis on WWW applications and Internet programming. The foundations of WWW applications including hypertext, navigation in hyperspace, hypertext usability, information overload, markup languages and methodologies of WWW application design. System issues related to Internet programming and performance: protocols, servers, WWW interactivity, Internet-based distributed systems.

Prerequisites: CS233, CS324

Bibliography:

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

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

Assessment: Final exam, homework (weekly assignments) and class participation.

CS411 Programming Languages Semantics

Type: Restricted choice

Level: Undergraduate

Semester: ----

Credit: 7,5 ECTS units

Instructor: Α. Kakas / A. Philippou

Objectives: Εξοικείωση με τις θεμελιώδεις έννοιες και αρχές που διέπουν τη Σημασιολογία των Γλωσσών Προγραμματισμού. Συγκριτική μελέτη της σημασιολογίας διαφόρων γλωσσών. Απόκτηση θεωρητικών επιδεξιοτήτων για τη μελέτη των τυπικών χαρακτηριστικών των Γλωσσών Προγραμματισμού.

Content: Basic types of programming languages semantics. procedural, declarative and axiomatic. Relations between basic types. Common semantics and their application in programming languages. Introduction to Field Theory and to Information Systems in the framework of programming language semantics.

Prerequisites: CS211, CS231

Bibliography:

1. G. Winskel, The Formal Semantics of Programming Languages, The MIT Press, 1993.

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

Assessment: Final exam, midterm exam and homework.

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

CS413 Computational Geometry

Type: Restricted choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: A. Philippou

Objectives: -----------

Content: Convex hull in the plane: basic properties and algorithms from computing it. Arrangements of line segments: computing intersections, representing subdivisions, computing an overlay. Arrangements of lines: incremental construction algorithm. The Art Gallery Problem: partition into monotone polygons, monotone polygon triangulation, simple polygon triangulation. Geometric searching: kd-trees, range trees, fractional cascading. Point location: basic properties of the trapezoid map, algorithm for constructing map and search structure, point location algorithm. Voronoi diagram: basic properties and algorithms for computing it. Delaunay triangulation: basic properties, incremental algorithm.

Prerequisites: CS231

Bibliography:

1. M. de Berg, M. van Kreveld, M. Overmars and O. Schwarzkopf, Computational Geometry: Algorithms and Applications, 2nd Edition, Springer, 2000.

2. Γ. Ζ. Εμίρης, Υπολογιστική Γεωμετρία: Μία σύγχρονη αλγοριθμική προσέγγιση, Κλειδάριθμος, 2009.

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

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

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 and 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: -----------------

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. Your UNIX/Linux: The Ultimate Guide, 3rd Edition, Sumitabha Das, McGraw Hill, ISBN-13 9780073376202, 800 pp, 2013.

2. UNIX and Linux System Administration Handbook, 4th Edition, Evi Nemeth, Garth Snyder, Trent R. Hein and Ben Whaley, ISBN-10: 0131480057, ISBN-13: 9780131480056, Prentice Hall, 1344 pp, 2011.

3. Computer Systems: A Programmer's Perspective, 3th Edition, Randal E. Bryant, David R. O'Hallaron, ISBN-10: 013409266X, ISBN-13: 9780134092669, Pearson, 1120 pp, 2016.

4. Advanced Programming in the UNIX Environment, 3rd Edition, W. Richard Stevens, Stephen A. Rago, Addison-Wesley Professional, ISBN-10: 0321637739, ISBN-13: 9780321637734, 1024 pp, 2013.

Teaching Methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1 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

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 and K. W. Ross, Computer Networking – A Top Down Approach Featuring the Internet, 7th Edition, Addison-Wesley, 2016.

2. Y.-D. Lin, T.-H. Hwang, and F. Baker , Computer Networks, An Open Source Approach , McGraw Hill, 2011.

Teaching methods: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (2 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, Third Edition, Pearson-Prentice Hall, 2007.

2. C.P. Pfleeger, S.L. Pfleeger , Security in Computing, Fourth 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, Univeristy 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

Credit: 7,5 ECTS units

Instructor: Y. Chrysanthou / ..............

Language: English

Objectives: Introduction to the basic principles of digital image synthesis. Explain how a 3-dimentional virtual world is defined starting from the geometry, the materials, the lights and cameras and how the 2-dimentional 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.

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.

Prerequisites: CS132

Bibliography:

1. M. Slater, A. Steed and Y. Chrysanthou, Computer Graphics and Virtual Environments: From Realism to Real-Time, Addison-Wesley, 2001.

2. P. Shirley, M. Ashikhmin and S. Marschner, Fundamentals of Computer Graphics, 3rd Revised Edition, 2009.

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

Credit: 7,5 ECTS units

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

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. J. Schiller, Mobile Communications, Second edition, Addison-Wesley, 2003.

2. R. S. Koodli and C. E. Perkins, Mobile Internetworking with IPv6: Concepts, Principles and Practices, Wiley-Interscience, 2007.

3. W. Stallings, Wireless Communications and Networks, Prentice Hall, 2nd Edition, 2002.

4. H. Karl and A. Willing, Protocols and Architectures for Wireless Sensor Networks, Wiley, 2007.

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

Assessment: Final exam, midterm exam and homework.

CS428 Internet of Things: Programming and Application

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: P. Evripidou

Language: English

Objectives: ------------

Content: Programming of embedded systems. Introduction to the Internet of Things. Introduction to the mobile processors of ARM for embedded systems. Interruptions and memory consumption. Programming for embedded and mobile systems. Mobile computing. Architecture of mobile processors of ARM. Programming in smartphones and applications. Network connectivity: Bluetooth. Cloud Computing. Connectivity on the cloud.

Prerequisites: CS221

Bibliography:

1. W. Woff, Computers as Components: Principles of Embedded Computing System Design, Morgan Kaufman.

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

Assessment: Final exam, midterm exam and homework.

CS429 Theory and Practice of Compilers

Type: Restricted choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: P. Trancoso

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 and J. D. Ullman, Compilers – Principles, Techniques, and Tools, Addison-Wesley, 1986.

Teaching methods: Lectures (3 hours 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: 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 and 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

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 and 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: Spring

Credit: 7,5 ECTS units

Instructor: Y. Dimopoulos

Objectives: A significant number of problems in Computer Science over a wide spectrum ranging from Computer Vision and Artificial Intelligence to the management of Computer Networks and Scheduling are special cases of Constraint Satisfaction problem. This course introduces the way to approach such problems and corresponding 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 and look-ahead techniques. Intelligent backtracking and condition for solution finding without backtracking. Heuristic and local methods for solution searching. Available commercial products. Study of problems from different application domains, their modeling and the complexity of various algorithms solving them.

Prerequisites: CS111, CS231

Bibliography:

1. R. Dechter, Constraint Processing, Morgan Keufmann, 2003.

2. E. Tsang, Foundations of Constraint Satisfaction, Academic Press, 1993.

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

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 and 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) and Laboratory sessions (1 hour weekly).

Assessment: Final exam, midterm exam and homework.

CS435 Human Computer Interaction

Type: Restricted choice

Level: Undergraduate

Semester: Fall

Credit: 7,5 ECTS units

Instructor: S. Loizou Kleanthous

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 and H. Sharp, Interaction Design: Beyond Human-Computer Interacrtion, John Wiley and Sons, 2002.

Teaching methods: Lectures (3 hours 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: Agile software development. Model driven engineering. Legacy systems. Sociotechnical systems. Software reuse. Component Based systems. Distributed software engineering. Service oriented architectures. Embedded software. Aspect oriented software engineering.

Prerequisites: CS343

Bibliography:

1. I. Sommerville, Software Engineering, 9th Edition, Addison-Wesley, 2011.

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

3. Ε. J. Baude, M. E. Bernstein, Software Engineering – Modern approaches, John Wiley & Sons, 2nd edition, 2011.

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

Assessment: Final exam, midterm exam, homework (theoretical problems – study / analysis of a software system) and lab 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) and Laboratory sessions (1.5 hours weekly).

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

CS443 Software Reuse

Type: Restricted Choice

Level: Undergraduate

Semester: Winter

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) and Laboratory sessions (1.5 hours weekly).

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

CS444 Computational Intelligent Systems

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

Instructor: C.N. Schizas, Ch 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 and Y. Shi, Computational Intelligence: Concepts to Implementations, Elsevier, 2007.

3. E. R. Kandel, Αναζητώντας τη Μνήμη, (Μετάφραση A. Καραμανίδης), Πανεπιστημιακές Εκδόσεις Κρήτης, 2008.

4. P. Dayan and L. Abbott, Theoretical Neuroscience: Computational and Mathematical Modelling of Neural Systems, MIT Press, 2001.

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

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: CS132, MAS016

Bibliography:

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

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

CS446 Advanced Topics in Databases

Type: Restricted Choice

Level: Undergraduate

Semester: Spring

Credit: 7,5 ECTS units

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

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 and J. Gehrke, Database Management Systems, 3rd Edition, McGraw-Hill, 2003.

2. R. Elmasri and S. Navathe, Fundamentals of Database Systems, 5th Edition, Addison-Wesley, 2007.

Teaching methods: Lectures (3 hours weekly) and Recitation/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: ..............

Objectives: ---------

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 and J. Ponce, Computer Vision: A Modern Approach, Prentice-Hall, 2003.

2. R. Hartley and A. Zeisserman, Multiple View Geometry, Cambridge University Press, 2003.

3. C. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2007.

4. O. Faugeras and Q.T. Luong, Geometry of Multiple Images, MIT Press, 2001.

5. B. Horn, Robot Vision, MIT Press, Cambridge, Massachusetts, 1986.

Teaching methods: Lectures (3 hours 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. J. Ham and M. Kamber, Data Mining: Concepts and Techniques, Second Edition, Morgan Kaufmann, 2006.

2. Μ. Χαλκίδη και Μ. Βαζιργιάννης, Εξόρυξη Γνώσης από Βάσεις Δεδομένων και Παγκόσμιο Ιστό, Εκδόσεις Gutenberg, 2005.

3. A. Rajaraman and J.D. Ullman, Mining of Massive Data Sets, Stanford University Press, 2010.

4. B. Liu, Web Data Mining: Exploring Hyperlinks, Contents and Usage Data, Springer, 2007.

Teaching methods: Lectures (3 hours weekly) and Laboratory sessions (1 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 (SVN and GitHub). Testing. Software system analysis through software metrics. Speciaized 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). Laboratory sessions (1.5 hours weekly).

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

CS481 Software Engineering for Software as a Service

Type: Restricted Choice

Level: Undergraduate

Semester: .........

Credit: 7,5 ECTS units

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

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, 2014.

2. Selected articles from the literature.

Teaching methods: Lectures (3 hours 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: ...................

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

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) and Laboratory sessions (1.5 hours weekly).

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

CS495 Special Issues in Computer Science: Computational Complexity

Type: Restricted Choice

Level: Undergraduate

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

Credit: 7,5 ECTS units

Instructor: M. Mavronicolas

Objectives: Εξοικείωση με ορισμένα από τα βασικότερα (κλασικά και μοντέρνα) αποτελέσματα της Θεωρίας Υπολογιστικής Πολυπλοκότητας. Εξοικείωσξ με αναγωγές εταξύ των υπολογιστικών προβλημάτων. Εξοικείωση με τα σημαντικότερα ανοικτά ερωτήματα της Θεωρίας της Υπολογιστκής Πολυπλοκότητας, με πρωτεύον το διάσημο πρόβλημα N έναντι NP.

Content: Basic concepts of computational problems and algorithms. Algorithm models (e.g. Turing machine, logical circuit, RAM machine). Time and space complexity. Reduction. P, NP and co-NP classes. Theory of NP Completeness. P versus NP problem. Space classes NL, co-NL, L and PSPACE: their relations and their complete problems. Full search problems and TFNP class. PPAD and PLS classes: their relations, their relative classes and their complete problems. Probabilistic classes (e.g. BPP, RP, ZPP). Polynomial Hierarchy and high classes (e.g. EXP and NEXP).

Prerequisites: CS211

Bibliography:

1. S. Arora και B. Barak, Computational Complexity – A Modern Approach, Cambridge 2009.

2. C.H. Papadimitriou, Computational Comlexity, Addison-Wesley, 1993.

3. M. Sipser, Εισαγωγή στη Θεωρία Υπολογισμού, Πανεπιστημιακές Εκδόσεις Κρήτης, 2006.

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

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

CS499 Special Issues in Computer Science: Mobile Computing Systems

Type: Restricted Choice

Level: Undergraduate

Semester:Fall

Credit: 7,5 ECTS units

Instructor: N. Stylianides

Objectives: Design and functional principles of modern mobile computing. Provide knowledge in mobile computing application design principles, development procedure, communication schema and usability. Development of skills and attitudes for the analysis, evaluation and development of fundamental mobile computing components.

Content: General review of operating systems. Mobile operating systems. Wireless networks and object oriented programming. Software design patterns. Android OS application development procedure: application development framework, peripheral devices, database communication, user interface development, application publication and installation.

Prerequisites: CS233

Bibliography:

1. R. Meier, Professional Android 2 Application Development, Wiley Publishing, Inc. 2010.

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

3. D. Gallardo, E. Burnette and R. McGovern, Εclipse in Action. A guide for Java developers, Manning, 2003.

4. C. Horstmann , Object-Oriented Design and Patterns , Wiley, 2nd Edition, 2006.

5. M. Fowler, UML Distilled: A Brief Guide to the Standard Object Modeling Language, Addison Wesley, 3nd Edition, 2000.

6. Επιλεγμένα άρθρα από τη διεθνή βιβλιογραφία.

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

Assessment: Homework, group project and presentation, final exam, participation during lectures.