Tag Archives: Kotlin

Topic 9 – Introduction to Mobile Application Development

Why do I need to learn about mobile application development?

Desktop applications are very useful but their deployment and updating are daunting. Web applications overcome many limitations but you still need a workstation to work with it. This is often a PC or MAC that is too large and heavy to bring on-the-go.

Nowadays most of us always bring a mobile device with us everywhere. It’s very convenient if we could use our daily software inside our mobile devices. In order to  leverage our mobile devices we need to develop software for them.
Therefore you need to learn mobile programming.

What can I do after finishing learning mobile programming?

You can create applications like WhatsApp, Instagram or games like Temple Run, Angry Birds, Fruit Ninjia.

How interesting! What should I do now?

Mobile programming requires a lot of reading. You have to master at least a programming language and a mobile platform. Currently, there are 2 major platforms for mobile development: Android and iOS. There are 3 options for developing a mobile application:
– native Android application or
– native iOS application or
– hybrid mobile application.

The first option for learning mobile programming is Android programming.
If you are not familiar with the Kotlin language, please first read this book to learn the core concepts of Kotlin: Josh Skeen and David Greenhalgh (2018). Kotlin Programming – The Big Nerd Ranch Guide. Pearson Education.

After that, please read this book to learn how to use Android frameworks and libraries to create interactive mobile applications: Bill Phillips et al. (2019). Android Programming – The Big Nerd Ranch Guide. Big Nerd Ranch Guides.

After that, please read the two books below to learn about Java concepts, as Java is still widely used in many Android frameworks, libraries, and legacy systems:

The second option for learning mobile application development is iOS programming.
Please first read one of the following books to learn how to use iOS frameworks and libraries to create interactive mobile applications:

After that, please read one of the following books to learn how to create more sophisticated iOS applications:

The Objective-C language is still used in many legacy frameworks, libraries, and systems, as well as for accessing low-level APIs. Please read one of the following books to learn the core concepts of Objective-C:

The third option for developing mobile applications is either

(i) to leverage C# language and the Xamarin framework; please read this book: Charles Petzold (2016). Creating Mobile Apps with Xamarin.Forms; or

(ii) to leverage HTML/CSS/Javascript language and the Ionic framework; please read this book: Jeremy Wilken (2015). Ionic in Action: Hybrid Mobile Apps with Ionic and AngularJS; or

(iii) to leverage HTML/CSS/Javascript language and the React Native framework; please read the books below:

(iv) to leverage Dart language and the Flutter framework; please read this book: Priyanka Tyagi (2021). Pragmatic Flutter. CRC Press.

Mobile is a great environment for games because of its mobility. If you are interested in developing games for Android please read this book: Jayme Schroeder and Brian Broyles (2013). AndEngine for Android Game Development Cookbook.

If you already have a background in C or C++ and want to develop games for both Android and iOS, please read one of the following books:

It seems that there are many topics to learn. I am completely new to mobile programming. What essential knowledge should I focus on to reduce my learning time?

You could focus on these topics first:

  • How to install necessary tools and create a Hello World application.
  • What is the physical structure of a project and how to build it using both IDE and command line?
  • How to deploy an application to Play Store or App Store.
  • How to create UIs, transfer data between UIs, compose new UI using existing UIs using SDK features or frameworks.
  • How to use built-in or 3rd party libraries to interact with camera, microphone, media player, GPS device, local files, local databases, external databases and external services.
  • How to call native code libraries to improve performance or access low-level features.

Terminology Review:

  • Android.
  • iOS.
  • Native Apps.
  • Hybrid Apps.
  • Build Tools.
  • Views.
  • Controls.
  • Layouts.
  • Game Programming.
  • Game Development.
  • Native Development Kit.
  • Google Play Console.
  • App Store Connect.

After finishing mobile application development, please click on Topic 10 – Software Requirements to continue.

 

Topic 3 – Introduction to Programming

Why do I need to know a programming language?

Because you will develop your software using a programming language.
A programming language is a language that both you and a computer will understand.
It’s a tool for you to express what you want a computer to do.
It’s a tool for you to write the instructions of your computer programs.
Without knowledge of a programming language, you cannot develop software.

I hear that there are many programming languages such as C, C++, C#, Objective-C, Java, Swift, Ruby, Python, JavaScript, PHP, F#, Kotlin, Clojure, Go, and Lisp.
How many programming languages should I know?

As many as possible. However, at this stage, you should first learn about the structure of a computer program and a procedural language (e.g., C or C++).

What can I do after finishing learning programming language?

You will be able to write programs that tell a computer to:

  • perform calculations,
  • count the occurrences of a string,
  • store and search for a string,
  • sort a list of numbers, or
  • display an image.

What should I do now?

Please read this book to learn programming using the C language: Stephen Prata (2011). C Primer Plus. Pearson.

Alternatively, you can read this book (from Chapter 1 to Chapter 9), to learn programming using the C++ language: Stephen Prata (2012). C++ Primer Plus. Pearson.

Alternatively, you can read these books to learn programming using the Python language:,

Alternatively, you can read this book (from Chapter 1 to Chapter 11), to learn programming using the Ruby language: Chris Pine (2013). Learn to Program: The Facets of Ruby Series. The Pragmatic Bookshelf.

Alternatively, you can read these books to learn programming using the Go language:

After that, if you would like to study system programming in depth, please read one of the following books:

After that, if you would like to build your vocabulary and gain in-depth knowledge of programming, especially the relationship between mathematics and programming, as well as the ideas of functional programming and logic programming, then please read the book or the notes below:

Terminology Review:

  • Computer Programs.
  • Compilers.
  • Just-In-Time Compilers.
  • Interpreters.
  • Structured Programming.
  • Procedural Programming.
  • Object-Oriented Programming.
  • Functional Programming.
  • Declarative Programming.
  • Logic Programming.
  • Primitive Types: int, float, double, string, date/time, null.
  • Basic Constructs: variables & assignments, pointers, declarations, functions, macro.
  • Control Flow: if/else, while, switch, for, break, continue, recursion, exception, parallelism, signal, jump.
  • User-defined Types: struct, class, type.
  • Data Structures: Arrays, Lists, Linked Lists, Dictionaries.
  • Object-Oriented Programming: abstraction, encapsulation, class-based inheritance, prototype-based inheritance, polymorphism.
  • Functional Programming: first-class and higher-order functions, no side effects, recursion.
  • Modularity: files, packages, namespaces, libraries, modules.
  • Concurrency: processes, threads, locks, channels, timers, callbacks, events, promises, event loop.
  • Type system: static type, dynamic type.
  • Error handling: try/catch.
  • Metaprogramming: reflection, template programming, DSL.
    • Clojure.

    After finishing programming, please click on Topic 4 – Introduction to Data Structures and Algorithms to continue.