### Learning Outcomes

This course provides an introduction to stochastic processes in communications, signal processing and digital and computer systems. Topics include continuous and discrete random processes, correlation and power spectral density, Markov chains, and queuing theory.

At the end of this course, students will have acquired advanced/in depth knowledge in the field of Stochastic Processes, with particular emphasis on Probabilities, Stochastic Analysis, Stochastic Modelling and design of systems and signals with stochastic behavior.

The students will be capable of formulating and processing problems using Stochastic Analysis tools, quantitatively and qualitatively assessing stochastic properties and applying these methodologies and design principles to real world problems in telecommunication networks, taking into account critical parameters, such as spectral efficiency requirements, noise spectral density, interference, signals and waveforms.

### Course Contents

- Introduction: review of probability theory, Stochastic Processes, types of stochastic processes.
- Mean and ergodicity.
- Gaussian stochastic processes.
- Multi-variable stochastic processes.
- Independent, identically distributed random sequences.
- Discrete stochastic processes.
- Continuous stochastic processes.
- Markov chains: introduction to Markov chains, discrete-time Markov chains.
- Poisson processes: theory and applications.
- Stationary processes.
- Transmission of a random process through a linear time-invariant filter.
- Power spectral density.

### Recommended Readings

- Papoulis A., Unnikrishna, S. Pillai (2002): Probability, Random Variables and Stochastic Processes, McGraw-Hill Education – Europe.
- Yates R. & Goodman D. J. (2004): Probability and Stochastic Processes, John Wiley & Sons.

### Learning Outcomes

The course’s material includes mathematical definitions, fundamental concepts, results and reasoning methodologies that pertain to basic multivariate calculus and fourier theory objects and models underlying the foundations and applications of computer science. Moreover the relevant connections of the fourier analysis to several more specific branches of computer science are presented. The course directly supports most of the curriculum subjects and lessons: Note that during the lesson, specific examples of application are discussed using new technologies with the help of programs such as Matlab, Octave and R.

Upon successfully completion of the course the students will be in position to:·

- Know, describe and handle basic knowledge of mathematical analysis of many variables (indicatively: Gamma and Beta Function, Laplace Transformation, Multiple Variable Functions (Derivation, Integration), Sequences and Function Sequences, Fourier Series, Fourier Integral, Fourier Integral)·
- Choose the appropriate mathematical concepts and be able to model the particular IT problem that it is called upon to solve. In addition to develop mathematical thinking and being able to analyze and adapt acquired knowledge to applications of computer science. ·
- Combine the essentials of Multivariate Computation and Fourier theory to solve more complex mathematical problems.·
- Know, handle and understand Matlab, Octave and R programs on applications of mathematical analysis of multiple variables and fourier theory in computer science.

### Course Contents

- Improper Integrals, Improper Integrals Depending on a Parameter. Gamma and Beta Functions.
- Laplace transformations.
- Vectors in the level and in the space.
- Vector interrelations. Applications: laws of Kepler.
- Functions of Two Variables. Differentiation of Functions of Two Variables. Interrelations of multiple variables (definition, graphic representation, limits, constantly, certain derivative, derivative as for direction, total differential gear, very little – biggest).
- Precise differential equations.
- Double and triple integrals, change of coordinates – applications.
- Sequences and Series of Functions
- Fourier Series and Integrals. Fourier transformations.
- Completion of vector fields (bent – divergence – turn, curve integrals, surface integrals, theorems green, gauss, stokes).

### Recommended Readings

- M. Filippakis, Applied Analysis and Fourier Theory, Tsotras Publications, Athens 2017, 2nd Edition.
- Zygmund A. (2003): Trigonometric Series, 3rd Edition, Cambridge University Press.
- Teaching Notes.

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

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: 10
^{th}, Authors: H. M. Deitel, P.J. Deitel, Publisher: A. Gkiourda & Sia S.A., 2015 (__1__^{st} Book)
- “Introduction to Java”, Edition: 2
^{nd}, Authors: G. Liakeas, Publisher: Kleidarithmos Ltd, 2015 (__2__^{nd} Book)
- Notes and course slides