title: Program Responsibly for Arduino
keywords: programming education, static analysis, novice programming, software design
topics: Languages , Logics and semantics , Software Technology , Other
committee: Ansgar Fehnker


Arduino is a popular platform for physical computing. It provides both a family of single-board micro-controllers and a language (essentially C/C++) for programming. Arduinos a often used in introductory courses, where student learn both to work with hardware and software. Novices  programming with two distinct problems: one is to adhere to all the requirements and conventions that derive from the used micro-controller, while writing code that is understandable  and adheres to basic principle of good software design. This can be problematic, if programming in Arduino is meant to be a stepping stone to programming larger systems.

The aim of tis project is to investigate common problems novices in Arduino code, both with respect to conventions and requirements that arise from the platform, as well as with respect to basic principles of good software design. A tangible outcome of this project should be an extension of a static analyser such as cppcheck, that is customised to the needs of an introductory Arduino programmer