Kotlin Engineer Bootcamp | Training & Certification

  1. Home
  2. /
  3. Courses
  4. /
  5. emerging technology
  6. /
  7. kotlin engineer

OVERVIEW

Learn Kotlin for Android!

For learning any programming language easily, you must be familiar with basic technical terms and tricks. Speaking specifically to Kotlin I would say Kotlin is an easy programming language. However, you should have good experience in any full-fledged object-oriented programming language such as Java, C++, or Smalltalk. Therefore we start our bootcamp with learning JAVA Fundamentals considering the participants are coming from Non Programming background. In Kotlin Bootcamp we are going to learn Kotlin from basics, you can use this course whether you are a complete beginner or an expert developer and wants to learn some tips. Kotlin has lots of great feature and the most important ones is that it is concise and understandable, especially in comparison with Java without sacrificing performance or safety. You can use Kotlin weather you are an android developer, back end developer or even frontend developer. the demand for Kotlin skill is increasing every day.

WHAT YOU WILL LEARN

  • Learn Basics of Kotlin with Objects, variables and structure.
  • Understand Object-Oriented Programming for Kotlin.
  • Explore Functions, arguments and syntax.
  • Utilize Function-oriented programming.
  • Use Extensions: properties and functions.
  • Learn Domain Specific Language.
  • Work with collections and texts.
  • Learn Generic with Covariance, contravariance and invariance.
  • Understand Reflection: types, classes, functions, properties and Kotlin references.
  • Apply Interoperability Between Kotlin and Java.
  • Acquire skill in Android KTX for Android Backend and Java.
  • Develop Android Apps or Java Backend applications with Kotlin.

COURSE STRUCTURE AND AGENDA

STAGES DESCRIPTION DURATION
Phase 1 Java fundamentals 3 Week
Phase 2 Learning KOTLIN 4 Week
Phase 3 Advance KOTLIN 2 Week
Phase 4 Capstone project (best practices and use cases from various industries & project presentation) 2 Week

Phase 01 – Week 1 to 3 – JAVA fundamentals

The course begins with a high-level overview of the software development process, then transitions into a discussion about Object-Oriented (OO) programming.

WHAT IS JAVA?

  • Understanding the Java platform (JRE)
  • Understanding the Java Development Kit (JDK)
  • Java the programming language
  • Using an IDE for Java development

CLASS STRUCTURE

  • Defining a class
  • Defining rules and conventions of classes
  • Defining and using methods
  • Defining and using instance variables

Physical Network Connections

  • Introduction
  • UTP Cabling
  • Fiber Optic Cabling
  • Wireless Connections
  • Module Review and Discussion Questions

DATA TYPES & OPERATORS

  • Primitive data types
  • Reference data types
  • Operators
  • Arrays and Lists
  • Logic Structures
    • For loops
    • For/Each loops
    • Do loops
    • While loops
    • If statements
    • Switch statements

OBJECT INHERITANCE IN JAVA

  • Packages and access modifiers
  • Subclasses
  • Interfaces
  • Abstract classes
  • Polymorphism

WORKING WITH JAVA EXCEPTIONS

  • What is an exception?
  • Run time v. application exceptions
  • Writing code to handle exceptions

STAGE 1 ASSESSMENT

INTRODUCTION TO JAVA PLATFORM APIS

  • java.lang and java.math
  • java.time
  • java.net
  • java.io

INTRODUCTION TO WEB DEVELOPMENT

  • GIT
  • HTML
  • CSS
  • JAVASCRIPT

CORE JAVA

  • Control Statements: Conditionals and Loops
  • Methods
  • String Manipulation
  • Regular Expressions
  • Arrays, Collections, and Generics
  • Pair Programming
  • Coding best practices
  • Debugging
  • Exceptions and error handling & Documentation
  • Version Control: Branching and Merging

OBJECT-ORIENTED PROGRAMMING

  • Learn the basics of object oriented programming
  • Basic Java syntax
  • Using the NetBeans IDE
  • Debugging
  • Object Oriented Concepts (Methods, Boolean Expressions & Arrays)
  • Classes & Objects
  • How to Read & Write the File System
  • Query in Memory Locations
  • Learning Unit Testing
  • Error Handling
  • Enums lambdas
  • Streams

Phase 02 – Week 4 to 7 – Learning KOTLIN

Basics Of Kotlin

  • Objects and variables
  • Type inference
  • Nullability and smart casting
  • Composite data types
  • Control structures
  • Comments

Object-Oriented Programming For Kotlin

  • Classes and properties, interfaces, abstract classes, enums, overriding methods and properties
  • Primary constructors and initialization blocks
  • Secondary constructors
  • Data classes
  • Object expressions
  • Object declarations and companion objects
  • Nested classes
  • Visibility modifiers
  • Sealed classes

Functions

  • Vararg parameters
  • Single-expression functions
  • Default arguments and named argument syntax
  • Top-level functions and properties
  • Local functions

Function-Oriented Programming For Kotlin

  • Functional type
  • Anonymous functions
  • Lambda expressions
  • Simpler lambda notation
  • Lambda functions under the hood
  • Higher-Order Functions
  • Last lambda in argument convention
  • Inline functions
  • Java Single Abstract Method lambda interface and usage of them in Java methods

Extensions

  • Extension functions
  • Extension properties
  • Function type with receiver, function literal with receiver, referencing extension functions
  • Predefined functional literals with a receiver

STAGE 2 ASSESSMENT

Working With Collections And Texts

  • Collection literals
  • Basic collection processing functions
  • Collection predicates
  • Making collection flat and grouping it
  • Accumulating collections
  • Converting between collection types
  • Functions used to process texts and to accumulate collections to texts

Domain Specific Language

  • Spannables generation
  • Anko
  • Making your own DSL

GenericS

  • Covariance, contravariance, and invariance
  • Common issues with bounded wildcards in Java
  • Declaration-site variance, use-site variance, and type projection
  • Declaring single and multiple constraints on types

Inline Classes

  • Members
  • Inheritence
  • Representation

Reflection

  • Referencing types, classes, functions, and properties
  • Kotlin references vs Java references
  • Structure and types of references

Interoperability Between Kotlin And Java

  • Guidelines for mixed language codebases
  • Calling Java libraries from Kotlin
  • Preparing Kotlin to be used from Java
  • Annotations to work with Java annotation processing libraries
  • Kotlin contracts – Contracts feature in Kotlin to alleviate compiler errors

Phase 03 – Week 8 & 9 – Advance KOTLIN

Implementing Delegation In Kotlin

  • Understanding the Concept of Member Delegation in Kotlin
  • Delegating Member Functions to Another Class in Kotlin
  • Delegating Properties in Kotlin for Code Reuse Efficiency
  • Using Built-in Delegated Properties in Kotlin
  • Delegating Local Properties in Kotlin for Code Reuse
  • Implementing Extension Properties in Classes in Kotlin
  • Summary of the Different Aspects of Delegation in Kotlin

Using Advanced Functions In Kotlin

  • Using Nested Functions to Reuse Functionality in Kotlin
  • Using the Infix Notation to Call Functions in Kotlin
  • Declaring Anonymous Functions in Kotlin
  • Using the Inline Modifier for Efficiency in Kotlin
  • Implementing Returns and Local Returns When Working with Advanced Functions in Kotlin
  • Implementing Tail Recursion for Optimization in Kotlin
  • Using Operator Overloading in Kotlin
  • Using Lambdas with Receivers to Create Restrictions on DSL’s in Kotlin
  • Invoking Instances in Kotlin
  • Using Functional Constructs in Kotlin
    • Function Composition
    • Currying
    • Other Constructs

Exploring Class Scenarios In Kotlin

  • Implementing Fields in Kotlin
  • Using the “lateinit” Modifier in Kotlin
  • Understanding Nested and Inner Classes in Kotlin
  • Defining “Static Methods” in Kotlin Using Companion Objects
  • Hiding Class Constructors in Kotlin
  • Marking Classes as Sealed in Kotlin
  • Using Type Aliases in Kotlin
  • Summary of Advanced Features of Kotlin for Classes

STAGE 3 ASSESSMENT

Performing Asynchronous Programming In Kotlin

  • Understanding the Problem of Asynchronous Programming
  • Implementing Asynchronous Programming and Coroutines in Kotlin
  • Implementing Async and Await in Kotlin Using Coroutines
  • Implementing Yield in Kotlin
  • Understanding the Advantages of Coroutines Over Reactive Extensions
  • Summary of Coroutines in Kotlin

Gaining An In-Depth Understanding Of Generics In Kotlin

  • Understanding Generic Constraints
  • Understanding Variance and Invariance in Generics
  • Using the “out” Modifier to Express Covariance in Generics in Kotlin
  • Expressing Contravariance in Kotlin
  • Exploring the Concept of Type Projections and Star Projections in Kotlin
  • Summary of Advanced Generics in Kotlin

Metaprogramming In Kotlin

  • Overview of Reflection
  • Using Java Reflection with Kotlin Using the Reflection API
  • Using Kotlin’s Reflection API
  • Handling Type Erasure in Kotlin
  • Using Reified Generics in Kotlin
  • Defining Custom Annotations in Kotlin
  • Summary of Metaprogramming and Introspection Techniques in Kotlin

Phase 04 – Week 10 & 11 – Capstone project using agile methodologies

Unique Project that can be developed with Kotlin:

  • Native app development
  • Desktop app development
  • Web development
  • Cross-platform mobile app development
  • Server-side development
  • Data science app development

Each team first creates a minimally viable product to fulfill mandatory technical elements, then iterates based on feedback, refining and adding additional features. At the end of the bootcamp, teams present their projects to the Management & External Observer

FINAL ASSESSMENT