Programming the microcontrollers and hardware inside smart devices — the software layer that makes physical hardware intelligent.