Kotlin alapú szoftverfejlesztés

A tantárgy angol neve: Kotlin-based Software Development

Adatlap utolsó módosítása: 2019. április 6.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIAUAV41   2/0/0/f 2  
3. A tantárgyfelelős személy és tanszék Dr. Ekler Péter,
A tantárgy tanszéki weboldala https://www.aut.bme.hu/Course/kotlin
4. A tantárgy előadója

Név:

Beosztás:

Tanszék, Int.:

Dr. Ekler Péter

docens

Automatizálási és Alkalmazott Informatikai Tanszék

Dr. Forstner Bertalan

docens

Automatizálási és Alkalmazott Informatikai Tanszék

5. A tantárgy az alábbi témakörök ismeretére épít

Objektum orientált programozás, Java

7. A tantárgy célkitűzése

 

A tárgy célja, hogy a hallgatók mélységében megismerjék a Kotlin nyelvet, és képesek legyenek idiomatikusan használni, alkalmazásokat fejleszteni vele. Bemutatásra kerülnek a különböző nyelvi elemek implementációs részletei a JVM platformra koncentrálva, valamint a nyelv lehetséges felhasználási környezetei. A nyelv a modern programozási nyelvek mintapéldajaként szolgál, és megismerhető rajta keresztül számos olyan funkció és paradigma, amely más kortárs nyelvekben is elérhető.


 

8. A tantárgy részletes tematikája

Hét

Előadás anyaga

1.

A nyelv kialakulása, jellemzők, támogatott környezetek, eszközök, REPL. A szintaxis alapjai, változók, függvények, vezérlési struktúrák, kivételek. Primitív típusok, típus kikövetkeztetés.

2.

Osztályok, interfészek, data class, object, companion object, enum, class delegation. Constructorok típusai és szabályai. Typealias, property, custom getter/setter, const, beépített delegate-ek. Típus ellenőrzés és konverzió.

3.

Nullable típusok. Safe call operator, null-coalescing operator, non-null assertion, smart cast, safe cast, lateinit. Java interoperabilitási megfontolások, platform típusok.

4.

A függvény mint elsőrangú nyelvi elem. Lambdák. SAM conversion és SAM constructor. Extension, higher order, és inline függvények. A standard library collection típusai. Sequence.

5.

Lokális függvények, lambdas with receivers, infix függények, tailrec. let, apply, use és egyéb standard library függvények.

6.

Stringek és fájlok egyszerű kezelése. A Java kóddal való interoperabilitás részletes szabályai és lehetőségei.

7.

A típusrendszer speciális elemei: Any, Unit, és Nothing. Típus paraméterek, generikus függvények, típusok. Kovariancia, kontravariancia, és invariancia. Use-site variance, type projection. Type erasure, reified típusok.

8.

Operátorok felüldefiniálása, destructuring declarations, invoke, Comparable, Range, saját delegate implementációk.

9.

Aszinkron programozás a nyelv beépített lehetőségeivel. Suspending function, CoroutineContext, CoroutineScope, Channel.

10.

Domain specifikus nyelvek készítése a nyelv fejlett funkcióinak felhasználásával. Gradle Kotlin DSL.

11.

Népszerű Kotlin könyvtárak: Spek, Ktor, mockk, Koin, Arrow, Exposed.

12.

JVM környezetek: Android, Spring, JavaFX: Anko, Kotlin Android Extensions, Android-KTX. Spring Boot, routing DSL, Spring Fu. TornadoFX.

13.

Kotlin Multiplatform: KotlinJS és Kotlin/Native: multiplatform projektek felépítése és lehetőségei. JavaScript interoperabilitás, ts2kt, tesztelés. Kotlin natív környezetben.

14.

Érdekességek, a nyelv újdonságai. Contract, inline class, unsigned típusok.

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

Előadás

10. Követelmények

Félév közben egy ZH megírása kötelező, mely 50 pont. Továbbá egy házi feladatot kell készíteni további 50 pontért, melynek beadási határideje a szorgalmi időszak vége.

Az az összegyűjtött pontok alapján alakul ki a jegy: 40, 55, 70, 85 ponthatárokkal. 

A vizsgaidőszakban: -

A félév elismerését jelentő félév végi jegy megszerzésére akkor van lehetőség, ha a hallgató a félév során a fenti követelményekt teljesítette.

11. Pótlási lehetőségek A zárthelyi pótlására a pótlási időszakban van lehetőség. A házi feladat akkor pótolható, ha szorgalmi időszakban már le lett adva egy kezdeti verzió.
12. Konzultációs lehetőségek Igény szerint előadóval egyeztetve.
13. Jegyzet, tankönyv, felhasználható irodalom
  • Előadásanyag, oktatói jegyzet
  • Dmitry Jemerov, Svetlana Isakova: Kotlin in Action. Manning Publications, ISBN: 9781617293290, 2017
  • Reference – Kotlin Programming Language, https://kotlinlang.org/docs/reference/, 2019
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra28
Félévközi készülés órákra12
Felkészülés zárthelyire20
Házi feladat elkészítése
Kijelölt írásos tananyag elsajátítása
Vizsgafelkészülés
Összesen60
15. A tantárgy tematikáját kidolgozta

Név:

Beosztás:

Tanszék, Int.:

Dr. Ekler Péter

docens

Automatizálási és Alkalmazott Informatikai Tanszék

Dr. Forstner Bertalan

docens

Automatizálási és Alkalmazott Informatikai Tanszék