### Learning Outcomes

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

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

- Know and understand basic analysis method of mathematical analysis and linear algebra (indicatively: sequences, series, functions of one variable (differentiation, integration), differential equations, matrices, determinants, linear systems, inner product, characteristics values, orthogonal diagonalization)·
- Choose the appropriate mathematical concepts and representations for each problem at hand. In addition to develop mathematical thinking and be able to analyze and adapt acquired knowledge to applications of computer science·
- Combine the basic components of calculus and algebra to solve more complex mathematical problems.·
- Know, handle and understand Matlab and Octave programs on applications of mathematical analysis and linear algebra to computer science.

### Course Contents

- Sequences. Series.
- Functions of One Variable.
- Differentiation.
- Iterative Methods for Solving Equations.
- Polynomial Approximation of Functions.
- Numerical Differentiation.
- Indefinite Integral. Differential Equations.
- Definite Integral.
- Algebraic Structures: Groups. Rings.
- Fields. Vector Spaces.
- Basic Linear Algebra: Matrices. Determinants. Linear Systems.
- Characteristics of a Matrix: Eigenvalues. Eigenvectors. Diagonalization of Matrices. Bilinear Forms.
- Inner Product: Orthonormalization. Gram-Schmidt Algorithm.
- Linear Transformation Matrices: Change of bases matrix. Matrix of a linear transformation.

### Recommended Readings

- M.Filippakis, Applied Analysis and Linear Algebra, Tsotras Publications, Athens 2017, 2nd Edition.
- Χ. Moisiadis, Advanced Mathematics.
- Teaching Notes.

### Learning Outcomes

At the end of the course, students will be equipped with fundamental knowledge in first order mathematical logic, which allows the critical deepening in the scientific domain of mathematical logic, including higher order systems.

Students will be able to model and process real-life problems using tools of mathematical logic. The obtained skills include abilities such as the semantic analysis and precise modeling of real-life problems in the typical systems of the propositional and first order predicate logic, the use of proof systems and logic evaluation of arguments. Furthermore, students will be able to implement small scale expert system and artificial intelligence applications using the Prolog programming language.

The systematization of logic, which is strongly addressed by the course, will help students understand better and more deeply a plethora of scientific topics included in their program of studies and efficiently determine complex logic calculations both in the system hardware level and during application development in all practiced programming languages.

### Course Contents

The content of the course is to introduce:

- the language and semantics of propositional and first order predicate logic
- the study of logic arguments
- the understanding and use of proof systems for propositional and predicate logic (tableaux, direct mathematical argumentation, equivalences, natural deduction, Beth analysis)
- the translation between logic and natural language
- the Prolog programming language for Artificial Intelligence applications

### Recommended Readings

- Metakides G. (1992): Logic, Logic Programming and Prolog,Kardam;itsa Publishing (in Greek).
- Marakakes M. (2016): Prolog: Logic Programming for Artificial Intelligence. New Technologies Publishing (in Greek).
- S. Russel, P. Norvig (2009): Artificial Intelligence: A Modern Approach. Pearson.
- Tzouvaras Α. (1998): Mathematical Logic Elements. Ziti Publishing (in Greek).
- Portides D., Psyllos S., Anapolitanos D. (2007): Logic: The Argument Structure (in Greek).
- P.D. Magnus: forallx: An Introduction to Formal Logic
- Mendelson E. (1997): Introduction to Mathematical Logic, 4th Edition, Chapman & Hall.

### Learning Outcomes

The purpose of the course is to familiarize the students with the basic concepts of operating systems, their design principles, the themes they manage and the impact of their various variants on the operation of systems.

In this context, the learning outcomes of the course, after its successful completion, are that the students will be able:

- to understand the basic concepts of operating systems as well as the key areas / operating difficulties of a computational system that they are required to manage.
- to know the basic mechanisms that an operating system implements in order to serve multiple processes, to manage memory and manage the file system.
- to analyse, evaluate and justify alternative technologies / mechanisms of operating systems.

### Course Contents

- Basic Concepts and History of Operating Systems.
- Operating Systems Structure.
- Processes: Process Properties and Implementation, Interprocess Communication, Process time sharing and scheduling.
- Thread Use and Implementation, Emerging threads, Conversion of a single thread code to Multi-Threaded code, Thread Schedule.
- Deadlocks: Ostrich’s Algorithm, Detection, Recovery, Avoidance, Prevention.
- Memory Management: Virtual Memory, Design and Implementation of paging Mechanisms, Page Replacement Algorithms, Segmentation.
- Input / Output: Input / Output Hardware and Software, Disks, Terminals.
- File Systems: Files and Directories, Implementation.

### Recommended Readings

- Andrew S. Tanenbaum, Herbert Bos (2018), Modern Operating Systems, 4th American Edition.
- Silberschatz, Galvin, Gagne (2013), Operating Systems Concepts.

### Learning Outcomes

The course’s material includes mathematical definitions, fundamental concepts, results and reasoning methodologies that pertain to basic Probability Theory objects and models underlying the foundations and applications of computer science. Moreover the relevant connections of probability theory 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 in some of the above curricular subjects such as applications in telecommunication systems, cryptography, digital services such as e- learning, e-health using new technologies with the help of programs such as Matlab, Octave, SPSS and R.

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

- Know, describe the basic knowledge of Probability Theory (indicatively: probability definition, combinatorial analysis, random variables, discrete and continuous distributions, two-dimensional probabilistic generators and generators, etc.) basic values and the basic tools (probability mass and density functions, etc.) of Probability Theory.·
- Calculate the probabilities of possible non-trivial probability problems using probability theory, combinatorial and calculus.·
- Identify and know well-known probabilistic models in Computer Science problems.·
- Choose the appropriate mathematical method so that it can model the problem that it is called upon to solve and compile new probabilistic models for problems and systems that appear in computer science using simpler probabilistic models.·
- Know, handle, and understand Matlab, Octave, SPSS, and R programs on probability theory applications in computer science.

### Course Contents

- Accidental experiment, samples and possibilities.
- Definitions of possibilities.
- Finite samples with results of equal possibilities.
- Provisions, combinations, binomial theorem.
- Committed probability.
- The multiplicative theorem.
- Total probability and Bayes theorem.
- Independent trials.
- Random variables, probability distributions.
- Parameters of distributions, interrelation of distribution accidental variables.
- One-dimensional distributions.
- Continuous distributions.
- Discrete distributions
- Generators of proneness; probabilities generators.
- Two-dimensional distributions.
- Marginal distributions distributions, Average-Committed distributions
- Transformations of random variables-Stochastic independence of two random variables.

### Recommended Readings

- M. Filippakis, Probability Theory and elements of statistics analysis, applications with python, matlab, R, Spss, Tsotras Publications, Athens 2019, 1rst Edition.
- M. Filippakis-T. Papadoggonas, Probability Theory and Business Statistics, Tsotras Publications, Athens 2017, 1rst Edition.
- M. Koutras, Probability Theory and applications, tsotras publications, Athens 2015.
- Durrett R. (2004): Probability: Theory and Examples, 3rd Edition, Duxbury Press.
- Teaching Notes.

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