Related Courses

There several courses taught in the Department of Informatics Engineering which are related to our laboratory. We offer a vast selection of college courses at the associate, bachelor’s and master’s degree levels. Our courses can help students to fulfill educational and professional goals, such as:

  • Earning general elective credits to transfer into a degree program at another college or university
  • Completing master’s-level courses for continuing teacher education requirements
  • Achieving industry-recognized education prerequisites or other professional certifications
  • Keeping certain licensures current, or just for deeper understanding of topics in your field of interest

Graduate Courses

•  George Kornaros

•  Miltos D. Grammatikakis

Course short description
Course Objectives
The students are exposed to cutting-edge technology for embedded system design through the study of important recent research publications, the use of available commercial and open source design tools and the development and evaluation of rough subsystem prototypes or protocols. At the end of the course, all students must take part in a group seminar where they present their assigned publications, provide hands-on demos of their project activities and sketch future development efforts.
Prerequisites: The course requires good knowledge of computer architecture and operating system principles and assumes a strong computer engineering (VHDL, Verilog) and/or software engineering background (C/C++/SystemC, Linux).

Indicative Syllabus
•    Section 1: Embedded Systems: Languages and Design Methodology
System-on-chip modeling, design languages, design flow, abstraction levels
Top-down design (platform-based) and bottom-up design (component-based)
High-level synthesis (HLS)
Model-driven design engineering, e.g. using UML.
Intellectual property design-reuse
Standardization efforts

•    Section 2: System-Level SoC Design Methodology, Tools and Languages

  • System-level SoC/NoC design methodology, transaction-level modeling
  • Real-time operating systems and models
  • SystemC modeling and simulation
  • Early power estimation
  • ESL design libraries and tools: modeling, traffic generation, simulation, design space exploration, analysis and optimization, topology partitioning, task allocation, job scheduling, traffic visualization, monitoring, debugging, profiling, dynamic validation and verification
  • Serial and parallel simulation techniques (simulation kernels, event lists)
  • Stochastic approximation techniques for complicated optimization problems: simulated annealing and network calculus

•    Section 3: RTL, Tools and Languages

  • HDL Modeling (Verilog and VHDL)
  • Reconfigurable technology and standardization
  • EDA tools for simulation, processor simulation (ISS)
  • IP/SoC modeling and simulation
  • Hardware/software partitioning: co-design and co-verification
  • Power estimation
  • Block level  design (IP core), complete
  • RTL to/from SystemC/C translation

•    Section 4: Cyber-Physical Systems (CPS) and Internet-of-Things (IoT) Platforms

  • Middleware and RTOS, Networking, Applications, Embedded GUIs
  • Special focus on Industrialization using STM32 MCUs ecosystem
  • Tutorials and team project use-cases

[1]    G.Kornaros: “Multi-Core Embedded Systems”, CRC Press/Taylor & Francis Group, Sep. 2010, ISBN: 978-1-4398-1161-0
[2] Geoffrey Brown, “Discovering the STM32 Microcontroller”, 2012 [online,]
[3]    W. Wolf, “Computers as Components: Principles of Embedded Computing Systems Design”, Morgan Kaufman Publisher, 2001, ISBN 1-55860-541- X (case), ISBN 1-55860-693-9
[4]    Qing Li and Carolyn Yao, “Real-Time Concepts for Embedded Systems”, ISBN:1578201241
[5]    T. Noergaard, “Embedded systems architecture: A comprehensive guide for engineers and programmers”, Elsevier, 2005. ISBN-13: 978-0-7506-7792-9, ISBN-10: 0-7506-7792-9
[6]    F. Vahid, T. Givargis, “Embedded system design: A unified hardware-software introduction”, Wiley, 2002


Past Projects

  1. [2018] A distributed system information and benchmarking statistics tool, by Sotirios Oikonomou, [online:github][Diperan]
  2. [2019] Parallel matrix multiplication on multi-core ZYNQ (in baremetal), by Nikolaos Siganos [BareMetal_MatrixMultiplication]

  • George Kornaros
  • Miltos Grammatikakis

This course is designed to build a strong understanding of the fundamentals in the design of multicore systems-on-chip, including challenges, solution tradeoffs, current state-of-the-art methodology and tools, and future opportunities and trends. The course is organized into two modules.

In the Architecture module, the students are exposed to cutting-edge technology for multicore system-on-chip (SoC), network-on-chip (NoC) and memory architecture design through the study of important recent research publications, the use of available commercial and open source design tools and the development and evaluation of rough subsystem prototypes or protocols.

In the Programming module, multicore software is examined in a broad perspective by covering programming paradigms (e.g. message passing, shared memory, hybrids), consistency and hazards, system metrics (e.g. performance monitoring and power estimation tools), selected languages, libraries and tools, e.g. pthreads, shmem, OpenMP, MPI, Cilk, StreamIt, software transactional memory, performance monitoring and power estimation tools, computation, communication and synchronization patterns for algorithm/benchmark implementations.