skip to main content

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

Published:19 June 2018Publication History
Skip Abstract Section

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).Google ScholarGoogle Scholar
  2. 2012. Ardublock | A Graphical Programming Language for Arduino. http://blog.ardublock.com/ . (2012). (Accessed on 02/22/2018).Google ScholarGoogle Scholar
  3. 2013. GitHub - ARMmbed/DAPLink. https://github.com/ARMmbed /DAPLink . (2013). (Accessed on 02/22/2018).Google ScholarGoogle Scholar
  4. 2015. Apache Mynewt. https://mynewt.apache.org/ . (2015). (Accessed on 11/16/2017).Google ScholarGoogle Scholar
  5. 2017. Home - Zephyr Project. https://www.zephyrproject.org/ . (2017). (Accessed on 11/16/2017).Google ScholarGoogle Scholar
  6. ARM. 2017. The Arm Mbed IoT Device Platform. (2017). https: //www.mbed.com/Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Rebecca F Bruce, J Dean Brock, and Susan L Reiser. 2015. Make space for the Pi. In SoutheastCon 2015. IEEE, 1–6.Google ScholarGoogle Scholar
  10. Dale Dougherty. 2012. The maker movement. innovations 7, 3 (2012), 11–14.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  12. Damien George. 2017. MicroPython. (2017). http://micropython.org/Google ScholarGoogle Scholar
  13. Intel. 1988. Hexadecimal Object File Format Specification. (1988). https://web.archive.org/web/20160607224738/http://microsym .com/editor/assets/intelhex.pdfGoogle ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  24. Charles R. Severance. 2014. Massimo Banzi: Building Arduino. IEEE Computer 47, 1 (2014), 11–12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Gordon Williams. 2017. Making Things Smart: Easy Embedded JavaScript Programming for Making Everyday Objects into Intelligent Machines . Maker Media. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

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

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!