Skip to content

Supplementary materials for the course of "Concepts of Modern Programming Languages" (NPRG014) taught at Charles University, Prague, Czech Republic.

Notifications You must be signed in to change notification settings

d3scomp/NPRG014

Repository files navigation

# NPRG014

Supplementary materials for the course of "Concepts of Modern Programming Languages" (NPRG014).

Lessons

Lesson 1 - 30th September 2024

Agenda

  • Language dynamism - typing, casting, object construction, method invocation
  • Functional programming in OO languages
  • Scripting

Preparation

  • 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

Resources

  • 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

Lesson 2 - 7th October 2024

Agenda

  • Dynamic meta-programming
  • Intro into Domain Specific Languages
  • Domain specific languages
  • Builders

Preparation

  • Same as for Lesson 1
  • Do a fresh checkout of this repository to get updated source code for examples and homework assignments

Resources

  • 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

Lesson 3 - 14th October 2024

Agenda

  • Static meta-programming
  • AST transformations

Preparation

  • Same as for Lesson 1
  • Do a fresh checkout of this repository to get updated source code for examples and homework assignments

Resources

  • 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

Lesson 4 - 21st October 2024

Agenda

  • Concurrency abstractions in modern languages ** Dataflow ** Fork-join ** Actors ** Parallel collections ** Agents

Preparation

  • Same as for Lesson 1 (Groovy, JDK)
  • Do a fresh checkout of this repository to get updated source code for examples and homework assignments

Resources

  • 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

Lesson 5 - 4th November 2023

Agenda

  • Bytecode
  • Statically-typed languages (Scala) - Part I

Preparation

  • 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)

Resources

  • 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

Lesson 6 - 11th November 2023

Agenda

  • Statically-typed languages (Scala) - Part II

Preparation

  • Same as for Lesson 4

Lesson 7 - 10th November 2023

Agenda

  • Statically-typed languages (Scala) - Part III

Preparation

  • Same as for Lesson 4

Lesson 8 - 25th November 2023

Agenda

  • Statically-typed languages (Scala) - Part IV

Preparation

  • Same as for Lesson 4

Lesson 9 - 2nd December 2023

Agenda

  • Introduction to prototype-based languages (IO)

Preparation

Lesson 10 - 9th December 2023

Agenda

  • Advanced types in TypeScript (Tomas Petricek – guest lecture)

Preparation

  • If you do not have Node.js installed, get the LTS version from https://nodejs.org (but any reasonably recent version should work)
  • We will use Vite.js framework, which is installed via npm (Node package manager). To test if things work for you, run npm create vite@latest as explained in https://vitejs.dev/guide/
  • Enter project name, select Vanilla, TypeScript and follow printed instructions to run the project.
  • You will need an editor that does checking in background. Visual Studio Code is a good choice, but anything will do.

Resources

About

Supplementary materials for the course of "Concepts of Modern Programming Languages" (NPRG014) taught at Charles University, Prague, Czech Republic.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published