Mobile App Development: Choosing the Best Development Tools in Practical Labs Dr
Total Page:16
File Type:pdf, Size:1020Kb
Teaching Mobile App Development: Choosing the best development tools in practical labs Dr. Daniel Dang Dr. David Skelton Eastern Institute of Technology Eastern Institute of Technology [email protected] [email protected] ABSTRACT As mobile app development becomes more mainstream, many educational institutions in New Zealand recognize a need to integrate this subject into the programming-related curriculum. However, one challenge is to select the best framework and development tool to use in the practical labs amongst many available frameworks. Choosing the right tool and language is an important factor for success in teaching and learning within this subject. This paper first presents a detailed discussion on different development tools (language) - Android Studio (Java/Kotlin), Xcode (Swift), Flutter (Dart), React Native (JavaScript), Ionic (HTML5, CSS3, TypeScript), Xamarin (C#), Cordova (HTML5, CSS3, JavaScript), and Appcelerator (JavaScript). This paper concludes by suggesting that the Android Studio IDE (Java) and Flutter Framework are ideal choices for use within practical labs. By using Android Studio, students are able to develop native apps, which are usually high-performance and good user interface, for Android devices. By using the Flutter framework, which is integrated into Android Studio, students gain the capability of creating cross-platform apps running on both Android and iOS smartphones. Furthermore, the paper recommends a collection of eight specific topics which should be covered in the practical sessions to provide students with sufficient technical skills to develop all types of mobile apps at their disposition. While the focus is on the Android platform, these topics can be used to teach other native iOS or cross-platform apps. Keywords: Mobile app development, native and cross-platform apps, practical labs, frameworks. 1. INTRODUCTION applications during capstone projects and involving industrial A mobile application, also referred to as an app in short, customers. describes software applications designed and developed to run This paper, however, investigates the challenges in selecting on a mobile device, such as a mobile phone or tablet. As mobile development tools and content to be taught in mobile app app development becomes more mainstream, most educational development courses to undergraduate students. The paper then institutions recognize a need to integrate this subject into the recommends a collection of eight specific topics which should programming-related curriculum. How to integrate the course be covered in the practical sessions to provide students with of mobile app development in the Computer science curricula? sufficient technical skills to develop all types of mobile apps at Minaie et al. (2011) and Mahmoud (2008) discussed various their disposition. approaches that are used by different colleges and universities around the world to integrate mobile computing into their Section 2 of this paper discusses and compares many available computer science and engineering curricula. The authors development tools such as Android Studio (Java/Kotlin), classified the integration into five models: (1) offering Xcode (Swift), Flutter (Dart), React Native (JavaScript), Ionic undergraduate courses on Mobile Computing, (2) offering (HTML5, CSS3, TypeScript), Xamarin (C#), Cordova graduate courses on Mobile Computing, (3) integrating Mobile (HTML5, CSS3, JavaScript), Appcelerator Titanium Computing concepts into their traditional courses, (4) (JavaScript) in order to assess the best choice to be used in combining model 1, 2, and 3, and (5) offering Mobile practical labs. Section 3 presents the list of eight topics: (1) Computing as an area of research to their graduate students. User Interface Design, (2) Event Handling, (3) Multi-threading Seyam et al. (2016) stated that this integration requires a good Handling, (4) Graphics and Animation, (5) Use of Mobile understanding of mobile software development that is not just Sensor/Components, (6) Wireless Connectivity (WiFi, a collection of theory topics but also delivery modes such as Bluetooth), (7) Internal Data Storage, and (8) Real-time lectures, interactive tutorials. and pair programming. Esakia & Database (Firebase). These topics along with concrete McCrickard (2016) presented an adapted model for teaching practical exercises provide students with not only foundation mobile app development. Their model suggested using a theories but also programming skills to implement all types of framework that enables mobile-specific topics like location, mobile apps such as gaming, business, educational, lifestyle, notification, and sensors. El-Tawab et al. (2018) proposed a entertainment, and utility apps. These topics have been proven project-based methodology of teaching mobile app to be a success when they were taught at the Bachelor of development for undergraduate students, the authors also Creative Software (BCS) at former Animation College since described the challenge that educators faced was in choosing July 2016. the best modern programming language and framework to prepare coding materials when teaching the subject. This 2. DISCUSSION ON DEVELOPMENT includes the choice between native apps or cross-platform apps. TOOLS AND FRAMEWORKS In another related study, Khmelevsky & Voytenko (2016) There are currently two common types of mobile apps: native presented a new paradigm for teaching mobile application and multi-platform apps. The native apps are those which are development, focusing on the development of mobile developed for a single mobile operating system (Android, iOS, This quality assured paper appeared at the 10th annual conference of Computing Window phone, Blackberry, etc.) exclusively. Their major and Information Technology Research and Education New Zealand advantage is high performance, optimized and the best user nd (CITRENZ2019) and the 32 Annual Conference of the National Advisory experience because they use native device user interface. It Committee on Computing Qualifications, Nelson, NZ, Oct. 9-11, during ITx 2019. appears from scanning recruitment channels that most mobile job advertisements are looking for those who are able to develop native apps. However native apps cannot be run on all apps are in fact mobile-designed websites and disguised in a devices, so the company normally has to establish two different native wrapper. Moreover, the chosen tool should support team teams to develop the same app, one for iOS devices and another work and project collaboration. In this point, the Android for Android devices. This leads to “duplication codes” and Studio and Xcode are the right choices because they support higher cost compared to other types of apps. Multi-platform GitHub which leverage the collaborative projects. As a result, apps are a mix of native apps and web technologies (HTML5, we chose both Android Studio and Xcode in practical sessions. CSS, and JavaScript); so multi-platform apps are able to remove the “duplication codes”. However, they often exhibit More specifically, students learnt Android architecture and poor performance, lack of optimization and app GUI inability Android app development in the first half of the semester, then to look exactly the same way on different devices. moved to learn iOS apps in the second half. The learning result was quite positive. Students gained a strong foundation in both As of 2017, when we started teaching mobile app development Android and iOS architecture, the ability to design and courses – CS102 and CS103 - on the Bachelor of Creative implement native apps for both iOS and Android platforms. Software (BCS) programme, we faced the challenge to select However, from our observation, students had trouble when the most suitable framework and development tool to use in the learning two different platforms in one course. Student’s practical labs amongst many frameworks available as shown in engagement in the second part (iOS native app development) table 1. Choosing the right development tool and the right dropped significantly compared to the first part. In the survey programming language is a key factor for success in both at the end of the semester, students commented that they sensed teaching and learning. they had learnt the theory, concepts, and practical work twice because there were many similarities between two platforms – Table 1: Available frameworks to develop native and Android and iOS. They said they only learnt the syntax of a cross-platform mobile apps new language (Swift) and the use of a new tool (Xcode) but Frameworks Features they did not learn new programming skills. As for projects, even though students were at disposition to choose to Android Introduced in 2013 by Google. Open- implement their apps with Android IDE or Xcode IDE, more Studio (*) source framework to develop native than 90% of groups chose Android Studio as the development Android apps. Development language: tool to carry out their projects. Java/Kotlin. Xcode (*) Introduced in 2003 by Apple. Open-source We also observed that students wasted too much time in framework to develop native iOS apps. learning to use the Xcode tool and Swift syntax but faced little Development language: Swift. use or application later on in their projects or assignments. Xcode (*) Therefore, in semester 1, 2018, we made a proposition to Flutter Introduced in 2017 by Google. Open- students, instead of learning Xcode IDE and Swift, they would source framework to develop cross- learn the Flutter framework (Dart) to develop