Database Systems Design

Learning Outcomes

The students upon the successful completion of the course will be able:

  • to analyze a database design problem and collect the requirements for implementing a database system.
  • to design a relational database at conceptual and logical level and create the appropriate data models
  • to design and implement well structured databases based on normalization rules.
  • to use the appropriate tools to design and implement a relational database
  • to formulate SQL queries for defining and managing databases

Course Contents

  • Introduction to Relational databases.
  • Entity-Relationship Model: Basic concepts, Entity Sets, Relationship Sets; Design Issues: Keys, E-R Diagram, Design of an E-R Database Schema, Reduction of an E-R schema to tables.
  • Relational model: Relations; Attributes; Relational schema; relational algebra (operations); relational calculus.
  • Database design: Normalization, Integrity constraints, functional dependencies, decomposition, normal forms
  • SQL: Basic structure, Set Operations, Aggregate Functions, Joins, Nested sub-queries, views, Modification of the Database (insert; update; delete), triggers.

Recommended Readings

  • Vassilacopoulos G. (2011): Information Systems (in Greek).
  • Ramakrishnan R. & Gehrke J. (2002): Database Management Systems, 3rd Edition, McGraw Hill.
  • Elmasri B.R. & Navathe S.B. (2007): Fundamentals of Database Systems, 5th Edition, Addison-Wesley.

Statistics

Learning Outcomes

The course’s material includes mathematical definitions, fundamental concepts, results and reasoning methodologies that pertain to basic Statistical analysis 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 (e-learning, e-health) using new technologies with the help of programs such as Matlab, SPSS and R.

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

  • Know, describe and handle the basic knowledge of Statistical Analysis (indicatively: descriptive statistics, sampling and sampling distributions, estimation (principle of maximum likelihood)), Statistical inference, confidence intervals, confidence tests and assumptions, fit, linear regression, analysis of variance, logistic regression, statistical analysis with software, applications in computer science).
  • ·         Select the appropriate mathematical concepts of statistical analysis and be able to model the particular problem of computer science 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.·
  • To define the types of conclusions drawn by statistical inference, to be able to know what is the appropriate model for data analysis, and to evaluate the accuracy of the results of statistical methods.·
  • Know the Matlab, SPSS and R programs and can interpret the results from them.

Course Contents

  • Sample theory, samples, replacement, random samples and numbers.
  • Sampling distributions and statistical interrelations.
  • Frequency and relative frequency.
  • Cluster sampling, stratified sampling, systematic sampling, statistical estimations unbiased estimations.
  • Reliability and confidence intervals.
  • Hypotheses testing and importance of statistics hypotheses, significance level, normal distribution testing.
  • Interpretation of criterion t for dependent and independent samples.
  • Adaptation test x2.
  • Adaptation curve, regression and cross-correlation adaptation curve, regression, least square.
  • Multiple regression, estimation fault, factors of cross-correlation.
  • Correlation and independence.
  • Interpretation of indicators of cross-correlation, Pearson, Spearman, Biserial, φ.
  • Propagation analysis, interpretation of propagation analysis.
  • Multiple-variables statistical analysis.

Recommended Readings

  • M. Filippakis, Statistical Methods & Regression Analysis for New Technologies, Tsotras Publications, Athens 2017, 1rst Edition.
  • T.Papaioannoy-S.Loukas, Introduction to Statistics, Stamoulis Publications, Athens (2002).
  • Teaching Notes.

Operating Systems – UNIX

Learning Outcomes

The purpose of the course is to highlight the particular requirements and features of operating system multiprocessor systems, multi-computers, distributed systems and multimedia systems. Also it covers operating system’s security issues as well as the basic design principles. At the same time, emphasis is placed on the UNIX operating system (use and programming).

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 for multiprocessing, multi-computing and distributed systems.
  • to know the basic security mechanisms (authentication, authentication, access control, etc.) that an operating system implements and the basic principles of designing an operating system.
  • to analyse, evaluate and justify alternative technologies / mechanisms of operating systems.
  • to design scripts for implementing specific functionalities at the operating system level.

Course Contents

  • Operating Systems for Multiprocessors, Multi-Computers and Distributed Systems.
  • Multimedia Operating Systems: Multimedia Files, Video Compression.
  • Time scheduling of Multimedia Files.
  • Security of Operating Systems: Threats, Attacks, User Identity Certification, Access Control Mechanisms.
  • Design principles of Operating Systems.
  • Smart Card Operating Systems: Multi-application support from a service provider, multi-application support, JAVA cards.
  • UNIX History and Basic Concepts: File System Navigation, UNIX shell, Utilities, The Kernel Structure.
  • UNIX Processes.
  • Memory management in UNIX.
  • Input – Output in UNIX.
  • The UNIX File System.
  • The Bourne shell: Use, shell Environment Adaptation, Redefining Input and Output.
  • Shell Programming: Variables, Flow Control, Regular Expressions, Signals.
  • System Management, User and Group Management, Disk Management and File Systems, Software Installation and Management.

Recommended Readings

  • Andrew S. Tanenbaum, Herbert Bos (2018), Modern Operating Systems, 4th American Edition.
  • Wrightson K. & Merlino J. (2001): Mastering UNIX.

Computer Networks I

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

Data Analytics

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.
  • Multivariate analysis: using visualization techniques for multivariate data analysis, the curse of dimensionality, empty space phenomenon, dimensionality reduction techniques.
  • Modeling: computations and estimations, model building, from descriptive modeling to mathematical modeling.
  • 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.
  • Simulation: how simulations can be used for extracting information from data, Monte-Carlo simulations, simulation when analytical modeling is complex, model building with simulations, model validation with simulations.
  • The problem of clustering, pre-processing and post-processing, clustering methods, center-seekers, tree builders, neighborhood growers.
  • Principal component analysis (PCA), the problem of finding important attributes, feature selection methods, application of PCA in practice.
  • Predictive analytics, the problem of classification, classification algorithms, training, testing, evaluation of classification results, techniques for improving precision.

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.

Algorithms and Complexity

Learning Outcomes

Upon successful completion of this course, students should be able:

  • to explain and deal with fundamental concepts regarding algorithms and complexity, such as “problem” and “problem class”, algorithm, instance, computational resources and resource requirements as a function of instance’s size, asymptotic behavior, symbols for asymptotic behavior, recursive functions and methods for their resolution.
  • to analyse, select and evaluate algorithms based on the concepts and methods mentioned above.
  • to design computationally effective algorithms based on the above concepts and algorithms’ design techniques (divide and conquer, greedy, dynamic programming).
  • to communicate algorithmic ideas in a concise and formal way.

Towards constructing and evaluating computational programs and advancing their computational effectiveness.

Course Contents

  • Asymptotic notation
  • Examples of algorithms and their analysis in priority queues and heaps
  • Sorting in linear time: Union-Find
  • Divide and Conquer: examples of algorithms and their analysis (mergesort, multiplication of numbers and matrices, nearest points), master theorem and proof.
  • More on divide and conquer: quicksort and probabilistic quicksort as an example of non-deterministic algorithms and of their analysis
  • Selection algorithms and analysis
  • Greedy Algorithms, proofs fs soundness
  • Dynamic programming and examples (including graph problems)

Recommended Readings

  • Τ. Cormen, C.Leiserson, R.Rivest, C.Stein (2009): Introduction to Algorithms, The MIT Press
  • Papadimitriou C. H. & Steiglitz K. (1982): Combinatorial optimization: algorithms and complexity, Prentice Hall.
  • Knuth D. (1997): Fundamental Algorithms, Third Edition. Reading, Massachusetts: Addison-Wesley,
  • Kleinberg J. &Tardos E. (2006): Algorithm Design, (Pearson International Edition), Addison Wesley,
  • Anany V. Levitin (2007): Introduction to the Design & Analysis of Algorithms, (Pearson International Edition), Addison Wesley.

Associated scientific Journals

  • Journal of Complexity, Elsevier, ISSN: 0885-064X
  • Algorithmica, Springer, ISSN: 0178-4617 (Print) 1432-0541 (Online)
  • Theoretical Computer Science, Elsevier, ISSN: 0304-3975