NPRG014
Supplementary materials for the course of "Concepts of Modern Programming Languages" (NPRG014) taught at Charles University, Prague, Czech Republic.
Install / Use
/learn @d3scomp/NPRG014README
# NPRG014
Supplementary materials for the course of "Concepts of Modern Programming Languages" (NPRG014).
Lessons
Lesson 1 - 29th 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 or later 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 “lecture0929/exercises” folder
- The homework is to be found at “lecture0929/homework”
- The “lecture0929/slides” holds the slides for the lecture
Lesson 2 - 6th 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 “lecture1006/exercises” folder
- The homework is to be found at “lecture1006/homework”
- The “lecture1006/slides” holds the slides for the lecture
Lesson 3 - 13th 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 “lecture1013/exercises” folder
- The homework is to be found at “lecture1013/homework”
- The “lecture1013/slides” holds the slides for the lecture
Lesson 4 - 20th October 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 5 - 27th October 2024
Agenda
- Statically-typed languages (Scala) - Part II
Preparation
- Same as for Lesson 4
Lesson 6 - 3rd November 2024
Agenda
- Statically-typed languages (Scala) - Part III
Preparation
- Same as for Lesson 4
Lesson 7 - 10th November 2024
Agenda
- Statically-typed languages (Scala) - Part IV
Preparation
- Same as for Lesson 4
Lesson 8 - 24th November 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 “lecture1124/exercises” folder
- The homework is to be found at “lecture1124/homework”
- The “lecture1124/slides” holds the slides for the lecture
Lesson 9 - 1st December 2024
Agenda
- Introduction to prototype-based languages (IO)
Preparation
- Download IO interpreter from http://iolanguage.org/binaries.html
- Checkout this repository to get all examples
Lesson 10 - 8th 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) 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.
Resources
Related Skills
node-connect
346.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
346.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
346.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
