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

egor-ulianov/NPRG014

 
 

Repository files navigation

NPRG014

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

Lessons

Lesson 1 - 2th October 2023

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 “lecture1002/exercises” folder
  • The homework is to be found at “lecture10002/homework”
  • The “lecture10002/slides” holds the slides for the lecture

Lesson 2 - 9th October 2023

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 “lecture1009/exercises” folder
  • The homework is to be found at “lecture1009/homework”
  • The “lecture1009/slides” holds the slides for the lecture

Lesson 3 - 16th October 2023

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 “lecture1016/exercises” folder
  • The homework is to be found at “lecture1016/homework”
  • The “lecture1016/slides” holds the slides for the lecture

Lesson 4 - 30th October 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 5 - 6th November 2023

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 “lecture1023/exercises” folder
  • The homework is to be found at “lecture1023/homework”
  • The “lecture1023/slides” holds the slides for the lecture

Lesson 6 - 13th November 2023

Agenda

  • Statically-typed languages (Scala) - Part II

Preparation

  • Same as for Lesson 4

Lesson 7 - 20th November 2023

Agenda

  • Statically-typed languages (Scala) - Part III

Preparation

  • Same as for Lesson 4

Lesson 8 - 27th November 2023

Agenda

  • Statically-typed languages (Scala) - Part IV

Preparation

  • Same as for Lesson 4

Lesson 9 - 4th December 2023

Agenda

  • Introduction to prototype-based languages (IO)

Preparation

Lesson 10 - 18th 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

Languages

  • Groovy 70.4%
  • Scala 18.3%
  • TypeScript 4.2%
  • Io 4.1%
  • JavaScript 2.1%
  • Java 0.5%
  • HTML 0.4%