Teaching

We provide a wide range of courses from the basics of embedded systems to advanced design topics. An overview of our course selection is given below.

Stacks of development kits.

Introduction to Embedded Systems

This course covers all basic topics of embedded system design. The students learn how to design simple digital components using combinatorial logic and binary arithmetic. RISC-processors are studied for machine instruction fetch and execution to understand how a computer runs a program. Finally, practical work shows bare-metal programming and students run their own program on a real ARM-processor.

Computer Architecture

This course covers the principles of processor design and architecture. The theory builds on the Introduction to Embedded Systems course, extending to processor data path, control and pipelining. The studens learn to evaluate the execution performance considering the impact of pipelining and the available memory hierarchy.

The course is given only in finnish.

Digital Design

This course covers the specification, design, implementation and analysis of digital systems. Students learn the theory of combinatorial and sequential systems, especially the design of state machines. The students get access to state-of-the art design tools and use Field-Programable Gate Array (FPGA) platforms to carry out real implementations.

Logic Synthesis

This course covers the specification and implementation of digital systems in Very High Speed Integrated Circuit Hardware Description Language (VHDL). Given a specification in natural language, the studens know how to describe it on the register transfer level (RTL), implement a testbench to verify it and synthesize the design on a physical FPGA device. The tools and methods used on the course are also used by many industrial companies in the field.

High-level Synthesis

This course covers implementing digital systems using C++ instead of traditional hardware description languages such as VHDL. Raising the abstraction level is predicted to reduce the design effort while improving quality, so the capabilities and limitations of high-level synthesis are compared with the traditional RTL design method. The whole design flow is run from specification to a working implementation on an FPGA platform.

System Design

This course covers the design flow of a complex embedded system with both hardware and software aspects. Model-based design and simulations are used to predict the applicability of different configuration options before prototyping. The course work shows a practical HW/SW co-design and integration project targeting for a video encoding system run on an multi-processor FPGA device.

Real-time Systems

This course covers implementing real-time embedded systems who must react to their environment within a certain time period for the system to function properly. The content is practical work on building and fine-tuning the Linux kernel for real-time applications. It must fit the target platforms with low resources and programmable hardware blocks while still meeting the given timing constraints. The course is implemented in close collaboration with the industry.

Post-Graduate Course on Computing

This course content changes annually following the advanced topics in the field of computing. Some of the previously covered topics are

  • bare-metal programming with Rust,
  • ASIC design flow and tools,
  • verification with UVM,
  • 3D computer graphics, and
  • virtualization and cloud environment.