Skip to content

hankerspace/KotlinCourseUTBM_CNAM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UTBM/CNAM Kotlin course

Disclaimer : This course is written in French language.

Introduction

This repository contains the source code of the Kotlin course given at UTBM and CNAM schools. This GitHub contains the course and the corrections of the exercises. If you want to follow the course, you can download the course from the IntelliJ IDEA Edu Marketplace : https://plugins.jetbrains.com/plugin/20159-kotlin-utbm-cnam

This course is built using the IntelliJ IDEA Edu plugin. This plugin allows you to create courses and exercises directly in IntelliJ IDEA. You can find more information about this plugin here : https://www.jetbrains.com/help/education/learner-start-guide.html

How to use the course

  1. Install the IntelliJ IDEA IDE with Edu plugin
  2. Download the course from the IntelliJ IDEA Edu Marketplace : https://plugins.jetbrains.com/plugin/20159-kotlin-utbm-cnam
  3. Open the course in IntelliJ IDEA
  4. Enjoy !

Course description

1. Imperative programming

The first part of the course is about imperative programming. All the main concepts of imperative programming are covered and illustrated with Kotlin code.

It covers the following topics :

  • Variables
  • Functions
  • Control structures (loops and conditionals)
  • Nullability
  • Arrays and lists
  • Advanced collections

2. Imperative programming - Exercises

The second part of the course is about imperative programming exercises. You'll have to solve some exercises to practice what you've learned in the first part.

7 exercises are available :

  • Math functions : implement some math functions
  • Romain numerals : convert numbers to roman numerals
  • Pokemon names : find the longest pokemon name
  • Multifactorial : compute multifactorial of a number
  • Taxi numbers : find taxi numbers (numbers that are the sum of two cubes)
  • Smith numbers : find smith numbers (numbers that are the sum of their digits)
  • Nims game : create the nims game

3. Object-oriented programming

The third part of the course is about object-oriented programming. All the main concepts of object-oriented programming are covered and illustrated with Kotlin code.

You need to have a good understanding of imperative programming to understand this part.

It covers the following topics :

  • Classes and objects
  • Inheritance
  • Abstraction
  • Interfaces
  • Enumerations
  • Data classes
  • Generics
  • Exceptions

4. Object-oriented programming - Exercises

The fourth part of the course is about object-oriented programming exercises. You'll have to solve some exercises to practice what you've learned in the third part.

4 exercises are available :

  • Precipitations : compute the average precipitation of a list of cities
  • Game of life : implement the game of life (https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)
  • Defibrillators : find the closest defibrillator to a given location
  • Tree explorer : create and explore a tree structure

5. Functional programming

The fifth part of the course is about functional programming.

You need to have a good understanding of imperative programming to understand this part.

It covers the following topics :

  • Higher-order functions
  • Lambdas
  • Function composition
  • Closures
  • Scopes
  • Extension functions

6. Functional programming - Exercises

The sixth part of the course is about functional programming exercises.

3 exercises are available :

  • Politics sponsors : find the sponsors of a given politician
  • String operators : create some string operators
  • Doors : the corridor of doors problem

7. Transversal exercises

These exercises are transversal and cover all the topics of the course.

You need to have a good understanding of imperative programming, object-oriented programming and functional programming to understand this part.

  • Shapes : create a graphical application that displays shapes
  • Towers of Hanoi : create the towers of Hanoi game
  • Highways : create a highway with tolls and compute the price of a trip
  • Regex : create a regex engine
  • Snake : create the snake game
  • Tic Tac Toe : create the tic tac toe game
  • Lord of the rings : create a game based on the Lord of the Rings universe

8. Design patterns

The eighth part of the course is about design patterns.

Some of the most common design patterns are excluded because they are already covered by the Kotlin language (singleton, iterator, etc.).

10 design patterns are covered :

  • Chain of responsibility
  • Factory
  • Abstract factory
  • Decorator
  • State
  • Bridge
  • Template method
  • Memento
  • MVC
  • Observer

9. Design patterns - Exercises

Some exercises are available to practice what you've learned in the eighth part.

3 exercises are available :

  • Strategy : create a strategy game
  • Motel : create a motel booking system
  • Netflux : create a streaming platform

How to contribute

If you want to contribute to the course, you can create a pull request.

You can also create an issue if you find a bug or if you want to suggest an improvement.

About

This repository contains the source code of the Kotlin course given at UTBM and CNAM schools. This course is in French Language

Resources

Stars

Watchers

Forks

Contributors

Languages