Embedded Systems CPD Module

Start date: 09 September 2026

Duration: 15 Weeks, 9 Sept - 16 Dec 26

Location: Mainly online* course, 4 hours/week lectures, labs and tutorials + self-directed learning hours

Certificate: 9 ECTS

Cost: Members € 900; Non-members € 1350

Course code: N/A

Programme overview

This 15-week CPD module will have a specific focus towards the design of embedded systems with microcontrollers.

The role of the embedded systems engineer is becoming ever more complex with a diverse range of activities and applications that link hardware and software to design, develop and deploy effective embedded systems. In this course, the design, development, and deployment of microcontroller based embedded systems will be introduced and discussed in relation to their integration within modern electronics companies. The actions undertaken by the engineer within the role of embedded system design will be discussed and the types of design activities to be undertaken will be elaborated.
The course will initially introduce the field of embedded systems before focusing on the microcontroller as the core component within many embedded system designs. The hardware and software considerations will be introduced and software coding for microcontrollers will be developed to show how the microcontroller can be efficiently and effectively used.
The course will commence in week 1 with a 1-day on-campus session followed by 11 weeks of online learning through lectures, laboratories, and tutorial sessions. There will be 2 weeks of project work followed by a 1-day on-campus session for project presentation and course assessment in week 15.
Participants will need to provide their own Windows laptop (with a minimum of 16 GB of RAM and two USB 3 Type-A ports).
Laboratory hardware will be provided. Software required for the laboratory work can be downloaded (no license required).

Learning outcomes

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)
1. Discuss how embedded systems are designed using hardware and software parts.
2. Examine how microcontrollers are programmed using C with a focus on embedded systems requirements.
3. Describe how to design and debug code within the microcontroller.

Affective (Attitudes and Values)
1. Show the need for effective design procedures and the impact of decisions on the operation of the resulting embedded system.
2. Acknowledge the need to develop high quality and cost-effective embedded system designs within an organization.
3. Appreciate how real-world non-ideal electronic circuit behaviour will affect the operation of an embedded system.

Psychomotor (Physical Skills)
1. Design C code programs for a given microcontroller using appropriate software design tools.
2. Develop C code programs to interface with external peripherals and analyse the operation of the system.
3. Deliver design data in a suitable manner.

Who is the course for?

This module is aimed at meeting Continued Professional Development (CPD) needs for practicing engineers in the electronics industry who are involved in the design, development, and deployment of microcontroller based embedded systems.

Basic C/C++ programming and electronics knowledge recommended – equivalent to level thought on MIDAS Skillnet Embedded C course.

Schedule

*Blended learning approach with initial and final on-campus days, and otherwise online 4 hours / week of lectures, laboratories, and tutorials:

Online briefing session: Wednesday 2nd September (4:00 – 5:00 pm)
On-campus day: Wednesday 9th September (10:00 am – 4:00 pm)
Weekly online sessions on Wednesdays (1:00 – 6:00 pm): Wednesday 16th September – Wednesday 25th November (including lectures, a break, laboratory and tutorial)
Two weeks personal project work
On-campus session, project demonstration and end-of-semester examination: Wednesday 16th December (10:00 am – 4:00 pm).

Introduction to embedded system design with microcontrollers: Embedded system architecture, hardware and software, firmware, processor architectures, memory, approaches to programming the microcontroller, coding in C. Bare metal, Hardware Abstraction Layer (HAL), and Real Time Operating System (RTOS) programming approaches. Design flows.
Coding in C: Programming for applications versus programming for embedded systems, variables, functions, pointers, arrays, strings. Coding styles and code re-use. Embedded assembly language coding.
Memory: Types of memory, memory uses, memory management, Direct Memory Access (DMA).
Program structure: Use of interrupts. Polling versus interrupts. Functions and Interrupt Service Routines (ISRs). Interrupt priorities and nested interrupts.
Microcontroller architecture: Clocks, timers and counters, serial communications (USART, SPI, I2C). Watchdog timers. Real-Time Clock (RTC).
Potential problems: Failure mechanisms, fault tolerance.
Programming the microcontroller: Key steps to programming the microcontroller, bootloaders, secure bootloaders. Libraries and frameworks. Code reuse. State machines. GNU Compiler Collection (GCC). Command line compilation. Makefiles: Make and CMake. Linker command scripts. Programming the microcontroller using an Integrated Development Environment (IDE) and the Command Line.
Real-Time Operating System (RTOS): Key concepts, RTOS kernel, tasks and task communications, binary semaphores, queues, mutexes, timers, potential problems. FreeRTOS and CMSIS_OS v2.

Trainer Profile

Ian Grout is an Associate Professor within the Department of Electronic and Computer Engineering in the University of Limerick, Limerick, Ireland. He joined the University of Limerick in 1998. He teaches embedded systems design at undergraduate level, and mixed signal and digital IC test engineering at both undergraduate and postgraduate levels. Before joining the University of Limerick, he worked within the University of Lancaster, UK, on circuit design and test development teaching and research.

Email training@midasireland.ie for bookings and queries