The course aims at a comprehensive introduction of students to fundamental concepts and methods of Computer Science. It consists of the following sections.
**Theory.** Computability and complexity. Efficiency of algorithms. Modeling of computation: automata, Turing machines, random access machines (RAM). Formal languages and grammars. Logic for computer science. Algorithms: techniques and strategies (divide-and-conquer, greedy method, dynamic programming), numerical calculations (GCD, exponentiation, integer and matrix multiplication), graph and network algorithms (shortest paths, minimum spanning trees), string algorithms (encoding, compression, recognition).
**Data management.** Introduction to databases and data models. The entity-relationship model. Relational model and relational algebra. Introduction to SQL. Introduction to application design and development. Current trends: data flows, distributed databases, map-reduce computing model.
**Artificial intelligence.** Introduction to artificial intelligence: historical data, Turing test, modern artificial intelligence and applications, terminology and areas of artificial intelligence. Problem solving with artificial intelligence methods: problem representation in graphs, solution search, solution finding algorithms (depth-first, breadth-first, iterative deepening), heuristic solution finding algorithms (hill climbing, best first, branch and bound, A*), game algorithms (min-max, alpha-beta). Symbolic artificial intelligence: from logic to artificial intelligence, formal knowledge representation, knowledge graphs, automatic reasoning. Machine learning: data analysis, classification and prediction, perceptrons, linear regression, classification with clustering.
- Teacher: Γεώργιος Αλεξανδρίδης
- Teacher: Ευστάθιος Ζάχος
- Teacher: Βασιλικη Καντερε
- Teacher: Αριστείδης Παγουρτζής
- Teacher: Θεοδώρα Σούλιου
- Teacher: Γεώργιος Στάμου
ECTS : 5
Study Load : theory 4, lab 0
Language : el, en
Learning Outcomes : By the end of this course, students will be able to:
-Understand the concepts of alphabets, strings, languages, and grammars.
-Design and analyze finite automata (DFA and NFA) for language recognition.
-Convert between regular expressions and finite automata.
-Minimize finite automata.
-Prove whether a language is regular or non-regular using tools such as the pumping lemma and closure properties.
-Describe and construct context-free grammars (CFGs).
-Construct formal proofs related to automata, languages, and computation.
-Learn how to analyze algorithms and express their time complexity in big-oh notation.
-Learn how to argue about the correctness of algorithms.
-Become aware of basic algorithmic strategies and algorithm design techniques (divide and conquer, Greedy methods, Dynamic programming).
-Understand numerical algorithms for computing gcd, powers of integers and Karatsuba's multiplication algorithm.
-Become familiar with introductory concepts of artificial intelligence.
-To understand the operation of AI algorithms such as solution finding (depth-first, breadth-first, iterative deepening), heuristic solution finding algorithms (hill climbing, best first, branch and bound, A*.