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

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.

Jun 22nd 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.

Jun 22nd 2026
3 Weeks
Pointers, Arrays, and Recursion (Coursera) Coursera
Duke University

Pointers, Arrays, and Recursion (Coursera)

The third course in the specialization Introduction to Programming in C introduces the programming constructs pointers, arrays, and recursion. Pointers provide control and flexibility when programming in C by giving you a way to refer to the location of other data. Arrays provide a way to bundle data by guaranteeing sequences of data are grouped together. Finally, recursive functions—functions that call themselves—provide an alternative to iteration that are very useful for implementing certain algorithms.

Jun 22nd 2026
5-12 Weeks
Web Connectivity and Security in Embedded Systems (Coursera) Coursera
EIT Digital

Web Connectivity and Security in Embedded Systems (Coursera)

In this course, we will explore several technologies that bring modern devices together, facilitating a network of connected things and making devices internet enabled. We will discuss rules, protocols, and standards for these devices to communicate with each other in the network. We will also go through security and privacy issues and challenges in cyber physical systems (CPS). We will explore measures and techniques for securing systems from different perspectives. Possible attack models are introduced and solutions to tackle such attacks are discussed. Moreover, some basic concepts related to privacy in cyber physical systems are presented.

Jun 22nd 2026
5-12 Weeks
More C# Programming and Unity (Coursera) Coursera
University of Colorado System

More C# Programming and Unity (Coursera)

This course is the second course in the specialization about learning how to develop video games using the C# programming language and the Unity game engine on Windows or Mac. Why use C# and Unity instead of some other language and game engine? Well, C# is a really good language for learning how to program and then programming professionally. Also, the Unity game engine is very popular with indie game developers; Unity games were downloaded 16,000,000,000 times in 2016! Finally, C# is one of the programming languages you can use in the Unity environment.

Jun 22nd 2026
4 Weeks
Mastering the Software Engineering Interview (Coursera) Coursera
University of California, San Diego

Mastering the Software Engineering Interview (Coursera)

You’ve hit a major milestone as a computer scientist and are becoming a capable programmer. You now know how to solve problems, write algorithms, and analyze solutions; and you have a wealth of tools (like data structures) at your disposal. You may now be ready for an internship or (possibly) an entry-level software engineering job. But can you land the internship/job? It depends in part on how well you can solve new technical problems and communicate during interviews. How can you get better at this? Practice!

Jun 22nd 2026
4 Weeks
Engineering Maintainable Android Apps (Coursera) Coursera
Vanderbilt University

Engineering Maintainable Android Apps (Coursera)

Engineering Maintainable Android Apps, which is a 4 week MOOC that shows by example various methods for engineering maintainable Android apps, including test-driven development methods and how to develop/run unit tests using JUnit and Robotium (or equivalent automated testing frameworks for Android), as well as how to successfully apply common Java/Android software patterns to improve the extensibility and clarity of Android apps.

Jun 22nd 2026
4 Weeks
UX and Interface Design for Embedded Systems (Coursera) Coursera
University of Colorado Boulder

UX and Interface Design for Embedded Systems (Coursera)

UX and Interface Design for Embedded Systems is the first of three classes in the Embedded Interface Design (EID) specialization, an online version of the on-campus EID class taught in graduate embedded systems design. This first course is focused on user experience (UX) and the related methods, practices, and principles that will help ensure your embedded interface designs for devices and systems are what your users both need and want.

Jun 22nd 2026
5-12 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.

Jun 22nd 2026
5-12 Weeks
Protecting Cloud Architecture with Alibaba Cloud (Coursera) Coursera
Alibaba Cloud Academy

Protecting Cloud Architecture with Alibaba Cloud (Coursera)

The Security Exam Preparation Course is a series of online courses covering topics including Linux and Windows OS basics and operations, network fundamentals, host security, application security, network security, and data security. It is designed to help you understand how these products work, how they should be used, and help you gain the required knowledge to prepare for the ACA/ACP level cloud security specialist.

Jun 22nd 2026
5-12 Weeks
Linux Basics: The Command Line Interface - 6 (Coursera) Coursera
Institut Mines-Telecom,Dartmouth College

Linux Basics: The Command Line Interface - 6 (Coursera)

This course will introduce you to Linux, a powerful operating system used by most professional developers! Why add Linux to your C programming skills? Most people use Linux without knowing it! Whether you use a smartphone, search the web, or use an ATM, each time Linux is involved somewhere in the background. It is the most used operating system for embedded devices and high-performance servers. It is also the most common operating system used by developers to create software applications.

Jun 22nd 2026
3 Weeks
Fundamentals of Software Architecture for Big Data (Coursera) Coursera
University of Colorado Boulder

Fundamentals of Software Architecture for Big Data (Coursera)

The course is intended for individuals looking to understand the basics of software engineering as they relate to building large software systems that leverage big data. You will be introduced to software engineering concepts necessary to build and scale large, data intensive, distributed systems. Starting with software engineering best practices and loosely coupled, highly cohesive data microservices, the course takes you through the evolution of a distributed system over time.

Jun 22nd 2026
4 Weeks