Teaching

Programming with C

Advanced programming techniques with C. Pointers, call by reference, recursion, structures. Working with files. Abstract data types. Algorithms and complexity. Introduction to data structures. Lists, stacks, queues. Introduction to C++ and Java.

Introduction to Programming

Algorithms and programming languages. Programming with C. Program structure. Stepwise refinement. Variables and operators. Statements, data structures, arrays, structures, pointers, functions. Call by value and by reference. Structured programming. Debugging.

Theory of Computation

Finite automata and regular expressions. Pushdown automata and context-free grammars. Turing machines and Church's thesis. Undecidability. Computational complexity.

Programming Language Theory

2008-2009 (Computer Science and Biomedical Informatics, Univ. of Central Greece)

Programming with C

Advanced programming techniques with C. Pointers, call by reference, recursion, structures. Working with files. Abstract data types. Algorithms and complexity. Introduction to data structures. Lists, stacks, queues. Introduction to C++ and Java.

Introduction to Programming

Algorithms and programming languages. Programming with C. Program structure. Stepwise refinement. Variables and operators. Statements, data structures, arrays, structures, pointers, functions. Call by value and by reference. Structured programming. Debugging.

Software Engineering

General principles of software engineering (computer technology, software development processes, project managment). Requirement engineering (software requirements, scope, necessity and evaluation of requirements, systems modelling, software prototyping, formal specification). Design (architecture design, distributed systems architectures, object-oriented design,design of real time systems, software reusability, design of user interfaces). System evaluation (software test, reliability, etc.).

Theory of Computation

Finite automata and regular expressions. Pushdown automata and context-free grammars. Turing machines and Church's thesis. Undecidability. Computational complexity.

2007-2008 (Computer Science Department, Univ. of Ioannina)

Introduction to Programming

Algorithms and programming languages. Programming with C. Program structure. Stepwise refinement. Variables and operators. Statements, data structures, arrays, structures, pointers, functions. Call by value and by reference. Structured programming. Debugging.

Data Structures

Abstract data types. Time and space complexity. Arrays, lists, stacks, queues, heaps, trees, binary search trees, balanced trees. Graphs. Hashing.

Distributed Computing and Network Security

Distributed computing in networks with mobile agents (communication networks, distributed databases, internet, etc). Different models. Synchronous vs asynchronous models. The rendezvous problem. Anonymous mobile agents in anonymous networks with or without orientation. Unsolvability detection. Exploration and communication protocols in networks with faulty links and hostile hosts. Algorithms for hostile hosts detection. Fault tolerance algorithms. Optimal and approximation algorithms. Negative results.


Updated: 25-Nov-2011                                                                               email: emarkou@ucg.gr