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.