SubjectsSubjects(version: 964)
Course, academic year 2024/2025
   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
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: English
Teaching methods: full-time
Additional information: http://d3s.mff.cuni.cz/teaching/nprg014
Guarantor: prof. RNDr. Tomáš Bureš, Ph.D.
Teacher(s): prof. RNDr. Tomáš Bureš, Ph.D.
Mgr. Václav Pech
Class: Informatika Mgr. - Softwarové systémy
Classification: Informatics > Programming
Is incompatible with: NPRX014
Is interchangeable with: NPRX014
Annotation -
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.
Last update: Katedry Tajemník (12.05.2017)
Course completion requirements -

Each lab is accompanied by a homework. The credit for the lab is given for 8 successfully completed and submitted homeworks.

Last update: Bureš Tomáš, prof. RNDr., Ph.D. (06.10.2017)
Literature -

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

Last update: Katedry Tajemník (12.05.2017)
Syllabus -

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

Last update: Katedry Tajemník (12.05.2017)
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html