Each description shows the name of the instructor offering the course in the academic year 2025/2026 or the instructor who suggested the course for Restricted Elective courses not offered during the academic year 2025/2026. The language of instruction of all courses is Greek, unless otherwise stated in the course description (a small number of courses are offered in English).
Course Title: Discrete Structures in Computer Science and Computation
Course Code: CS 111
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year/1st semester
Teacher’s Name: A. Pieris
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Introduction to basic concepts of discrete mathematics and how they are applied to Computer Science. Developing a mathematical way of thinking.
Learning Outcomes: After the completion of the course students will have acquired the following knowledge and skills:
- Understand and use Propositional and Predicate Logic.
- Concepts of logical conclusion and logical proof of conclusion.
- Basic knowledge of sets and functions.
- Concept of countability of infinite sets and perception of the existence of non-computable problems (via the concept of uncountability of infinite sets).
- Understand and use mathematical induction (weak induction, strong induction, structural induction).
- Understand and use basic principles of counting, permutations, and combinations.
- Set relations and partial orders with applications to Computer Science.
- Basic concepts of graph theory.
Prerequisites: None Required: None
Course Content: Logic: Propositional and Predicate Logic. Mathematical reasoning: inference rules, proof methods. Foundational concepts: sets and functions. Countability and computability. Mathematical induction: weak induction, strong induction, structural induction. Counting principles: sum rule, product rule, inclusion-exclusion principle, pigeonhole principle. Permutations and combinations. Set relations: properties and applications, equivalence relations, partial orders. Basic concepts of graph theory.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly), Laboratory sessions (1.5 hours weekly).
Bibliography:
- K. Rosen, Discrete Mathematics and its Applications, 5th Edition, McGraw-Hill, 2003.
Assessment: Final exam, quizzes and homework.
Language: Greek
Course Title: Digital Systems
Course Code: CS 121
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year/2nd semester
Teacher’s Name: C. Pattichis / P. Kolios
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Introduction to the basic principles for the design and operation of digital systems, the organization and operation of a simple computer and programming at the assembly level.
Learning Outcomes:
- Familiarization with basic trends of computer technology
- Understanding methods for representing digital information
- Introduction to basic design and analysis of circuits with combinational and sequential logic
- Understanding the basic functional units needed to build a computer
- Familiarization with basic concepts and methods for organizing a simple computer
- Introduction of the concept of Instruction Set Architecture
- Introduction and familiarization with assembly level programming
Prerequisites: None Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- D. A. Patterson, J. L. Hennessy, Computer Organization and Design, 5th Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design) Paperback, 2013.
- M. Morris Mano, Charles Kime, Tom Martin, Logic & Computer Design Fundamentals, 5th Edition, Pearson, 2015.
Assessment: Final exam, midterm exam, quizzes and homework (final project and exercises).
Language: Greek
Course Title: Programming Principles
Course Code: CS 131
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year/1st semester
Teacher’s Name: Y. Sazeides / E. Keravnou-Papailiou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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).
Learning Outcomes:
- Understanding basic algorithmic structures.
- Understanding fundamental programming concepts.
- Grasping principles of good programming, algorithmic techniques and program structures.
- Becoming familiar with the concepts of program abstraction (functions, methods), data abstraction (abstract data types), reusability, modularity and hierarchical structuring.
- Developing skills in algorithmic problem solving using structured procedural and object-oriented thinking.
- Developing competence in designing, implementing, testing, debugging and documenting computer programs.
- Being able to reason about the correctness, behavior and quality of algorithmic solutions.
- Being able to evaluate the extensibility potential of programs.
- Developing algorithmic thinking, independently of any particular programming language.
- Developing competence in using the Java high level programming language.
Prerequisites: None Required: None
Course Content: Presentation of the software development process and introduction to the basic principles of programming and program design using the Java programming language. Global overview of the Java programming language with emphasis on built-in and abstract data types, control structures, functions, modular programming and reusability. Use of recursion.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- R. Sedgewick and K. Wayne, Introduction to Programming in Java: An Interdisciplinary Approach, Addison Wesley, 2008
Assessment: Final exam, midterm exam, homework (programming assignments) and quizzes.
Language: Greek
Course Title: Object Oriented Programming
Course Code: CS 132
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year/2nd semester
Teacher’s Name: Chr. Christoforou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 2 x 1.5 hours
Course Purpose and Objectives: The course aims to teach the fundamentals of object-oriented analysis, design, and programming using the Java programming language. The main goal of the course is to familiarize students with the principles of Object-Oriented Programming (OOP), to help them develop proficiency in using the Object-Oriented Methodology and the Java language to solve computational problems, to apply advanced programming techniques, and to address complex problems. Students will gain experience in large-scale software development and teamwork.
Learning Outcomes: A student successfully completing the course should:
- Be able to explain and apply adequately the fundamental principles of object-oriented programming and their implementation in the JAVA programming language.
- Be able to understand and explain adequately the Java memory management model and the concepts of stack, heap and garbage collection.
- Be able to analyze computational problems and invent object-oriented solutions to computational problems described in natural language using object-oriented design techniques.
- Be able to describe the plan to solve a problem in an object-oriented manner, using natural language and UML diagrams.
- Be fully familiar with the syntax, semantics and textbooks of the Java API.
- Be able to code the solution of a computational problem using the Java language.
- Be able to develop, document, test, and debug Java programs efficiently and effectively to implement algorithms in an efficient manner.
- Addresses complex computational problems using object-oriented programming.
- Use the Integrated Development Environment Eclipse as well as editors like Sublime, Atom or Emacs.
- Code JAVA programs with the appropriate programming style.
- Be able to collaborate effectively with other developers for problem analysis and program coding, using techniques such as pair programming and tools such as the git publishing control system and the Github and Stackoverflow online services.
- Communicate the findings of his work (object-oriented drawings, Java programs) to other developers in an effective manner.
- Has a good knowledge of English terminology of object-oriented programming.
Prerequisites: CS 131 Required: None
Course Content: Analysis and Design of Computational Problems. Abstraction. Invariants. Overview of the Java Programming Environment. The Java Virtual Machine (JVM). Compilation and Interpretation. Application Programming Interface (API). Commenting and documenting Java code. Pair programming. Integrated Development Environments, debugging tools, performance evaluation. Version control tools: git, GitHub. Introduction to Object-Orientation. Objects and Classes. Memory Management and Garbage Collection. Object-Oriented Design and Methodologies and Unified Modeling Language (UML). Inheritance. Polymorphism. Java Interfaces and Inner Classes. Exceptions and Exception Handling. Files and Streams. Generic Classes. Linked Structures. Collections and Iterators. Lambda functions.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (3 hours weekly).
Bibliography:
- "Absolute Java" Walter Savitch. 6th Edition (Global Edition). Pearson 2016.
- “Object-oriented Design and Patterns” Cay Horstmann, 2nd edition. Wiley, 2006.
- "Modern Java in Action" R-G. Urma, M. Fusco, A. Mycroft. Manning, 2021.
- "Java Tutorials" Oracle.
- "The Practice of Programming." B. Kernighan and R. Pike, Addisson Wesley, 1999.
Assessment: Final exam, midterm exam and homework (programming assignments).
Language: Greek
Course Title: Explorations into Computer Science
Course Code: CS 202
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 2nd year/2nd semester
Teacher’s Name: CS or Visiting Faculty
ECTS: 3 | Lectures / week: 1 x 2 hours | Recitation / week: 0 | Laboratories / week: 0
Course Purpose and 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.
Learning Outcomes: • Understanding the importance and impact of Computer Science in the modern world. • Developing communication skills through digital and networking tools. • Information about the professions and IT specializations. • Professional and scientific orientation of students. • Familiarization with the technological infrastructure, the research process and the research work of the Department of Computer Science.
Prerequisites: None Required: None
Course 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.
Teaching Methodology: Lectures (2 hours weekly).
Bibliography:
Assessment: Group project and presentation, class participation and attendance.
Language: Greek
Course Title: Theory of Computation
Course Code: CS 211
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 2nd year/2nd semester
Teacher’s Name: M. Mavronicolas
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0
Course Purpose and Objectives: Introduction to foundational concepts of the Theory of Computation. Development and cultivation of formal and mathematical-based reasoning. Familiarization with fundamental techniques for proofs and mathematical reasoning. Realization of the limitations on the capabilities of computers.
Learning Outcomes: Upon successful completion of the course, students should be able to:
- Appreciate the concept of computation and its capabilities and limitations.
- Be familiar with basic language theory concepts on which subjects such as Programming Language Theory and Algorithmics are supported.
- Be familiar with (i) finite deterministic and non-deterministic automata as well as with the class of regular languages, (ii) context-free grammars, push-down automata, and the class of context-free languages, and (iii) Turing machines.
- Categorize problems and construct appropriate solutions using suitable abstract machines.
- Recognize the importance of complexity classes (classes P, NP, NP-completeness) and calculate the complexity of algorithms
Prerequisites: CS 111, MAS 012 Required: None
Course Content: Formal models 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 the Church-Turing Thesis. Computability and Uncomputability. Introduction to the Theory of Computational Complexity with emphasis on the Theory of NP-completeness.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- M. Sipser, Εισαγωγή στη Theory of Computation, Πανεπιστημιακές Εκδόσεις Κρήτης, 2007.
- H. R. Lewis and Χ. Παπαδημητρίου, Στοιχεία Θεωρίας Υπολογισμού, Εκδόσεις Κριτική, Φεβρουάριος 2005.
Assessment: Final exam, midterm exam, homework.
Language: Greek
Course Title: Computer Organization and Assembly Programming
Course Code: CS 221
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 2nd year/1st semester
Teacher’s Name: Y. Sazeides
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Εισαγωγή στις βασικές αρχές οργάνωσης, λειτουργίας, χαμηλού επιπέδου προγραμματισμός, and ανάλυση απόδοσης υπολογιστικών συστημάτων
Learning Outcomes:
- Familiarization with the concepts of interrupts and exceptions and introduction to the low-level programming of kernel handlers
- Introduction to the basic organization of a pipelined datapath and familiarization with mechanisms for hazard detection and the concept of control flow predictability
- Introduction to the basic organization of a hierarchical memory system and virtual memory, and familiarization with the concept of memory locality
- Understanding for methods used for performance measurement and analysis of computer systems and introduction to benchmarking
- Appreciation for techniques used to improve the performance of cores found in modern central processing units and introduction to multicores
Prerequisites: CS 121 Required: None
Course Content: Introduction to computer organization and architecture. Programming in MIPS assembly language and introduction to x86. Low level programming interfacing of CPU and Input/Output units. Pipelined data path, dependencies and hazards, forwarding and control flow prediction. Memory hierarchy, locality, caching, virtual memory, page tables and translation-look-aside buffers. Benchmarking, performance monitoring and performance analysis. Basics of modern out-of-order superscalar cores and multi-cores
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Lab (1.5 hours weekly).
Bibliography:
- D. A. Patterson, J. L. Hennessy, Computer Organization and Design, 4th Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design) 2013. (Greek or English edition)
- 2. Computer Organization and Design MIPS Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design) 6th Edition, 2020
Assessment: Final exam, midterm exam, homework
Language: Greek
Course Title: Operating Systems
Course Code: CS 222
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 2nd year/2nd semester
Teacher’s Name: G. Papadopoulos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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 Linux 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.
Learning Outcomes: At the end of the course the students are expected to be able:
- Understand the basic principles governing the operation of an operating system.
- Associate the functions of an OS and how applications are running on it.
- Be aware of the basic services provided to users by a typical operating system.
- Compare similar mechanisms and services provided by different modern operating systems.
Prerequisites: CS 221, CS232 Required: None
Course Content: Introduction, history and evolution of operating systems. General structure, operations and characteristics of an operating system. Concurrency. Process management. CPU scheduling and dispatch. Real and virtual memory management. I/O interface and management. Disk scheduling. File system interface and management. Reliability.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly), and Laboratory sessions (1.5 hours weekly)
Bibliography:
- W. Stallings, Operating Systems: Internals and Design Principles, 9th Edition, Prentice Hall, 2018.
Assessment: Final exam, midterm exam and homework (theoretical and programming assignments).
Language: Greek
Course Title: Programming Techniques and Tools
Course Code: CS 231
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 2nd year/1st semester
Teacher’s Name: G. Pallis
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes:
- Ability to analyse and compare the algorithmic complexity (Ο, Ω, Θ).
- Understanding of fundamental Data Structures including linked-lists, trees, binary search trees, AVL trees, stacks, queues, priority queues, graphs and hash-tables.
- Understanding of fundamental abstract data types.
- Ability to devise novel solutions to small scale programming challenges involving data structures and recursion.
- Ability to sensibly select appropriate data structures and algorithms for problems and to justify that choice.
- Understanding the social and ethical implications of algorithm design and implementation and apply these principles to develop socially responsible solutions.
- Ability to program data structures and use them in implementations of abstract data types in JAVA.
Prerequisites: CS 111, CS 132 Required: None
Course Content: Algorithm complexity and analysis of average and worst-case scenarios. Data types and abstract data types. Types of lists, stacks, and queues. Non-linear data structures. Trees. Search trees. Balanced trees. Bit-vectors. Hashing techniques. Space vs time trade-offs. Iteration vs recursion. Priority queues. Sorting algorithms and analysis of their efficiency. Graphs and graph processing algorithms.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- Data Structures and Algorithm Analysis in Java, 3rd edition Published by Pearson (2021) © 2012
- M. Goodrich and R. Tamassia, Data Structures and Algorithms in Java, Wiley, 2011.
Assessment: Final exam, midterm exam (or quizzes) and homework (theoretical and programming assignments)
Language: Greek
Course Title: Programming Techniques and Tools
Course Code: CS 232
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 2nd year/1st semester
Teacher’s Name: G. Chrysanthou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: Upon successful completion of the course, the student will be able to:
- Design, write and test moderately complicated low-level programs using a systems programming language, like C, which compiles to machine code.
- Describe how computer and operating system executes and switches programs. Gain an insight into the anatomy of a computer program, understanding its physical limits imposed by the operating system.
- Proficiently use a preprocessor to implement code that is portable between different computing platforms.
- Use operating system kernel calls from within a programming language to allocate/free virtual memory and exploit the use of pointers to improve efficiency. Implement routines of complex data structures which superimpose arrays, records, and references on unstructured blocks of memory.
- Know how to use developer tools for compilation, debugging, documentation and optimization of software. Particularly, compile multiple files with makefiles, link object files statically and dynamically, handle errors, analyze code statically and dynamically (valgrind and gprof) and collaborate with team members through versioning systems (SVN and GIT).
- Implement routines that read and write structured binary files such as images, audio files, word processing documents or data from index systems.
- Understand how to use basic commands for programmers in the UNIX operating system: file system, redirection and pipes, permissions and basic filters.
Prerequisites: CS 131 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- C Programming: A Modern Approach, K.N. King, 2nd Edition, ISBN-10: 0393979504, ISBN-13: 978-0393979503, 832 pages, W. W. Norton & Company, 2008.
- Programming in C, 4th Edition, Stephen G. Kochan, ISBN-10: 0321776410, ISBN-13: 9780321776419, Addison-Wesley Professional, 600 pp, 2015.
- Your UNIX/Linux: The Ultimate Guide, 3rd Edition, Sumitabha Das, McGraw Hill, ISBN-13 9780073376202, 800 page, 2013.
- Η Language C σε Βάθος, Νίκος Χατζηγιαννάκης, Τρίτη Έκδοση, 978-960-461-208-6, Κλειδάριθμος, 2009.
Assessment: Final exam, midterm exam and homework
Language: Greek
Course Title: Algorithms and Complexity
Course Code: CS 236
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 2nd year/2nd semester
Teacher’s Name: Chr. Georgiou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: Upon successful completion of this class, the student is expected to be able to:
- Identify and use basic techniques for designing algorithms (backtracking, divide and conquer, dynamic programming, greediness, network flows).
- Argue and prove the correctness of algorithms.
- Analyze the worst-case complexity of algorithms.
- Implement and experimentally evaluate the performance of algorithms.
- Use the basic techniques for designing randomized Monte-Carlo algorithms (fingerprinting and random sample).
- Solve matching problems by reducing them to the Max-flow problem.
- Demonstrate advanced algorithmic thinking.
- Demonstrate advanced problem-solving skills.
Prerequisites: CS 231 Required: None
Course 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). Fast Fourier Transform. Randomized and Parameterized algorithms. Inherent lower bounds on problem complexity.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- J. Kleinberg and É. Tardos, Σχεδίαση Αλγορίθμων, Εκδόσεις Κλειδάριθμος, 2008.
- T. H. Cormen, C. E. Leiserson, R. Rivest, and C. Stein, Εισαγωγή στους Αλγόριθμους, 2η έκδοση, Πανεπιστημιακές Εκδόσεις Κρήτης, 2016.
Assessment: Final exam, quizzes and homework (theoretical problems and programming assignments).
Language: Greek
Course Title: Communications and Networks
Course Code: CS 324
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 3rd year/1st semester
Teacher’s Name: V. Vassiliou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Familiarization with fundamental topics in communication networks, with a focus on the Internet.
Learning Outcomes: Students successfully completing this course should be able to:
- Explain the following core concepts of communication networks/computer networks: networking technologies and various network topologies. Wired and wireless networks. Layering networks: application layer, transport layer, Network Layer, link layer. Protocol basics. Applications and service quality.
- Explain the following fundamentals in computer networks: protocol suite TCP/IP, Internet open systems. Core networking technologies such as routers, switches, repeaters. Protocols at application layer, transport layer, network layer, and link layer.
- Demonstrates ability to solve networking problems and the evaluation of various Internet protocols with regard to performance.
- Shows ability to use Internet simulators for understanding networking concept and in the design and evaluation of networks.
- Shows ability to use Wireshark, a real time network monitoring tool and data traffic and protocol analysis, with the aim of assimilation of protocols and data traffic, but also for analysis of possible errors/problems in the functioning of the network.
- To recognize new improved ways and mechanisms for network protocols.
- To recognize and analyze new techniques and network technologies, like the Internet of Things.
Prerequisites: CS 131 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- J. F. Kurose and K. W. Ross, Computer Networking: A Top-Down Approach Featuring the Internet, 8th Edition, Addison-Wesley, 2020.
Assessment: Final exam, midterm exam and homework (including laboratory exercises).
Language: Greek
Course Title: Parallel Processing
Course Code: CS 325
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 3rd year/2nd semester
Teacher’s Name: H. Volos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Introduction to parallel programming and performance analysis of parallel programs
Learning Outcomes:
- Familiarization with basic parallel architectures, including multicore processors and computing clusters.
- Understanding the performance measurement and analysis methods for parallel programs
- Learn parallel programming models
- Introduction to the development and design of parallel programs
- Familiarization with basic parallelism concepts (e.g. synchronization, coordination, load balancing)
- Programming with different programming APIs (e.g. pthreads, OpenMP, CUDA, and MPI)
Prerequisites: CS 221, CS 232 Required: None
Course Content: Parallel hardware architectures: the entire spectrum of parallel machines as appearingin Flynn’s classification (SISD, SIMD, MISD, MIMD), including multicore processors, vector units, graphics processing units (GPUs), computing clusters. Parallel programming models: shared vs. non-shared memory, threads (Pthreads, OpenMP), nested parallelism (OpenMP), data parallelism (SIMD, SIMT, CUDA), message passing (MPI). Synchronization and coordination mechanisms: locking, atomicity, ordering, joins, barriers. Performance evaluation and analysis: speedup, efficiency, scalability analysis, complexity analysis, performance modeling. Parallel thinking: decomposition, assignment, orchestration, mapping. Basic parallel algorithms: elementary computation, matrix multiplication, sorting, prefix sum, sample scientific application.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly), and Laboratory sessions (1.5 hours weekly)
Bibliography:
- Peter Pacheco, Matthew Malensek. An Introduction to Parallel Programming, 2nd Edition. Morgan Kaufmann, 2021
Assessment: Final exam, midterm exam, and homework.
Language: Greek
Course Title: Systems Security
Course Code: CS 326
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 3rd year/2nd semester
Teacher’s Name: E. Athanasopoulos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: The student that has successfully completed the course would be able to:
- Have a deep knowledge of modern applied cryptography, the main problems we solve with it, as well as the mechanics of cryptographic techniques.
- Know the internals of symmetric encryption algorithms, such as DES, AES and RC4. The techniques will be also applied to programming assignments.
- Understand the mathematical background of asymmetric encryption and, in particular, RSA.
- Develop applications of public-key cryptography for digital signatures. In the context of these applications, the student will become familiar with cryptographic hash functions.
- Understand the foundations of software exploitation and how vulnerabilities (e.g., buffer overflow) can be leveraged for compromising systems.
- Construct real attacks in software with artificially injected vulnerabilities.
- Analyze the execution of software on Linux using a debugger (gdb).
- Understand how modern defenses against software exploitation work.
- Understand how TLS works and the importance of Certificates.
- Develop applications that capture and monitor network traffic.
- Understand the basic mechanics of anonymity systems (e.g., ToR).
Prerequisites: CS 232 Required: None
Course 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).
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone. Handbook of Applied Cryptography, CRC Press, ISBN 0849385237. (http://cacr.uwaterloo.ca/hac/)
- 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)
- Christof Paar and Jan Pelzl: Understanding Cryptography: A Textbook for Students and Practitioners, Springer.
- Δημοσιεύσεις.
Assessment: Final exam, midterm exam and homework (including laboratory exercises).
Language: Greek
Course Title: Artificial Intelligence
Course Code: CS 341
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 3rd year/1st semester
Teacher’s Name: Y. Dimopoulos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0
Course Purpose and Objectives: The purpose of this course is to introduce the fundamental principles and techniques that underpin the functioning of software systems exhibiting some form of “intelligence.” Upon completing the course, students will gain an understanding of the modern conception of Artificial Intelligence, the key problems it addresses, and the basic methods used to solve them. The course also explores current and emerging applications of Artificial Intelligence techniques across a range of domains.
Learning Outcomes: Solid understanding of the fundamental ideas of modern Artificial Intelligence, the main problems that it studies, and the basic methods used to solve these problems. Familiarization with basic practical methods and tools of Artificial Intelligence.
Prerequisites: CS 231 Required: None
Course Content: Intelligent Agents. Search. Adversarial Search and Games. Constraint Satisfaction. Knowledge Representation and Reasoning. Planning. Machine Learning. Uncertainty.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- S. Russel, P. Norvig, Artificial Intelligence: A Modern Approach, 4th Edition, Prentice Hall, 2021.
- D. Poole, A. Mackworth, Artificial Intelligence: Foundations of Computational Agents, 3rd Edition, Cambridge University Press, 2023.
- W. Ertel, Introduction to Artificial Intelligence, Springer, 2025.
- Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Σακελλαρίου, Τεχνητή Νοημοσύνη, Εκδόσεις Πανεπιστημίου Μακεδονίας, 2020.
Assessment: Final exam, midterm exam and homework (theoretical and programming assignments).
Language: Greek
Course Title: Database Systems
Course Code: CS 342
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 3rd year/1st semester
Teacher’s Name: D. Zeinalipour
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: On successful completion of the course students will be able to:
- Obtain an in-depth understanding of concepts related to the design and utilization of a relational database management system by implementing relevant concepts in a commercial database management system.
- Model the logical design of a Database application using the Entity-Relationship (ER) Model, the Enhanced Entity-Relationship (EER) Model and the Relational Data Model.
- Implement a logical database design and manipulation logic using, at the beginning a formal language such as Relational Algebra, and then a real Data Definition Language (SQL-DDL) and Data Manipulation Language (SQL-DML).
- Implement a logical database design using the SQL Data Definition Language (DDL) and learn how to manipulate the stored data using the Relational Algebra and the SQL Data Manipulation Language (DML).
- Implement advanced database applications that include Constraints, Triggers, Views, Stored Procedures, User Defined Functions and Transactions. Develop sophisticated queries to extract information from complex datasets.
- Access data stored in a database management system through a high-level programming language and the JDBC bridge.
- Learn how to administer a relational database including backups, recovery, user access control and security.
- Understand the theory and application of normalizing a relational schema with functional dependencies.
Prerequisites: CS 231 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).
Bibliography:
- R. Elmarsi and S. Navathe, Fundamentals of Database Systems, 7th Edition, Addison-Wesley, 2015.
- R. Elmarsi and S. Navathe, Θεμελιώδεις Αρχές Συστημάτων Βάσεων Δεδομένων, 7η Έκδοση, 1ος τόμος, Εκδόσεις Δίαυλος, 2016.
- R. Ramakrishnan and J. Gehrke, Database Management Systems, 3rd Edition, McGraw-Hill, 2003.
- C. Coronel, S. Morris, K. Crockett, C. Blewett, Database Principles: Fundamentals of Design, Implementation, and Management, 3rd Edition, 2020.
Assessment: Final exam, midterm exam and homework (assignments, laboratory quizzes, final project).
Language: Greek
Course Title: Software Engineering
Course Code: CS 343
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 3rd year/1st semester
Teacher’s Name: E. Constantinou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Familiarization with and assimilation of the approaches, methodologies, models and tools used to develop quality software systems. Understanding of software requirements engineering, software architectures and software modeling. Understanding of software testing process and of software architecture design patterns. Understanding of software testing procedures. Use and application of architecture design patterns. Application of software creation methodologies on the construction of a real software system.
Learning Outcomes: The learning outcomes for the students are the following:
- Understanding of phases for the development of quality software systems.
- Familiarization with the different software process models.
- Ability to collect software requirements.
- Ability to effectively analyze modules for software development
- Ability to design software systems.
- Ability to implement functional software prototypes.
- Understanding of object-oriented analysis and design of software systems.
- Using effective methods for software systems development.
- Using and applying architectural design patterns.
Prerequisites: CS 132 Required: None
Course 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. Interfacing with stakeholders, as a team. Software development methodologies. Software development planning and risks. 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). Architectural Design patterns (Model View Controller etc.). Software verification and validation. Test phases, unit testing and relevant frameworks. CASE tools. Project planning and management.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hour weekly).
Bibliography:
- I. Sommerville, Software Engineering, 10th Edition, Addison-Wesley, 2016.
- R. Pressman, Software Engineering: A Practitioner's Approach, 8th Edition, Mc Graw Hill, 2015.
- H. van Vliet, Software Engineering: Principles and Practice, 3rd edition, John Wiley & Sons, 2008
- P. Stevens, R. Pooley, Using UML Software Engineering with Objects and Components, 2nd edition, Addison-Wesley, 2006.
Assessment: Final exam, midterm exam and semester team project.
Language: Greek
Course Title: Diploma Project I and Diploma Project II
Course Code: CS 400 and CS 401
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 4th year/7th – 8th semester
Teacher’s Name: CS Faculty
ECTS: 15 | Lectures / week: - | Recitation / week: - | Laboratories / week: -
Course Purpose and Objectives: The "Diploma Project" course is a comprehensive capstone project for undergraduate students in the Computer Science department. This course involves the independent design, development, and evaluation of a software system, research study, or theoretical analysis. Under the supervision of a faculty advisor, students identify a problem or research question in the field of computer science, conduct a literature review, propose a solution, and implement or investigate it using appropriate methodologies and tools. The project concludes with a formal written report and a presentation of the findings to a panel of two faculty members.
Learning Outcomes: Through the Project, students should acquire the ability to:
- Understand and possibly challenge the existing knowledge and practice at the forefront of the chosen specialization area
- identify and demonstrate appropriate methodologies and know when to use them
- define, articulate and use terminology, concepts, and theory in their field and know how to use them
- use library and other tools to search for existing body of research relevant to their topic
- identify and practice research ethics and responsible conduct in research
- know and apply problem solving skills to constructively address research setbacks
- work autonomously in an effective manner, setting and meeting deadlines
- reflect on their own work, identifying lessons learned, strengths, and ways to improve
- communicate confidently and constructively with graduate students and faculty as mentors
- produce a well-structured written report that effectively communicates the problem, methodology, results, and conclusions of the project, following academic and professional standards.
Prerequisites: At least 156 ECTS of coursework Required: None
Course Content: Each student in the course has a project advisor. Faculty members announce projects towards the end of the previous semester, and once the selection procedure is completed (monitored by the Diploma Project Coordinator), a student-faculty assignment is announced.
Teaching Methodology: Individual work under supervision
Bibliography: Project-dependent
Assessment: Written thesis, Software/System Prototype Assessment (if applicable), and oral presentation – evaluated by two members of the CS faculty (one being the project supervisor)
Language: English/Greek
Course Title: Logic in Computer Sciences
Course Code: CS 412
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: A. Philippou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and 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.
Learning Outcomes: Upon successful completion of the course, students should:
- Understand the basic concepts of propositional and predicate calculus with emphasis on the applications of these concepts in Computer Science.
- Be able to construct proofs and apply these skills to practical applications.
- Be familiar with the Method of Resolution and its use in Logic Programming
- Be familiar with concepts of linear and branching temporal logic and be able to use them to specify and verify computing systems.
- Understand basic algorithms for formal verification and use formal verification tools.
- Be familiar with Hoare specifications and their use in the analysis of the correctness of programs.
Prerequisites: CS 111 Required: None
Course Content: Propositional Logic: Syntax, Semantics, Normal Forms, Decision Procedures, Proof Theory, Resolution. Predicate Logic: Syntax and Semantics, Proof Theory, Resolution, Logic Programming. Hoare Logic for program verification. Linear and Branching Temporal Logics: Syntax, Semantics, and model-checking algorithms.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- M. Huth and A. Ryan, Logic in Computer Science: Modeling and Reasoning about Concurrent Systems, Cambridge University Press, 2000.
- M. Ben-Ari, Mathematical Logic for Computer Science, Springer-Verlag, 2nd Edition, 2003.
- U. Schoning, Logic for Computer Scientists, Springer-Verlag, 2nd Printing, 2008.
Assessment: Final exam, midterm exam and homework.
Language: Greek
Course Title: Basic Principles of Programming Languages
Course Code: CS 414
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: CS or Visiting Faculty
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and 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.
Learning Outcomes: At the end of the course a student should be able to:
- Understand the different programming languages, including the most popular languages, through a unified programming framework.
- Classify programming languages into procedural, object-oriented or functional, and into declarative or imperative, based on the programming structures they implement.
- Learn the basic structures/characteristics of programming languages.
- Be able to define the syntax, semantics, and type system of a simple programming language.
- Understand the notions of type soundness and execution safety.
- Use mathematical induction to prove simple safety properties in a programming language.
Prerequisites: CS 211, CS 231 Required: None
Course Content: History of Programming Languages, the λ-calculus. functional programming (The Haskell programming language, type system, 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 (the actors programming model, process calculi as mathematical models for representing distributed programming).
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly)
Bibliography:
- Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002.
- Graham Hutton, Programming in Haskell (2nd Edition), Cambridge University Press, 2016.
- John C. Mitchell, Concepts in programming languages, Cambridge University Press. 2003.
- Selected research articles
Assessment: Final exam, midterm exam and homework
Language: Greek
Course Title: Computer Architecture
Course Code: CS 420
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: Y. Sazeides
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Introduction to advanced principles of architecture, organization, operation and performance analysis of modern computer systems
Learning Outcomes:
- Familiarization with computer technology trends
- Benchmarking, performance measurement and analysis methods of modern computer systems
- Power and energy of modern computing systems and techniques for their minimization
- Understanding for hardware and software techniques used to improve the instruction level parallelism of cores found in modern central processing units
- Learn advanced techniques to improve memory hierarchy performance
- Microarchitectural security
- Introduction to data level parallelism and basic organization of modern graphic processing units
- Familiarization with thread level parallelism, parallel architectures with shared memory
- Domain specific architectures and accelerators (e.g., TPUs, PIM)
- Architecture of data centers
Prerequisites: CS 222 Required: None
Course Content: Computer Technology, Moore's and Dennard's Law, market segments (IoT, client, server). Benchmarks, performance metrics (CPI/IPC, average and tail latency, QPS), means, reliability (FIT, MTTF availability, error detection/correction). Power (dynamic/static, C-states, P-states, idle and dvfs governor, turbo, core/uncore, frequency scalability, TDP, throttling, power delivery, Power, Parallelism and Specialization, Sustainability (Environmental impact of computer manufacturing, operation and end-of-life)). Review Pipeline and Cache Basics. Dynamic Instruction Level Parallelism (register renaming, out-of-order-execution, reorder-buffer, prediction, speculation, superscalar). Static ILP (scheduling , VLIW). Advanced Caches (mshrs, inclusion, prefetching, cache replacement policy). Security (side channels, hw transient and non-transient side channels). Data Level Parallelism (vector, SIMD, GPUs). Thread Level Parallelism and Shared Memory Multiprocessing (interconnect, cache coherence, snoopy and directory, consistency). Domain Specific Architectures and Accelerators. Data Center Architecture. Real Products: e.g., ICE Lake Core, Intel Memory Hierarchy, Nvidia GPU, Google TPU. Qualitative analysis of real machines and their performance data.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- J. Henessy and D. Patterson, Computer Architecture: A Quantitative Approach, 6th Edition, Morgan Kaufmann, 2019.
- Selected research articles.
Assessment: Final exam, midterm exam and homework (project and exercises).
Language: Greek
Course Title: Systems Programming
Course Code: CS 421
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: D. Zeinalipour
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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).
Learning Outcomes: Upon successful completion of the course, the student will be able to:
- Understand and combine intermediate and advanced utilities and stream editors in the UNIX operating system (and all OS that belong to this family, such as Linux, Android/iOS the BSDs, and Mac OS X).
- Know how to setup, administer, maintain, upgrade and secure a networked UNIX operating system in the Cloud including the installation and configuration of networked services.
- Explain and use the function of the common operating system kernel routines that are provided by an operating system and accessible from both a systems programming language and the shell.
- Use operating system kernel calls from within a programming language to initiate and synchronize multiple threads/processes, interprocess communication, interact with the file system, set and respond to timers/interrupts.
- Understand the inner workings of UNIX-like operating systems and obtain a solid foundation for an advanced course in operating systems, data management systems, distributed/parallel systems, and networked/cloud systems.
Prerequisites: CS 222 Required: None
Course Content: 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- Your UNIX/Linux: The Ultimate Guide, 3rd Edition, Sumitabha Das, McGraw Hill, ISBN-13 9780073376202, 800 pp, 2013.
- UNIX and Linux System Administration Handbook 5th Edition, Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley, Dan Mackin, 1232 pages, Addison-Wesley, ISBN-10: 0134277554 | ISBN-13: 978-01342775545, 2017.
- 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.
- 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.
Assessment: Final exam, midterm exam, programming assignments and laboratory quizzes.
Language: Greek
Course Title: Advanced Networks
Course Code: CS 422
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 6th or 7th or 8th semester
Teacher’s Name: V. Vassiliou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Extension of the basic knowledge about Computer Networks regarding architectures, techniques and protocols for the Internet.
Learning Outcomes: Upon successful completion of this course the student will have advanced knowledge in the following fields:
- Explain the following core concepts of communication networks/computer networks: networking technologies and various network topologies. Wired and wireless networks. Layering networks: application layer, transport layer, Network Layer, link layer. Protocol basics. Applications and service quality, Basic network management.
- Explain the following fundamentals in computer networks: protocol suite TCP/IP, Internet open systems. Core networking technologies such as routers, switches, repeaters. Internet security.
- Demonstrate skills in solving networking issues network management issues, and analysis of communication protocols.
- Demonstrate skills in deploying and analyzing various routing and congestion control algorithms.
- Arguing, with regard to the infrastructure of a network and evaluates based on quality and other criteria the performance of networks.
- Demonstrates ability to solve networking problems and the evaluation of various Internet protocols with regard to performance.
- Shows ability to use Internet simulators for understanding networking concept and in the design and evaluation of networks.
- Shows ability to use Wireshark, a real time network monitoring tool and data traffic and protocol analysis, with the aim of assimilation of protocols and data traffic, but also for analysis of possible errors/problems in the functioning of the network.
- To seek to continuously evaluate new improved ways and mechanisms for network protocols.
- To constantly seek and analyze new techniques and network technologies, like the Internet of Things, Software Defined Networking, and Network Virtual Functions.
Prerequisites: CS 324 Required: None
Course 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, 5G). Introduction to Network Management, Software Defined Networks. Cloud and Fog Computing.
Teaching Methodology: Lectures (3 weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- J. F. Kurose and K. W. Ross, Computer Networking: A Top-Down Approach, 8th Edition, Pearson, 2020.
Assessment: Final exam, midterm exam and homework.
Language: English Αγγλικά
Course Title: Network and Information Security
Course Code: CS 423
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 6th or 7th or 8th semester
Teacher’s Name: V. Vassiliou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: Upon successful completion of this course the student will have advanced knowledge in the following fields:
- Identify some of the factors driving the need for network and information security
- Demonstrates ability to understand of the issues involved in the field of information security and assurance
- Navigate through the language of the field of network and information security.
- Explain the CIA triad of Confidentiality, Integrity and Availability
- Identify and classify computer and network security threats and attacks
- Compare and contrast encryption systems and algorithms.
- Encrypt and decrypt messages and sign and verify messages using well-known techniques
- Acknowledge the ethical and legal considerations of network and information security.
Prerequisites: CS 324 and CS326 Required: None
Course 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).
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- W. Stallings and L. Brown, Computer Security: Principles and Practice, 5th Edition, Pearson 2023
- W. Stallings, Network Security Essentials, Sixth Edition, Pearson, 2021.
- C. Kaufman, R. Perlman, M. Speciner, R. Perlner, Network Security: Private Communications in a Public World, 3rd edition, Pearson 2023
Assessment: Final exam, midterm exam and homework.
Language: Greek
Course Title: Digital Signal Processing
Course Code: CS 424
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: CS or Visiting Faculty
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Introduction to Digital Signal Processing (DSP) methods and applications
Learning Outcomes: Upon successful completion of this course the student will have advanced knowledge in the field of digital signal processing:
- Have a comprehensive grounding in DSP concepts and algorithms plus practical information on the design and implementation of DSP systems.
- Give a good understanding of DSP principles and their implementation and equips the delegate to put the ideas into practice and/or to tackle more advanced aspects of DSP
- Have theoretical knowledge illustrated by application examples, by demonstrations and by work in the laboratory. using MATLAB
- Gain a basic understanding of analysis, modeling and estimation of real world signals.
- Solve basic problems within filtering, frequency analysis and signal modeling by combining earlier acquired knowledge and skills within mathematics, and basic digital signal processing.
- Use Matlab to solve the above basic problems
- Analyse and evaluate the properties of LTI systems in terms of z-transforms.
- Understand the sampling theorem and perform sampling on continuous-time signals by applying advanced knowledge of sampling theory (i.e. aliasing, quantisation errors, pre-filtering).
- Apply the concepts of all-pass and minimum-phase systems to analyse LTI systems and address complex design problems.
- Evaluate design problems related to frequency selective processing and design FIR/IIR filters.
- Construct systems for spectral estimation of real signals by applying advanced knowledge of Fourier techniques.
- Judge implementation aspects of modern DSP algorithms.
- Apply the relevant theoretical knowledge to design and analyse a practical discrete-time signal system, such as audio, bio-medical or wireless system.
Prerequisites: CS 111, MAS 029, MAS 012 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- Alan Oppenheim, Ronald Schafer, John Buck, Discrete-time Signal Processing, Prentice-Hall, 2010.
- Alan Oppenheim, Ronald Schafer, John Buck, Zeitdiskrete Signalverarbeitung, 2. Auflage, Pearson Studium, 2004.
- Vinay Ingke, John Proakis, Digital Signal Processing using MATLAB, Third Edition, Cengage Learning, 2012.
- Σ. Θεοδωρίδης, Digital Signal Processing, Εκδόσεις Πανεπιστημίου Πατρών, 1992.
- J. H. McClellan, R. W. Schafer and M. A. Yoder, DSP First, Prentice Hall, 1998.
- Matlab DSP packages
Assessment: Final exam, midterm exam and homework (laboratory exercises, additional exercises, final project).
Language: Greek
Course Title: Internet Technologies
Course Code: CS 425
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: A. Konstantinidis
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: The main objective of the course is to help students understand and become familiar with fundamental web technologies, as well as to develop skills in using web programming languages for designing and creating websites and web applications. Specifically, the course includes:
- Webpage Analysis: The ability to analyze a webpage and identify its elements and attributes.
- Client-Side / Front-End Programming: The creation of static and dynamic websites using HTML5, Cascading Style Sheets (CSS), and JavaScript (JS).
- Server-Side / Back-End Programming: The development of applications that interact with databases, primarily using PHP, Java, and SQL.
- Client-Server Communication: The implementation of communication mechanisms between the browser (client) and the web server using technologies such as Asynchronous JavaScript And XML (AJAX), XMLHttpRequest, Fetch API, and JSON.
- Web Application Programming: The development of web applications focusing on RESTful APIs for data exchange over HTTP messages (e.g., GET, POST, PUT, DELETE) using prominent, popular frameworks (e.g. Spring Boot).
Learning Outcomes:
- Distinguish and Explain the Internet and the World-Wide Web (WWW):
- Differentiate between the concepts of the Internet (a global network of interconnected computers) and the World-Wide Web (a system of interlinked documents and resources accessible via the Internet).
- Understand Web Protocols, Components, and Web Services Programming:
- Explain key web protocols (e.g., HTTP, HTTPS), identify core web components (e.g., web browsers, web servers), and understand the fundamentals of programming web services.
- Develop Static and Dynamic Websites Using Client-Side Technologies:
- Gain proficiency in using client-side web technologies such as HTML, Cascading Style Sheets (CSS), and JavaScript to design and develop static and dynamic websites.
- Develop Server-Side Technologies for Database Communication:
- Understand and utilize server-side web technologies, including PHP, Java, SQL, and JavaScript (e.g., Node.js), to enable communication with database systems for storing and retrieving data.
- Establish Client-Server Communication Using AJAX:
- Demonstrate the ability to use AJAX mechanisms (e.g., XMLHttpRequest, Fetch API) to enable asynchronous communication between client-side and server-side technologies.
- Develop Web Applications Using RESTful APIs:
- Exhibit skills in creating web applications that emphasize RESTful APIs for efficient data exchange over the HTTP protocol using prominent, popular frameworks (e.g. Spring Boot).
Prerequisites: CS 132 and CS 324 Required: None
Course Content: Internet Fundamentals, WWW Fundamentals, Static and Dynamic Website Development, Client-Side Technologies (HTML, CSS, JavaScript, AJAX), Server-Side Technologies (PHP, Java, SQL), RESTful APIs.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).
Bibliography:
- Web Programming with HTML, CSS, Bootstrap, JavaScript, React.JS, PHP, and MySQL Third Edition, 2022
- Hofstetter, Fred T. (2023). Computational Thinking on the Internet: Foundations, Web Design & Cybersecurity (3rd ed.). Seattle: Kindle press.
- "Web Programming. Step by Step." M. Stepp, J. Miller, V. Kirst. Self published via lulu.com, 2014.
Assessment: Final exam, midterm exam, and homework.
Language: Greek
Course Title: Computer Graphics
Course Code: CS 426
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: A. Aristidou / G. Chrysanthou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: The course will provide students with an introduction to the basic principles of Computer Graphics and all the necessary knowledge they need to create images of virtual worlds starting from scratch. By following the course, students will learn how to define a three dimensional virtual world, giving the geometry, materials, textures, lights and camera parameters, and how to render the corresponding two-dimensional image. Students will learn how rendering is achieved either through the graphics pipeline or by ray-tracing, and they will see techniques for calculating local illumination, shadows and global illumination. At the practical laboratory, we will use graphics libraries such as openGL / webGL and shaders, amd implement an graphic application using UNITY game engine.
Prerequisites: CS 232 Required: None
Course 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, GPU, and animation.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- Computer Graphics: Principles and Practice, J. F. Hughes, A. van Dam, M. Mcguire, D. F. Sklar, J. D. Foley, S. K. Feiner, K. Akeley, Addison-Wesley Professional; 3rd edition, ISBN-13: 9780321399526, 2013.
- M. Slater, A. Steed and Y. Chrysanthou, Computer Graphics and Virtual Environments: From Realism to Real-Time, Addison Wesley, 2001.
- Θ. Θεοχάρης and Α. Μπεμ, Γραφικά – Αρχές and Αλγόριθμοι, Εκδοτικός Οίκος Συμμετρία, 1999.
Assessment: Final exam, midterm exam and homework.
Language: Greek and English
Course Title: Mobile Computer Networks
Course Code: CS 427
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 6th or 7th or 8th semester
Teacher’s Name: P. Kolios
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: Upon successful completion of this course the student will have advanced knowledge in the following fields:
- Explain the following fundamental concepts of wireless and mobile networks: Wireless environment. Interference in a wireless environment. Basic principles of wireless data communication. Architectures and technologies of wireless networks and wireless communication. 2. Explain the following basic issues in wireless and mobile networks: Networking technologies classifications, such as wide area networks, metropolitan area networks, local area networks, body area networks. Infrastructure and Infrastructureless Networks, such as WLANs, Sensor Networks and the Internet of Things. Mobile networks, including 5G and beyond.
- Demonstrate skills in deploying and analyzing various technologies of mobile/wireless networks.
- Demonstrates ability to solve networking problems including analysis of protocols, and sizing and design issues in wireless networks.
- Shows ability to use software defined radios (SDR) for the design and evaluation of networks.
- Seek continuously new improved ways and mechanisms in wireless protocols/mobile networks.
- Seek and analyze new techniques and technologies, networks such as the Internet of Things.
Prerequisites: CS 324 Required: None
Course 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
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- Wireless Communications Networks and Systems, C. Beard, W. Stallings, Pearson Higher Education, First Edition, January 2015.
Assessment: Final exam, midterm exam, lab exercises and individual project.
Language: Greek
Course Title: Internet of Things: Programming and Applications
Course Code: CS 428
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: P. Kolios
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Introduction of the basic concepts for the design, implementation and programming of modern embedded systems and applications based on smart mobile devices, and sensor networks. Application development.
Learning Outcomes: Familiarity with the basic concepts and methods of developing embedded systems. Introduction to mobile computing and programming on smart mobile devices. Application development using micro devices based on ARM microcontrollers, Arduino, and Rasperry Pi.
Prerequisites: CS 222 Required: None
Course Content: Programming of embedded systems. Introduction to the Internet of Things. Introduction to mobile devices, sensors and actuators for embedded system design. Interrupts and power consumption. Programming for embedded and mobile systems. Mobile computing. Architecture of Internet of Things, access networks. Programming in smartphones, embedded devices and applications for real-time/ online time series analysis. Network connectivity: Bluetooth, ZigBee, LoRA, NB-IOT. Cloud Computing. Connectivity on the cloud.
Teaching Methodology: Lectures (3 weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- Pascal Hirmer, Model-Based Approaches to the Internet of Things, Springer Cham., First Edition, 2023, ISBN 978-3-031-18883-1.
- Raj Kamal, Internet Of Things: Architecture and Design Principles McGraw Hill Education (India), ISBN-10: 93-5260-522-5, First Edition, 2017.
- Brunton SL, Kutz JN , Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control, Cambridge University Press, ISBN 978-1-108-42209-3, First Edition, 2019.
- E.A. Lee and S.A. Seshia , Introduction to Embedded Systems, MIT Press, ISBN: 978-0-262-53381-2, Second Edition, 2017.
- D. Hanes, G. Salgueiro, P. Grossetete, R. Barton, J. Henry , IoT Fundamentals: Networking Technologies, Protocols, and Use Cases for the Internet of Things, Cisco Press, ISBN-10: 1-58714-456-5, First Edition, 2017.
- P. Warden, D. Situnayake, TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers, O'Reilly Media, First Edition, ISBN-10: 1492052043, 2020.
Assessment: Final exam, midterm exam, lab exercises and individual project.
Language: Greek and English
Course Title: Theory and Practice of Compilers
Course Code: CS 429
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: E. Athanasopoulos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: 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.
Learning Outcomes: Upon completion of the course, students must be able to:
- Describe the role of a compiler and distinguish the compilation phases and its differences and relationships with other related software such as a pre-processor, interpreter, debugger, linker, loader, and so on.
- Describe the grammar of a programming language using regular expressions and production rules, recognize the importance of grammars for the development of a compiler, describe finite state automata, recognize their role as recognition engines, and parse trees,
- describe the steps of running a syntax analyzer and how these can be created with the help of meta-tools,
- describe the role of the symbol table and be able to choose the appropriate structure and organization to create it,
- recognize the meaning of intermediate code, how it is created, and how it can be optimized,
- recognize the characteristics of a final code and its execution environment.
Prerequisites: CS 211, CS 231 Required: None
Course Content: Basic principles for designing translators. Correlation between standard languages, automated theory and translators. Dictionaries, syntactic and semantic analysis, code generation and optimization, etc. Practical exercises using lex and yacc.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- A. V. Aho, R. Sethi and J. D. Ullman, Compilers – Principles, Techniques, and Tools, Addison-Wesley, 1986.
- The Essence of Compilers, R. Hunter, Prentice Hall, 1999
- lex & yacc, T. Mason and D. Brown, O’Reilly & Associates Inc., 1990.
Assessment: Final exam, midterm exam and homework (theoretical and diagnostic assignments and semester project).
Language: Greek
Course Title: Synthesis of Parallel Algorithms
Course Code: CS 431
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: Chr. Georgiou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and 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.
Learning Outcomes: Upon successful completion of this class, the student is expected to be able to:
- Identify and use basic techniques for designing parallel algorithms (pointer jumping, list ranking, Euler tour, tree raking, divide and conquer) for basic problems.
- Identify the basic efficiency metrics (speedup, utilization) and complexity measures (parallel time and cost) of parallel algorithms.
- Prove the correctness and analyze the worst-case complexity of parallel algorithms.
- Identify the basic models of parallel computing (PRAM, Interconnecting networks, BSP) and know their basic parameters.
- Employ basic techniques for the design and analysis of robust parallel algorithms in the F-PRAM and A-PRAM models of computation.
- Implement and experimentally evaluate the performance of parallel algorithms using the XMT programming paradigm.
- Demonstrate advanced algorithmic thinking.
- Demonstrate advanced problem-solving skills.
Prerequisites: CS 231 Required: None
Course 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). The XMT programming paradigm.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- J. Jaja, An Introduction to Parallel Algorithms, Addison-Wesley, 1992.
- C. Georgiou and A. A. Shvartsman, Cooperative Task-Oriented Computing: Algorithms and Complexity, Morgan & Claypool, 2011.
Assessment: Final exam, midterm exam and homework (theoretical and programming assignments).
Language: Greek
Course Title: Distributed Algorithms
Course Code: CS 432
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: M. Mavronicolas
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and 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.
Learning Outcomes: The student who has successfully completed this course is expected to be able to:
- Know the basic distributed computation models (shared memory versus messaging, determinism against randomization, concurrency, asynchronous and real-time concepts).
- Know basic distributed algorithms and results of impossibility for fundamental problems such as mutual exclusion, agreement, synchronization, leader election, construction of minimal overlapping trees.
- Demonstrate the accuracy and analyze the complexity of distributed algorithms.
- Design distributed algorithms for problems using the algorithms and techniques taught in the course as structural elements.
- Apply the lower limits and weaknesses learned in the course to new problems.
Prerequisites: CS 211, CS 231 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- H. Attiya and J. L. Welch, Distributed Computing: Fundamentals, Simulations and Advanced Topics, 2nd Edition, John Wiley and Sons Inc., 2003.
Assessment: Final exam, midterm exam, homework, participation in class and attendance.
Language: Greek
Course Title: Constraint Programming and Satisfaction
Course Code: CS 433
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: Y. Dimopoulos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and 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.
Learning Outcomes: Knowledge of basic algorithms for solving Constraint Satisfaction and Optimization problems. Understanding local consistency, intelligent search, optimization and problem structure. Familiarization with practical tools and solving methods, and their application to industrial problems.
Prerequisites: CS 111, CS 231 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- R. Dechter, Constraint Processing, Morgan Keufmann, 2003.
- E. Tsang, Foundations of Constraint Satisfaction, Academic Press, 1993.
Assessment: Final exam, midterm exam and homework (programming assignments).
Language: Greek
Course Title: Logic Programming and Artificial Intelligence
Course Code: CS 434
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: CS or Visiting Faculty
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1 hours
Course Purpose and 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.
Learning Outcomes: Students of the course will have the following knowledge and skills:
- Theoretical model of Logic Programming
- Programming in PROLOG
- The Refutation Theory as Failure in Logic Programming
- Logic Programming Applications
- Post-programming elements
- Argumentation and Common Logic
- Chronological reasoning in Common Logic
- Programming under the GORGIA argument system
- Developing Cognitive Systems
Prerequisites: CS 111 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation and Laboratory sessions (1 hour weekly).
Bibliography:
- L. Sterling and E. Shapino, The Art of Prolog, 2nd Edition, The MIT Press, 1994.
Assessment: Final exam, midterm exam and homework (programming assignments).
Language: English
Course Title: Human Computer Interaction
Course Code: CS 435
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: M. Konstantinidis
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: At the end of the course the students are expected to be able:
- Problem Identification and Research Skills: Analyze and identify a complex problem or research question in computer science and formulate a plan for addressing it using established methodologies.
- Technical Implementation: Apply knowledge of computer science principles, programming, and software development to design and implement a solution or carry out research that addresses the chosen problem.
- Project Management: Demonstrate effective project management skills, including planning, time management, resource allocation, and iterative development, to complete a substantial project within a set timeline.
- Critical Analysis and Evaluation: Critically evaluate the performance, effectiveness, and limitations of the developed solution or research outcome, using both qualitative and quantitative metrics.
- Communication Skills: Produce a well-structured written report that effectively communicates the problem, methodology, results, and conclusions of the project, following academic and professional standards.
- Collaboration and Supervision: Work independently while also demonstrating the ability to incorporate feedback from supervisors and peers to refine the project.
- Ethical Considerations: Understand and apply ethical principles and considerations, such as data privacy and responsible AI, in the execution of the project.
Prerequisites: None Required: None
Course 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. User-centered design and evaluation methods.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).
Bibliography:
- Designing with the Mind in Mind: Simple Guide to Understanding User Interface Design Guidelines (3rd Edition) by Jeff Johnson (2020)
- About Face: The Essentials of Interaction Design, 4th Edition Alan Cooper, Robert Reimann, David Cronin, Christopher Noessel ISBN: 978-1-118-76657-6 September 2014 720 pages
- J. Preece, Y. Rogers and H. Sharp, Interaction Design: Beyond Human-Computer Interacrtion, John Wiley and Sons, 2002.
Assessment: Final exam, midterm exam and homework.
Language: Greek
Course Title: Advanced Software Engineering
Course Code: CS 441
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: G. Papadopoulos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: The learning outcomes for the students are the following:
- Understand advanced techniques for managing complex software projects.
- Develop team projects by applying the principles of team software development.
- Be aware of the basic principles of software reuse through the different techniques available for this purpose.
- Be able to apply the basic principles of Human-Machine Interaction in order to make applications accessible to users.
Prerequisites: CS 343 Required: None
Course 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).
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- I. Sommerville, Software Engineering, 10th Edition, Addison-Wesley, 2016.
- A. Dix, J. Finlay, G. D. Abowd, R. Beale, Human Computer Interaction, 3rd Edition, Prentice Hall, 2004.
Assessment: Final exam, midterm exam, homework (theoretical problems – study / analysis of a software system) and laboratory exercise.
Language: English
Course Title: Machine Learning
Course Code: CS 442
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: Chr. Christodoulou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Familiarization with theoretical and practical issues involved in Machine Learning. Study of machine learning methods as they have been developed in recent years. Implementation and assessment of Machine Learning systems.
Learning Outcomes: The learning outcomes for the students are the following:
- develop an appreciation for what is involved in learning from data
- understand a wide variety of learning algorithms including supervised, unsupervised as well as reinforcement learning algorithms and be able to implement them
- understand how to apply a variety of learning algorithms to data
- learn to be able to identify and apply the most appropriate machine learning technique to classification, regression and optimisation problems
- understand the strengths and weaknesses of many popular machine learning approaches
- be able to design and implement various machine learning algorithms in a range of real-world applications
Prerequisites: CS 231 Required: None
Course Content: Introduction to Pattern Recognition, Multilayered Neural Networks and backpropagation learning algorithm, Deep Learning and Convolutional Neural Networks, Recurrent Neural Networks, Self-Organising Maps, Radial Basis Functions, Reinforcement Learning, Hopfield Networks & Boltzmann Machines. 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 machine learning systems.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).
Bibliography:
- C. M. Bishop, Neural Networks for Pattern Recognition, Oxford University Press, 1995.
- S. Haykin, Neural Networks and Learning Machines, 3rd Edition, Pearson Education, 2009.
- R. S. Sutton and A. G. Barto, Reinforcement Learning: an Introduction, MIT Press, 2nd Ed., 2018.
- A. Zhang, Z. C. Lipton, M. Li and A. J. Smola. Dive into Deep Learning, Cambridge University Press, 2023.
Assessment: Final exam, midterm exam and homework (lab exercises).
Language: Greek
Course Title: Software Reuse
Course Code: CS 443
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: G. Kapitsaki
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Understanding the usefulness of software reuse. Deepening in the different levels of reuse and understanding the differences between them. Use of software design patterns in practice. Understanding of Open Source Software and licenses. Effective reuse of content and data from software repositories.
Learning Outcomes: The learning outcomes for the students are the following:
- Understanding the usefulness of software reuse.
- Ability to differentiate between the different levels of reuse and understanding the differences between them.
- Use of software design patterns in practice.
- Understanding of Open Source Software and the differences between software licenses.
- Ability to make the results of their work available to others via software repositories.
Prerequisites: CS 343 Required: None
Course Content: Levels of reuse. Best practices for reuse. Evolution of reuse. Software repositories. Search and retrieval. Design patterns. Object-oriented programming standards. Open source software. Open source software licensing and legal issues. Organization policies and open-source based development. Outsourcing. Model-Driven Engineering principles. Service-Oriented Computing. Aspect-Oriented Programming. Content and data reuse from software repositories.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour) and Laboratory sessions (1,5 hours weekly).
Bibliography:
- Μ. Ezran, Μ. Morisio, C. Tully, Practical Software Reuse, Practicioner Series, 2002.
- E. Freeman, E. Robson, B. Bates, K. Sierra, Head First Design Patterns, O'Reilly Media, 2004.
- C. Horstmann, A Practical Guide to Open Source Licensing, Wiley, 2nd Edition, 2006.
Assessment: Final exam, midterm exam, homework and semester project.
Language: Greek
Course Title: Computational Intelligent Systems
Course Code: CS 444
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: Chr. Christodoulou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: The learning outcomes for the students are the following:
- understand the fundamental concepts of computational intelligence
- be able to design and implement genetic and evolutionary algorithms as well as fuzzy systems for solving practical problems
- appreciate the advantages of genetic algorithm and evolutionary based approaches for optimisation problems, compared to traditional methodologies
- understand the basic concepts of cognitive science like mind, brain, memory and behaviour and modelling approaches
- understand and be able to explain the fundamental principles of information processing by neural systems
- appreciate the importance of computational neuronal models in the quest of understanding the brain
- understand the most important biophysical neuronal models and the different levels of description and complexity in computational neuronal modelling from the level of the single neuron to that of neuronal networks
- understand how experimentally recorded physiological signals enable us to understand the functionality of neurons/systems in the brain and how statistical approaches help in the analysis of such data
Prerequisites: None Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- A. P. Engelbrecht, Computational Intelligence: An Introduction, John Wiley and Sons, 2nd Edition 2007.
- R. C. Eberhart and Y. Shi, Computational Intelligence: Concepts to Implementations, Elsevier, 2007.
- E. R. Kandel, Αναζητώντας τη Μνήμη, (Μετάφραση A. Καραμανίδης), Πανεπιστημιακές Εκδόσεις Κρήτης, 2008.
- P. Dayan and L. Abbott, Theoretical Neuroscience: Computational and Mathematical Modelling of Neural Systems, MIT Press, 2001.
Assessment: Final exam, midterm exam and homework (laboratory exercises, additional exercises, final project).
Language: Greek
Course Title: Digital Image Processing
Course Code: CS 445
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: C. Pattichis
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0
Course Purpose and 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.
Learning Outcomes:
- Familiarization with the basic concepts and methods of developing simple image and video processing and analysis systems.
- Introduction and understanding of image and video processing and analysis instruction set.
- Develop applications utilizing the above.
Prerequisites: CS 231, MAS 029 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly).
Bibliography:
- R. C. Gonzalez and R. E. Woods, Digital Image Processing, 4th Edition, Pearson, 2017.
Assessment: Final exam, midterm exam and homework (laboratory exercises, additional exercises, final project).
Language: Greek
Course Title: Advanced Database Systems
Course Code: CS 446
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 6th or 7th or 8th semester
Teacher’s Name: D. Zeinalipour
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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.
Learning Outcomes: Upon successful completion of the course, the student will be able to:
- Understand physical database design along with implementation issues and also devise appropriate ways to store and index data.
- Demonstrate understanding of issues surrounding query optimization, concurrency control, parallelism and recovery in data management.
- Implement the internal components of a database system in the programming language C++ under the Minibase architecture.
- Analyze the time complexity of secondary memory algorithms.
- Compare different techniques applicable to distributed databases.
Prerequisites: CS 342 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- Database Management Systems: Paperback Edition, 3 Edition, Raghu Ramakrishnan and Johannes Gehrke, McGraw-Hill Publishers, Paper; 1065 pp, ISBN: 0-07-123057-2, 2003.
- Fundamentals of Database Systems, 7/E Ramez Elmasri, Shamkant B. Navathe, ISBN-10: 0133970779, ISBN-13: 9780133970, 2016.
- Principles of Distributed Database Systems, Özsu, M. Tamer, Valduriez, Patrick, 3rd Edition, 846 p., Springer Press, 2011.
Assessment: Final exam, midterm exam, programming exercises and presentation.
Language: Greek
Course Title: Computer Vision
Course Code: CS 447
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name:
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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. Develop applications utilizing the above.
Learning Outcomes:
- Familiarization with the basic concepts and methods of developing simple computer vision systems.
- Introduction and understanding of basic computer vision instruction set.
- Develop applications utilizing the above.
Prerequisites: CS 231, MAS 029 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- D. Forsyth and J. Ponce, Computer Vision: A Modern Approach, 2nd Edition, Pearson, 2011.
- S.D. Prince, Computer Vision: Models, Learning and Inference, 2012.
- R. Hartley and A. Zeisserman, Multiple View Geometry, Cambridge University Press, 2003.
- C. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2007.
- O. Faugeras and Q.T. Luong, Geometry of Multiple Images, MIT Press, 2001.
Assessment: Final exam, midterm exam, programming exercises and presentation.
Language: Greek
Course Title: Data Mining on the Web
Course Code: CS 448
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: G. Pallis
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Introduction to data mining, Clustering, Classification, Association Rules, Link Analysis, Web communities, Web Personalization.
Learning Outcomes:
- Understanding Big data systems like Map-reduce
- Explain algorithms for massive data sets and methodologies in the context of data mining (i.e., Link analysis such as PageRank, spam detection and hubs-and-authorities, Computational advertising)
- Demonstrate the ability to match various algorithms for particular classes of problems (i.e. Similarity search such as locality-sensitive hashtag, association rules, clustering, classification)
- Apply and develop algorithms as a part of software development for mining big data
Prerequisites: CS 342 Required: None
Course 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.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hour weekly).
Bibliography:
- J. Leskovec, A. Rajaraman, J. D. Ullman, Mining of Massive Datasets, Cambridge University Press, 2020.
Assessment: Final exam, midterm exam, homework (programming and theoretical assignments) and semester project.
Language: Greek
Course Title: Professional Practice in Software Engineering
Course Code: CS 449
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: G. Kapitsaki
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and 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 or international market. Practical use of software processes and tools, such as central and distributed version control systems (Git), testing at different levels, group communication, professionalism, and ethical conduct. Application of the Scrum development methodology.
Learning Outcomes: The learning outcomes for the students are the following:
- 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 or international market.
- Applying software development steps effectively, via the use of the Scrum development methodology.
- Applying effectively testing processes of software systems.
- Ability to measure different aspects of software systems.
- Strengthening of group communication, professionalism, and ethical conduct.
Prerequisites: CS 343 Required: None
Course 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, especially on implementation and testing. Most of the specific projects come from the industrial sector. Roles and responsibilities in a software team. Version control systems (central and distributed, e.g., Git). Version control branching strategies. Use of the Scrum development methodology (Scrum review meeting, Scrum retrospective, etc.). Testing, test-driven development and automated testing. Software system analysis through software metrics (e.g., Lines of Code). Specialized issues depending on the project nature (e.g., deployment on web servers, GUI tools and frameworks etc.). Open Source software and licenses. Data privacy legislation and connection with software features.
Teaching Methodology: 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).
Bibliography:
- Selected articles from the literature and tools documentation.
Assessment: Assessment of the product-software system, assessment of the corresponding documentation and deliverables, quizzes, oral presentation and final exam.
Language: Greek or English
Course Title: Network Virtualisation and Management
Course Code: CS 450
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: V. Vassiliou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: The course aims to cover the latest approaches in network virtualization (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). The course will also introduce the Network Management Fundamentals, explain the different technologies that are used in network management (traditional, e.g. SNMP, and latest virtualised approaches, such as SDN/NFV), and how they relate to each other. It will also introduce different management reference models, such as Fault, Configuration, Accounting, Performance, and Security (FCAPS), the different building blocks of network management, the protocols used, the organization of data, and the management communication aspects.
Learning Outcomes: On completion of the course the students will:
- know basic terminology and concepts in network virtualization (e.g. NFV-Network Function Virtualisation, VNF-Virtual Network Functions, Network Services Orchestration, cloud-based network management) and be able to apply them to solve more advanced tasks.
- know basic terminology and concepts in overall Network Management and Services.
- be able to build, configure, and deploy an SDN-based network and setup open flow type networking.
- have working knowledge of concepts: Network Virtualisation, Virtualised Network Services, Network Services Orchestration, and Network Slicing.
- be able to build, configure, deploy, and monitor via SNMP an IP-network, with respect to computers and networking equipment.
- be able to configure and deploy the monitoring of a network, computers and services.
- be able to use basic management tools for administration of networks, computers and services.
- be able to evaluate problems that may arise at management of networked systems.
Prerequisites: CS324 Required: None
Course Content:
- Networking technologies overview: A. LANs, WLANs, WANs, PANs, MANs, etc…B. BGP, VPN, VLANs and DNS review, introduction to cloud computing.
- Introduction to network management.
- Brief review of network management standards, models, languages and SLAs.
- Management functional areas (FCAPS): Fault Management, Configuration Management, Accounting Management, Performance Management, Security Management.
- Network virtualisation and virtualised network management: need and fundamentals (NFV MANO, ETSI MANO, OPENBATTON)
- Software Defined Networks and Open Flow (Mininet lab examples with ONOS).
- Network Virtualization and Virtualised Services
- (e.g. NFV-Network Function Virtualisation, VNF-Virtual Network Functions, Network Service Orchestration, cloud based network management).
- Traditional and new network monitoring
- MIB,OID and SMI, SNMPv1,v2,v3, RMON, MRTG, and new monitoring tools (e.g. NAGIOS, ZENOSS).
- Network management protocols and tools (e.g. ipconfig, ping, …), NMS (e.g. Nagios, Cacti, OpenView, NetView, CygNet, etc…), NetConf and YANG.
- Performance Management:
- Quality of Service (QoS) architectures and traffic regulation mechanisms, Network Security management.
- Other Topics and Trends
- Newer network management tools (e.g.XML based tools)
- Cloud Services Management
- New thinking and directions.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1.5 hours weekly).
Bibliography:
- William Stallings, Foundations of Modern Networking: SDN, NFV, QoE, IoT, and Cloud, Pearson, 2022.
- Jim Doherty, SDN and NFV Simplified: A Visual Guide to Understanding Software Defined Networks and Network Function Virtualization, 1st Edition, Pearson, 2016,.
- Alexander Clemm, Network Management Fundamentals, 2006, Cisco Press, 2006
Assessment: Final exam, midterm exam and homework.
Language: Greek or English
Course Title: Software Analysis
Course Code: CS 451
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: E. Athanasopoulos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hours | Laboratories / week: 0 hours
Course Purpose and 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).
Learning Outcomes:
- Analyse binaries in Unix.
- Instrument binaries in Unix.
- Create proof-of-concept debuggers.
- Modify modern compilers to enhance the functionality of existing C/C++ code.
Prerequisites: CS211, CS232 Required: None
Course 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.
Teaching Methodology: Lectures and hands-on sessions.
Bibliography:
- Practical Binary Analysis: Build Your Own Linux Tools for Binary Instrumentation, Analysis, and Disassembly. Dennis Andriesse. ISBN-10: 1593279124.
- LLVM documentation.
- Published papers.
Assessment: Final exam, midterm exam, programming assignments.
Language: Greek or English
Course Title: Datacenter Computing
Course Code: CS 452
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: H. Volos
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: The course aims to study the key principles and concepts that underlie a modern data center. The course will conduct a vertical study of datacenter technology covering the entire system stack, including hardware architectures, systems software, and application programming frameworks. The course will also explore cross-cutting concerns such as total cost of ownership, service level objectives, reliability and availability, energy efficiency, and privacy and security.
Learning Outcomes: At the end of the course the students are expected to be able:
- Understand the basic ideas and design principles in data center systems.
- Understand performance, scalability, availability, efficiency, power, and cost tradeoffs in data center systems.
- Know about data center infrastructure technologies including virtualization, storage, and networking.
- Know how to develop, deploy, and run data-center based applications to solve real problems.
Prerequisites: CS 222 Required: None
Course Content: Horizontal scaling, server design, heterogeneous hardware and accelerators, total-cost of ownership (TCO) analysis, performance analysis, power management, resource management, virtualization, virtual machines and containers, serverless computing, cloud computing, microservices, data-center storage, data-center networking, side channels, trusted execution.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratory sessions (1,5 hours weekly).
Bibliography:
- Luiz André Barroso, Urs Hölzle, and Parthasarathy Ranganatha. The Datacenter as a Computer: Designing Warehouse-Scale Machines. Third Edition Morgan & Claypool (2019).
- John Hennessy and David Patterson. Computer Architecture: A Quantitative Approach. Sixth Edition Morgan & Claypool (2016)
- Selected articles from the international literature.
Assessment: Final exam, midterm exam and homework (theoretical and programming assignments).
Language: Greek and English
Course Title: Software Evolution
Course Code: CS 484
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: E. Constantinou
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and Objectives: Understanding of important challenges in software evolution. Understanding and implementation of methods and tools for solving software evolution problems. Application of methods and tools in existing software systems and explanation of results.
Learning Outcomes: The learning outcomes for the students are the following:
- Understanding important challenges in software evolution.
- Understanding and implementation of methods and tools for solving software evolution problems.
- Application of methods and tools in existing software systems.
- Understanding of the results obtained from existing software systems on software evolution after the systems analysis.
Prerequisites: CS 343 Required: None
Course Content: Introduction to fundamental terms in software evolution and Lehman laws. Evolution of software requirements. Evolution of software architecture and retrieval of software architecture from the system’s source code. Source code evolution and code clones. Introduction to software ecosystems, dependencies and evolution in software ecosystems. The human factor in software evolution. Software maintenance and bugs. Software smells and software refactoring. Mining software repositories and empirical software engineering.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- Tom Mens and Serge Demeyer. 2008. Software Evolution (1st. ed.). Springer. (επιλεγμένα κεφάλαια)
- Tom Mens, Alexander Serebrenik, Anthony Cleve. 2014. Evolving Software Systems. Springer. (επιλεγμένα κεφάλαια)
- Tom Mens, Coen De Roover, Anthony Cleve, 2023. Software Ecosystems: Tooling and Analytics, Springer. (επιλεγμένα κεφάλαια).
- Selected articles from the literature.
Assessment: Final exam, midterm exam and homework (semester project).
Language: Greek
Course Title: Special Issues in Computer Science: Mobile Computing and applications
Course Code: CS 498
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: CS or Visiting Faculty
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Upon completion of the course, students should be able to:
- They understand the fundamentals of mobile computing, including mobile operating systems, wireless networks, and distributed applications.
- They develop modern mobile applications that leverage sensors, network interfaces and cloud services, aiming at efficiency and user-friendliness.
- They manipulate location and context-awareness technologies, such as GPS, Wi-Fi fingerprinting, BLE, NFC and RFID, to create intelligent and adaptive applications.
- They apply mobile sensing and crowdsensing principles to real-world conditions, looking at aspects such as performance, energy consumption and privacy.
- They evaluate mobile system architectures, selecting the appropriate tools and methods for different categories of applications.
- They are familiar with research in the field of mobile computing, following recent scientific articles and publications in reputable journals and conferences (e.g. MDM, GeoInformatica, Pervasive Computing).
Learning Outcomes: Upon successful completion of the course, the student will be able to:
- It designs and implements mobile applications, using modern development tools (SDKs, APIs, frameworks).
- Analyze and evaluate mobile and distributed application architecture for performance, security, and user experience.
- It leverages detection and sensor technologies to develop context-aware applications that adapt to the environment and user needs.
- It integrates cloud services, edge computing and databases into mobile applications for data storage, synchronization and management.
- Understands the challenges and practical solutions related to energy, security, privacy, and accessibility in portable and wearable systems.
- It monitors and evaluates current research trends in the field of mobile and ubiquitous computing, developing reading and understanding abilities of scientific articles.
Prerequisites: CS 231 Required: None
Course Content: This course introduces students to the basic principles and modern practices of mobile computing and mobile application development. Through a combination of theoretical teaching and laboratory exercises, students gain an essential understanding of mobile device software, wireless and ad-hoc networks, location services, as well as context-aware and sensory systems. Emphasis is placed on the design and development of modern mobile applications, which interact with cloud services, utilize embedded sensors and rely on technologies such as Bluetooth, Wi-Fi, RFID, NFC and cellular networks. The course also covers advanced and topical topics, such as wearable computing, mobile sensing and crowdsensing. Upon completion of the course, students will be able to develop efficient, scalable and user-friendly mobile applications, having gained experience with modern tools, platforms and technological standards that shape the ecosystem of mobile computing systems.
Teaching Methodology: Lectures (3 hours weekly), Recitation (1 hour weekly) and Laboratories (1.5 hour weekly).
Bibliography: The bibliography may be enriched during the semester with additional articles and sources that will be posted on the course website. Recommended Supplementary Books:
- John Krumm (Επιμ.), Ubiquitous Computing Fundamentals, 1η Έκδοση, CRC Press, 2009. ISBN: 978-1-4200-9360-5
- John Krumm, Spatial Gems, Volume 1, Επιμέλεια: Andreas Züfle, Cyrus Shahabi, ACM Books, 2022. ISBN: 978-1-4503-9811-4
Scientific Journals & Conference Proceedings:
- IEEE International Conference on Mobile Data Management (MDM)
- GeoInformatica (Springer)
- Pervasive and Mobile Computing (Elsevier)
Assessment: Homework, group project and presentation, midterm and final exam, participation during lectures.
Language: Greek
Course Title: Special Issues in Computer Science: Introduction to Natural Language Processing
Course Code: CS 499
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 5th or 6th or 7th or 8th semester
Teacher’s Name: CS or Visiting Faculty
ECTS: 7,5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 0 hours | Laboratories / week: 1 x 1.5 hours
Course Purpose and Objectives: Develop a basic understanding of the concepts, techniques and applications of Natural Language Processing (NLP). Familiarity with the fundamental pre-processing steps and basic NLP tasks utilized in machine learning applications. To enhance the student's ability to analyze linguistic data, to select and apply appropriate methods of characterization and classification, and to understand the principles of methods of integrating words and deep learning models. Introduction to Large Language Models (LLMs), such as ChatGPT, and the possibilities they offer for advanced applications such as chatbots and information retrieval systems. Enhancement of analytical thinking through the study of modern applications and tools, preparing the student for applied work or postgraduate deepening in the field of NLP.
Learning Outcomes: A student successfully completing the course should:
- Understand the basic tasks of Natural Language Processing and the types of data and challenges involved.
- It applies pre-processing, language modeling, and feature extraction techniques to solve NLP problems.
- It describes and compares Machine Learning and Deep Learning algorithms for tasks such as sorting, text representation, and information extraction.
- It analyzes and evaluates the performance of NLP models using standard metric and experimental procedures.
- It understands the use of modern NLP technologies such as Word Embeddings, Contextual Embeddings and Large Language Models (LLMs).
- It designs simple applications using ready-made NLP tools, utilizing Python libraries.
Prerequisites: None Required: None
Course Content: The course introduces students to the basic concepts and applications of Natural Language Processing (NLP). Pre-processing and language modeling techniques are initially covered, followed by a presentation of basic NLP tasks, such as annotation of part of speech, entity recognition, and syntactic analysis. Then, methods of extracting and selecting attributes, machine learning text sorting techniques, and representations of words and documents are examined. The course concludes with an introduction to neural architectures, transformative models (e.g. BERT) and applications of Large Language Models (LLMs). Theoretical concepts are supported by lab exercises in Python using popular NLP tools.
Teaching Methodology: Lectures (3 hours weekly) and Laboratories (1.5 hour weekly).
Bibliography:
- Jurafsky & Martin, Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition.
- Selected articles from international literature.
- Educational notes and slides.
Assessment: Homework, midterm and final exam, participation during lectures.
Language: Greek
Course Title: Industrial Placement
Course Code: CS 500
Course Type: Restricted Elective Course
Level: Undergraduate
Year / Semester: 3rd year/ Summer Semester
Teacher’s Name: H. Volos / E. Athanasopoulos / P. Kolios / M. Dikaiakos
ECTS: 7,5 | Lectures / week: - | Recitation / week: - | Laboratories / week: -
Course Purpose and 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.
Learning Outcomes:
- Strengthening academic knowledge and professional development in real working conditions
- Acquiring professional experience
Prerequisites: CS 342, CS 343 Required: None
Course 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.
Teaching Methodology: -
Bibliography: -
Assessment: Final report (of total length between 6000 and 10000 words)
Language: Greek
Course Title: General Advanced English
Course Code: LAN 100
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year / 1st semester
Teacher’s Name: Language Centre faculty
ECTS: 5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 0 hours | Laboratories / week: 0 hours
Course Purpose and Objectives:
- Familiarize students with the conventions of academic writing
- Help students differentiate between different writing types (narration/description, example, classification, comparison and contrast)
- Enable students to produce written texts progressing from paragraphs to complete essays
- Assist students in writing coherently and concisely
- Enhance students’ vocabulary
- Help students foster an appreciation of the importance of dedicated systematic reading in a wide variety of genres
- Promote students’ critical thinking skills with respect to engaging with written sources, as well as creating authentic texts of their own
- Encourage students to actively incorporate correct usage of grammar and mechanics in the English language through targeted practice activities
- Enable students to express their ideas clearly both orally and in writing
Learning Outcomes:
- Recognize various writing types and identify their characteristics
- Write clearly and coherently
- Express personal views/opinions/thoughts with growing competency
- Compose complete and developed essays ranging from 1 to 3 pages
- Enhance comprehension skills through exposure to ongoing readings
- Demonstrate critical thinking skills
- Use content-specific academic vocabulary appropriately
- Deliver an oral presentation to a group of peers
Prerequisites: None Required: None
Course Content: This course is designed to guide students in building the required writing, vocabulary and grammar skills to function in an academic setting. Ongoing exposure to reading materials, as well as required vocabulary and grammar activities, will assist students in enhancing their writing skills. Specific writing assignments will guide students in understanding the academic writing process and academic writing conventions. Through close and critical reading of texts, students will analyze ideas, question sources and communicate their thoughts in a clear and effective way. Students will also be required to deliver an informative oral presentation.
Teaching Methodology: Task-based Learning, Communicative Learning, Collaborative Learning
Bibliography:
- Langan, J., & Allbright, Z. L. (2018). College Writing Skills with Readings, 10th Edition. McGraw Hill, USA.
- Supplementary pack of readings and additional materials prepared by instructor
Assessment: 3 essays, Final exam, Oral presentation, Participation and continuous assessment
Language: English
Course Title: English for Computer Science
Course Code: LAN 111
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year / 2nd semester
Teacher’s Name: Language Centre faculty
ECTS: 5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 0 hours | Laboratories / week: 0 hours
Course Purpose and Objectives:
- To enhance students’ ability to communicate in the field of Computer Science
- To develop reading, writing, listening and speaking skills
- To enable students to effectively comprehend and summarize Computer Science related texts
- To enable students to write memos and manual instructions
- To broaden Computer Science related vocabulary
- To enable students to prepare and present power point presentations on topics related to their major field of study
Learning Outcomes: Read a variety of contemporary computer science related articles and identify relevant information and writing styles. Locate main ideas and paraphrase them. Differentiate main ideas from supporting details and express the ideas succinctly in students’ own words. Demonstrate increasing competency in reading, writing, speaking and listening skills. Practice and employ relevant computer science vocabulary as well as being able to explain it in layman’s terms. Identify specific format and language components employed in writing that is concise. Compose coherent and succinct writing by appraising sources for suitability and relevance. Examine examples of writing styles and formats to differentiate between effective and non-effective writing. Produce effective writing. Arrange and synthesize information in order to plan/ prepare/ produce oral tasks
Prerequisites: LAN 100 or equivalent Required: None
Course Content: This course aims at helping students communicate successfully in the field of computer science by teaching them the use of effective reading, writing, listening and speaking strategies. Students will work on understanding texts relevant to the discipline, writing concisely and coherently as well as improving speaking fluency by delivering oral presentations. Focus will be placed on increasing, understanding and using computer science terminology. Collaboration and interaction between students will be achieved through various group and task-based activities.
Teaching Methodology: Task-based learning, Communicative, Collaborative
Bibliography: Course pack
Assessment: Midterm exam, final exam, oral presentations, assignments
Language: English
Course Title: Calculus Ι
Course Code: MAS 012
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year / 1st semester
Teacher’s Name: G. Georgiou (or other Mathematics and Statistics faculty member)
ECTS: 5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and Objectives: Introduction to the basic notions of Calculus and familiarization of the students with the basic theorems and techniques. The course is designed for Computer Science students.
Learning Outcomes: The students learn how to calculate limits, differentiate and integrate. Emphasis is put on the applications of derivatives and integrals.
Prerequisites: None Required: None
Course Content: Introductory notions. Functions. Limits and Continuity. Derivatives and applications. Integrals. Indefinite and definite integrals. Fundamental theorems of Calculus. Integration techniques. Area, Volume Length of a curve.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- H. Anton, I. Bivens, and S. Davis, Calculus Late Transcendentals, 10th Edition, Wiley, 2013
- Γ. Γεωργίου, Χ. Σοφοκλέους, Σημειώσεις Μαθηματικών, Τόμος Α’, Κατζιηλάρης, 1995
Assessment: Final exam, midterm exam, quizzes, and class participation.
Language: Greek
Course Title: Calculus ΙΙ
Course Code: MAS 013
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year / 2nd semester
Teacher’s Name: A. Vidras (or other Mathematics and Statistics faculty member)
ECTS: 5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and Objectives: Introduction of the students to basic notions of calculus in one variable, in particular power series, integrals and applications of them in geometry and science.
Learning Outcomes: The students are expected to
- Acquire a solid knowledge of one variable calculus,
- Be able to solve problems involving power series and integrals
- Use the theory developed in order to solve certain geometric and physical problems.
Prerequisites: MAS012 Required: None
Course Content: Power series, Taylor and Maclaurin Series, Analytic functions, Indefinite and definite integrals, Geometric applications, Multivariable functions, Improper integrals.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- H. Anton, I. Bivens, and S. Davis, Calculus Late Transcendentals, 10th Edition, Wiley, 2013
Assessment: Midterm and final exam.
Language: Greek
Course Title: Linear Algebra
Course Code: MAS 029
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 1st year / 2nd semester
Teacher’s Name: E. Ieronymou (or other Mathematics and Statistics faculty member)
ECTS: 5 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and Objectives: Introduction to the basic principles of Linear Algebra. Linear spaces, linear independency, base, dimension, inner product spaces. Linear systems of equations, matrices determinants, eigenvalues, eigenvectors. Gram-Schmidt normalisation. Introduction to Analytic Geometry.
Learning Outcomes: The students get familiar with basic principles of Linear Algebra.
Prerequisites: None Required: None
Course Content: Linear spaces, linear independency, base, dimension, inner product spaces. Linear systems of equations, matrices, determinants, eigenvalues, eigenvectors. Gram-Schmidt normalisation. Introduction to Analytic Geometry.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- Γ. Γεωργίου, Γραμμική Αλγεβρα, Καντζιηλάρης, Λευκωσία, 1998.
- Χ. Σοφοκλέους, Στοιχεία Γραμμικής Άλγεβρας, 2016.
Assessment: Midterm and final exam.
Language: Greek
Course Title: Introduction to Probability and Statistics
Course Code: MAS 055
Course Type: Compulsory
Level: Undergraduate
Year / Semester: 2nd year / 3rd semester
Teacher’s Name: X. Miscouridou (or other Mathematics and Statistics faculty member)
ECTS: 7 | Lectures / week: 2 x 1.5 hours | Recitation / week: 1 x 1 hour | Laboratories / week: 0 hours
Course Purpose and Objectives: To present to students of computer science basic ideas of probability and statistics which are relevant to computer science
Learning Outcomes: With the completion of the course, the students should have the necessary background and knowledge in probability and statistics and be able to appreciate the applications in their field of computer science.
Prerequisites: None Required: None
Course Content: Combinatorics, probability, conditional probability, Bayes' Theorem, classical probability problems (distribution of balls in containers, the birthday problem, etc.). Random variables, distributions (discrete and continuous). Independence. Expected value (and other properties), applications of distributions. Probability inequalities (Jensen's inequality, Markov's inequality, Chebyshev's rule). Estimators of unknown parameters. Central Limit Theorem. Introduction to stochastic processes, Markov chains, applications, random walks, Poisson process. Statistical functions, point estimation, confidence intervals, hypothesis testing, applications. Correlation of random variables, simple linear regression and applications. Use of a statistical package or statistical programming language (e.g., R) for the Statistics part. Students are required to familiarize themselves with the basic concepts of the course through a series of practical applications and exercises.
Teaching Methodology: Lectures (3 hours weekly) and Recitation (1 hour weekly).
Bibliography:
- R. Hogg and A. Craig: Introduction to Mathematical Statistics, Prentice-Hall, 2012
- M Mitzenmacher and E. Upfal: Probability and Computing, Cambridge University Press, 2005.
Assessment: Final exam, midterm exam and homework (in R).
Language: Greek