Kotlin Masterclass Programming Course: Android Coding Bible
4.0 (234 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
31,887 students enrolled

Kotlin Masterclass Programming Course: Android Coding Bible

Kotlin is a very powerful language. Serves as the foundation for all things Android, widely used in the industry.
4.0 (234 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
31,887 students enrolled
Created by Frahaan Hussain
Last updated 1/2019
English [Auto]
Current price: $129.99 Original price: $199.99 Discount: 35% off
13 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 5.5 hours on-demand video
  • 15 articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Kotlin programming
  • Android programming
  • Mobile development
  • Application programming
  • Mobile design
  • Semantics of general programming
  • The format of coding applications
  • All the functions of Kotlin programming
  • Application programming
  • Mobile programming
Course content
Expand all 86 lectures 05:39:12
+ Introduction & Setup
5 lectures 39:33

Learn how to setup a project on a Windows PC.

Windows Setup

Learn how to setup a project on a Mac.

Mac Setup

Learn how to setup a project on a Linux PC.

Linux Setup

Learn about testing Kotlin code online.

Online Code Editor
+ Basics
13 lectures 01:14:01

Variable refers to a memory location. It is used to store data. The data of variable can be changed and reused depending on condition or on information passed to the program.

Preview 06:00

Data type (basic type) refers to type and size of data associated with variables and functions. Data type is used for declaration of memory location of variable which determines the features of data.

Data Types

The String class represents an array of char types. Strings are immutable which means the length and elements cannot be changed after their creation.


Array is collection of similar data types either of Int, String etc. Array in Kotlin is mutable in nature with fixed size which means we can perform both read and write operations on elements of array.


In computer science, type conversiontype casting, and type coercion are different ways of changing an entity of one data type into another. An example would be the conversion of an integer value into a floating point value or its textual representation as a string, and vice versa.

Data Type Conversion

In computer programming, a comment is a programmer-readable explanation or annotation in the source code of a computer program. They are added with the purpose of making the source code easier for humans to understand, and are generally ignored by compilers and interpreters.


Arithmetic operators. Arithmetic operators take numerical values (either literals or variables) as their operands and return a single numerical value. The standard arithmetic operators are addition (+), subtraction (-), multiplication (*), and division

Preview 07:00

In computer science, a relational operator is a programming language construct or operator that tests or defines some kind of relation between two entities. These include numerical equality (e.g., 5 = 5) and inequalities (e.g., 4 ≥ 3). ... Relational operators can be seen as special cases of logical predicates.

Relational Operators

An assignment operator is the operator used to assign a new value to a variable, property, event or indexer element programming languages. Assignment operators can also be used for logical operations such as bitwise logical operations or operations on integral operands and Boolean operands.

Assignment Operators

A unary operation is an operation with only one operand, i.e. a single input. This is in contrast to binary operations, which use two operands. An example is the function f: A → A, where A is a set.

Preview 05:27

bitwise operator is an operator used to perform bitwise operations on bit patterns or binary numerals that involve the manipulation of individual bits. Bitwise operators are used in: Communication stacks where the individual bits in the header attached to the data signify important information.

Bitwise Operators

Logical operators. There are three logical operators in JavaScript: (OR), && (AND), ! (NOT). Although they are called “logical”, they can be applied to values of any type, not only boolean.

Logical Operators

An input device sends information to a computer system for processing, and an output device reproduces or displays the results of that processing. ... Those signals are then interpreted by the computer and displayed, or output, on the monitor as text or images.

Input & Output

Time to test your Kotlin programming basics

Quiz 1 - Basics
5 questions
+ Control Statements
7 lectures 32:19

The if/else statement executes a block of code if a specified condition is true. If the condition is false, another block of code can be executed. The if/else statement is a part of Kotlin's "Conditional" Statements, which are used to perform different actions based on different conditions.

Conditional if Statement

Kotlin, when expression is a conditional expression which returns the value. Kotlin, when expression is replacement of switch statement. Kotlin, when expression works as a switch statement of other language (Java, C++, C).

when Statement

Loops can execute a block of code a number of times.

Preview 04:15

In most computer programming languages, a while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition. The while loop can be thought of as a repeating if statement.

while Loop

In most computer programming languages, a do while loop is a control flow statement that executes a block of code at least once, and then repeatedly executes the block, or not, depending on a given boolean condition at the end of the block.

do while Loop

When a break statement is encountered inside a loop, the loop is immediately terminated and the program control resumes at the next statement following the loop. It can be used to terminate a case in the switch statement (covered in the next chapter).

Break Statement

The continue statement is used inside loops. When a continue statement is encountered inside a loop, control jumps to the beginning of the loop for next iteration, skipping the execution of statements inside the body of loop for the current iteration.

Preview 03:39

Time to test your control statements skills

Quiz 2 - Control Statements
5 questions
+ Functions
8 lectures 32:03

In programming, a named section of a program that performs a specific task. In this sense, a function is a type of procedure or routine. 

Preview 03:04

The term parameter (sometimes called formal parameter) is often used to refer to the variable as found in the function definition, while argument (sometimes called actual parameter) refers to the actual input supplied at function call. ... Parameters appear in procedure definitions; arguments appear in procedure calls.

Function Parameters

return is a value that a function returns to the calling script or function when it completes its task. A return value can be any one of the four variable types: handle, integer, object, or string.

Return Values

recursive function is a function which either calls itself or is in a potential cycle of function calls. As the definition specifies, there are two types of recursive functions. Consider a function which calls itself: we call this type of recursion immediate recursion.

Preview 04:22

Kotlin Default Argument. In Kotlin, you can provide default values to parameters in function definition. If the function is called with arguments passed, those arguments are used as parameters. However, if the function is called without passing argument(s), default argument are used.

Default & Named Arguments

lambda function is a small anonymous function. A lambda function can take any number of arguments, but can only have one expression.

Lambda Function

higher order function is a function that takes a function as an argument, or returns a function.Higher order function is in contrast to first order functions, which don't take a function as an argument or return a function as output.

Higher Order Function

The inline functions are a programming enhancement feature to increase the execution time of a program. Functions can be instructed to compiler to make them inline so that compiler can replace those function definition wherever those are being called.

Inline Function

Time to test how well you know functions.

Quiz 3 - Functions
5 questions
+ Error/Exception Handling
6 lectures 22:53

The try...catch statement marks a block of statements to try, and specifies a response, should an exception be thrown.

Preview 04:26

We can use try block as an expression which returns a value. The value returned by try expression is either the last expression of try block or the last expression of catch. Contents of the finally block do not affect the result of the expression.

Preview 04:34

If an exception occurs in try block then the control of execution is passed to the corresponding catch block. A single try block can have multiple catch blocks associated with it, you should place the catch blocks in such a way that the generic exception handler catch block is at the last(see in the example below).

Multiple Catch Block

When a try catch block is present in another try block, then it is called the nested try catch block. Each time a try block does not have a catch handler for a particular exception, then the catch blocks of parent try block are inspected for that exception, if match is found that that catch block executes.

Preview 05:07

The finally block always executes when the try block exits. This ensures that the finally block is executed even if an unexpected exception occurs. But finally is useful for more than just exception handling — it allows the programmer to avoid having cleanup code accidentally bypassed by a return, continue, or break. Putting cleanup code in a finally block is always a good practice, even when no exceptions are anticipated.

Finally Block

throws is a keyword in Java which is used in the signature of method to indicate that this method might throw one of the listed type exceptions. The caller to these methods has to handle the exception using a try-catch block.

Throw Keyword

Time to test you error/exception handling skills

Quiz 4 - Error/Exception Handling
5 questions
+ NULL Safety
4 lectures 12:57

By default, all reference types, such as strings, are nullable, but all value types, such as Int32, are not. There are two members of a nullable type. 1: HasValue: HasValue is of type boolean value. It is set to true when the variable contains a non-null value.

Nullable & Non Nullable Types

In many cases, one does not need to use explicit cast operators in Kotlin, because the compiler tracks the is-checks and explicit casts for immutable values and inserts (safe) casts automatically when needed.

Smart Cast

Sometime it is not possible to cast variable and it throws an exception, this is called as unsafe cast. The unsafe cast is performed by the infix operator as.

Preview 03:14

In certain computer programming languages, the Elvis operator, often written ?:, or or ||, is a binary operator that returns its first operand if that operand is considered true, and otherwise evaluates and returns its second operand. Note that the first operand does not need to have the literal boolean value true for the first operand to be returned; it just needs to be a value that is considered true by the specific language (such as 17 or "hello" being considered true in C). The Elvis operator is a variant of the ternary conditional operator, ? : in the sense that the expression with the Elvis operator A ?: B is approximately equivalent to the expression with the ternary operator A ? A : B.

Elvis Operator

Time to test your skills on NULL Safety

Quiz 5 - NULL Safety
3 questions
+ Collections
10 lectures 52:59

A generic ordered collection of elements. Methods in this interface support only read-only access to the list; read/write access is supported through the MutableList interface.

List: listOf Function

The methods of MutableList interface supports both read and write functionalities. Once the elements in MutableList have declared, it can be added more elements in it or removed, so it has no fixed size length.

List: mutableListOf Function

Combine the features of an array with a list.

Preview 06:19

mapOf creates an immutable map of the key-value pairs we provide as parameters.

Since the map is immutable, we won't find methods like put, remove or any other modifying functions. However, read-only functions like get or containsKey are available.

Map: mapOf Function

HashMap is a Map based collection class that is used for storing Key & value pairs, it is denoted as HashMap<Key, Value> or HashMap<K, V>. This class makes no guarantees as to the order of the map. It is similar to the Hashtable class except that it is unsynchronised and permits nulls(null values and null key).

Preview 07:36

Another Map implementation that Kotlin got a factory function for is the HashMap — which is hash table based implementation.

Map: hashMapOf Function

Now if we truly need a mutable map that we can modify, we can use mutableMapOf.

In this map we got some mutable functions like put, remove and clear available in addition to the functions available for the immutable map.

Map: mutableMapOf Function

A generic unordered collection of elements that does not support duplicate elements. Methods in this interface support only read-only access to the set; read/write access is supported through the MutableSetinterface.

Set: setOf Function

Kotlin MutableSet interface is a generic unordered collection of elements. MutableSet interface does not support duplicate elements. This interface is mutable so its methods support read-write functionality supports adding and removing elements.

Set interface uses mutableSetOf() function to create the list of object of set interface which contains list of elements.

Preview 03:50

HashSet is an unordered collection. It does not maintain the order in which the elements are inserted.HashSet internally uses a HashMap to store its elements. HashSet is not thread-safe. If multiple threads try to modify a HashSet at the same time, then the final outcome is not-deterministic.

Set: HashSet

Time to test your skills on collection data types

Quiz 6 - Collections
5 questions
+ Classes & Objects
14 lectures 58:40

Class (computer programming) In object-oriented programming, a class is an extensible program-code-template for creating objects, providing initial values for state (member variables) and implementations of behaviour (member functions or methods).

Basic Example

Nested classes that are declared static are called static nested classes. Non-static nested classes are called inner classes. A nested class is a member of its enclosing class. Non-static nested classes (inner classes) have access to other members of the enclosing class, even if they are declared private.

Nested and Inner Class

In class-based object-oriented programming, a constructor is a special type of subroutine called to create an object. It prepares the new object for use, often accepting arguments that the constructor uses to set required member variables.

Preview 05:16

Visibility Modifiers. Classes, objects, interfaces, constructors, functions, properties and their setters can have visibility modifiers. (Getters always have the same visibility as the property.) There are four visibility modifiers in Kotlin: private , protected , internal and public .

Visibility Modifiers

In object-oriented programminginheritance enables new objects to take on the properties of existing objects. A class that is used as the basis for inheritance is called a superclass or base class. A class that inherits from a superclass is called a subclass or derived class.


Method overriding, in object-oriented programming, is a language feature that allows a subclass or child class to provide a specific implementation of a method that is already provided by one of its superclasses or parent classes.

Method Overriding

property or method defined in a base class is accessible in the derived class. ... This is called property overriding and method overriding. You override a base class property by redefining a property in the derived class.

Preview 01:43

Abstract classes are classes that contain one or more abstract methods. An abstract method is a method that is declared, but contains no implementation. Abstract classes may not be instantiated, and require subclasses to provide implementations for the abstract methods.

Abstract Class

In object-oriented programming, a class from which other classes inherit code is called a superclass, and the class which inherits the code is called a subclass of that superclass. Typically, a subclass inherits the instance variables and member functions of its superclass.


We frequently create classes whose main purpose is to hold data. In such a class some standard functionality and utility functions are often mechanically derivable from the data. In Kotlin, this is called a data class and is marked as data.

Data Class

Multiple inheritance has been a sensitive issue for many years, with opponents pointing to its increased complexity and ambiguity in situations such as the "diamond problem", where it may be ambiguous as to which parent class a particular feature is inherited from if more than one parent class implements said feature.

Multiple Class Inheritance & Interfaces

Sealed classes are used for representing restricted class hierarchies, when a value can have one of the types from a limited set, but cannot have any other type. They are, in a sense, an extension of enum classes: the set of values for an enum type is also restricted, but each enum constant exists only as a single instance, whereas a subclass of a sealed class can have multiple instances which can contain state.

Sealed Class

Kotlin, similar to C# and Gosu, provides the ability to extend a class with new functionality without having to inherit from the class or use any type of design pattern such as Decorator. This is done via special declarations called extensions. Kotlin supports extension functions and extension properties.

Extension Function

They are very similar to those from the Java language, but the Kotlin language creators tried to make them a little bit more intuitive and understandable by introducing special keywords like out and in.


Time to test your knowledge on classes & objects

Quiz 7 - Classes & Objects
5 questions
+ Extras
4 lectures 13:43

Range expressions are formed with rangeTo functions that have the operator form .. which is complemented by in and !in. Range is defined for any comparable type, but for integral primitive types it has an optimised implementation. Here are some examples of using ranges:

Integer Type Range

A RegEx, or Regular Expression, is a sequence of characters that forms a search pattern.

RegEx can be used to check if a string contains the specified search pattern.


Learn how to call Java code from Kotlin code.

Call Java from Kotlin

Learn how to call Kotlin code from Java code.

Call Kotlin from Java
+ Extra Learning Resources
15 lectures 00:03





Android Developer

Android Developer

Code Labs

Code Labs





Tutorial Kart

Tutorial Kart







Official Kotlin Website

Official Kotlin Website



GitHub Kotlin

GitHub Kotlin




  • Passion for learning Kotlin
  • Basic computer knowledge and skills
  • Passion for programming
  • Basic knowledge of computer science is optional
  • Passion for mobile development

Learn about everything there is to know about Kotlin Applications and How To Program Them. A step by step process is used to show explain every facet of these topics.

NOTE: This course includes information on Java and Android!

Gain a good understanding of the following concepts with this course:

  1. What Kotlin is?

  2. Kotlin Certifications

  3. How to program in the Kotlin language

  4. Features of the Kotlin programming language

  5. Coding semantics

  6. Mobile programming

  7. Design practises of applications

  8. Application programming

  9. Network programming

Kotlin is one of the most popular programming languages for Android in the world that is requested by all companies such as Google, Facebook and Microsoft for mobile development. This course will ensure you are not left out as more and more companies request this awesome language. This course will teach you everything about programming Kotin applications.

You will receive all the knowledge to use and leverage the powerful technology behind these amazing and wonderful platforms.

Over 250,000 students have enrolled on my courses and all of them are extremely satisfied. You will also be satisfied with this course. If you do not like the course, remember that within 30 days you can request a full refundI guarantee you satisfaction.

If you have any questions regarding the topics covered in this course, please feel free to ask. I'm always happy to help those who want to learn.

To summarise this is what you get:

• Lifetime access to HD quality videos. No monthly subscription. Learn at your own pace, whenever you want.

• All videos are downloadable. Learn wherever you want, even without an internet connection!

• Downloadable starter code and final code for each section.

• Free helpful support in the course Q&A when you have questions or get stuck.

• Multiple coding challenges to practice your new skills (solutions included).

Sounds great? Then start this adventure today by clicking the “Take this course" button, and join me in the only Kotlin course that you will need!

Who this course is for:
  • Anyone looking to learn about Kotlin
  • Developers looking to learn the skills needed to utilise Kotlin features
  • Mobile developers
  • People looking to learn about programming
  • Those seeking to understand how Kotlin works
  • People seeking guidance on how to create Kotlin based programs
  • Beginners and experts in this field
  • People seeking more knowledge on the various features of the Kotlin programming language
  • Web developers
  • People with a desire to improve their programming knowledge