# NPRG014
Supplementary materials for the course of "Concepts of Modern Programming Languages" (NPRG014).
- Language dynamism - typing, casting, object construction, method invocation
- Functional programming in OO languages
- Scripting
- Bring your laptop to the lecture with the listed software pre-installed
- Grab Groovy 4.0.x from the groovy download page (http://groovy-lang.org/download.html). Make sure the "groovyConsole" command-line tool can be started.
- Install Java JDK 11 or higher (if you don't have it installed) from the Java download site
- Checkout this repository to get the source code of the examples and homework assignment that will be used during the lecture
- Exercises to work with during the lesson are located in the “lecture0930/exercises” folder
- The homework is to be found at “lecture0930/homework”
- The “lecture0930/slides” holds the slides for the lecture
- Dynamic meta-programming
- Intro into Domain Specific Languages
- Domain specific languages
- Builders
- Same as for Lesson 1
- Do a fresh checkout of this repository to get updated source code for examples and homework assignments
- Exercises to work with during the lesson are located in the “lecture1007/exercises” folder
- The homework is to be found at “lecture1007/homework”
- The “lecture1007/slides” holds the slides for the lecture
- Static meta-programming
- AST transformations
- Same as for Lesson 1
- Do a fresh checkout of this repository to get updated source code for examples and homework assignments
- Exercises to work with during the lesson are located in the “lecture1014/exercises” folder
- The homework is to be found at “lecture1014/homework”
- The “lecture1014/slides” holds the slides for the lecture
- Concurrency abstractions in modern languages ** Dataflow ** Fork-join ** Actors ** Parallel collections ** Agents
- Same as for Lesson 1 (Groovy, JDK)
- Do a fresh checkout of this repository to get updated source code for examples and homework assignments
- Exercises to work with during the lesson are located in the “lecture1021/exercises” folder
- The homework is to be found at “lecture1021/homework”
- The “lecture1021/slides” holds the slides for the lecture
- Bytecode
- Statically-typed languages (Scala) - Part I
- Grab and install SBT (http://www.scala-sbt.org/)
- Install Java JDK (if you don't have it installed) from the Java download site
- Checkout this repository to get all examples
- Go to lecture-scala/exercises-homework and run "sbt compile" to download all necessary packages (Scala and related libraries)
- Exercises to work with during the lesson and the homework are located in the lecture-scala/exercises-homework” folder
- The “lecture-scala/slides” holds the slides for the lecture
- Statically-typed languages (Scala) - Part II
- Same as for Lesson 4
- Statically-typed languages (Scala) - Part III
- Same as for Lesson 4
- Statically-typed languages (Scala) - Part IV
- Same as for Lesson 4
- Introduction to prototype-based languages (IO)
- Same as for Lesson 5
- Download IO interpreter from http://iolanguage.org/binaries.html
- Checkout this repository to get all examples
- Advanced types in TypeScript
- If you do not have Node.js installed, get the LTS version from https://nodejs.org (but any reasonably recent version should work) and check the README.md in the lecture materials for more details.
- You will need an editor that does type checking in background. WebStorm (from JetBrains) or VSCode are good choices, but anything will do.