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
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).
• 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
• Section 2: System-Level SoC Design Methodology, Tools and Languages
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
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
 G.Kornaros: “Multi-Core Embedded Systems”, CRC Press/Taylor & Francis Group, Sep. 2010, ISBN: 978-1-4398-1161-0
 Geoffrey Brown, “Discovering the STM32 Microcontroller”, 2012 [online, https://cs.indiana.edu/~geobrown/book.pdf]
 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
 Qing Li and Carolyn Yao, “Real-Time Concepts for Embedded Systems”, ISBN:1578201241
 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
 F. Vahid, T. Givargis, “Embedded system design: A unified hardware-software introduction”, Wiley, 2002
 A distributed system information and benchmarking statistics tool, by Sotirios Oikonomou, [online:github][Diperan]
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.