Introduction to Embedded Systems Software and Development Environments (Coursera)

Introduction to Embedded Systems Software and Development Environments (Coursera)

Welcome to the Introduction to Embedded Systems Software and Development Environments. This course is focused on giving you real world coding experience and hands on project work with ARM based Microcontrollers. You will learn how to implement software configuration management and develop embedded software applications. Course assignments include creating a build system using the GNU Toolchain GCC, using Git version control, and developing software in Linux on a Virtual Machine.

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

The course concludes with a project where you will create your own build system and firmware that can manipulate memory. The second course in this 2 course series , Embedded Software and Hardware Architecture, will use hardware tools to program and debug microcontrollers with bare-metal firmware. Using a Texas Instruments MSP432 Development Kit, you will configure a variety of peripherals, write numerous programs, and see your work execute on your own embedded platform!

Syllabus

WEEK 1
Embedded System Development Components
Module 1 will introduce the learner to the components of your embedded system software development process. This module will be a quick overview for many topics with detailed analysis to follow in later modules and courses. We start with defining the hardware and software building blocks of Embedded Systems which will include a C-programming refresher. Next you will learn about the important tools a developer will need to use to help design, build and manage their designs. This includes development environments, version control and the hardware kits to install on. Learners will install and use a Virtual machine to complete Week 1 Application Assignment.

WEEK 2
Compilation with GCC and GNU Make
Module 2 will introduce the learner to the software development build system. Most software engineers are very knowledgeable about their build system as we need them to translate our high-level software languages to our architecture specific implementations. There are some important platform and architecture concepts that are introduced in the build system to help enforce good software design techniques. Learners will create their own build systems and utilize build tools to analyze their embedded software implementations.

WEEK 3
Memory Types, Segments and Management
Module 3 will begin to introduce important embedded concepts like the memory systems in their design. Learners will understand how the software to hardware mapping occurs for their designs including differentiating between your program code and your program data. Memory systems have many platform and architecture dependencies, and you will begin to learn about some of the fundamental concepts a software engineer needs to know to utilize all parts of an embedded system’s memory.

WEEK 4
Course 1 Final Assessment
During this week you are to going to combine what you have learned in modules 1-3 to write some memory manipulation software, incorporate into your build system and then run some test functions. At the end of the assignment you will perform a detailed code review of other learners’ software. Reviewing other learners code is very important for both your growth of software design but also for the coder to gain valuable feedback. Professional software engineering regularly go through software reviews when developing code.

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

Related Courses

Software Engineering: Software Design and Project Management (Coursera) Coursera
The Hong Kong University of Science and Technology - HKUST

Software Engineering: Software Design and Project Management (Coursera)

Software Development Life Cycle (SDLC) is the process of developing software through planning, requirement analysis, design, implementation, testing, and maintenance. This course focuses on the project planning and analysis/design phases of SDLC, and you will learn about different architectural patterns and design patterns to solve common problems in software design. It covers project planning, scheduling, and cost estimating, which are the principal tasks of software project managers.

Aug 31st 2026
3 Weeks
Malware Analysis and Introduction to Assembly Language (Coursera) Coursera
IBM

Malware Analysis and Introduction to Assembly Language (Coursera)

Malicious software, or malware, is typically delivered over a network and is designed to cause disruption to a computer, client, server, or network. Disruptions can include leaked private information, unauthorized access to information or systems, blocked user access, interference with security and privacy, or numerous other variations of attacking systems.

Sep 7th 2026
5-12 Weeks
Essential Google Cloud Infrastructure: Foundation italiano (Coursera) Coursera
Google Cloud

Essential Google Cloud Infrastructure: Foundation italiano (Coursera)

Questo corso accelerato on-demand presenta ai partecipanti l'infrastruttura e i servizi di piattaforma flessibili e completi di Google Cloud, con un'attenzione particolare a Compute Engine. Attraverso lezioni video, demo e lab pratici, i partecipanti potranno esaminare elementi delle soluzioni, tra cui componenti dell'infrastruttura come reti, macchine virtuali e servizi di applicazioni, ed eseguirne il deployment.

Aug 31st 2026
2 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
C Programming: Modular Programming and Memory Management - 3 (Coursera) Coursera
Institut Mines-Telecom,Dartmouth College

C Programming: Modular Programming and Memory Management - 3 (Coursera)

Enhance your coding skills along your path to becoming a proficient C programmer with the essential concepts of functions and pointers. In this course you will be introduced to the concept of modular programming: that is, dividing up more complex tasks into manageable pieces. You will learn how to write your own functions (just like functions in mathematics for example). You will also gain insight into a computer's architecture and learn how its memory is organized.

Aug 31st 2026
3 Weeks
Hands-on Introduction to Linux Commands and Shell Scripting (Coursera) Coursera
IBM

Hands-on Introduction to Linux Commands and Shell Scripting (Coursera)

This mini-course provides a practical introduction to commonly used Linux / UNIX shell commands and teaches you basics of Bash shell scripting to automate a variety of tasks. The course includes both video-based lectures as well as hands-on labs to practice and apply what you learn. You will have no-charge access to a virtual Linux server that you can access through your web browser, so you don't need to download and install anything to perform the labs.

Aug 31st 2026
1 Week
Programming Fundamentals (Coursera) Coursera
Duke University

Programming Fundamentals (Coursera)

Programming is an increasingly important skill, whether you aspire to a career in software development, or in other fields. This course is the first in the specialization Introduction to Programming in C, but its lessons extend to any language you might want to learn. This is because programming is fundamentally about figuring out how to solve a class of problems and writing the algorithm, a clear set of steps to solve any problem in its class.

Sep 7th 2026
4 Weeks
Princípios básicos de apoio técnico (Coursera) Coursera
Google

Princípios básicos de apoio técnico (Coursera)

Este curso é o primeiro de uma série que visa a sua preparação para uma função de especialista de apoio técnico de TI de nível básico. Neste curso, ser-lhe-á apresentado o mundo das TI (Tecnologias de Informação). Vai descobrir as diferentes facetas das Tecnologias de Informação, como o hardware informático, a Internet, o software informático, a resolução de problemas e o serviço de apoio ao cliente. Vamos analisar como é que pode ser realizada uma entrevista técnica e fornecer sugestões sobre a melhor forma de se preparar para uma.

Aug 31st 2026
5-12 Weeks
操作系统原理 (Operating Systems) (Coursera) Coursera
Peking University

操作系统原理 (Operating Systems) (Coursera)

操作系统原理》是针对计算机科学技术专业三年级本科生开设的一门专业基础课程。本课程着重学生系统观的培养,通过重点讲述操作系统的内部结构、工作原理及典型技术的实现,使学生建立起对操作系统的整体及各个功能模块的认识,从而系统掌握计算机的专业知识,进一步提升学生的软件开发能力乃至系统软件开发能力。

Aug 31st 2026
13-24 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