DS-201 Computer Architecture [C]

- Course Code DS-201 Type of Course Core
- Theory/Lab Sessions 3 hours / 2 hours ECTS Credits 5
- Semester 2nd Semester Faculty Apostolos Meliones
- E. L. Makri

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.

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

DS-002 Mathematical Analysis ΙΙ [C]

- Course Code DS-002 Type of Course Core
- Theory/Lab Sessions 4 hours / 1 hours ECTS Credits 7
- Semester 2nd Semester Faculty Michael Filippakis

This course attempts to enhance the knowledge gained in the course Mathematical Analysis and to provide an appropriate mathematical background that enables the students to study the fields of computers and computers networks. After successfully completing this course, students are expected to have acquired the basic knowledge of Analysis regarding Gamma and Beta functions, Laplace Transform, Sequence and Series of Functions, Functions of two or more variables (differentiation, integration), as well as Fourier series, integrals and transform, which are necessary in Computer Science. The course directly supports most of the curriculum subjects and lessons: Note that during the lesson, specific examples of application are discussed in some of the above curricular subjects such as applications in telecommunication systems, cryptography, digital services such as e- learning, e-health. In conclusion, the students through the course process develop mathematical thinking and analyze, adapt their acquired knowledge to apply them to a variety of subjects in the field of study or the field of study, as well as to acquire new knowledge. In addition, they learn to solve complex or new problems in their scientific field of study by developing integrated as well as creative or innovative solutions and approaches while supporting their solutions and views in a methodical and scientific way. Finally, they learn to analyze and critically and responsibly choose ideas and information about those elements that concern them.

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

DS-004 Discrete Mathematics [C]

- Course Code DS-004 Type of Course Core
- Theory/Lab Sessions 4 hours / 0 hours ECTS Credits 5
- Semester 2nd Semester Faculty Orestis Telelis

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.

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

DS-012 Stochastic Processes [C]

- Course Code DS-012 Type of Course Core
- Theory/Lab Sessions 4 hours / 0 hours ECTS Credits 6
- Semester 2nd Semester Faculty Angeliki Alexiou

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.

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

DS-502 Object-Oriented Programming [C]

- Course Code DS-502 Type of Course Core
- Theory/Lab Sessions 3 hours / 2 hours ECTS Credits 7
- Semester 2nd Semester Faculty Andriana Prentza
- K. Moutselos

The aim of this course is the introduction of the students to object-oriented way of thinking for problem modelling and solving and to object-oriented programming and their familiarization with the fundamentals of object-oriented Java programming. More specifically, the students a) are taught the basic concepts and techniques that constitute the paradigm of object-oriented programming, b) acquire skills in designing and coding algorithms in Java and c ) acquire the ability to develop, debug, and test programs in an integrated development environment. Through the preparation of properly designed laboratory exercises, students are expected to gain practical experience in developing Java programs.

The course introduces the students to object-oriented programming using Java programming language. Students are taught the fundamentals of Object Oriented Programming (OOP).

- Introduction to Object-Oriented Porgramming
- 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