{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,8,22]],"date-time":"2025-08-22T04:56:03Z","timestamp":1755838563605,"version":"3.41.0"},"reference-count":54,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2017,1,5]],"date-time":"2017-01-05T00:00:00Z","timestamp":1483574400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGBED Rev."],"published-print":{"date-parts":[[2017,1,5]]},"abstract":"<jats:p>Theoretical skills imparted during university education in Embedded Systems often surpass their practical counterpart. The contribution of this paper is a defined set of practical skills which bridge the gap between a sound theoretical education in embedded systems and the skillset acquired by experienced practitioners in the field. The presentation of each skill is accompanied by common solution patterns, state-of-practice technologies, and a set of exercises to provide practical uptake of each skill. The proposed skillset is based on consistent observations over the years, of graduating students performing \"hands-on\" projects; the proposed approach for imparting the skillset is motivated by experiences with Embedded Systems education at The Royal Institute of Technology (KTH) in Sweden.<\/jats:p>","DOI":"10.1145\/3036686.3036687","type":"journal-article","created":{"date-parts":[[2017,1,6]],"date-time":"2017-01-06T13:30:07Z","timestamp":1483709407000},"page":"8-15","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Educating embedded systems hackers"],"prefix":"10.1145","volume":"14","author":[{"given":"Sagar","family":"Behere","sequence":"first","affiliation":[{"name":"Kungliga Tekniska H\u00f6gskolan, Brinellv\u00e4gen, Stockholm, Sweden"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Martin","family":"T\u00f6rngren","sequence":"additional","affiliation":[{"name":"Kungliga Tekniska H\u00f6gskolan, Brinellv\u00e4gen, Stockholm, Sweden"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2017,1,5]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Abstract Syntax Notation One ASN.1. http:\/\/www.etsi.org\/technologies-clusters\/technologies\/protocol-specification\/asn-1.  Abstract Syntax Notation One ASN.1. http:\/\/www.etsi.org\/technologies-clusters\/technologies\/protocol-specification\/asn-1."},{"key":"e_1_2_1_2_1","unstructured":"Arduino - Open Source Electronic Platform. http:\/\/arduino.cc.  Arduino - Open Source Electronic Platform. http:\/\/arduino.cc."},{"key":"e_1_2_1_3_1","unstructured":"BeagleBone Black. http:\/\/beagleboard.org\/black.  BeagleBone Black. http:\/\/beagleboard.org\/black."},{"key":"e_1_2_1_4_1","unstructured":"BerkeleyDB. http:\/\/www.oracle.com\/technetwork\/database\/database-technologies\/berkeleydb\/overview\/index.html.  BerkeleyDB. http:\/\/www.oracle.com\/technetwork\/database\/database-technologies\/berkeleydb\/overview\/index.html."},{"key":"e_1_2_1_5_1","unstructured":"Boost Log v2. http:\/\/www.boost.org\/doc\/libs\/1\\_55\\_0b1\/libs\/log\/doc\/html\/index.html.  Boost Log v2. http:\/\/www.boost.org\/doc\/libs\/1\\_55\\_0b1\/libs\/log\/doc\/html\/index.html."},{"key":"e_1_2_1_6_1","unstructured":"Boost Serialization library. http:\/\/www.boost.org\/doc\/libs\/1\\_55\\_0\/libs\/serialization\/doc\/index.html.  Boost Serialization library. http:\/\/www.boost.org\/doc\/libs\/1\\_55\\_0\/libs\/serialization\/doc\/index.html."},{"key":"e_1_2_1_7_1","unstructured":"BSON - Binary JSON. http:\/\/bsonspec.org.  BSON - Binary JSON. http:\/\/bsonspec.org."},{"key":"e_1_2_1_8_1","unstructured":"CMake - Cross Platform Make. http:\/\/cmake.org.  CMake - Cross Platform Make. http:\/\/cmake.org."},{"key":"e_1_2_1_9_1","unstructured":"CONFIG_PREEMPT_RT patch to make Linux kernel fully preemptible. https:\/\/rt.wiki.kernel.org.  CONFIG_PREEMPT_RT patch to make Linux kernel fully preemptible. https:\/\/rt.wiki.kernel.org."},{"key":"e_1_2_1_10_1","unstructured":"Continuous Integration. http:\/\/martinfowler.com\/articles\/continuousIntegration.html.  Continuous Integration. http:\/\/martinfowler.com\/articles\/continuousIntegration.html."},{"key":"e_1_2_1_11_1","unstructured":"CORBA - Common Object Request Broker Architecture. http:\/\/www.corba.org.  CORBA - Common Object Request Broker Architecture. http:\/\/www.corba.org."},{"key":"e_1_2_1_12_1","unstructured":"CyPhERS project deliverable D5.2: CPS: Significance Challenges and Opportunities. http:\/\/www.cyphers.eu\/sites\/default\/files\/D5.2.pdf.  CyPhERS project deliverable D5.2: CPS: Significance Challenges and Opportunities. http:\/\/www.cyphers.eu\/sites\/default\/files\/D5.2.pdf."},{"key":"e_1_2_1_13_1","unstructured":"Debian Multistrap - Bootstrap a Debian system. https:\/\/wiki.debian.org\/Multistrap.  Debian Multistrap - Bootstrap a Debian system. https:\/\/wiki.debian.org\/Multistrap."},{"key":"e_1_2_1_14_1","unstructured":"dSPACE Systems. https:\/\/www.dspace.com.  dSPACE Systems. https:\/\/www.dspace.com."},{"key":"e_1_2_1_15_1","unstructured":"Eclipse IDE. http:\/\/eclipse.org.  Eclipse IDE. http:\/\/eclipse.org."},{"key":"e_1_2_1_16_1","unstructured":"ECMA-404 the JSON Data Interchange Standard. http:\/\/json.org.  ECMA-404 the JSON Data Interchange Standard. http:\/\/json.org."},{"volume-title":"ICES workshop summary","year":"2014","key":"e_1_2_1_17_1"},{"key":"e_1_2_1_18_1","unstructured":"ERIKA Enterprise - Certified OSEK\/VDX Open Source RTOS. http:\/\/erika.tuxfamily.org\/drupal.  ERIKA Enterprise - Certified OSEK\/VDX Open Source RTOS. http:\/\/erika.tuxfamily.org\/drupal."},{"key":"e_1_2_1_19_1","unstructured":"FreeRTOS. http:\/\/www.freertos.org.  FreeRTOS. http:\/\/www.freertos.org."},{"key":"e_1_2_1_20_1","unstructured":"GCC the GNU Compiler Collection. http:\/\/gcc.gnu.org.  GCC the GNU Compiler Collection. http:\/\/gcc.gnu.org."},{"key":"e_1_2_1_21_1","unstructured":"The GNU Build system. http:\/\/www.gnu.org\/software\/automake.  The GNU Build system. http:\/\/www.gnu.org\/software\/automake."},{"key":"e_1_2_1_22_1","unstructured":"GNU Make. http:\/\/www.gnu.org\/software\/make.  GNU Make. http:\/\/www.gnu.org\/software\/make."},{"key":"e_1_2_1_23_1","unstructured":"Gnuplot. http:\/\/www.gnuplot.info.  Gnuplot. http:\/\/www.gnuplot.info."},{"key":"e_1_2_1_24_1","unstructured":"Google Protocol Buffers. https:\/\/code.google.com\/p\/protobuf.  Google Protocol Buffers. https:\/\/code.google.com\/p\/protobuf."},{"key":"e_1_2_1_25_1","unstructured":"HDF5 Data Format. http:\/\/www.hdfgroup.org\/HDF5.  HDF5 Data Format. http:\/\/www.hdfgroup.org\/HDF5."},{"key":"e_1_2_1_26_1","unstructured":"Jenkins - an extendable open source continuous integration server. http:\/\/jenkins-ci.org.  Jenkins - an extendable open source continuous integration server. http:\/\/jenkins-ci.org."},{"key":"e_1_2_1_27_1","unstructured":"MathWorks Embedded Coder. http:\/\/www.mathworks.se\/products\/embedded-coder.  MathWorks Embedded Coder. http:\/\/www.mathworks.se\/products\/embedded-coder."},{"key":"e_1_2_1_28_1","unstructured":"MATLAB. http:\/\/www.mathworks.se\/products\/matlab.  MATLAB. http:\/\/www.mathworks.se\/products\/matlab."},{"key":"e_1_2_1_29_1","unstructured":"matplotlib: Python plotting. http:\/\/matplotlib.org.  matplotlib: Python plotting. http:\/\/matplotlib.org."},{"key":"e_1_2_1_30_1","unstructured":"mongoDB. http:\/\/www.mongodb.info.  mongoDB. http:\/\/www.mongodb.info."},{"key":"e_1_2_1_31_1","unstructured":"Network Common Data Form (NetCDF). http:\/\/www.unidata.ucar.edu\/software\/netcdf.  Network Common Data Form (NetCDF). http:\/\/www.unidata.ucar.edu\/software\/netcdf."},{"key":"e_1_2_1_32_1","unstructured":"NumPy scientific computing with Python. http:\/\/www.numpy.org.  NumPy scientific computing with Python. http:\/\/www.numpy.org."},{"key":"e_1_2_1_33_1","unstructured":"Opensplice DDS. http:\/\/www.prismtech.com\/opensplice.  Opensplice DDS. http:\/\/www.prismtech.com\/opensplice."},{"key":"e_1_2_1_34_1","unstructured":"OROCOS - open robot control software. http:\/\/orocos.org.  OROCOS - open robot control software. http:\/\/orocos.org."},{"key":"e_1_2_1_35_1","unstructured":"qmake manual. http:\/\/qt-project.org\/doc\/qt-5\/qmake-manual.html.  qmake manual. http:\/\/qt-project.org\/doc\/qt-5\/qmake-manual.html."},{"key":"e_1_2_1_36_1","unstructured":"QtiPlot - Data Analysis and Scientific Visualisation. http:\/\/www.qtiplot.com.  QtiPlot - Data Analysis and Scientific Visualisation. http:\/\/www.qtiplot.com."},{"key":"e_1_2_1_37_1","unstructured":"Raspberry Pi. http:\/\/www.raspberrypi.org.  Raspberry Pi. http:\/\/www.raspberrypi.org."},{"key":"e_1_2_1_38_1","unstructured":"RFC1392 - Internet Users' Glossary. http:\/\/tools.ietf.org\/html\/rfc1392.  RFC1392 - Internet Users' Glossary. http:\/\/tools.ietf.org\/html\/rfc1392."},{"key":"e_1_2_1_39_1","unstructured":"Scicos: Block diagram modeler\/simulator. http:\/\/scicos.org.  Scicos: Block diagram modeler\/simulator. http:\/\/scicos.org."},{"key":"e_1_2_1_40_1","unstructured":"Simulink. http:\/\/www.mathworks.se\/products\/simulink.  Simulink. http:\/\/www.mathworks.se\/products\/simulink."},{"key":"e_1_2_1_41_1","unstructured":"Simulink Real-Time. http:\/\/www.mathworks.se\/products\/simulink-real-time.  Simulink Real-Time. http:\/\/www.mathworks.se\/products\/simulink-real-time."},{"key":"e_1_2_1_42_1","unstructured":"SQLite. http:\/\/sqlite.org.  SQLite. http:\/\/sqlite.org."},{"key":"e_1_2_1_43_1","unstructured":"The CDIO initiative. http:\/\/www.cdio.org.  The CDIO initiative. http:\/\/www.cdio.org."},{"key":"e_1_2_1_44_1","unstructured":"The OMG Data Distribution Service for Real-Time Systems (DDS). http:\/\/portals.omg.org\/dds.  The OMG Data Distribution Service for Real-Time Systems (DDS). http:\/\/portals.omg.org\/dds."},{"key":"e_1_2_1_45_1","unstructured":"XDR\n  : External Data Representation Standard. http:\/\/tools.ietf.org\/html\/rfc4506.  XDR: External Data Representation Standard. http:\/\/tools.ietf.org\/html\/rfc4506."},{"key":"e_1_2_1_46_1","unstructured":"Xenomai: Real-Time Framework for Linux. https:\/\/xenomai.org.  Xenomai: Real-Time Framework for Linux. https:\/\/xenomai.org."},{"key":"e_1_2_1_47_1","unstructured":"XML encoding rules (XER) for ASN.1. http:\/\/www.itu.int\/en\/ITU-T\/asn1\/Pages\/xer.aspx.  XML encoding rules (XER) for ASN.1. http:\/\/www.itu.int\/en\/ITU-T\/asn1\/Pages\/xer.aspx."},{"key":"e_1_2_1_48_1","unstructured":"Yocto Project: Open Source embedded Linux build system. https:\/\/www.yoctoproject.org.  Yocto Project: Open Source embedded Linux build system. https:\/\/www.yoctoproject.org."},{"key":"e_1_2_1_49_1","unstructured":"ZeroC Internet Communications Engine. http:\/\/www.zeroc.com.  ZeroC Internet Communications Engine. http:\/\/www.zeroc.com."},{"key":"e_1_2_1_50_1","unstructured":"ZeroMQ. http:\/\/zeromq.org.  ZeroMQ. http:\/\/zeromq.org."},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1086519.1086528"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1109\/TITS.2012.2204876"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/1217809.1217814"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/1217809.1217816"}],"container-title":["ACM SIGBED Review"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3036686.3036687","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3036686.3036687","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T03:50:26Z","timestamp":1750218626000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3036686.3036687"}},"subtitle":["a practitioner's perspective"],"short-title":[],"issued":{"date-parts":[[2017,1,5]]},"references-count":54,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2017,1,5]]}},"alternative-id":["10.1145\/3036686.3036687"],"URL":"https:\/\/doi.org\/10.1145\/3036686.3036687","relation":{},"ISSN":["1551-3688"],"issn-type":[{"type":"electronic","value":"1551-3688"}],"subject":[],"published":{"date-parts":[[2017,1,5]]},"assertion":[{"value":"2017-01-05","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}