Kotlin For Beginners is a free 9-hours long course covering the basics of Kotlin by Donn Felker and delivered on YouTube.
Donn Felker is a pro who has a lot of experience under his belt -Founder of Caster.io, author (Android Application Development for Dummies, Android Tablet Application Development for Dummies), consultant and co-host of the software developer podcast Fragmented. And, of course, he developed mobile apps such as MyFitnessPal, Groupon and more.
This kind of background tells a lot about the course's quality. But let's take a closer look.
"Kotlin Tutorial for Beginners" does what it says. But let's define what is meant with beginners.In this case, beginners are those with previous experience in programming and not someone that has none. For instance while it goes over how Kotlin uses variables, it doesn't explain the concept of what actually a variable is. But still it stays true to the "beginners" statement as it doesn't cover very advanced topics such as Coroutines, Flow etc.
To follow along the course requires the use of Intellij Community edition, and as well as teach Kotlin, the course also shows how to use the IDE from point zero in constructing Kotlin programs, leveraging its features for more productive output.
The course can be watched as a long continuous 9-hour piece or you can pick the lesson you need from the detailed playlist which contains a whopping 134 lessons!
Welcome
Installing IntelliJ
Creating your First Kotlin File
Updating the Kotlin Plugin
Hello World
Creating a Variable
Creating a Read only Variable
Providing a Type on a Variable
Basic Types: Numbers
Basic Types: String and Char
String Interpolation and Triple Quotes
Basic Types: Boolean
If/Else Conditionals
One Line If/Else Conditional
Understanding Truth Tables
Structural Equality
Referential Equality
Nullable Types
Nullable Safe Calls
The Elvis Operator
Your First Kotlin Function
Functions with Return Types
Functions inside of Functions
Single Line Expressions
Function Arguments
Named Parameters
Default Function Arguments
IDE Refactoring to New LInes and Named Arguments
Multiple Args with varargs
Function Overloading
Creating your First Kotlin Class
Class Primary Constructors
Multiple Class Constructors
Constructor Init Blocks
Class Properties
Read Class Properties
Overriding a Property Getter
Overriding a Property Setter
Multiple Properties in a Class
Class Functions
Companion Objects
How to Create a Singleton
Declaring Constants
The lateinit modifier
How to Nest Classes
Inner Classes
Creating an Enum
Enum Constructor Parameters
Abstract Functions in Kotlin
Iterating over Enum Values
Adding Static Methods to Enums
The When Statement (Kotlin Switch Statement)
Exhaustive vs Non-Exhaustive When
Data Classes
Data Class with Parameterless Constructor
Data Class: Component1-N functions
Destructuring Data Classes
Copying Data Class Instances
The Pair and Triple Data Classes
Protected Modifier for Variables
Protected Modifier for Functions
Internal Modifier for Classes
Abstract Classes
Implementing an Abstract Class
Understanding Abstractions with Abstract Classes
What interfaces are used for
Creating an Interface
Implementing an Interface
Real World Interface Example
Anonymous Interfaces
Creating Arrays
Creating Immutable Lists
Creating Mutable Lists
Filtering a List
Finding Items in a List
Using "filterNot" on a List
filterTo and filterNotTo on Lists
Flattening Lists and Arrays
Combining Immutable Lists
List vs Map
Map vs FlatMap
Set Data Structure (a List with no Duplicates)
For Loops
While Loops
For Each Loops
Combining Lists with the Union Operator
Iterating over a List with an Index
Ranges
Immutable Maps
Mutable Maps
Filtering and Transforming Maps
Using mapNotNull on a Map
Generating Large Sequences
Measuring Performance
Kotlin Sequences
List vs Set vs Map vs Sequence
Kotlin Ternary Operator: Single Line If
Double Bang !! Operator
Using requireNotNull()
Using checkNotNull()
Filtering a List with filterNotNull()
Type Checking with 'is'
Casting
Safe Casting with 'as'
Generic Lists and Maps
Your First Generic Class
Throwing Exceptions
Creating a Custom Exception
Catching Exceptions with Try/Catch
Catching Multiple Exception Types
Try/Catch/Finally blocks
Try/Catch vs Try/Finally
Creating a typealias
Extension Functions
Lazy Evaluation
Lazy Initializer Block
Packages and Imports
Type Inference
Simple Lambda Expressions
Lambdas as Function Parameters
Passing Values to Lambda Function Parameters
Underscore Parameters in Lamba Functions
The 'it' Paramter in Lambda Functions
Calling Kotlin from Java
Calling Java from Kotlin
Calling an Extension Function from Java
@JvmName Annotation
Top Level Main Functions
Kotlin REPL
Project: Setup
Project: Reading Input
Project: Calculator Logic
Project: Adding Validation
Project: Compiling to a Jar File and Execution
Kotlin Koans
Congratulations
Despite no accompanying code being provided, the course ends up with the student having to code a trivial Calculator app.
From this list you cab see that the course is very detailed and provides value to either new or seasoned developers depending on the angle you look at it. For those already familiar with programming's concepts,they can focus on the parts of the course that make up Kotlin's extensions. For example the concept of Nullable types and Nullable safe calls, Named Parameters,Default Function Arguments, the Lateinit modifier, When expressions etc, that is the things that make the language stand out. In my case I just wanted to understand which features make Kotlin differ from the rest, hence focused on those sections alone.
It also important to note that although Donn is first a mobile dev, the course is not Android-oriented but treats Kotlin as a general-purpose language that can be used on any project.
All in all, this is a top quality course both from the standpoint of the comprehensive material provided but also from its crisp presentation.
This year's Octoverse Report reveals how AI is expanding on GitHub and that Python has now overtaken JavaScript as the most popular language on GitHub. The use of Jupyter Notebooks has also surged.
Google has announced updates to the Responsible Generative AI Toolkit to enable it to be used with any LLM model. The Responsible GenAI Toolkit provides resources to design, build, and evaluate open A [ ... ]