When you enroll in this course, you'll also be enrolled in this Specialization.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 4 modules in this course
This course is used as the capstone in a three course sequence, including Linux System Programming and Introduction to Buildroot and Linux Kernel Programming and Introduction to Yocto Project. Both of these courses must be completed before starting this course.
This course builds on the content in the previous two prerequisite courses to develop a final project of your choosing targeting Linux device targeting hardware. The final project is delivered using concepts from Agile Scrum. Several pertinent, recent, and relevant Embedded System development related topics are covered as a part of the course curriculum, which you may optionally choose to incorporate into your final project.
Linux Embedded Systems Topics and Projects can also be taken for academic credit as ECEA 5307, part of CU Boulder’s Master of Science in Electrical Engineering.
This course includes specific hardware and software requirements. Please review the FAQ below for complete details.
This module will provide an overview of the requirements for your Final Project, as well as introduce Agile Scrum concepts we will use for the project development. We'll discuss some Buildroot related hints related to supporting a physical hardware platform for those who plan to use Buildroot in their final project. In addition, we'll cover some topics which are relevant as we move to a physical hardware platform, including bootloaders, device trees, and linux networking
What's included
6 videos4 readings4 assignments1 peer review
Show info about module content
6 videos•Total 63 minutes
Agile Overview•12 minutes
Final Project Overview•18 minutes
Buildroot Additional Hints•4 minutes
Bootloaders and Device Trees Part 1•12 minutes
Bootloaders and Device Trees Part 2•13 minutes
Linux Networking Overview•5 minutes
4 readings•Total 31 minutes
Course Updates and Accessibility Support•1 minute
Non-Credit Students: Welcome and Where to Find Help•10 minutes
Hardware & Software Requirements•10 minutes
Final Project Proposal•10 minutes
4 assignments•Total 38 minutes
Agile Overview•30 minutes
Buildroot Additional Hints•2 minutes
Bootloaders and Device Tree Part1 & Part 2 •3 minutes
Linux Networking Overview•3 minutes
1 peer review•Total 600 minutes
Final Project Peer Review•600 minutes
Final Project Sprint 1, Device Updates, and Embedded System Topics
Module 2•12 hours to complete
Module details
In this module you will complete the first iteration of your final project implementation.
You will also learn about topics which could potentially be incorporated into your final project, or are otherwise relevant for modern embedded system projects, including Linux Device Update, MQTT and IoT, Read Only Root Filesystems, and Application Containers and Docker for Embedded.
What's included
7 videos1 reading4 assignments1 peer review
Show info about module content
7 videos•Total 92 minutes
Final Project Sprints•14 minutes
Linux Device Update Part 1•10 minutes
Linux Device Update Part 2•12 minutes
Linux Device Update Part 3•17 minutes
MQTT and IoT Platforms•10 minutes
Read Only Root Filesystems•14 minutes
Application Containers and Docker For Embedded•15 minutes
1 reading•Total 10 minutes
Final Project Sprint 1•10 minutes
4 assignments•Total 17 minutes
Linux Device Update•5 minutes
MQTT and IOT•3 minutes
Read Only Root Filesystems•4 minutes
Application Containers and Docker For Embedded•5 minutes
1 peer review•Total 600 minutes
Final Project Sprint 1•600 minutes
Final Project Sprint 2, Development Tips and Strategies
Module 3•11 hours to complete
Module details
In this module you will complete the second iteration of your final project implementation.
You will also learn about topics which could potentially be incorporated into your final project, or are otherwise relevant for modern embedded system projects, including Git Workflows, C++ Templates and STL, and C Dependency Generation
What's included
5 videos1 reading3 assignments1 peer review
Show info about module content
5 videos•Total 39 minutes
Git Workflows•8 minutes
C++ Templates and STL•12 minutes
C Dependency Generation Part 1 GNU Make•8 minutes
C Dependency Generation Part 2 Automake•6 minutes
C Dependency Generation Part 3 CMake•6 minutes
1 reading•Total 10 minutes
Final Project Sprint 2•10 minutes
3 assignments•Total 12 minutes
Git Workflows•2 minutes
C++ templates and STL•5 minutes
C dependency Generation•5 minutes
1 peer review•Total 600 minutes
Final Project Sprint 2•600 minutes
Final Project Sprint 3 and Demo, Software Testing
Module 4•12 hours to complete
Module details
In this module you will complete the third and final iteration of your final project implementation.
You will also learn about Software Testing and Software Test strategies releavnt to Embedded System development
What's included
4 videos2 readings1 assignment2 peer reviews
Show info about module content
4 videos•Total 41 minutes
Embedded Test Part 1 Concepts•11 minutes
Embedded Test Part 2 Automated Testing•12 minutes
Embedded Test Part 3 CI-CD•12 minutes
Embedded Test Part 4 TDD and BDD•6 minutes
2 readings•Total 20 minutes
Final Project Sprint 3•10 minutes
Final Project Demo Video and Outline•10 minutes
1 assignment•Total 10 minutes
Embedded Software Test•10 minutes
2 peer reviews•Total 660 minutes
Final Project Sprint 3•600 minutes
Final Project Demo Video and Outline Updates•60 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Build toward a degree
This course is part of the following degree program(s) offered by University of Colorado Boulder. If you are admitted and enroll, your completed coursework may count toward your degree learning and your progress can transfer with you.¹
View eligible degrees
Build toward a degree
This course is part of the following degree program(s) offered by University of Colorado Boulder. If you are admitted and enroll, your completed coursework may count toward your degree learning and your progress can transfer with you.¹
¹Successful application and enrollment are required. Eligibility requirements apply. Each institution determines the number of credits recognized by completing this content that may count towards degree requirements, considering any existing credits you may have. Click on a specific course for more information.
OK
Instructor
Instructor ratings
Instructor ratings
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
CU Boulder is a dynamic community of scholars and learners on one of the most spectacular college campuses in the country. As one of 34 U.S. public institutions in the prestigious Association of American Universities (AAU), we have a proud tradition of academic excellence, with five Nobel laureates and more than 50 members of prestigious academic academies.
What are the hardware and software requirements for this course?
System Requirements
You must have access to a computer configured with the following specifications to complete this specialization:
Operating System:
Ubuntu 22.04 (64-bit) is required, but Ubuntu 20.04 (64-bit) may also be used. Other versions of Ubuntu, or other distributions, are not officially supported and may not work properly with assignment instructions.
The build system host must use an x86_64 (amd64) architecture. ARM-based systems are not supported.
Windows Subsystem for Linux (WSL) is not supported for ECEA 5306: Linux Kernel Programming and Introduction to Yocto Project, which includes Linux kernel development and Yocto projects. If you plan to continue to this course, please prepare a dedicated build host or virtual machine.
Memory (RAM):
At least 8 GB RAM is recommended. You may be able to complete assignments with less, but 4 GB or less may cause build failures.
Disk Space:
At least 200 GB of free disk space is recommended.
Hardware Requirements
Embedded hardware of a student’s choosing is required for the final project. Supported boards include:
Raspberry Pi (suitable for Buildroot & Yocto projects)
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.