In this course, we will start from Kotlin language fundamentals and work our way up from basic console based program to real world application with REST API. Throughout the course, we will not only focus on how to write programmes, but also on how to test them.
In week 1, you will learn Kotlin programming language fundamentals. In week 2, you will learn how to create working Kotlin programs and will be introduced to Spring Boot application framework. In week 3, you will apply skills acquired in previous weeks to build an actual application.
Introduction to development in Kotlin
- Brief history of Kotlin (10 min)
- Where Kotlin fits in on the developer landscape (10 min)
- Kotlin basics (1h)
- Basic Kotlin language syntax
- Kotlin Data Types
- Operators
- Conditionals
- Arrays
- Scope
- Introduction to IDE (30 min)
- Running you first Kotlin program (console) (10 min)
- Practice:
- learn to work with strings
- string concatenation
- string builder
- split
- learn to work with arrays
- loops
- learn to work with strings
- Kotlin basics (continued) (1h)
- Objects and classes, fields, constructors
- Functions / methods, lambda
- Scope
- Access modifiers
- Errors and exception handling
- Records and immutability
- How to read documentation (KotlinDoc)
- Practice:
- prepare for next lessons
- Dependency management (Gradle, Maven) (30 min)
- Testing your code (1h)
- Testing fundamentals
- Unit testing
- Integration testing
- Test Driven Development
- Code coverage
- Code quality
- Annotations
- Testing (1h)
- Refactoring your code for testability
- Logging
- Debugging
- Practice
- Homework: Unit test homework from previous lesson?
- Kotlin basics (continued) (1h)
- Programming language and communication of intent
- Polymorphism
- Inheritance
- Practice
- Homework
- Kotlin Wrapper Classes
- Lists, Stacks, Sets, Maps, Queues, Utility classes
- Functional Interfaces and Stream API
- Practice
- Homework
Application design
Probably some repetition in the beginning
- Homework review
- Kotlin libraries
- Kotlin.time
- Reading from command line
- Kotlin Optionals
- Practice:
- implement simple console application
- Homework: working with Kotlin Time
- Homework review
- Kotlin libraries
- Kotlin.io.File, Kotlin.nio.Path, InputStream and OutputStream
- Practice
- Homework: read and write to file
- Homework review
- JRE, JDK and JVM (30 min)
- Kotlin language, Kotlin compiler and Kotlin bytecode (quick overview)
- Multithreading
- Memory management
- Practice
- maybe some bad code optimization (memory, thread safety)
-
The SOLID principle (20 min)
-
Object-Oriented Design patterns (20 min)
-
Inversion of Control (IoC) (20 min)
-
Generics (30 min)
-
I/mutability, state and functional programming principles, Functional Interfaces?
-
Lambda expressions
-
Optionals?
-
Practice
- Generics
- IoC
-
Homework
- Application Programming Interface (API) (30 min)
- What is an API
- Types of APIs
- How to use an API
- Design of a REST API (60 min)
- Resources, methods, parameters
- Request and response (Serialization)
- Best practices
- Reflection (60 min)
- What is reflection
- How to use reflection
- When to use reflection
- Practice
- Reflection
- Homework
- Try working with an API (PostMan or similar)
Project: Working on an application
Introduction to the project Split the project into smaller increments
- Kotlin Application Development and Frameworks (10 min)
- Introduction to Spring Boot framework (30 min)
- Running first Spring Boot application (10 min)
- MVC and IoC in Spring Boot (20 min)
- Basic MVC model overview (30 min)
- Controller
- Service
- Repository
- Testing (20 min)
- Practice
- Starting the Spring Boot application
- Homework
- Design REST API for the project
- Homework review
- Project work:
- Implementing REST API
- Implementing the service layer
- Testing (60 min)
- Project work:
- Connecting to repositories (60 min)
- Application configuration
- Securing your API
- Introduction to the Project
- Microservice architecture (Spring Cloud)
- Asynchronous execution
- Event based architecture
- Reactive Streams (Spring WebFlux)
- Consuming to 3rd party APIs
- Caching
- Working on the project
- Project presentation and review
- Running your application in production environment
- Monitoring