KOTLIN ENGINEER BOOTCAMP

                                          English and Arabic 

5 Days Course

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.
  • Utilise 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.  
Module – 01

WHAT IS JAVA?

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

CLASS STRUCTURE

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

Physical Network Connections

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

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
Module – 05

OBJECT INHERITANCE IN JAVA

  • Packages and access modifiers
  • Subclasses
  • Interfaces
  • Abstract classes
  • Polymorphism
Module – 06

WORKING WITH JAVA EXCEPTIONS

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

 

STAGE 1 ASSESSMENT

Module – 07

INTRODUCTION TO JAVA PLATFORM APIS

  • java.lang and java.math
  • java.time
  • java.net
  • java.io
Module – 8

INTRODUCTION TO WEB DEVELOPMENT

  • GIT
  • HTML
  • CSS
  • JAVASCRIPT
Module – 09

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
Module – 10

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

Module – 11

Basics Of Kotlin

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

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
Module – 13

Functions

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

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
Module – 15

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

Module – 16

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
Module – 17

Domain Specific Language

  • Spannables generation
  • Anko
  • Making your own DSL
Module – 18

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
Module – 19

Inline Classes

  • Members
  • Inheritence
  • Representation
Module – 20

Reflection

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

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

Module – 22

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
Module – 23

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
Module – 24

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

Module – 25

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
Module – 26

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
Module – 27

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