For course-related announcements see the individual courses' pages. Please note that all pages linked to below are in Greek.
Undergraduate courses
Introduction to Computer Programming (fall semester)
Introduction to Computer Science. Algorithms and Data Structures, programs, programming languages. Pascal. Specification, design, coding, verification, documentation and maintenance of programs. Basic data structures, control structures, procedures, recursion, parameter passing.
Introduction to Computer Science (spring semester)
The goal of this course is to introduce students to fundamental computer principles and various areas of Computer Science. The course covers subjects of Theoretical Computer Science (logic for Computer Science, automata, formal grammars, computability and complexity), number representation and operations (binary arithmetic, number systems, binary representation, fixed point and floating point operations, encoding), computer architecture (processor architecture, instruction format-machine language, assembly language, memory organization-peripheral devices-storage devices), as well as an introduction to system software (operating system, compiler-interpreter), applications (databases, file management, etc), and various programming paradigms (functional, logical, object-oriented programming).
Algorithms & Complexity (fall semester)
Techniques for asymptotic program analysis and algorithm selection criteria. Algorithm design techniques: divide and conquer, dynamic programming, greedy algorithms. Applications to graph theory (depth-first search, breadth-first search, minimum spanning tree, shortest path). Sorting and searching. Algebraic problems (evaluation of polynomials, matrix multiplication). Polynomial-time algorithms and NP-complete problems.
Computability & Complexity (spring semester)
Computability: Logical foundation of computer science. Historical review on the problem of decidability of mathematical statements, and solvability or computability of problems. Simple equivalent models of computation: Turing machines, WHILE programs. Induction and recursion, encoding and semantics. Fixed-point theory. Arithmetic hierarchy. Relations between complexity classes. Reductions and completeness. Oracles. Polynomial hierarchy. Probabilistic, interactive and counting classes. Advanced topics from the theory of formal grammars. Applications to programming language syntax.
Number Theory & Cryptography (fall semester)
Divisibility, Chinese remainder theorem, modular exponentiation, primitive roots. Carmichael functions, Euler's "phi" function, Legendre and Jacobi symbols, square root computation, prime number theorem. Primality test and factoring. The sieve of Eratosthenes. Lucas, Pratt, and Lucas-Lehmer tests. Extended Riemann hypothesis. Solovay-Strassen test, Miller test, probabilistic tests, Rabin test. Public-Key Cryptosystems. Binomial residues in Cryptography. The Discrete Logarithm Problem. RSA and Rabin systems. Note: this course, supplemented with extra material is also offered as a graduate course for MPLA (link).
Automata & Formal Grammars (spring semester)
Languages and their representations. Grammars, context-sensitive and context-free grammars. Finite automata and regular grammars. Pushdown automata. Turing Machines. Automata and language recognition. Applications in programming languages syntax. (Un)decidability and complexity problems.
Graduate courses
Theoretical Computer Science I: Algorithms & Complexity (fall semester)
Theoretical Computer Science II: Computational Complexity (spring semester - every 4 years)
Theoretical Computer Science II: Number Theory & Cryptography (spring semester - every 4 years)
Theoretical Computer Science II: Parallel Algorithms & Complexity (spring semester - every 4 years)
Theoretical Computer Science II: Advanced Data Structures (spring semester -every 4 years)
Theoretical Computer Science II: Computational Geometry (spring semester - every 4 years)
Network Algorithms & Complexity (spring semester)
Cryptography & Complexity (fall semester)
Approximation Algorithms (spring semester)
