Cílem předmětu je seznámit studenty se zajímavými a pokročilými koncepty objektově orientovaných jazyků a
ukázat jejich typické použití spojené s praktickým procvičením. Předmět je určen především studentům, kteří již
mají zkušenosti s vývojem v jazycích Java/C++/C#. Koncepty budou ilustrovány v jazycích Scala, Groovy, IO,
JavaScript, TypeScript. Předchozí znalost těchto jazyků není nutná. Předmět poskytne dostatečný úvod do
každého z těchto jazyků.
Poslední úprava: Katedry Tajemník (12.05.2017)
The goal of the course is to show interesting and advanced concepts of modern object-oriented programming
languages and demonstrate their application together with practical exercises. The course is intended for students
that already have experience with software development in Java/C++/C#. The concepts will be illustrated in
Scala, Groovy, IO, JavaScript and TypeScript programming languages. Prior knowledge of these languages is not
necessary. The course will provide adequate introduction to each of them.
Poslední úprava: Katedry Tajemník (12.05.2017)
Podmínky zakončení předmětu -
Na každém cvičení je zadán jeden domácí úkol. Zápočet je udělen za alespoň 8 správně vypracovaných a odevzdaných úkolů.
Poslední úprava: Bureš Tomáš, prof. RNDr., Ph.D. (06.10.2017)
Each lab is accompanied by a homework. The credit for the lab is given for 8 successfully completed and submitted homeworks.
Poslední úprava: Bureš Tomáš, prof. RNDr., Ph.D. (06.10.2017)
Literatura -
Dierk Koenig with Andrew Glover, Paul King, Guillaume Laforge and Jon Skeet: Groovy in Action 2nd edition, Manning Publications Co., 2016.
Martin Odersky, Lex Spoon, and Bill Venners: Programming in Scala, 3rd Edition, Artima
Poslední úprava: Katedry Tajemník (12.05.2017)
Dierk Koenig with Andrew Glover, Paul King, Guillaume Laforge and Jon Skeet: Groovy in Action 2nd edition, Manning Publications Co., 2016.
Martin Odersky, Lex Spoon, and Bill Venners: Programming in Scala, 3rd Edition, Artima
Poslední úprava: Katedry Tajemník (12.05.2017)
Sylabus -
Probírané koncepty:
jazyky s třídami (staticky typované a dynamicky typované)
typování, kovariance, kontravariance
funkcionální programování v rámci objektově orientovaných procedurálních jazyků
meta-programování v dynamických jazycích
doménově specifické jazyky
transformace kódu během překladu, statické meta-programování
konkurentní programování
objektové jazyky bez tříd (tzv. prototypové jazyky)
Koncepty budou názorně prezentovány na uvedených jazycích, které jsou reálně používané v praxi:
Groovy
Scala
TypeScript/JavaScript, Io
Poslední úprava: Katedry Tajemník (12.05.2017)
The course covers the following concepts:
class-based languages (statically typed and dynamically typed)
typing, covariance, contravariance
functional programming within an object-oriented procedural language