Skip to content

Latest commit

 

History

History
133 lines (99 loc) · 4.38 KB

README.md

File metadata and controls

133 lines (99 loc) · 4.38 KB
# 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 2024

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 2024

Agenda

  • Statically-typed languages (Scala) - Part II

Preparation

  • Same as for Lesson 4

Lesson 7 - 18th November 2024

Agenda

  • Statically-typed languages (Scala) - Part III

Preparation

  • Same as for Lesson 4

Lesson 8 - 25th November 2024

Agenda

  • Statically-typed languages (Scala) - Part IV

Preparation

  • Same as for Lesson 4

Lesson 9 - 2nd December 2024

Agenda

  • Introduction to prototype-based languages (IO)

Preparation

Lesson 10 - 9th December 2024

Agenda

  • Advanced types in TypeScript

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