As the proliferation of technology continues globally, we face a growing need for programmers. Yet the demand for Computer Science graduates outweighs our supply (code.org, 2016) However, global users of mobile technology continue to grow at a vast rate. It is worth critically examining whether mobile technology could be a useful option for aspiring K-12 programmers to learn, explore and share their computational thinking. Both coding and programming are key aspects of the D.I.Y. maker movement and yet mobile technology has often been identified with the “consumption” of media and learning rather than being a tool for design and creativity. Greater scholarship is needed to explore the potential benefits, limitations and challenges for programmers and coders to learn, tinker and test computer programs directly on mobile devices. Some considerations might include speed, flexibility, convenience and greater accessibility while users are situated in creative and collaborative spaces like makerspaces. It is important to critically examine the applications, web-based resources and hybrid tools available to aspiring programmers for their potential to explore core programming concepts and frankly address the current challenges, implications and limitations. As a greater number of people use mobile devices regularly, perhaps there is a potential opportunity to train and support programmers who can code and iterate directly on their devices. Considerations will also need to made to the changing approach and intent of corporations like Apple or Google and their willingness to allow consumers and potentially makers greater flexibility to “tinker” with and program the software and/or OS of their mobile devices. There are some benefits and implications for allowing devices (or aspects of devices) to be programmed or alternately, “locking” down some if not all consumer options for programming.
Keywords: Applications (Apps), Coding, Computational Thinking, Computer Science, Hacking, Hybrid Applications, Making, Makerspaces, mLearning, “Mobile First”, Mobile Learning, Programming, STEAM (Science, Technology, Engineering, Arts, and Mathematics), STEM, The Internet-Of-Things, Web Based Applications
Introduction (Framing the Problem)
There is currently, and will continue to be, a high demand for employment in Computer Science yet there are not enough graduates. “Computing occupations make up 2/3 of all projected new jobs in STEM fields.” (code.org, 2016) Yet only 8% of STEM (as defined as Science, Technology, Engineering and Mathematics) graduates study Computer Science. (code.org, 2016) The challenge becomes mentoring K-12 students and educators to see the potential for computational thinking and programing as a creative exercise. Perhaps then text-based programming and Computer Science will be more accessible and encourage greater numbers of students from a variety of diverse backgrounds and gender to pursue (and graduate with) a degree in Computer Science. Using the CSAM framework (Power, 2013), this post will critically examine resources and platforms for aspiring programmers using mobile technology.
Why Learn to Code on a Mobile Device?
Mobile devices today provide new opportunities and challenges for all involved in education. Some schools have banned the technology; others have begun explore using these “mini computers” as tools for learning. According to a 2013 study, 78% of teens and 91% of adults own a mobile phone (Madden, 2013) and teachers must adapt to learning environments they never experienced as a student. (I imagine the numbers are probably even higher today.) Learning Models like the TPACK (Koehler, 2009) or SAMR (Puentedura, 2014) can aid educators and curriculum designers with a critical lens to explore the purpose and intent behind their integration of technology. The TPACK model emphasizes the place of technology, pedagogy and content and their interaction and is helpful for a critical analysis on the place of programming for learning.
Figure 1 -The Seven Components of TPACK (2012)
With the SAMR model, the integration of technology is contrasted with an closest off-line activity. Using technology to redefine tasks and provide learning opportunities that were never before possible remains a strong argument for technology integration. Whether that learning is best on a mobile device or a computer is another an important consideration.
Figure 2 – THE SAMR model (2010)
The CSAM framework (Power, 2013) provides an important lens by considering if an activity using mobile technology is collaborative, situated to critically examine effective pedagogies for using mobile technology for learning.
Figure 3 – THE CSAM mode (2013)
Connections and compatibility between the CSAM and TPACK and CSAM theories have been established (Power, 2013) by merging the affordances of the technology with sound pedagogy. These compatible models provide a powerful lens by which to analyze the pedagogy involved in utilizing mobile devices for learning to code and write programs for technological devices.
Programming is fundamentally an exercise in computational thinking which combines critical thinking with the speed and power of computing. According one of the leading organizations for the use of technology, computational thinking is a problem solving process and includes the creative use of a computer, critical analysis and representation of data in a variety of formats and uses technology to present solutions in an efficient amount of steps and resources. (ISTE, 2016) Mobile devices provide a unique platform for learners to explore computational thinking and become creators rather consumers of technology, in this case coding applications or even the operating system itself. While some tinkering on the operating system (i.e. jailbreaking) is a possibility for programmers, users are mostly encouraged by companies to use applications to develop computational thinking. Some companies like Android are keen to share “open source” programming for all to see, explore and iterate while others like Apple are more proprietary and employ “closed shop” on revealing their code with design, user friendliness and elegant user interfaces only available to tinker by their professional designers.
Programming applications can be categorized into block-based, text-based applications with some functionality and text-based applications for writing and testing on all devices. Another important distinction should be made between “open studio apps” when users start with a blank canvas for users to program from scratch (Patterson, 44) and apps provide motivators for learning like badges, stars, levels etc. Both types of applications provide opportunities for mobile programmers dependent in the situation or challenge and their level of programming proficiency.
Coding on a Mobile Device (Beginner to Advanced)
Block-based applications are where beginner programmers can learn to write code by manipulating a virtual objects or spaces by dragging and dropping blocks together like digital Lego pieces. Not surprisingly these applications are usually targeted for elementary students. The Scratch website designed by Michael Resnick and his team at MIT provides the most widely recognized example of block-based programming and has been successful due to its inclusion of Seymour Papert’s concept of a low floor (easy to get started) and high ceiling (opportunities to create increasingly complex projects over time). (Resnick et al., 2011) In other words, novices can quickly make something fun with some coaching but have the potential to create sophisticated applications as evidenced by the over 16 million unique and remixed projects found on the Scratch forum and website. (Scratch Statistics, 2016) However, a mobile version for younger coders is only available with the popular Scratch is not available.[i]
Its closest equivalent is an application called Hopscotch.
Figure 4 – Screenshot of the stage from Hopscotch app (2016)
Hopscotch is a good example of an “open studio app” where users create commands for a virtual object and/or spaces by snapping blocks together from a blank canvas. Examined through the CSAM framework, users can collaborate face-to-face or even share their projects through a modest web-based forum and the block commands allow programmers to code using key concepts like loops, conditionals among others but more advanced programmers might debate how situated is this learning when the majority of programming is text-based. Applications like Code Monkey, Karel and Blockly allow users to toggle between block based and text based views but only Code Monkey is available as a mobile app. It might be argued that Code Monkey is not active as users’ complete challenges and puzzles that test a users’ knowledge and application of programming concepts and ideas rather than have a canvas for creation. In contrast, the active element is well established in Hopscotch as it has a creative canvas for unique and remixed programs. Overall, Hopscotch meets all four elements of the CSAM with some room for improvement by toggling views from block-based to text-based code.
Figure 5 – Screenshot from the Tynker app (2016)
Tynker is another block-based mobile application with both “open source” elements and learning modules on key programming concepts. Although the graphics are very engaging, it suffers from missing elements when compared to the web-based version is subsequently not indicative of mobile first design. However, it performs well using the CSAM framework with online forum for collaboration, as well as an active space for creation.
For most block-based applications, perhaps more might make use of the features unique to mobile device itself beyond the camera and microphone i.e. gyroscope, GSP, accelerometer etc. In addition, students using their own devices would be more likely to demonstrate ownership and flow using the familiar technology of their mobile device. Overall, Scratch Junior, Tynker and Hopscotch among others are excellent places for aspiring programmers to demonstrate their creativity and competency using the flexibility and convenience of a mobile device. More emphasis on situating them by toggling between text and block and easier sharing and collaboration would be considerations for future updates for age appropriate applications.
Programmers usually “graduate” from block-based programming to text-based coding and mobile devices provide many applications for text-based programming in a variety of programming languages. Many applications are simply more streamlined versions of web-based or installed software on a computer yet most highlight uploading files to online storage sites like Dropbox as a key feature which suggests that full parity with computers has not yet been achieved. Others like Code Combat and Code Warrior provide a game-based environment for users to learn programming rather than a creative space. Subsequently, they are less situated in a realistic environment of programming. However, two applications Hyperpad and Codea, which are designed mobile first and meet the criteria of CSAM framework.
Figure 6 – Screenshot from the Hyperpad app (2016)
HyperPad provides a unique and creative space for programmers to visually drag and drop coding that is more complex than block-based coding with the ability to toggle to the text-based code. Most importantly, games can be created, tested, iterated until ready to share with other others in web-based site called the Hub for feedback and collaboration. The Pro version allows apps to sold directly into the App Store. Using the CSAM framework, HyperPad is collaborative when connected to an online database site for feedback, situated as users can create develop, share their creations directly into an App Store, active as the app can be iterated on the device and finally mobile as programmers can work offline and on the device itself.
Figure 7 – Screenshot from the Codea app (2016)
Codea is another visually based programming tool unique to the iPad which uses visual features to facilitate programmers by using a visual platform and an extensive library of resources for rapid prototyping and creations. It satisfies the CSAM framework for collaboration with a link to “Codea Talk” forums. It is situated as successful games like CargoBot have been created and deployed directly from the application. It is active space where users can start with an editable template edit or on a blank scratchpad. Finally, it is mobile through its deployment on an iPad yet not editable on phone yet. Both Codea and Hyperpad make decent use of capabilities and allow users a creative and collaborative space to design apps and learn, test and share their coding directly on the device.
However, it is at the next level of complex that we lose the opportunity for a variety of programming tools to code directly on Apple devices. Sites like CodeAcademy and Udacity are simply portals for learning to code that is assumedly fully actualized on a computer like Mac or Windows computer. In other words, actual coding on Apple mobile devices at the most advanced level of programming is not yet fully situated outside their proprietary Swift Playgrounds application users. Android provides much better opportunities for programming through easy access through an API to the majority of programming languages for application on both mobile and computers. Programming on Android using a variety of applications meets three characteristics of the CSAM framework with some improvement needed for collaboration only available through external sources like YouTube or social media. Non-Apple programming is more possible using Android despite limitations on collaborations and an arguably less user-friendly user interface.
Figure 8 – Screenshot from TouchDevelop (2016)
One final entry in this analysis of coding on a mobile device is a Windows application called TouchDevelop which is accessible on their Surface (and perhaps even a future Windows phone.) It meets all CSAM categories, with excellent resources to help users transition from block-based code to text-based coding, an emphasis on both a good user interface and with strong collaborative options. Users can create programs for use on iOS, Android, Windows, Mac or Linux. Windows is seemly offering another option to the Apple vs. Android dichotomy for users learning and exploring computational thinking on a mobile device.
Overall, mobile technology is generally a positive device for coders and programmers but their experiences is dependent on the device, company and operating system. As the Internet of Things, continues to expand, future programmers may need to write and de-bug code on a variety of objects and places which favours mobile technology. At the moment, I must concede that computers do offer more affordances and complete functionality for programmer. However, Apple’s creation of a mobile programming language called Swift acknowledges user demand for increased access “under the hood” of their mobile devices to pursue their entrepreneurial ideas (and aid Apple as the time time.) Alternately, Android’s “open source” approach is not completely preferable either. Pushing out fixes or updates to correct key security flaws and improving user experience are difficult with the fragmentation of the Android product line. Perhaps Windows offers a third way with a flexible OS that can toggle between mobile and computer interfaces which benefits mobile and computer programmers. Users would be able to transform their “mini computer” to a full sized one by connecting to the larger screen. (Welch 2015) After all, the processing power of phones is now comparable to many computers and storage can be mostly cloud-based. Ultimately, the difference between mobile and computer technology may boil down to screen size, user choice and the best devices will allow users to program any smart device.
Berry, Miles. (2014). Computational Thinking in Primary Schools. [Web Log Post] Available from http://milesberry.net/2014/03/computational-thinking-in-primary-schools/
Brenan, Karen et al. (2016). Computational Thinking with Scratch. [Web page] Available from http://scratched.gse.harvard.edu/ct/index.html
Chen, Brian X. (2010). Apple rejects Kid-Friendly Programming App. Wired magazine. [Online Article] Available from http://www.wired.com/2010/04/apple-scratch-app/
Chen, Brian X. (2011). The iPad fall short as a creation tool with coding apps. Wired magazine. [Online Article] Available from http://www.wired.com/2011/03/ipad-creation
Code.org. (2016). Summary of source data for Code.org infographics and stats. Available from https://docs.google.com/document/d/1gySkItxiJn_vwb8HIIKNXqen184mRtzDX12cux0ZgZk/pub
Duckett, Chris. (2012). Programming for Android on Android. Tech Republic. [Online Article] Available from http://www.techrepublic.com/blog/australian-technology/programming-for-android-on-android/
Heater, Brian. (2013). Programming is FUNdamental: A closer look at Code.org’s star-studded computer science campaign. Engadget [Online Article] Available from https://www.engadget.com/2013/07/04/programming-is-fundamental-code-org/
Heller, Martin. (2016). 14 great programming app for your iPad 2016: How to use your iPad for work: best iPad Pro, iPad Air, iPad Mini apps. TechWorld from IDG. [Web page] http://www.techworld.com/picture-gallery/apps/11-great-programming-apps-for-your-ipad-3497769/
International Society for Technology in Education (ISTE) (2011). Operational Definition of Computational Thinking for K-12 Education. Available from http://www.iste.org/docs/ct-documents/computational-thinking-operational-definition-flyer.pdf?sfvrsn=2
Kilfoyle, Katie (2015). Districts expand computer science instruction to give students critical job skills. [Online Article] Available from http://www.districtadministration.com/article/coding-kindergarten-graduation
Koehler, Matthew (2012). TPACK explained. TPACK.org [Web site] Available from http://www.matt-koehler.com/tpack/tpack-explained/
Kravets, David (2010). U.S. Declares Jailbreaking Legal, Over Apple’s Objections. [Online Article] Available from https://www.wired.com/2010/07/feds-ok-iphone-jailbreaking/
Madden, M., Lenhart, A., Cortesi, S., Gasser, U., Duggan, M., Smith, A., et al. (2013). Teens, social media, and privacy. Retrieved from http://pewinternet.org/Reports/2013/Teens-Social-Media-And-Privacy.aspx
MIT Media Lab. (2016). Community Statistics at a Glance. [Web page] Available from https://scratch.mit.edu/statistics/
Patterson, Sam (2016). Programming in the Primary grade: Beyond the Hour of Code. Latham, Maryland: Rowman and Littlefield International Ltd.
Power, M. (2013). Collaborative Situated Active Mobile learning strategies: a new perspective on effective mobile learning. Learning and Teaching in Higher Education: Gulf Perspectives, 10(2). Available from lthe.zu.ac.ae/index.php/lthehome/article/download/137/67
Puentedura, Ruben (2014). Learning, Technology, and the SAMR Model: Goals, Processes, and Practice. Available from http://www.hippasus.com/rrpweblog/archives/2014/06/29/LearningTechnologySAMRModel.pdf
Resnick, Michael et al. (2009, November). Scratch Programming for all. Communication of the ACM. Vol. 52 No.11. Retrieved from http://web.media.mit.edu/~mres/papers/Scratch-CACM-final.pdf
Tillmann, Nikolai et al. (2012). The Future of Teaching Programming is on Mobile Devices. Proceedings of the 17th ACM annual conference on Innovation and Technology in Computer Science Education. The Open University, Israel. pp 156-161.
Wells, Richard (2015). Coding on iPads – Beginner to Pro. [Web page] Available fromhttps://eduwells.com/2015/04/19/coding-on-ipads-beginner-to-pro/
[i] The reason for the absence of a Scratch app in iOS and other App Store was due to its rejection in 2010 by Apple who rejected code that used Adobe Flash and at the time seemed to discourage users from expressing computational thinking using the (free) and (MIT designed) Scratch blocks on their devices. (Chen 2010) Apple pivoted from this position later in 2014 and created a new programming language called Swift and began promoting its Swift Playgrounds app which programmers were encouraged to use Apple created language, on an Apple created app exclusively for their App Store.