From 51bc28ebddeac3cc2b1176ab4723e5c534d7c71b Mon Sep 17 00:00:00 2001 From: "Edward A. Lee" Date: Wed, 18 Dec 2024 13:36:23 -0800 Subject: [PATCH 1/5] Refactored video page --- docs/introduction.md | 2 +- docs/legacy_routing.ts | 2 +- docs/sidebars.ts | 2 +- docs/tutorial-videos.mdx | 138 ------------------ versioned_docs/version-0.8.0/sidebars.ts | 2 +- versioned_docs/version-0.9.0/introduction.md | 2 +- .../version-0.9.0/legacy_routing.ts | 2 +- versioned_docs/version-0.9.0/sidebars.ts | 2 +- .../version-0.9.0/tutorial-videos.mdx | 138 ------------------ .../version-0.9.0-sidebars.json | 2 +- 10 files changed, 8 insertions(+), 284 deletions(-) delete mode 100644 docs/tutorial-videos.mdx delete mode 100644 versioned_docs/version-0.9.0/tutorial-videos.mdx diff --git a/docs/introduction.md b/docs/introduction.md index a512531b9..ab747d1b5 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -25,4 +25,4 @@ The reactor-oriented programming paradigm is informally described via the follow 8. _Concurrency_ — Dependencies between reactions are explicitly declared in a Lingua Franca program, and reactions that are not dependent on one another can be executed in parallel on a multi-core machine. If the target provides a support for federated execution, then execution can also be distributed across networks. ## Getting Started -To get started with Lingua Franca, [set up a development environment](./installation.md) and learn how to write [a first reactor](./writing-reactors/a-first-reactor.mdx). There are also a number of useful [tutorial videos](./tutorial-videos.mdx) available. +To get started with Lingua Franca, [set up a development environment](./installation.md) and learn how to write [a first reactor](./writing-reactors/a-first-reactor.mdx). There are also a number of potentially useful [videos](./videos.mdx) available. diff --git a/docs/legacy_routing.ts b/docs/legacy_routing.ts index 3c0556a59..46f31b7aa 100644 --- a/docs/legacy_routing.ts +++ b/docs/legacy_routing.ts @@ -1,6 +1,6 @@ export default [ { - "to": "/docs/tutorial-videos", + "to": "/docs/videos", "from": "/docs/handbook/tutorial-video" }, { diff --git a/docs/sidebars.ts b/docs/sidebars.ts index cde372c60..a6539d635 100644 --- a/docs/sidebars.ts +++ b/docs/sidebars.ts @@ -22,7 +22,7 @@ const sidebars: SidebarsConfig = { }, { "type": "doc", - "id": "tutorial-videos" + "id": "videos" }, { "type": "category", diff --git a/docs/tutorial-videos.mdx b/docs/tutorial-videos.mdx deleted file mode 100644 index 497e6832b..000000000 --- a/docs/tutorial-videos.mdx +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Tutorial Videos -description: Tutorial videos presented by the Lingua Franca team. ---- - -Lingua Franca (LF) is a polyglot coordination language for concurrent and possibly time-sensitive applications ranging from low-level embedded code to distributed cloud and edge applications. On Oct. 8, 2021, we offered a tutorial on Lingua Franca for the EMSOFT conference, a part of ESWEEK. -A [video playlist](https://youtube.com/playlist?list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o) recording is available in six segments, as detailed below. - -**Useful links:** - -- [Complete video playlist](https://youtube.com/playlist?list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o) -- [Part I: Introduction](#introduction) -- [Part II: Hello World](#hello) -- [Part III: Target Languages](#target) -- [Part IV: Basic Concepts](#concepts) -- [Part V: Concurrency and Performance](#concurrency) -- [Part VI: Research Overview](#research) -- [Slides](https://docs.google.com/presentation/d/14cfIMmkBFwt6NOj2ujVs7YXPAXYsoHgLS2rUgBM-Deg/present?slide=id.g623f095f12_0_0) - -## Part I: Introduction - -This part briefly describes the background of the project and explains how to get started with the software. - -:::warning -These videos mentioned Epoch, an IDE that is no longer actively maintained. We recommend using our VS Code extension instead. -::: - -**Useful links:** - -- [Complete video of part I](https://youtu.be/7vkhX5tS_oI) -- Individual parts of the video: - - - | Contents | - | -------------------------------------------------------------------------------------------------------------------------------------------- | - | [Introduction](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=0s) | - | [Motivation](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=61s) | - | [Overview of this tutorial](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=185s) | - | [History of the project](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=668s) | - | [Participating](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=897s) | - | [Getting started](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=925s) | - | [Native releases (Epoch IDE and lfc)](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=1063s) | - | [Virtual Machine with LF pre-installed](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=1311s) | - -- [Virtual machine image](https://vm.lf-lang.org/): download the `Ubuntu-for-LF.ova` image and import into your favorite virtualization software (e.g., VirtualBox or VMWare Player). Start the VM and run Epoch IDE by clicking on the icon on the left. -- [Epoch IDE and lfc command-line compiler](https://releases.lf-lang.org/): Add `lfc` (and `epoch`) to your `$PATH` environment variable. -- [Requirements for each target language](https://reqs.lf-lang.org/): We use the C target in this tutorial. - -## Part II: Hello World - -This part introduces the language with a simple example. - -**Useful links:** - -- [Complete video of part II](https://youtu.be/GNwaf4OpfPM) -- Individual parts of the video: - | Contents| - |-------------| - | [Open Epoch and create a project](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=0s)| - | [Hello World](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=104s)| - | [Adding a timer](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=284s)| - | [Adding a timeout target property](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=426s)| - | [Adding state variables](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=470s) | - | [Creating and connecting multiple reactors](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=635s) | - | [Parameterized reactors](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1020s) | - | [LF tour recap](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1102s) | - | [Diagrams](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1157s) | - -## Part III: Target Languages - -This part focuses on the target languages other than C, namely C++, Python, TypeScript, and Rust. - -**Useful links:** - -- [Complete video of part III](https://youtu.be/0AteHXOHnto) -- Individual parts of the video: - | Contents| - |-------------| - | [Introduction](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=0s) | - | [Cpp](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=57s) | - | [Python](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=650s) | - | [Python Demo: Piano Synth](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=1270s) | - | [TypeScript](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=1555s) | - | [Rust](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=2014s) | - -## Part IV: Basic Concepts - -This part focuses on basic concepts in the language and includes three demos. - -**Useful links:** - -- [Complete video of part IV](https://youtu.be/tl3F_jgc248) -- Individual parts of the video: - | Contents| - |-------------| - | [Reflex game overview](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=0s) | - | [Generating the prompts: Basic concepts](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=310s) | - | [Program control of time: Logical action](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=435s) | - | [Handling external events: Physical action](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=585s) | - | [Cycle and causality loop](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=782s) | - | [Reflex game in Python](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=963s) | - | [The Rhythm example](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=1155s) | - -## Part V: Concurrency - -This part focuses on how the language expresses concurrency, exploits multicore, and supports distributed execution. - -**Useful links:** - -- [Complete video of part V](https://youtu.be/MoTf8L0jOD0) -- Individual parts of the video: - | Contents| - |-------------| - | [Introduction](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=0s) | - | [Banks and Multiports](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=39s) | - | [Utilizing Multicore](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=569s) | - | [Tracing](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1069s) | - | [Performance](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1420s) | - | [Federated Execution](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1765s) | - -## Part VI: Research Overview - -This part focuses on a few of the research projects that have been stimulated by the Lingua Franca project. - -**Useful links:** - -- [Complete video of part VI](https://youtu.be/GNwaf4OpfPM) -- Individual parts of the video: - | Contents| - |-------------| - | [Introduction](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=0s) | - | [AUTOSAR](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=375s) | - | [Autoware/Carla](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=867s) | - | [Bare Iron Platforms](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=1663s) | - | [Modal Models](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2076s) | - | [Automated Verification](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2432s) | - | [Secure Federated Execution](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2877s) | - | [LF Language Server](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=3247s) | diff --git a/versioned_docs/version-0.8.0/sidebars.ts b/versioned_docs/version-0.8.0/sidebars.ts index 800d3da4f..d5bb3f7e9 100644 --- a/versioned_docs/version-0.8.0/sidebars.ts +++ b/versioned_docs/version-0.8.0/sidebars.ts @@ -22,7 +22,7 @@ const sidebars: SidebarsConfig = { }, { "type": "doc", - "id": "tutorial-videos" + "id": "videos" }, { "type": "category", diff --git a/versioned_docs/version-0.9.0/introduction.md b/versioned_docs/version-0.9.0/introduction.md index a512531b9..6bda37348 100644 --- a/versioned_docs/version-0.9.0/introduction.md +++ b/versioned_docs/version-0.9.0/introduction.md @@ -25,4 +25,4 @@ The reactor-oriented programming paradigm is informally described via the follow 8. _Concurrency_ — Dependencies between reactions are explicitly declared in a Lingua Franca program, and reactions that are not dependent on one another can be executed in parallel on a multi-core machine. If the target provides a support for federated execution, then execution can also be distributed across networks. ## Getting Started -To get started with Lingua Franca, [set up a development environment](./installation.md) and learn how to write [a first reactor](./writing-reactors/a-first-reactor.mdx). There are also a number of useful [tutorial videos](./tutorial-videos.mdx) available. +To get started with Lingua Franca, [set up a development environment](./installation.md) and learn how to write [a first reactor](./writing-reactors/a-first-reactor.mdx). There are also a number of useful [tutorial videos](./videos.mdx) available. diff --git a/versioned_docs/version-0.9.0/legacy_routing.ts b/versioned_docs/version-0.9.0/legacy_routing.ts index 3c0556a59..46f31b7aa 100644 --- a/versioned_docs/version-0.9.0/legacy_routing.ts +++ b/versioned_docs/version-0.9.0/legacy_routing.ts @@ -1,6 +1,6 @@ export default [ { - "to": "/docs/tutorial-videos", + "to": "/docs/videos", "from": "/docs/handbook/tutorial-video" }, { diff --git a/versioned_docs/version-0.9.0/sidebars.ts b/versioned_docs/version-0.9.0/sidebars.ts index cde372c60..a6539d635 100644 --- a/versioned_docs/version-0.9.0/sidebars.ts +++ b/versioned_docs/version-0.9.0/sidebars.ts @@ -22,7 +22,7 @@ const sidebars: SidebarsConfig = { }, { "type": "doc", - "id": "tutorial-videos" + "id": "videos" }, { "type": "category", diff --git a/versioned_docs/version-0.9.0/tutorial-videos.mdx b/versioned_docs/version-0.9.0/tutorial-videos.mdx deleted file mode 100644 index 497e6832b..000000000 --- a/versioned_docs/version-0.9.0/tutorial-videos.mdx +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Tutorial Videos -description: Tutorial videos presented by the Lingua Franca team. ---- - -Lingua Franca (LF) is a polyglot coordination language for concurrent and possibly time-sensitive applications ranging from low-level embedded code to distributed cloud and edge applications. On Oct. 8, 2021, we offered a tutorial on Lingua Franca for the EMSOFT conference, a part of ESWEEK. -A [video playlist](https://youtube.com/playlist?list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o) recording is available in six segments, as detailed below. - -**Useful links:** - -- [Complete video playlist](https://youtube.com/playlist?list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o) -- [Part I: Introduction](#introduction) -- [Part II: Hello World](#hello) -- [Part III: Target Languages](#target) -- [Part IV: Basic Concepts](#concepts) -- [Part V: Concurrency and Performance](#concurrency) -- [Part VI: Research Overview](#research) -- [Slides](https://docs.google.com/presentation/d/14cfIMmkBFwt6NOj2ujVs7YXPAXYsoHgLS2rUgBM-Deg/present?slide=id.g623f095f12_0_0) - -## Part I: Introduction - -This part briefly describes the background of the project and explains how to get started with the software. - -:::warning -These videos mentioned Epoch, an IDE that is no longer actively maintained. We recommend using our VS Code extension instead. -::: - -**Useful links:** - -- [Complete video of part I](https://youtu.be/7vkhX5tS_oI) -- Individual parts of the video: - - - | Contents | - | -------------------------------------------------------------------------------------------------------------------------------------------- | - | [Introduction](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=0s) | - | [Motivation](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=61s) | - | [Overview of this tutorial](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=185s) | - | [History of the project](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=668s) | - | [Participating](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=897s) | - | [Getting started](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=925s) | - | [Native releases (Epoch IDE and lfc)](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=1063s) | - | [Virtual Machine with LF pre-installed](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=1311s) | - -- [Virtual machine image](https://vm.lf-lang.org/): download the `Ubuntu-for-LF.ova` image and import into your favorite virtualization software (e.g., VirtualBox or VMWare Player). Start the VM and run Epoch IDE by clicking on the icon on the left. -- [Epoch IDE and lfc command-line compiler](https://releases.lf-lang.org/): Add `lfc` (and `epoch`) to your `$PATH` environment variable. -- [Requirements for each target language](https://reqs.lf-lang.org/): We use the C target in this tutorial. - -## Part II: Hello World - -This part introduces the language with a simple example. - -**Useful links:** - -- [Complete video of part II](https://youtu.be/GNwaf4OpfPM) -- Individual parts of the video: - | Contents| - |-------------| - | [Open Epoch and create a project](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=0s)| - | [Hello World](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=104s)| - | [Adding a timer](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=284s)| - | [Adding a timeout target property](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=426s)| - | [Adding state variables](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=470s) | - | [Creating and connecting multiple reactors](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=635s) | - | [Parameterized reactors](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1020s) | - | [LF tour recap](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1102s) | - | [Diagrams](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1157s) | - -## Part III: Target Languages - -This part focuses on the target languages other than C, namely C++, Python, TypeScript, and Rust. - -**Useful links:** - -- [Complete video of part III](https://youtu.be/0AteHXOHnto) -- Individual parts of the video: - | Contents| - |-------------| - | [Introduction](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=0s) | - | [Cpp](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=57s) | - | [Python](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=650s) | - | [Python Demo: Piano Synth](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=1270s) | - | [TypeScript](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=1555s) | - | [Rust](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=2014s) | - -## Part IV: Basic Concepts - -This part focuses on basic concepts in the language and includes three demos. - -**Useful links:** - -- [Complete video of part IV](https://youtu.be/tl3F_jgc248) -- Individual parts of the video: - | Contents| - |-------------| - | [Reflex game overview](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=0s) | - | [Generating the prompts: Basic concepts](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=310s) | - | [Program control of time: Logical action](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=435s) | - | [Handling external events: Physical action](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=585s) | - | [Cycle and causality loop](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=782s) | - | [Reflex game in Python](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=963s) | - | [The Rhythm example](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=1155s) | - -## Part V: Concurrency - -This part focuses on how the language expresses concurrency, exploits multicore, and supports distributed execution. - -**Useful links:** - -- [Complete video of part V](https://youtu.be/MoTf8L0jOD0) -- Individual parts of the video: - | Contents| - |-------------| - | [Introduction](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=0s) | - | [Banks and Multiports](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=39s) | - | [Utilizing Multicore](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=569s) | - | [Tracing](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1069s) | - | [Performance](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1420s) | - | [Federated Execution](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1765s) | - -## Part VI: Research Overview - -This part focuses on a few of the research projects that have been stimulated by the Lingua Franca project. - -**Useful links:** - -- [Complete video of part VI](https://youtu.be/GNwaf4OpfPM) -- Individual parts of the video: - | Contents| - |-------------| - | [Introduction](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=0s) | - | [AUTOSAR](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=375s) | - | [Autoware/Carla](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=867s) | - | [Bare Iron Platforms](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=1663s) | - | [Modal Models](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2076s) | - | [Automated Verification](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2432s) | - | [Secure Federated Execution](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2877s) | - | [LF Language Server](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=3247s) | diff --git a/versioned_sidebars/version-0.9.0-sidebars.json b/versioned_sidebars/version-0.9.0-sidebars.json index 9da5c6d87..49c445f8d 100644 --- a/versioned_sidebars/version-0.9.0-sidebars.json +++ b/versioned_sidebars/version-0.9.0-sidebars.json @@ -10,7 +10,7 @@ }, { "type": "doc", - "id": "tutorial-videos" + "id": "videos" }, { "type": "category", From 1a6f5c4a8a84d4f948974d5f009e85ab74f0a0ea Mon Sep 17 00:00:00 2001 From: "Edward A. Lee" Date: Wed, 18 Dec 2024 14:55:49 -0800 Subject: [PATCH 2/5] Added missing file --- versioned_docs/version-0.9.0/videos.mdx | 138 ++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 versioned_docs/version-0.9.0/videos.mdx diff --git a/versioned_docs/version-0.9.0/videos.mdx b/versioned_docs/version-0.9.0/videos.mdx new file mode 100644 index 000000000..497e6832b --- /dev/null +++ b/versioned_docs/version-0.9.0/videos.mdx @@ -0,0 +1,138 @@ +--- +title: Tutorial Videos +description: Tutorial videos presented by the Lingua Franca team. +--- + +Lingua Franca (LF) is a polyglot coordination language for concurrent and possibly time-sensitive applications ranging from low-level embedded code to distributed cloud and edge applications. On Oct. 8, 2021, we offered a tutorial on Lingua Franca for the EMSOFT conference, a part of ESWEEK. +A [video playlist](https://youtube.com/playlist?list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o) recording is available in six segments, as detailed below. + +**Useful links:** + +- [Complete video playlist](https://youtube.com/playlist?list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o) +- [Part I: Introduction](#introduction) +- [Part II: Hello World](#hello) +- [Part III: Target Languages](#target) +- [Part IV: Basic Concepts](#concepts) +- [Part V: Concurrency and Performance](#concurrency) +- [Part VI: Research Overview](#research) +- [Slides](https://docs.google.com/presentation/d/14cfIMmkBFwt6NOj2ujVs7YXPAXYsoHgLS2rUgBM-Deg/present?slide=id.g623f095f12_0_0) + +## Part I: Introduction + +This part briefly describes the background of the project and explains how to get started with the software. + +:::warning +These videos mentioned Epoch, an IDE that is no longer actively maintained. We recommend using our VS Code extension instead. +::: + +**Useful links:** + +- [Complete video of part I](https://youtu.be/7vkhX5tS_oI) +- Individual parts of the video: + + + | Contents | + | -------------------------------------------------------------------------------------------------------------------------------------------- | + | [Introduction](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=0s) | + | [Motivation](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=61s) | + | [Overview of this tutorial](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=185s) | + | [History of the project](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=668s) | + | [Participating](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=897s) | + | [Getting started](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=925s) | + | [Native releases (Epoch IDE and lfc)](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=1063s) | + | [Virtual Machine with LF pre-installed](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=1311s) | + +- [Virtual machine image](https://vm.lf-lang.org/): download the `Ubuntu-for-LF.ova` image and import into your favorite virtualization software (e.g., VirtualBox or VMWare Player). Start the VM and run Epoch IDE by clicking on the icon on the left. +- [Epoch IDE and lfc command-line compiler](https://releases.lf-lang.org/): Add `lfc` (and `epoch`) to your `$PATH` environment variable. +- [Requirements for each target language](https://reqs.lf-lang.org/): We use the C target in this tutorial. + +## Part II: Hello World + +This part introduces the language with a simple example. + +**Useful links:** + +- [Complete video of part II](https://youtu.be/GNwaf4OpfPM) +- Individual parts of the video: + | Contents| + |-------------| + | [Open Epoch and create a project](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=0s)| + | [Hello World](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=104s)| + | [Adding a timer](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=284s)| + | [Adding a timeout target property](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=426s)| + | [Adding state variables](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=470s) | + | [Creating and connecting multiple reactors](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=635s) | + | [Parameterized reactors](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1020s) | + | [LF tour recap](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1102s) | + | [Diagrams](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1157s) | + +## Part III: Target Languages + +This part focuses on the target languages other than C, namely C++, Python, TypeScript, and Rust. + +**Useful links:** + +- [Complete video of part III](https://youtu.be/0AteHXOHnto) +- Individual parts of the video: + | Contents| + |-------------| + | [Introduction](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=0s) | + | [Cpp](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=57s) | + | [Python](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=650s) | + | [Python Demo: Piano Synth](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=1270s) | + | [TypeScript](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=1555s) | + | [Rust](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=2014s) | + +## Part IV: Basic Concepts + +This part focuses on basic concepts in the language and includes three demos. + +**Useful links:** + +- [Complete video of part IV](https://youtu.be/tl3F_jgc248) +- Individual parts of the video: + | Contents| + |-------------| + | [Reflex game overview](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=0s) | + | [Generating the prompts: Basic concepts](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=310s) | + | [Program control of time: Logical action](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=435s) | + | [Handling external events: Physical action](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=585s) | + | [Cycle and causality loop](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=782s) | + | [Reflex game in Python](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=963s) | + | [The Rhythm example](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=1155s) | + +## Part V: Concurrency + +This part focuses on how the language expresses concurrency, exploits multicore, and supports distributed execution. + +**Useful links:** + +- [Complete video of part V](https://youtu.be/MoTf8L0jOD0) +- Individual parts of the video: + | Contents| + |-------------| + | [Introduction](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=0s) | + | [Banks and Multiports](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=39s) | + | [Utilizing Multicore](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=569s) | + | [Tracing](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1069s) | + | [Performance](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1420s) | + | [Federated Execution](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1765s) | + +## Part VI: Research Overview + +This part focuses on a few of the research projects that have been stimulated by the Lingua Franca project. + +**Useful links:** + +- [Complete video of part VI](https://youtu.be/GNwaf4OpfPM) +- Individual parts of the video: + | Contents| + |-------------| + | [Introduction](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=0s) | + | [AUTOSAR](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=375s) | + | [Autoware/Carla](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=867s) | + | [Bare Iron Platforms](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=1663s) | + | [Modal Models](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2076s) | + | [Automated Verification](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2432s) | + | [Secure Federated Execution](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2877s) | + | [LF Language Server](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=3247s) | From d452c52d4de5742a7f526afb577d13aa877a16a9 Mon Sep 17 00:00:00 2001 From: "Edward A. Lee" Date: Wed, 18 Dec 2024 15:08:08 -0800 Subject: [PATCH 3/5] Added missing file --- docs/videos.mdx | 176 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 docs/videos.mdx diff --git a/docs/videos.mdx b/docs/videos.mdx new file mode 100644 index 000000000..b94ad0cc8 --- /dev/null +++ b/docs/videos.mdx @@ -0,0 +1,176 @@ +--- +title: Videos +description: Videos presented by the Lingua Franca team. +--- + +Lingua Franca (LF) is a polyglot coordination language for concurrent and possibly time-sensitive +applications ranging from low-level embedded code to distributed cloud and edge applications. +This page collects videos presented by the Lingua Franca team: + +* [Technical Talks](#technical-talks) +* [Weekly Research Meetings](#weekly-research-meetings) +* [Short Course](#short-course) +* [Tutorial](#tutorial-from-2021) + +## Technical Talks + +* [Decentralized Coordination in Federated Lingua Franca](https://youtu.be/eDBOwr5iD3s?si=rVzd4wXsUGgEHmvD), Nov. 20, 2024. +* [Trading Off Consistency and Availability using Lingua Franca](https://youtu.be/3lHmiWOedHM?si=6E-SU58zx6n2dT6B), Nov. 10, 2024. +* [Deterministic Concurrency in Cyber-Physical Systems](https://youtu.be/OA_GknXKe4g?si=ulryQ7gpVivAfoX3), June 16, 2023. +* [Deterministic Concurrency and the Lingua Franca Coordination Language](https://youtu.be/GT4NJ5XnEt4?si=wzrtX72PgAtPS_Yk), April 18, 2023. +* [Verifying Parallel and Distributed Systems: The Observer Problem](https://youtu.be/20EKKsdWTQ8?si=aTSiPijMw9lDVajY), Feb. 9, 2023. +* [Trading off Consistency and Availability in Cyber-Physical Systems](https://youtu.be/VbQPdTZjsZo?si=hAJhLt5e7m3PQzIx), Jan. 28, 2023. +* [Time for All Programs, Not Just Real-Time Programs](https://youtu.be/WlQ8oXG1K8c?si=vSgP5xcZJL3-2QdH), Oct. 25, 2021. +* [10-minute Demo of Lingua Franca](https://youtu.be/UZ1P70Rz5sY?si=N3MKYsgKxZr21bsD), May 6, 2021. + +More videos can be found on this [playlist](https://youtube.com/playlist?list=PL4zzL7roKtfWbzXhty_kS9fkGoyt-jYzU&si=w8wtPVwPkSWqOIMC). + + +## Weekly Research Meetings + +The LF team meets approximately once a week, and sometimes the meetings are recorded. +These recordings can be found in +[this Google Drive folder](https://drive.google.com/drive/folders/1puJdbrsgG0WhaGsOEJVUM_8NgBkeSmwH?usp=sharing). + +## Short Course + +In May, 2022, Edward Lee gave a [short course on software design for cyber-physical systems]( +https://www.youtube.com/playlist?list=PL4zzL7roKtfUWcXJ_O9w8GzwJrCwcjLyb) that featured Lingua Franca. + +## Tutorial from 2021 + +On Oct. 8, 2021, we offered a tutorial on Lingua Franca for the EMSOFT conference, a part of ESWEEK. +This tutorial is dated, and many aspects of the language have changed since then. +Nevertheless, the videos may provide a useful entry point. +A [video playlist](https://youtube.com/playlist?list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o) recording is available in six segments, as detailed below. + +**Useful links:** + +- [Complete video playlist](https://youtube.com/playlist?list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o) +- [Part I: Introduction](#introduction) +- [Part II: Hello World](#hello) +- [Part III: Target Languages](#target) +- [Part IV: Basic Concepts](#concepts) +- [Part V: Concurrency and Performance](#concurrency) +- [Part VI: Research Overview](#research) +- [Slides](https://docs.google.com/presentation/d/14cfIMmkBFwt6NOj2ujVs7YXPAXYsoHgLS2rUgBM-Deg/present?slide=id.g623f095f12_0_0) + +### Part I: Introduction + +This part briefly describes the background of the project and explains how to get started with the software. + +:::warning +These videos mentioned Epoch, an IDE that is no longer actively maintained. We recommend using our VS Code extension instead. +::: + +**Useful links:** + +- [Complete video of part I](https://youtu.be/7vkhX5tS_oI) +- Individual parts of the video: + + + | Contents | + | -------------------------------------------------------------------------------------------------------------------------------------------- | + | [Introduction](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=0s) | + | [Motivation](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=61s) | + | [Overview of this tutorial](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=185s) | + | [History of the project](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=668s) | + | [Participating](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=897s) | + | [Getting started](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=925s) | + | [Native releases (Epoch IDE and lfc)](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=1063s) | + | [Virtual Machine with LF pre-installed](https://www.youtube.com/watch?v=7vkhX5tS_oI&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=1&t=1311s) | + +- [Virtual machine image](https://vm.lf-lang.org/): download the `Ubuntu-for-LF.ova` image and import into your favorite virtualization software (e.g., VirtualBox or VMWare Player). Start the VM and run Epoch IDE by clicking on the icon on the left. +- [Epoch IDE and lfc command-line compiler](https://releases.lf-lang.org/): Add `lfc` (and `epoch`) to your `$PATH` environment variable. +- [Requirements for each target language](https://reqs.lf-lang.org/): We use the C target in this tutorial. + +### Part II: Hello World + +This part introduces the language with a simple example. + +**Useful links:** + +- [Complete video of part II](https://youtu.be/GNwaf4OpfPM) +- Individual parts of the video: + | Contents| + |-------------| + | [Open Epoch and create a project](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=0s)| + | [Hello World](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=104s)| + | [Adding a timer](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=284s)| + | [Adding a timeout target property](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=426s)| + | [Adding state variables](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=470s) | + | [Creating and connecting multiple reactors](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=635s) | + | [Parameterized reactors](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1020s) | + | [LF tour recap](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1102s) | + | [Diagrams](https://www.youtube.com/watch?v=GNwaf4OpfPM&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=2&t=1157s) | + +### Part III: Target Languages + +This part focuses on the target languages other than C, namely C++, Python, TypeScript, and Rust. + +**Useful links:** + +- [Complete video of part III](https://youtu.be/0AteHXOHnto) +- Individual parts of the video: + | Contents| + |-------------| + | [Introduction](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=0s) | + | [Cpp](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=57s) | + | [Python](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=650s) | + | [Python Demo: Piano Synth](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=1270s) | + | [TypeScript](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=1555s) | + | [Rust](https://www.youtube.com/watch?v=0AteHXOHnto&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=3&t=2014s) | + +### Part IV: Basic Concepts + +This part focuses on basic concepts in the language and includes three demos. + +**Useful links:** + +- [Complete video of part IV](https://youtu.be/tl3F_jgc248) +- Individual parts of the video: + | Contents| + |-------------| + | [Reflex game overview](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=0s) | + | [Generating the prompts: Basic concepts](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=310s) | + | [Program control of time: Logical action](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=435s) | + | [Handling external events: Physical action](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=585s) | + | [Cycle and causality loop](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=782s) | + | [Reflex game in Python](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=963s) | + | [The Rhythm example](https://www.youtube.com/watch?v=tl3F_jgc248&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=4&t=1155s) | + +### Part V: Concurrency + +This part focuses on how the language expresses concurrency, exploits multicore, and supports distributed execution. + +**Useful links:** + +- [Complete video of part V](https://youtu.be/MoTf8L0jOD0) +- Individual parts of the video: + | Contents| + |-------------| + | [Introduction](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=0s) | + | [Banks and Multiports](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=39s) | + | [Utilizing Multicore](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=569s) | + | [Tracing](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1069s) | + | [Performance](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1420s) | + | [Federated Execution](https://www.youtube.com/watch?v=MoTf8L0jOD0&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=5&t=1765s) | + +### Part VI: Research Overview + +This part focuses on a few of the research projects that have been stimulated by the Lingua Franca project. + +**Useful links:** + +- [Complete video of part VI](https://youtu.be/GNwaf4OpfPM) +- Individual parts of the video: + | Contents| + |-------------| + | [Introduction](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=0s) | + | [AUTOSAR](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=375s) | + | [Autoware/Carla](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=867s) | + | [Bare Iron Platforms](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=1663s) | + | [Modal Models](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2076s) | + | [Automated Verification](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2432s) | + | [Secure Federated Execution](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=2877s) | + | [LF Language Server](https://www.youtube.com/watch?v=afJowM35YHg&list=PL4zzL7roKtfXyKE3k8lOwPub9YEjulS4o&index=6&t=3247s) | From 6ee9cbbfdb094be0b5c96f8126955db2f54b9c94 Mon Sep 17 00:00:00 2001 From: "Edward A. Lee" Date: Wed, 18 Dec 2024 16:03:43 -0800 Subject: [PATCH 4/5] Legacy routing --- docs/legacy_routing.ts | 4 ++++ versioned_docs/version-0.9.0/legacy_routing.ts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/legacy_routing.ts b/docs/legacy_routing.ts index 46f31b7aa..e6ae6d5cc 100644 --- a/docs/legacy_routing.ts +++ b/docs/legacy_routing.ts @@ -3,6 +3,10 @@ export default [ "to": "/docs/videos", "from": "/docs/handbook/tutorial-video" }, + { + "to": "/docs/videos", + "from": "/docs/tutorial-video" + }, { "to": "/docs/", "from": "/docs/handbook/overview" diff --git a/versioned_docs/version-0.9.0/legacy_routing.ts b/versioned_docs/version-0.9.0/legacy_routing.ts index 46f31b7aa..e6ae6d5cc 100644 --- a/versioned_docs/version-0.9.0/legacy_routing.ts +++ b/versioned_docs/version-0.9.0/legacy_routing.ts @@ -3,6 +3,10 @@ export default [ "to": "/docs/videos", "from": "/docs/handbook/tutorial-video" }, + { + "to": "/docs/videos", + "from": "/docs/tutorial-video" + }, { "to": "/docs/", "from": "/docs/handbook/overview" From f94847b2d449c117fe82fc3ea6dee592a2fab1ac Mon Sep 17 00:00:00 2001 From: "Edward A. Lee" Date: Wed, 18 Dec 2024 16:21:58 -0800 Subject: [PATCH 5/5] Typo --- docs/legacy_routing.ts | 2 +- versioned_docs/version-0.9.0/legacy_routing.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/legacy_routing.ts b/docs/legacy_routing.ts index e6ae6d5cc..adbee2543 100644 --- a/docs/legacy_routing.ts +++ b/docs/legacy_routing.ts @@ -5,7 +5,7 @@ export default [ }, { "to": "/docs/videos", - "from": "/docs/tutorial-video" + "from": "/docs/tutorial-videos" }, { "to": "/docs/", diff --git a/versioned_docs/version-0.9.0/legacy_routing.ts b/versioned_docs/version-0.9.0/legacy_routing.ts index e6ae6d5cc..adbee2543 100644 --- a/versioned_docs/version-0.9.0/legacy_routing.ts +++ b/versioned_docs/version-0.9.0/legacy_routing.ts @@ -5,7 +5,7 @@ export default [ }, { "to": "/docs/videos", - "from": "/docs/tutorial-video" + "from": "/docs/tutorial-videos" }, { "to": "/docs/",