Linux Kernel Programming and Introduction to Yocto Project (Coursera)

Linux Kernel Programming and Introduction to Yocto Project (Coursera)

This course provides an introduction to Kernel Driver development for the Linux operating system. The Yocto build system is introduced, which students use to build their own custom Embedded Linux system through programming assignments.

Class Deals by MOOC List - Click here and see Coursera's Active Discounts, Deals, and Promo Codes.

Linux Kernel Programming and Introduction to Yocto Project can also be taken for academic credit as ECEA 5306, part of CU Boulder’s Master of Science in Electrical Engineering.

What You Will Learn

  • Fundamentals of Linux kernel development.
  • How to build a custom Linux kernel driver and deploy on an Embedded Device.
  • How to use the Yocto project to build Embedded Device images

Syllabus

WEEK 1
Introduction to Device Drivers and Yocto
In this module, you will learn the basics of Linux Device Drivers, including how to build and run a Linux Device Driver. You will modify the socket application you developed in the previous course and add threading. You will also be introduced to the Yocto Project and build a custom Yocto image which includes your custom socket application developed in the previous course.

WEEK 2
Linux Character Drivers and Debugging
In this module, you will learn about the different types of Linux Kernel drivers and the kernel support for character device drivers. You will learn about fundamental driver data structures and functions for interacting with user space. You will understand the basics of Kernel debugging and how this differs from application debugging. You will implement a unit-tested circular buffer which will be used in future assignments. Finally, you will build a Yocto embedded device image with support for an out of tree kernel module.

WEEK 3
Concurrency in the Linux Kernel
In this module, you will learn the basics of concurrency in the Linux kernel, and how to use semaphore and mutex in your device driver to design for concurrent access. You will learn the difference between atomic and non atomic context and strategies for locking in each context. You will modify your socket application to interact with a custom character device based on your tested circular buffer implementation using the concurrency concepts discussed in the module.

WEEK 4
Kernel sleeping and ioctl
In this module, you will learn the purpose and use of the ioctl command for Linux drivers and how the ioctl command is implemented in a driver. You will learn the basics of sleeping and waking up in the Linux kernel and how to handle blocking and non-blocking IO. You will modify your custom Linux kernel driver and Linux application to include ioctl support.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Programming Mobile Applications for Android Handheld Systems: Part 2 (Coursera) Coursera
University of Maryland, College Park

Programming Mobile Applications for Android Handheld Systems: Part 2 (Coursera)

This course introduces you to the design and implementation of Android applications for mobile devices. You will build upon concepts from the prior course, including handling notifications, using multimedia and graphics and incorporating touch and gestures into your apps.

Aug 31st 2026
5-12 Weeks
Linux Fundamentals (Coursera) Coursera
LearnQuest

Linux Fundamentals (Coursera)

This course is the first of a series that aims to prepare you for a role working as an information technology professional. In this course, you will be introduced to the Linux operating system. You will learn about the licensing model and several Linux distributions. We will go through some services delivered in the Linux operating system. We will conclude this course by looking at how to search and analyze text using command line tools in the operating system.

Sep 14th 2026
4 Weeks
Intro to Operating Systems 4: Persistence (Coursera) Coursera
Codio

Intro to Operating Systems 4: Persistence (Coursera)

Learn the inner workings of operating systems without installing anything! This course is designed for learners who are looking to maximize performance by understanding how operating systems work at a fundamental level. The modules in this course cover input and output, directories, file systems, data integrity and protection, and distributed systems.

Aug 31st 2026
5-12 Weeks
Introduction to Computer Security (Coursera) Coursera
University of London,Royal Holloway, University of London

Introduction to Computer Security (Coursera)

The purpose of this short four-week course is to introduce the topic of computer system security. We initially look at a short basic introduction to computer system core components and functions and then extend this to consider a variety of topics from hardware to applications. Throughout we provide pointers to openly available materials for background and further reading to explore the topics. We refer to the Cyber Security Body of Knowledge (CyBOK) as a reference for cyber security knowledge, alongside other sources that are widely available.

Aug 31st 2026
4 Weeks
Introduction to Embedded Machine Learning (Coursera) Coursera
Edge Impulse

Introduction to Embedded Machine Learning (Coursera)

Machine learning allows us to teach computers to make predictions and decisions based on data and learn from experiences. In recent years, incredible optimizations have been made to machine learning algorithms, software frameworks, and embedded hardware. Thanks to this, running deep neural networks and other complex machine learning algorithms is possible on low-power devices like microcontrollers. This course will give you a broad overview of how machine learning works, how to train neural networks, and how to deploy those networks to microcontrollers.

Sep 13th 2026
3 Weeks
Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) (Coursera) Coursera
Hebrew University of Jerusalem

Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) (Coursera)

In this project-centered course you will build a modern software hierarchy, designed to enable the translation and execution of object-based, high-level languages on a bare-bone computer hardware platform. In particular, you will implement a virtual machine and a compiler for a simple, Java-like programming language, and you will develop a basic operating system that closes gaps between the high-level language and the underlying hardware platform.

Sep 14th 2026
5-12 Weeks
Introduction to the Internet of Things and Embedded Systems (Coursera) Coursera
University of California, Irvine

Introduction to the Internet of Things and Embedded Systems (Coursera)

The explosive growth of the “Internet of Things” is changing our world and the rapid drop in price for typical IoT components is allowing people to innovate new designs and products at home. In this first class in the specialization you will learn the importance of IoT in society, the current components of typical IoT devices and trends for the future. IoT design considerations, constraints and interfacing between the physical world and your device will also be covered. You will also learn how to make design trade-offs between hardware and software. We'll also cover key components of networking to ensure that students understand how to connect their device to the Internet.

Aug 31st 2026
4 Weeks
Sistemas Operacionais e Você: Tornando-se um Usuário Avançado (Coursera) Coursera
Google

Sistemas Operacionais e Você: Tornando-se um Usuário Avançado (Coursera)

Neste curso – com uma combinação de palestras em vídeo, demonstrações e atividades práticas – você conhecerá os principais componentes de um sistema operacional e verá como executar tarefas críticas, como gerenciamento de software e usuários, e configuração de hardware. Vamos terminar com um exemplo de como esse conteúdo pode acabar surgindo em uma entrevista.

Aug 31st 2026
5-12 Weeks
C Programming: Using Linux Tools and Libraries - 7 (Coursera) Coursera
Institut Mines-Telecom,Dartmouth College

C Programming: Using Linux Tools and Libraries - 7 (Coursera)

Learn how to use professional tools and libraries to write and build C programs within the Linux operating system. This seventh and final course in the C Programming with Linux Specialization will allow you to develop and use your C code within the Linux operating system. Using libraries in C is a fundamental concept when it comes to sharing code with others. In addition to compiling and linking, you will also learn how to pass arguments to an executable program.

Aug 31st 2026
3 Weeks
Competencias digitales. Conceptos y herramientas básicas (Coursera) Coursera
Universitat Autònoma de Barcelona

Competencias digitales. Conceptos y herramientas básicas (Coursera)

Los continuos cambios tecnológicos, sobre todo en aquellos aspectos vinculados a las tecnologías de la información y la comunicación (TIC) hacen que las personas tengan la necesidad de actualizarse de forma continua para que sus conocimientos no queden obsoletos. En este contexto, para las empresas se convierte en algo imprescindible disponer de profesionales que tengan las competencias necesarias para ejercer con éxito las actividades que requieren en su lugar de trabajo.

Aug 31st 2026
4 Weeks
Internet of Things V2: DragonBoard™ bring up and community ecosystem (Coursera) Coursera
University of California, San Diego

Internet of Things V2: DragonBoard™ bring up and community ecosystem (Coursera)

Do you want to develop skills to prototype embedded products using state-of-the-art technologies? In this course you will build a hardware and software development environment to guide your journey through the Internet of Things specialization courses. We will use the DragonBoard™ 410c single board computer (SBC).

Aug 31st 2026
5-12 Weeks
Introduction to Hardware and Operating Systems (Coursera) Coursera
IBM

Introduction to Hardware and Operating Systems (Coursera)

Organizations need workers who can help others with computer hardware, software, and connectivity issues. Healthcare organizations are still converting to digitized systems, requiring more IT support. Workers are retiring, and organizations are contracting workers through IT consultancies rather than in-house IT technicians. With remote and hybrid work here to stay, organizations must provide employees with the devices and support they need to remain connected and productive. Additionally, IT support roles are often a steppingstone that enables employees to grow into higher-paying IT careers.

Sep 14th 2026
5-12 Weeks