Learning Outcomes
The course seeks to introduce the students to telecommunication systems by focusing on physical layer technologies. By concluding the course, students are able to
- thoroughly understand the principles that govern the transmission in telecommunication systems as well as the principles of analysis and design of telecommunication systems
- recognize the discrete functions performed in a telecommunication system
- distinguish and explain the mathematical tools describing the functions of a telecommunication system
- apply mathematical notations and tools in the analysis and synthesis of both existing and new analog and digital telecommunication systems
By concluding the lab sessions students are able to
- identify and apply the acquired theoretical knowledge in real-world problems
- use and exploit laboratory equipment for observation, measurement and comparison of real signals.
Course Contents
Introduction to signal theory (categories and elementary signals, basic signal conversions) and to telecommunication systems (categories, Linear Time Invariant systems). The concepts of impulse response, convolution, autocorrelation and cross-correlation are also introduced. Next, the representation of signals is explained in the case of digital modulation techniques by introducing the geometric signal representation (vectors in spaces, Hilbert space, bases and representation of signals using orthogonal signals, Gram-Schmidt ortho-normalization, linear systems and eigenfunctions).
Then the Fourier series theory is presented (Fourier series expansion, properties, real signals and expansion in Fourier trigonometric series, LTI system response in periodic signals, Parseval theorem for periodic signals) as well as the Fourier transformation is examined (Fourier transform for real signals, properties, Fourier transform for periodic signals, energy & power spectral densities). Subsequently, students are introduced to the concept of filters and noise (types of ideal filters – characteristics, transmission without distortions and type of distortions, white noise and noise power spectral density). Then, an extended reference is made to the application of Fourier analysis in telecommunication systems. The concept of passband signals and systems is developed by means of the Hilbert transformation, the pre-envelope and the complex envelope. Sampling theorem and Nyquist rate is also extensively discussed. Analog modulation techniques (amplitude and frequency) are presented providing the modulation and demodulation procedures and systems in time and frequency domains.
In addition, extra content (in evdoxos.ds.unipi.gr) like articles, audiovisual lectures and Internet addresses, as well as exercises for student’s practice are posted electronically. Case studies, exemplary problems and methods for solving them are presented.
Recommended Readings
- “Introduction to Telecommunications”, Book code in www.eudoxus.gr: 68373981, Edition: 2nd edition/2017, Author: Kanatas Athanasios, ISBN: 978-960-418-745-4, Publisher: A.Tziola & Sons S.A. (1st Suggested Book)
- “Telecommunication systems”, Book code in www.eudoxus.gr: 68369851, Edition: 4th edition/2017, Authors: Karagiannidis Georgios, Pappi Koralia, ISBN: 978-960-418-675-4, Publisher: A.Tziola & Sons S.A. (2ndSuggested Book)
Associated scientific Journals
- ΙΕΕΕ Transactions on Communications
- IEEE Communications Magazine
- IEEE Communications Letters
Learning Outcomes
In the context of this course, the fundamental data structures are presented and analyzed, along with their usage in programming and software development. The course’s aim is to familiarize the students with the concepts of organizing data in the computer’s main memory for efficient access, the role of data structures in designing and implementing algorithms, and with scaling end computational efficiency issues, for large sets of data.
Upon successful completion of the course, the students will be in position:
- to know and understand basic data organization concepts and access efficiency in the computer’s main memory.
- to choose the appropriate data structures to use, in the development of software applications.
- to evaluate the complexity of algorithms using specific data structures, with respect to the execution time and space requirements that the underlying data incur.
Course Contents
- Introduction, course overview, complexity analysis as an evaluation tool of the performance of operations on data structures
- Arrays
- Stacks and Queues
- Linked Lists, Simply Linked Lists, Doubly Linked Lists, Circular Lists
- Simple Sorting (bubblesort, selectionsort, insertionsort)
- Binary Trees, Binary Search Trees
- Balanced Binary Search Trees
- Priority Queues, Introductory Elements of Advanced Sorting.
- Red-Black Trees, 2-3-4 Trees
- Multiway Search Trees, B-Trees
- Hash Tables
- Graphs as Data Structures, Representation (adjacency matrix and list), Basic Search Algorithms (Depth-First and Breadth-First Search)
- Recapitulation
Recommended Readings
- R. Lafore. Data Structures and Algorithms in Java, Sams, 2002.
- M. T. Goodrich, R. Tamassia, M. H. Goldwasser. Data Structures & Algorithms in Java, John Wiley & Sons, 2014.
- R. Sedgewick. Algorithms in Java, Parts 1-4. Addison Wesley, 2002.
Learning Outcomes
The course Computer Networks I is expected to introduce students to the concepts of Computer Networks and more specifically in the network protocols’ hierarchy, emphasising on the network layer.
Through this course it is expected that the students will get acquainted with the functionality of computer networks and will be able to comprehend the principles on which data transfer is realised through computer networks.
Upon successful completion of the course, the students will be in position to:
- know and describe in detail how the network protocols work, as well as their architecture,
- know the functionalities of the network layer,
- select and apply the appropriate routing algorithms,
- choose the most appropriate route each time, depending on the network needs,
- describe, analyze and further develop network-level algorithms in languages such as C/C++ or Java.
Course Contents
- Section 1: Introduction to networks, need for networks, categories of networks. Network elements and communication links.
- Section 2: Protocols and protocol hierarchies/stacks, role of protocols.
- Section 3: Functionality of network layer.
- Section 4: Switching, circuit switching; packet switching, datagrams, virtual circuits.
- Section 5: Routing, link state routing, Dijkstra, Bellman-Ford, spanning tree, multicast, broadcast.
- Section 6: Congestion control.
- Section 7: Students are asked to conduct small projects, related to the implementation of network level functionality and algorithms, through the use of C/C++ and/or Java.
- In addition, articles, web addresses for useful information, as well as exercises for practicing students are posted in the platform Evdoxos.
Recommended Readings
- Haykin S. (1994): Communication systems, Wiley.
- Tanenbaum A. (2003): Computer Networks, Prentice Hall.
Associated scientific Journals
- ΙΕΕΕ Computer Networks
- IEEE Communications Magazine
- IEEE Access
- IEEE Wireless Communications
- International Journal of Network Management
- Transactions on Emerging Telecommunications Technologies
- EURASIP Journal on Wireless Communications and Networking
Learning Outcomes
The course’s material includes mathematical definitions, results and reasoning methodologies, that pertain to basic discrete objects and models underlying the foundations and applications of computer science. Moreover, the relevant connections of discrete mathematics to several more specific branches of computer science are presented.
Upon successful completion of the course, the students will be in position to:
- know and understand basic analysis methods of discrete mathematics (indicatively: induction, combinatorial enumeration, solving recurrences, graph theory).
- choose the appropriate mathematical concepts and representations for each problem at hand (algorithm design, programming, network analysis, study of a cryptographic protocol, database design).
- choose the appropriate analysis method for evaluating the performance and soundness of the mathematical model that he/she implements for the problem at hand.
Course Contents
- Sets, Functions, Sequences.
- Mathematical Induction.
- Elements of Number Theory.
- Combinatorial Enumeration.
- Recurrence Relations.
- Generating Functions.
- Order of Functions.
- Complexity of Algorithms.
- Mathematical Relations.
- Elements of Graph Theory.
Recommended Readings
- K. Rosen. Discrete Mathematics and its Applications. McGraw-Hill Education, 2012.
- S. Epp. Discrete Mathematics with Applcations. Brooks Cole, 2011.
- R. L. Graham, D. E. Knuth, O. Patashnik. Concrete Mathematics. Addison Wesley, 1994.
Learning Outcomes
This course addresses concepts and technologies concerning the development of internet systems and applications. With the completion of the course, the student will be in position to:
- Understand and become familiar with the key concepts and principles of web programming including aspects related to client-server programming, server- and client- side development.
- Know the background and key concepts governing the web applications by analyzing the pros and cons of architectural and implementation decisions.
- Be able to implement web applications by using HTML5, CSS3 and Javascript for client-side programming, as well as approaches for server-side programming and use of data stores (including PHP and Node.JS technologies).
Course Contents
- Web server technologies.
- Client and server-side programming.
- Client-side development
- Hyper Text Markup Language 5 (HTML5)
- Cascading Style Sheets 3 (CSS3)
- Javascript
- Server-side development
- Server deployment/ applications
Moreover, the EVDOXOS system is utilized to provide additional useful information to the students as well as exercises that respond to the corresponding thematic topics / sessions covered by the course.
Recommended Readings
- Laura Lemay, Rafe Coburn, Jennifer Kyrnin, «Complete Tutorial of HTML 5, CSS and JavaScript», 2016
- S. Retalis, G. Tselios, «HTML lessons: From simple to complex», 2012
- Kavouras, Milis, Xilomenos, Roukounaki, “Distributed systems with Java”, 2014
- Harvey Deitel, Paul Deitel, «Internet & World Wide Web Programming», 2015
Learning Outcomes
The goal of this course is to introduce basic programming principles using the C programming language. C is a principal programming language and a fundamental component of C++ and Java. With the completion of the course, the student will be in position to:
- understand and become familiar with the key concepts and principles of programming regardless of the programming language (e.g. methods / functions, variables, control loops, etc.).
- know the main characteristics of the programming language C, as a basic language that can be applied to different cases and which is independent from the underlying operating system.
- be able to implement code artefacts that provide solutions to a variety of problems by utilizing programming techniques and methods.
Course Contents
- Introduction.
- Algorithms
- Pseudo code
- Concepts of programming languages
- Main elements of a c program
- Data types, variables, operands and expressions.
- Types, declarations and variable initialization
- Type modifiers
- Type casting.
- Flow control.
- Control: if, if…else, for, while, do etc.
- Use of logical and relational operands
- Arrays and strings.
- Use, creation and management of single-dimension
- Multi-dimensional arrays, use, creation and management of strings
- Pointers.
- Definition and initialization
- Use of pointers
- Functions.
- Function prototypes
- Recursive functions
- Function arguments/parameters
- Passing arguments to the main() function
- Input/output functions.
- Characters and alphanumeric input / output
- Analytical presentation of get (), puts (), printf (), scanf ()
- File management.
- Introduction to streams
- Introduction to file management
- Analytical examination
- Input / output functions in files.
- Structures, unions and enumerations.
- Define structures
- Structure management
- Use of structures
- Indicators in structures
- Creating associations
Moreover, the EVDOXOS system is utilized to provide additional useful information to the students as well as exercises that respond to the corresponding thematic topics / sessions covered by the course.
Recommended Readings
- Deitel H.M. – Deitel P.J. (2003): C Programming
- Schildt H. (2001): C Programming Language
- Ν. Xatzigiannakis (2016): C Programming Language
- G. S. Tselikis – N. D. Tselikas (2016): C: From study to practice
- Aitken P., (2000): C Tutorial
Learning Outcomes
Within the framework of the course, students will be able:
- To understand information security issues, especially regarding usable security)
- To recognize basic characteristics of modern authentication methods
- To select the appropriate access control methods regarding the application environments
- To understand Public Key Infrastructure characteristics, especially regarding electronic signatures
- To understand laws and regulations regarding cybersecurity
- To design and develop strategies that support business continuity management systems
- To understand the challenges posed by the evolving dynamics of the combination of the cognitive fields of cyber security, privacy protection, and Artificial Intelligence and the way they create social, cultural, political, and financial issues, as well as ethical issues in modern societies
- To possess state-of-the-art specialized scientific knowledge in the subjects of the course as a basis for original thinking and research activities.
Course Contents
- Information systems security. Socio-technical systems theory. Usable security
- Identification and authentication. Passwords: password management and good practices. Password cracking tools: Cain and Abel. Biometrics
- Access control and authorization: MAC – Mandatory Access Control, DAC – Discretionary Access Control, RRBAC – Role-Based Access Control, Access Control Matrix Model – ACM, Access Control List – ACL, Wildcards, Revoking access rights, Capability List – C-List
- Introduction to Applied cryptography: Symmetric and asymmetric cryptosystems, hash functions, Public Key Infrastructure, Trust Service Providers, Electronic signatures, eIDAS 2014/910, Digital Identity Regulation 2024/1183
- Cybersecurity regulatory issues: EU NIS2 2022/2555 Network and Information Security Directive, EU DORA 2022/2554 Digital Operational Resilience for the financial sector, EU Cyber Resilience Act, EU ePrivacy 2002/58, EU Data Retention 2006/24
- BCMS Business Continuity Management Systems and ISO 22301:2019: security and resilience requirements. Guidelines according to ISO 22313:2020 and ISO 22331:2018
- Privacy protection and personal data protection according to General Data Protection Regulation GDPR and ISO 29100:2024. Privacy Enhancing Technologies
Suggested Bibliography
- C. Pfleeger, Security in Computing, Addison Wesley, 2023
- R. Anderson, Security Engineering, J. Wiley & Sons, 3rd edition, 2020
- D. Gollmann, Computer Security, J. Wiley & Sons, 3rd edition, 2011
Scientific Journals
Learning Outcomes
The main objective of the course is the familiarization of the students with the binary logic, the digital design methodologies and the basic architectural characteristics and structure of a computer system.
At the end of the course, students will be equipped with fundamental knowledge in logic design and computer organization (see Course Content) which allows the critical deepening in the broad scientific domain of computer architecture, including microprocessor and micro-computing systems.
Students will be capable of:
- performing numerical calculations in numerical systems and representation standards which are typical in the computer architecture domain.
- designing, optimizing, analyzing and implementing complex logic and syncrhonous sequential circuits using various building blocks (gates, SSI/MSI integrated circuits, multiplexres, flip-flops etc).
- evaluating the elements and blocks of the Arithmetic and Logic Unit (ALU) of the Central Processing Unit (CPU).
- evaluating and comparing the performance of computer systems considering their organization, including the system memory hierarchy, caching efficiency and pipeline structures.
- deciding the target organization of the memory system hierarchy contributing to performing optimization of a computer system, taking into account the associated cost.
- efficient software programming using programming languages, considering their mapping on the computer architecture and hardware level.
- implementing and analyzing assembly codes across different instruction sets (stack, accumulator, register-memory and register-register models).
- implementing optimized assembly codes for CPUs with pipeline structures.
Course Contents
- Digital systems history.
- Numerical systems: binary, octal, hexadecimal, conversions from one system to the other.
- Binary arithmetic operations, use of complements, binary codes
- Logic Gates, Boolean algebra.
- Truth tables, Karnaugh charts, examples of logic circuits design, design with NAND/NOR gates, SSI/MSI circuits and multiplexers.
- Introduction to the synchronous sequential circuits, Flip – Flops (D, T, RS και JK-type), Design of counters, registers and shift registers.
- Methodology for designing and analyzing synchronous sequential circuits.
- Structure, organization and operation of computer systems, Von Neumann architecture.
- Data representation (fixed and floating point formats)
- Instruction sets, Assembly Language.
- Organization and operation of the central processing unit, Control unit.
- Memory hierarchy, memory cell, addressing modes, design of random access memory, interconnecting the memory and the central processing unit.
- Virtual memory. Paging and segmentation.
- Cache memory, cache memory organization.
- Evaluation of computer performance.
- Pipelining.
Recommended Readings
- Patterson D. & Hennessy J. (2010): Computer Orginization and Design, 4th Edition, Elsevier, Inc.
- Nikolos D. (2017): Computer Architecture, Papakonstantinou Publications (in Greek).
- M. Mano (2018): Digital Desing, 6th Edition, Pearson Education, Inc.
- Hennessy J. and Patterson A.: Computer Architecture: A Quantitative Approach, 4th Edition, Elsevier, Inc.
- Stallings W.: Computer Organization and Architecture: Designing for Performance, 10th Edition, Pearson Education, Inc.
- C. Hammacher, Z. Vranesic, S. Zaky (2002): Computer Organization. McGraw-Hill.
- Hayes J.: Computer Architecture and Organization (1997), 3rd Edition, McGraw-Hill.
- V. Nelson, H.T. Nagle, J.D. Irwin, B. Carrol (1995): Digital Logic Circuit Analysis and Design, Prentice Hall.
Learning Outcomes
The course’s material includes the basic concepts and techniques that constitute the object-oriented programming and how these are implemented in practice using the object-oriented programming language Java. In addition, the object-oriented way of thinking for problem modelling and solving is being analyzed.
Upon successful completion of the course, the students will be in position to:
- Explain the basic principles and techniques that constitute the model of object-oriented programming (indicatively: classes and objects, inheritance, polymorphism).
- Design and develop programs that implement specific algorithms in the object-oriented programming language Java.
- Test programs developed in Java in a specific integrated programming environment.
Course Contents
- Introduction to Object-Oriented Programming (OOP)
- OOP and basic concepts: classes, objects, messages, methods, access control, inheritance, polymorphism abstract classes
- Introduction to classes and objects in Java
- Control statements in Java
- Methods in Java
- Arrays in Java
- Packages in Java
- Inheritance in Java
- Polymorphism in Java
- Abstract classes in Java
- Exception handling
- Java APIs
Recommended Readings
- “Java Programming”, Edition: 10th, Authors: H. M. Deitel, P.J. Deitel, Publisher: A. Gkiourda & Sia S.A., 2015 (1st Book)
- “Introduction to Java”, Edition: 2nd, Authors: G. Liakeas, Publisher: Kleidarithmos Ltd, 2015 (2nd Book)
- Notes and course slides
Learning Outcomes
In this course, methods and techniques for data analysis are taught: visualization methods for data exploration, data modeling, data mining, and applications of data analysis and use of data. The aim of the course is to familiarize students with the concept of data analysis, and to obtain skills in management and analysis of data sets in real-life applications.
Upon successful completion of the course, the students will be in position:
- to understand the basic concepts of data analytics
- to use tools and techniques for exploratory data analysis
- to understand the properties and characteristics of a given data set
- to solve practical problems of data analysis using real data sets
- to model problems concerning data analysis and use the model for drawing conclusions for any given data set
- to apply predictive models and algorithms on data sets
Course Contents
- Introduction to data analysis: data, data types, data quality, data preprocessing, similarity measures, similarity of multidimensional data, string similarity, similarity between sets and lists, text similarity.
- Univariate and bivariate analysis: visualization, histograms, cumulative distribution function, elements of descriptive statistics, measures of position and spread, correlation, alternative mapping techniques using plots.
- Time-series analysis: trend, seasonality, noise, smoothing methods, moving averages, autocorrelation function, analyzing time-series in practice.
- Introduction to predictive modeling: feature selection, entropy, information gain, decision trees.
- Model fitting: linear models, linear regression, logistic regression, support vector machines. K-nn classification, Bayes classification
- Overfitting and model evaluation: classification algorithms, training, testing, evaluation, the problem of overfitting, fitting graph, holdout data, crossvalidation, learning graph, evaluation metrics.
- The problem of clustering, pre-processing and post-processing, clustering methods, center-seekers, tree builders, neighborhood growers.
- Association analysis: frequent itemsets, the Apriori algorithm, association rules, maximal frequent itemsets.
- Principal component analysis (PCA), the problem of finding important attributes, feature selection methods, application of PCA in practice.
- Probability theory and statistics: Binomial distribution and Bernoulli trials, the significance of the Normal distribution, Central Limit Theorem, power-law distributions, construction method for generator of random data distributions.
- Anomaly detection: typical problems, characteristics of anomaly detection methods, proximity-based approaches, density-based approaches, clustering-based approaches, evaluation of anomaly detection methods.
Recommended Readings
- Mohammed J. Zaki, Wagner Meira Jr. (2014): Data Mining and Analysis: Fundamental Concepts and Algorithms. Cambridge University Press.
- Jure Leskovec, Anand Rajaraman, Jeff Ullman (2014): Mining of Massive Datasets. Cambridge University Press, 2nd edition.
- Pang-Ning Tan, Michael Steinbach, Anuj Karpatne, Vipin Kumar (2016): Introduction to Data Mining, Publisher: Pearson.
- Philipp K. Janert (2011): Data Analysis with Open Source Tools, O’Reilly Press.