skip to main content
article
Open access

MakeCode and CODAL: intuitive and efficient embedded systems programming for education

Published: 19 June 2018 Publication History

Abstract

Across the globe, it is now commonplace for educators to engage in the making (design and development) of embedded systems in the classroom to motivate and excite their students. This new domain brings its own set of unique requirements. Historically, embedded systems development requires knowledge of low-level programming languages, local installation of compilation toolchains, device drivers, and applications. For students and educators, these requirements can introduce insurmountable barriers.
We present the motivation, requirements, implementation, and evaluation of a new programming platform that enables novice users to create software for embedded systems. The platform has two major components: 1) Microsoft MakeCode (www.makecode.com), a web app that encapsulates an entire beginner IDE for microcontrollers; and 2) CODAL, an efficient component-oriented C++ runtime for microcontrollers. We show how MakeCode and CODAL provide an accessible, cross-platform, installation-free programming experience for the BBC micro:bit and other embedded devices.

References

[1]
2010. AVRDUDE - AVR Downloader/UploaDEr. https://www.nongnu .org/avrdude/ . (2010). (Accessed on 02/22/2018).
[2]
2012. Ardublock | A Graphical Programming Language for Arduino. http://blog.ardublock.com/ . (2012). (Accessed on 02/22/2018).
[3]
2013. GitHub - ARMmbed/DAPLink. https://github.com/ARMmbed /DAPLink . (2013). (Accessed on 02/22/2018).
[4]
2015. Apache Mynewt. https://mynewt.apache.org/ . (2015). (Accessed on 11/16/2017).
[5]
2017. Home - Zephyr Project. https://www.zephyrproject.org/ . (2017). (Accessed on 11/16/2017).
[6]
ARM. 2017. The Arm Mbed IoT Device Platform. (2017). https: //www.mbed.com/
[7]
Emmanuel Baccelli, Oliver Hahm, Mesut Gunes, Matthias Wahlisch, and Thomas C Schmidt. 2013. RIOT OS: Towards an OS for the Internet of Things. In Computer Communications Workshops (INFOCOM WKSHPS), 2013 IEEE Conference on . IEEE, 79–80.
[8]
Paulo Blikstein. 2013. Gears of our childhood: constructionist toolkits, robotics, and physical computing, past and future. In Proceedings of the 12th International Conference on Interaction Design and Children . ACM, 173–182.
[9]
Rebecca F Bruce, J Dean Brock, and Susan L Reiser. 2015. Make space for the Pi. In SoutheastCon 2015. IEEE, 1–6.
[10]
Dale Dougherty. 2012. The maker movement. innovations 7, 3 (2012), 11–14.
[11]
A Dunkels, R Quattlebaum, F Österlind, G Oikonomou, M Alvira, N Tsiftes, and O Schmidt. 2012. Contiki: The open source OS for the Internet of things. Retrieved October 13 (2012), 2015.
[12]
Damien George. 2017. MicroPython. (2017). http://micropython.org/
[13]
Intel. 1988. Hexadecimal Object File Format Specification. (1988). https://web.archive.org/web/20160607224738/http://microsym .com/editor/assets/intelhex.pdf
[14]
Joel Koshy and Raju Pandey. 2005. VMSTAR: synthesizing scalable runtime environments for sensor networks. In Proceedings of the 3rd international conference on Embedded networked sensor systems . ACM, 243–254.
[15]
Philip Levis, Sam Madden, Joseph Polastre, Robert Szewczyk, Kamin Whitehouse, Alec Woo, David Gay, Jason Hill, Matt Welsh, Eric Brewer, et al. 2005. TinyOS: An operating system for sensor networks. Ambient intelligence 35 (2005), 115–148.
[16]
Mirjana Maksimović, Vladimir Vujović, Nikola Davidović, Vladimir Milošević, and Branko Perišić. 2014. Raspberry Pi as Internet of things hardware: performances and constraints. design issues 3 (2014), 8.
[17]
John Maloney, Mitchel Resnick, Natalie Rusk, Brian Silverman, and Evelyn Eastmond. 2010. The scratch programming language and environment. ACM Transactions on Computing Education (TOCE) 10, 4 (2010), 16.
[18]
John H Maloney, Kylie Peppler, Yasmin Kafai, Mitchel Resnick, and Natalie Rusk. 2008. Programming by choice: urban youth learning programming with scratch . Vol. 40. ACM.
[19]
The micro:bit Educational Foundation. 2016. micro:bit : Blast off: School launches BBC micro:bit into space! https://www.microbit.co. uk/rishworth-space . (2016). (Accessed on 05/13/2017).
[20]
The micro:bit Educational Foundation. 2016. micro:bit : Use the BBC micro:bit in the BLOODHOUND Rocket Car contest. https://www.mi crobit.co.uk/bloodhound-rocket-car . (2016). (Accessed on 05/15/2017).
[21]
Microsoft. 2016. 20160705_microsoft_bloodhound_0409 - Microsoft News Centre UK. https://news.microsoft.com/en-gb/2016/07/07/ 26785/20160705_microsoft_bloodhound_0409 . (2016). (Accessed on 05/15/2017).
[22]
Mitchel Resnick, John Maloney, Andrés Monroy-Hernández, Natalie Rusk, Evelyn Eastmond, Karen Brennan, Amon Millner, Eric Rosenbaum, Jay S. Silver, Brian Silverman, and Yasmin B. Kafai. 2009. Scratch: programming for all. Commun. ACM 52, 11 (2009), 60–67.
[23]
G. Richards, F. Z. Nardelli, and J. Vitek. 2015. Concrete Types for TypeScript. In 29th European Conference on Object-Oriented Programming, ECOOP 2015 . 76–100.
[24]
Charles R. Severance. 2014. Massimo Banzi: Building Arduino. IEEE Computer 47, 1 (2014), 11–12.
[25]
Vincent St-Amour and Marc Feeley. 2009. PICOBIT: a compact scheme system for microcontrollers. In International Symposium on Implementation and Application of Functional Languages . Springer, 1–17.
[26]
Franklyn Turbak, Mark Sherman, Fred Martin, David Wolber, and Shaileen Crawford Pokress. 2014. Events-first programming in APP inventor. Journal of Computing Sciences in Colleges 29, 6 (2014), 81–89.
[27]
Ankush Varma and Shuvra S Bhattacharyya. 2004. Java-through-C compilation: An enabling technology for java in embedded systems. In Design, Automation and Test in Europe Conference and Exhibition, 2004. Proceedings, Vol. 3. IEEE, 161–166.
[28]
Benoît Vaugon, Philippe Wang, and Emmanuel Chailloux. 2015. Programming Microcontrollers in Ocaml: the OCaPIC Project. In International Symposium on Practical Aspects of Declarative Languages . Springer, 132–148.
[29]
Gordon Williams. 2017. Making Things Smart: Easy Embedded JavaScript Programming for Making Everyday Objects into Intelligent Machines . Maker Media.

Cited By

View all
  • (2024)User-directed Assembly Code Transformations Enabling Efficient Batteryless Arduino ApplicationsProceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies10.1145/36595908:2(1-32)Online publication date: 15-May-2024
  • (2024)3CPEs: Concrete Computational Concepts Programming Environments for Elementary Computer Science EducationExtended Abstracts of the CHI Conference on Human Factors in Computing Systems10.1145/3613905.3650833(1-7)Online publication date: 11-May-2024
  • (2024)Exploring and Characterizing Large Language Models for Embedded System Development and DebuggingExtended Abstracts of the CHI Conference on Human Factors in Computing Systems10.1145/3613905.3650764(1-9)Online publication date: 11-May-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 53, Issue 6
LCTES '18
June 2018
112 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/3299710
Issue’s Table of Contents
  • cover image ACM Conferences
    LCTES 2018: Proceedings of the 19th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems
    June 2018
    112 pages
    ISBN:9781450358033
    DOI:10.1145/3211332
This work is licensed under a Creative Commons Attribution International 4.0 License.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication Notes

Badge change: Article originally badged under Version 1.0 guidelines https://www.acm.org/publications/policies/artifact-review-badging

Publication History

Published: 19 June 2018
Published in SIGPLAN Volume 53, Issue 6

Check for updates

Badges

Author Tags

  1. classroom
  2. education
  3. embedded systems

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)239
  • Downloads (Last 6 weeks)28
Reflects downloads up to 18 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)User-directed Assembly Code Transformations Enabling Efficient Batteryless Arduino ApplicationsProceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies10.1145/36595908:2(1-32)Online publication date: 15-May-2024
  • (2024)3CPEs: Concrete Computational Concepts Programming Environments for Elementary Computer Science EducationExtended Abstracts of the CHI Conference on Human Factors in Computing Systems10.1145/3613905.3650833(1-7)Online publication date: 11-May-2024
  • (2024)Exploring and Characterizing Large Language Models for Embedded System Development and DebuggingExtended Abstracts of the CHI Conference on Human Factors in Computing Systems10.1145/3613905.3650764(1-9)Online publication date: 11-May-2024
  • (2024)Co-Designing Accessible Computer and Smartphone Input Using Physical ComputingIEEE Pervasive Computing10.1109/MPRV.2024.341889923:3(39-48)Online publication date: 1-Jul-2024
  • (2023)Interaction HarvestingProceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies10.1145/36108807:3(1-31)Online publication date: 27-Sep-2023
  • (2023)Synerg-eye-zing: Decoding Nonlinear Gaze Dynamics Underlying Successful Collaborations in Co-located TeamsProceedings of the 25th International Conference on Multimodal Interaction10.1145/3577190.3614104(545-554)Online publication date: 9-Oct-2023
  • (2023)MakeDevice: Evolving Devices Beyond the Prototype with JacdacProceedings of the Seventeenth International Conference on Tangible, Embedded, and Embodied Interaction10.1145/3569009.3573106(1-7)Online publication date: 26-Feb-2023
  • (2023)BioBlocksLab: A portable DIY Bio Lab using BioBlocks languageMethods10.1016/j.ymeth.2023.01.001210(36-43)Online publication date: Feb-2023
  • (2022)Battery-free MakeCodeProceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies10.1145/35172366:1(1-35)Online publication date: 29-Mar-2022
  • (2022)Student ability and difficulties with transfer from a block-based programming language into other programming languages: a case study in ColombiaComputer Science Education10.1080/08993408.2022.207986733:4(567-599)Online publication date: 2-Jun-2022
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media