SubjectsSubjects(version: 916)
Course, academic year 2022/2023
   Login via CAS
Concepts of Modern Programming Languages - NPRG014
Title: Koncepty moderních programovacích jazyků
Guaranteed by: Department of Distributed and Dependable Systems (32-KDSS)
Faculty: Faculty of Mathematics and Physics
Actual: from 2020
Semester: winter
E-Credits: 4
Hours per week, examination: winter s.:0/3, C [HT]
Capacity: unlimited
Min. number of students: unlimited
Virtual mobility / capacity: no
State of the course: taught
Language: English
Teaching methods: full-time
Additional information:
Guarantor: prof. RNDr. Tomáš Bureš, Ph.D.
Class: Informatika Mgr. - Softwarové systémy
Classification: Informatics > Programming
Is incompatible with: NPRX014
Is interchangeable with: NPRX014
Annotation -
Last update: Tajemník Katedry (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.
Course completion requirements -
Last update: prof. RNDr. Tomáš Bureš, 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.

Literature -
Last update: Tajemník Katedry (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

Syllabus -
Last update: Tajemník Katedry (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
  • meta-programming in dynamic languages
  • domain specific languages
  • compile-time code transformations, static meta-programming
  • concurrent programming
  • object-oriented languages without classes (i.e. prototype-based languages)

The concepts will be demonstated using the following languages:

  • Groovy
  • Scala
  • TypeScript/JavaScript, Io

Charles University | Information system of Charles University |