Instructor(s):

Péter Ekler
Weeks
1-14
Contact hours
2x2 hours
Credit
4 credits

Short Description of the Course:
Mobile application development is one of the newest and most exciting areas of information technology. The diverse resource-constrained hardware environments, the large number of software platforms, and quickly changing APIs are among the features that make mobile development challenging and rewarding.
Mobile Software Development is a course that blends theory and practice, ultimately allowing students to develop, design, and implement their own mobile “apps.”  The course is mainly focusing on Android platform but highlights the similarities and differences between iOS and Android.
During the course several example application will be developed and during the implementation practices general software development rules like clean code, efficient coding and agile development will be covered.

The course begins with the basics of mobile development and fundamental concepts. After this, the course focuses on software development on Android, providing a deep understanding of the underlying concepts with many concrete examples and demonstrations. During the course an Android phone is given to everyone to make the work more effective.
Ultimately, the participants design and develop their own application and business idea and can upload their application to the mobile application stores.

The participants of the IT Entrepreneurship course and the User Interface Design course are encouraged to participate on this course as well to realize the user interface designed in the  User Interface Design course and test the viability of the business plan completed in IT Entrepreneurship course.

Aim of the Course:
The aim of the course is to give students the tools to design, develop, and publish their own mobile-related business idea to an online mobile application store. It provides an introduction to mobile phone and tablet development in general, and a good understanding of mobile application development.
Besides that, the course will also highlight general software development principles like clean code and different agile development techniques.

Prerequisites:
The course requires basic knowledge in object oriented programming. Familiarity with Java, C  and/or C++ is advantageous but not required.

Detailed Program and Class Schedule:
In the beginning, the course gives an overview about the popular mobile platforms and techniques from the perspective of application development. It covers the basic structure of the specific mobile platforms, discusses the development process in general and highlights the key objectives of how to create well-designed mobile applications. After that the platform capabilities are introduced through several practical examples and hands-on tasks. During the lessons the application development process and the most relevant mobile APIs will be covered that are mainly available on the major mobile platforms. The detailed schedule is highlighted bellow:

1. Introduction

  • Introducing the Android platform
  • Introducing the iOS platform
  • Native apps and the build process
  • XCode vs. Android Studio
  • Android and iOS app deployment and distribution

2. Android platform structure

  • Android platform structure
  • Android build sequence
  • Android development environment
  • Deployment process
  • The APK file

3. Application components

  • Application components
  • Manifest and meta information
  • Activity life cycle
  • Activity back stack
  • Basic user interfaces with event handling

4. User interface basics

  • User interface design techniques
  • Tablet support
  • Resolution and density independency
  • Styles and themes
  • Menu handling
  • Basic clean code principles

5. Advanced user interface

  • Lists, RecyclerView
  • Toolbar
  • Custom views
  • Drawable resources

6. Fragments

  • Fragment life cycle
  • Static and dynamic attachments
  • Fragment patterns
  • Tablet layout
  • ViewPager
  • Fragments without UI (Worker Fragment)
  • Tablet support, master detail flow

7. Inter-component communication

  • Intent mechanism
  • Intent filter definition
  • BroadcastReceiver component
  • System event handling
  • Telephony functions

8. Persistent data storage

  • File management
  • Shared preferences
  • SQLite database support
  • ContentProviders, internal data providers (contact list, call log, etc.)
  • The development of PreferenceActivity

9. Location-based services on Android

  • Location-based services introduction
  • GPS and network based location determination
  • Proximity alerts
  • Geocoding/reverse geocoding
  • MapView on Android
  • Marker management on MapView

10. Network communication

  • Network management in Android
  • TCP/IP based socket communication
  • UDP communication
  • Bluetooth communication
  • NFC
  • HTTP basics

11. Advanced networking

  • HTTP REST services
  • Standard message format parsing (XML, JSON)
  • Push notifications
  • Cloud introduction
  • Working with a BaaS
  • Advanced clean code principles, SOLID principles

12. Multimedia

  • Animation support
  • Multimedia support in Android
  • Sound and video playback capabilities
  • Accessing the built-in camera
  • Face detection, augmented reality concepts

13. Android Service development and built-in sensors

  • Introducing the Service component
  • Accessing the user interface from services
  • Notification framework
  • Accessing the device sensors (accelerometer, proximity sensor, light sensor, etc.)
  • Application testing techniques

14. Custom libraries, native development

  • Custom UI controls
  • Network handling libraries
  • Test Driven Development on Android
  • Android Wear, Android TV
  • QR Code reading, etc.
  • Native development (NDK)
  • Best practices

Methods of Instruction:
The course comprises lectures, demonstrations, and readings from relevant textbooks and online resources in addition to homework assignments, a major course project, and a midterm exam.

Textbooks:
The course is self-contained, but students may wish to refer to supplementary readings to reinforce concepts or to learn to use specific tools.

  • Mark Murphy: The Busy Coder's Guide to Android Development, 2014
  • Bill Phillips, Brian Hardy: Android Programming: The Big Nerd Ranch Guide, 2013
  • Reto Meier: Professional Android 4 Application Development, 2012
  • Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship, 2008

Grading:
Final grading: 50% project work + 25% assignments + 25% exam

Instructors' bio:

Péter Ekler is a senior lecturer at Budapest University of Technology and Economics, Department of Automation and Applied Informatics. He received his Ph.D. degree at BME in 2011. He has been working with mobile P2P and social networks for six years. He is the creator of the first BitTorrent client for mainstream mobile phones based on Java ME platform. He was co-author of several mobile related scientific papers and book chapters. His field of research covers mobile-based social networks, P2P solutions, data analysis and power law distributions in large networks. He has participated in several data warehouse and business intelligence related projects. He teaches mobile software development for several mobile platforms.