SubjectsSubjects(version: 978)
Course, academic year 2025/2026
   
Concepts of Modern Programming Languages - NPRX014
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 2019
Semester: winter
E-Credits: 3
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: cancelled
Language: English
Teaching methods: full-time
Additional information: http://d3s.mff.cuni.cz/teaching/nprg014
Guarantor: prof. RNDr. Tomáš Bureš, Ph.D.
Class: Informatika Mgr. - Softwarové systémy
Classification: Informatics > Programming
Incompatibility : NPRG014
Interchangeability : NPRG014
Opinion survey results   Schedule   Noticeboard   
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: Jedelský Petr, Mgr. (01.03.2021)
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: Jedelský Petr, Mgr. (01.03.2021)
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: Jedelský Petr, Mgr. (01.03.2021)
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: Jedelský Petr, Mgr. (01.03.2021)
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html