Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    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, Automatizálási és Alkalmazott Informatikai Tanszék
    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