Undergraduate Courses

  • Boolean algebra, logical gates. Simplification of logical functions. Combinatorial circuits (analysis and design of adders, subtracters, code converters, comparators, multiplexers, decoders, ROMs, PLAs, etc.). Clocked sequential circuits (latches and flip-flops, analysis and synthesis of clocked sequential circuits). Registers, counters and memory circuits. Algorithmic state machines. Asynchronous sequential circuits.

  • Introduction to computer technology concepts. Algorithms for computer arithmetic. Instruction set architectures. CPU organization, memory reference modes, instruction formats. MIPS (RISC) architecture. Datapath and control unit design. Pipelining. Memory organization, memory hierarchy, Random Access Memory (RAM), associative memory, cache memory, virtual memory. I/O organization, synchronous-asynchronous communication, interrupts, busses, network interfaces. Secondary storage devices. Past Courses…

  • Τhis course covers the general principles of Operating Systems. Evolution of Operating Systems, Input/Output, concurrent processes, critical section, process synchronization and communication. CPU scheduling. Memory management (static and dynamic allocation, virtual memory, paging, segmentation). File management, disk scheduling, deadlocks.

  • This course offers laboratory projects to assimilate critical concepts from the previous courses “Computer Architecture” and “Operating Systems”. The course includes 3-4 exercises in distributed UNIX programming, development of device drivers, kernel-level programming, and extensions of the Linux OS.

  • Instruction Set Architectures (ISA), modern CPU organization: control unit and datapath, pipelined architectures, memory hierarchy organization (cache memories, virtual address translation, TLB), multistage pipelines with variable latencies, branch prediction. Instruction Level Parallelism (ILP), superscalar pipelines, out of order (OOO) execution, Very large Instruction Word (VLIW) architectures, GPUs. Examples of modern processors, hyperthreading (HT), Simultaneous Multithreading (SMT), Multicore chips (Chip Multiprocessing). Cache coherence and memory consistency models. Past Courses…

  • Synchronization: Physical, logical and vector clocks, synchronization of physical and logical clocks, Lamport’s algorithm. Distributed Coordination: Mutual Exclusion Algorithms, Election Algorithms, Distributed Agreement, Interactive Consistency, Byzantine Protocols, Paxos Distributed Unanimity Algorithm. Transactions and concurrency control: ACID properties, nested transactions, two-phase strict locking, concurrent update problems, timestamp layout, optimistic concurrency control. Distributed transactions and concurrency control: distributed atomic transactions, distributed concurrency control, deadlock detection, error recovery. Data copies: fault tolerance, primary/secondary copy, passive/active copy, network partition management, high availability, consistency levels, the CAP theorem. Peer-to-peer networks, distributed hash tables, distributed storage systems, Map Reduce and Bulk Synchronous Parallel distributed processing programming models.

  • Introduction to Parallel Processing. Shared memory and distributed memory architectures (SMP, COMA, NUMA, cc-NUMA, SMT, Clusters, MPPs). Methods, techniques and interconnection networks (Bus-oriented, Cube, Switch Network, Mixed systems). Clusters as supercomputers. Principles of parallel programming. Design and implementation of parallel programs. Parallelization and partitioning techniques. Parallel programming models: Message passing and shared address space. Synchronization and concurrent data structures. Laboratory exercises: Application development in clusters, multicore and manycore (accelerator) architectures with OpenMP, MPI, CUDA, Cilk and others. Performance analysis.

Graduate Courses