Skip to content
egor-ulianovPublic
forked from d3scomp/NPRG014

About

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

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages