Technical requirementsBasic language syntax and featuresMulti-paradigm languageUnderstanding Kotlin code structureNaming conventionsPackagesCommentsHello KotlinNo wrapping classNo argumentsNo static modifierA less verbose print functionNo semicolonsUnderstanding typesBasic typesType inferenceValuesComparison and equalityDeclaring functionsNull safetyReviewing Kotlin data structuresListsSetsMapsMutabilityAlternative implementations for collectionsArraysControl flowThe if expressionThe when expressionWorking with textString interpolationLoopsThe for-each loopThe for loopThe while loopClasses and inheritanceClassesPropertiesCustom setters and gettersInterfacesAbstract classesVisibility modifiersInheritanceData classesKotlin data classes versus Java recordsExtension functionsIntroduction to design patternsWhat are design patterns?Design patterns in real lifeDesign processUsing design patterns in KotlinBringing it all together ExerciseExampleChallengeSummaryQuestions