The Laboratory's educational activities cover many computer science topics from software development, to data management, computer graphics and HCI.
Members of the Lab are teaching and/or supporting several courses of both the undergraduate and postgraduate curricula of the School of Electrical and Computer Engineering of the Technical University of Crete.
Instructor: Aikaterini Mania
Introduction to computer science. Introduction to algorithms and computer programming, Structured programming, development of accurate and fast algorithms, characteristics of advanced programming languages. Introduction to procedural programming utilizing the C programming language. Programming cycle execution. Syntax and grammar of C. Generic data types. Definition of variables and constants. Operators and expressions. Conditional operators and advanced program control. Input and output functions. Programmer–defined functions. Arrays. Structures. Pointers. Using disk files.
Laboratory Teaching Staff: George Anestis, Fotis Kazasis, Nektarios Moumoutzis
Introduction to the concepts of object-oriented programming. The concepts of class and object. Member variables / Methods / Class Access Levels, Data Encapsulation, Class Inheritance, Polymorphism, Method Overloading. Abstract classes, abstract methods. Introduction to Language and Java platform. Object-Oriented Programming in Java: Classes, Objects, Interfaces, Enumerations, Exceptions, Packages, Libraries. Abstract data types. Examples of abstract data types and their implementation. Lists and variants of (simply / double interconnected lists, circular lists). Queues and Stacks. Recursion. Data types based on tree structures. Binary search trees. Hash-based structures. Applications with search algorithms.
Laboratory Teaching Staff: Nektarios Gioldasis, Ioannis Maragkoudakis
Overview of software development methodologies: development methodologies, waterfall models, the unified rational model, and agile methodologies. Requirements elicitation, analysis, recording. Feasibility analysis of software projects, economic feasibility of projects, cost-benefit analysis. Prototypes, use cases. System analysis, design, testing, maintenance. Object-oriented modeling methodologies and languages. Unified Modeling Language (UML). Modeling structure, behavior, activities, states, constraints in UML. Object-oriented systems design patterns such as observer, factory, state, and more. The course includes practical requirements analysis work and real-world software system modeling, as well as programmatic implementation system prototypes, with an emphasis on the implementation of graphical user interfaces
Laboratory Teaching Staff: Nektarios Gioldasis, Nikos Pappas
Instructor: Antonios Deligiannakis
Conceptual modelling. Entities, relationships between entities, modelling constraints, cardinality and integrity constraints, functional dependencies. The Entity–Relationship model. The Entity–Relationship model for user requirements analysis and representation. Logical data models. The Relational model. Conversion of the Entity–Relationship to the Relational model. Language
support for the Relational model. Relational database design issues. Functional dependencies. Relational database Normalization and Normal Forms. The SQL–92, SQL–99 standards. Views support. Embedded SQL
Laboratory Teaching Staff: Fotis Kazasis, Nikos Pappas
Complexity models and concepts. Introduction to discrete mathematics for algorithm analysis. Asymptotic cost. Recursion and recursive equations, solution by induction, master theorem. Fundamental recursive algorithms: multiplication, Karatsuba algorithm, FFT. Class statistics. Dynamic programming, memorization. The Knapsack problem. Nondeterminism, Cook's theorem, the classes P and NP, NP-completeness. Distributed complexity, distributed cost in basic data structures. Range search in ordered sets, data structures for multidimensional range search. Introduction to graph theory. Data structures for graph representation. Graph traversals, depth-first and breadth-first traversal, traversal of acyclic directed graphs, topological classification. Connected segments. Weighted graphs. Minimal spanning trees, Prim and Kruskal algorithms. The union search problem. Ackerman's function. Shortest paths and distance metrics. Triangular inequality. Representation of shortest paths from a source and all pairs. The BellmanFord algorithm. Dijkstra's algorithm. Transitive closure. Johnson's algorithm. FloydWarshall's algorithm.
Laboratory Teaching Staff: Ioannis Maragkoudakis
Sets, relations, alphabets, languages. Finite automata, regular expressions, regular languages. Equivalence of finite automata and regular expressions. Minimization of automata. Lexical analysis. Stack automata, context-free grammars, context-free languages. Equivalence of stack automata and context-free grammars. Syntactic analysis. Turing machines and their extensions, unconstrained grammars, recursive languages. Nondeterminism, nondeterministic Turing machines, recursively enumerable languages. Language hierarchy. Decidability, computability, unsolvability. The Church and Turing position. Universal Turing machines, reductions. Rice's theorem. Computational complexity and complexity classes. NP-completeness and polynomial reductions. Cook's theorem. Dealing with NP-completeness. Application to the problem of compilation and laboratory teaching of flex, bison, JavaCC tools.
Laboratory Teaching Staff: George Anestis, Nektarios Moumoutzis
Instructor: Aikaterini Mania
The course is an introduction to the principles of interaction of people and computers and its use to design and evaluate applications. Psychology of interaction with objects, mental models, reasonable models, transfers. Human processor, perception models, cognition, memory, mechanical motion. Models for design and evaluation of applications on multiple devices and environments. Design focused on tasks. Requirement recording. Usability, usability assessment. Usability Testing, Think Aloud, Usability Inspection, Heuristic Evaluation, Cognitive Walkthroughs. Design and creativity. Brainstorming, Personas, Wireframing, Storyboarding, Paper Prototyping, Software Prototyping. Universal design for all. Principles of visualization.
Instructor: Aikaterini Mania
Basic techniques of graphics and 3D graphics. Useful mathematical methods. Transformations (translation, rotation, scaling). Rendering equations. Local and global models of diffuse and specular radiant energy (local, global illumination). Photorealism algorithms, shaders. Hidden surfaces and shading techniques. Other topics (ray tracing, radiosity, path tracing, color theory, antialiasing, animation, visualization). Optimizations of algorithms based on perception models. Computational fidelity measures. Basic platforms for implementing interactive 3D computer graphics in real time. Input-output and virtual reality peripherals.
Instructor: Antonios Deligiannakis
Sensors: Features, restrictions. Sensor network applications. Distributed information processing in sensor networks. Continuous questioning. Types of continuous questions and features. Inquiry languages. Ways to collect information. Storage, indicating and searching for information. Gathering tree. Synchronization and data transmission. Methods of construction of a gathering tree. Distributed sensor organization, information review. Applicative insults in sensor networks. Monitoring of moving objects. Loss of loss and multiple information calculation, ways of dealing with. Sensor quality quality. Ways of identifying and isolating incorrect measurements
Instructor: Antonios Deligiannakis
Improving database performance. Multidimensional indexes. Query optimization. Data warehouses. Analytical Data Processing. Data cube and its calculation methods. Data mining. Data summaries. Joining data streams with large relationships on disk. Parallel query processing. Big Data Platforms.
Instructor: Aikaterini Mania
The aim is to familiarize oneself with the basic principles, technologies and applications of virtual representation and virtual reality and the methodology for building virtual systems using existing 3D modeling software tools and libraries/platforms for implementing 3D interactive applications. The main objective will be to prepare a comprehensive project on the implementation of virtual reality and 3D graphics with elements of human-machine interaction theory.