diff --git a/src/components/Events/events.tsx b/src/components/Events/events.tsx index 050d06df7..a70687bc1 100644 --- a/src/components/Events/events.tsx +++ b/src/components/Events/events.tsx @@ -15,12 +15,12 @@ export interface Event { export const events: Event[] = [ // Upcoming Events { - title: "Lingua Franca Tutorial at CPS-IoT Week 2026", - date: "2026-05-11", - location: "Saint Malo, France (CPS-IoT Week 2026)", + title: "Lingua Franca Tutorial at FDL 2026 Summer School", + date: "2026-09-08", + location: "Rome, Italy (FDL 2026 Summer School)", description: - "Half-day hands-on tutorial on Lingua Franca, an open-source coordination language for building deterministic, concurrent, and time-sensitive cyber-physical systems. Includes technical overview, CPS demos, and programming sessions with C and Python.", - link: "/events/cpsweek-2026-tutorial", + "Hands-on tutorial on modeling and programming time-sensitive systems using the Lingua Franca coordination language, part of the FDL 2026 Summer School. Eight short labs in C or Python cover reactors, logical time, determinism, modal models, deadlines, and federated execution.", + link: "/events/fdl-2026-tutorial", type: "tutorial", isUpcoming: true, }, @@ -37,6 +37,16 @@ export const events: Event[] = [ isExternal: true, }, // Past Events + { + title: "Lingua Franca Tutorial at CPS-IoT Week 2026", + date: "2026-05-11", + location: "Saint Malo, France (CPS-IoT Week 2026)", + description: + "Half-day hands-on tutorial on Lingua Franca, an open-source coordination language for building deterministic, concurrent, and time-sensitive cyber-physical systems. Includes technical overview, CPS demos, and programming sessions with C and Python.", + link: "/events/cpsweek-2026-tutorial", + type: "tutorial", + isUpcoming: false, + }, { title: "ReCPS: Workshop on Reactive Cyber-Physical Systems", date: "2026-04-20", diff --git a/src/pages/events/fdl-2026-tutorial.tsx b/src/pages/events/fdl-2026-tutorial.tsx new file mode 100644 index 000000000..faa788cd6 --- /dev/null +++ b/src/pages/events/fdl-2026-tutorial.tsx @@ -0,0 +1,838 @@ +import clsx from "clsx"; +import Layout from "@theme/Layout"; +import Heading from "@theme/Heading"; +import Link from "@docusaurus/Link"; + +import styles from "./event-page.module.css"; + +interface ScheduleItem { + session: string; + duration: string; + time: string; + description?: React.ReactNode; + leads?: string; +} + +const scheduleItems: ScheduleItem[] = [ + { + session: "Introduction to Lingua Franca", + duration: "15 minutes", + time: "2:00 PM – 2:15 PM", + description: + "Introduction to the challenges of building time-sensitive systems and motivation for Lingua Franca. Overview of the reactor-oriented programming model and key language concepts (reactors, ports, timers, logical time, deterministic concurrency).", + leads: "Instructor", + }, + { + session: "Setup and Hello World", + duration: "10 minutes", + time: "2:15 PM – 2:25 PM", + description: + "Verify your Lingua Franca toolchain with the readiness checklist, choose your language path (C or Python), and compile and run your first reactor program.", + leads: "Instructor & Teaching Assistant", + }, + { + session: "Hands-on Labs", + duration: "90 minutes", + time: "2:25 PM – 3:55 PM", + description: ( + <> + Work through the eight short labs of the{" "} + + tutorial repository + + , each built around a small program you compile, run, and extend. The + labs progress from reactors, ports, and timers, through logical time, + determinism, physical actions, and modal reactors, to deadlines and + federated execution. + + ), + leads: "Instructor & Teaching Assistant", + }, + { + session: "Wrap-Up and Q&A", + duration: "5 minutes", + time: "3:55 PM – 4:00 PM", + description: + "Summary of key takeaways, pointers to advanced LF capabilities, project roadmap, and community involvement opportunities.", + leads: "Instructor", + }, +]; + +interface Lab { + number: number; + theme: string; + concepts: string; +} + +const labs: Lab[] = [ + { + number: 1, + theme: "Ready, set, react", + concepts: "Toolchain, reactors, timers, reactions, diagrams", + }, + { + number: 2, + theme: "Building a reactor pipeline", + concepts: "Ports, connections, parameters, state", + }, + { + number: 3, + theme: "Tags, delays, and lag", + concepts: "Logical vs. physical time, microsteps, actions", + }, + { + number: 4, + theme: "Predictable ordering", + concepts: "Determinism, reaction order, causality loops", + }, + { + number: 5, + theme: "Reacting to the outside world", + concepts: "Physical actions, threads, preambles", + }, + { + number: 6, + theme: "Changing behavior with modes", + concepts: "Modal reactors, reset and history transitions", + }, + { + number: 7, + theme: "Useful work under a time budget", + concepts: "Deadlines, handlers, anytime computation", + }, + { + number: 8, + theme: "One model, multiple processes", + concepts: "Federated execution, the RTI", + }, +]; + +interface Instructor { + name: string; + affiliation: string; + email: string; + website: string; + bio: string; + image: string; +} + +const instructors: Instructor[] = [ + { + name: "Hokeun Kim", + affiliation: "Arizona State University, USA", + email: "hokeun@asu.edu", + website: "https://hokeun.github.io/", + image: "/img/events/fdl-2026-tutorial/hokeun-kim.jpg", + bio: "Assistant professor of Computer Science and Engineering in the School of Computing and Augmented Intelligence (SCAI) at Arizona State University. Ph.D. in EECS from UC Berkeley (2017) with a focus on distributed cyber-physical systems and IoT security. Research interests include cyber-physical systems, distributed systems, real-time systems, computer security, and computer architecture. Recipient of ACM/IEEE Best Paper Award at CPSWeek, IEEE Micro Top Picks Honorable Mention, and 1st Place in ESSC at ESWEEK.", + }, +]; + +interface TeachingAssistant { + name: string; + role: string; + affiliation: string; + email: string; + website: string; + image: string; +} + +const teachingAssistants: TeachingAssistant[] = [ + { + name: "Byeonggil Jun", + role: "Ph.D. Student", + affiliation: "Arizona State University, USA", + email: "byeonggil@asu.edu", + website: "https://byeonggiljun.github.io/", + image: "/img/events/fdl-2026-tutorial/byeonggil-jun.jpg", + }, +]; + +export default function FDL2026Tutorial() { + return ( + + {/* Hero Section */} +
+
+
+ Upcoming Tutorial +
+ + Lingua Franca Tutorial + +

+ Modeling and Programming Time-Sensitive Systems Using Lingua Franca + Coordination Language +

+
+ πŸ“… September 8, 2026 + πŸ“ Rome, Italy + + 🎯 Part of the{" "} + + FDL 2026 Summer School + + +
+

+ Hands-on tutorial (2:00 – 4:00 PM CEST, 2 hours) +

+
+
+ + {/* Quick Links Section */} +
+
+
+
+ + πŸš€ Tutorial Quick Links + +

+ Start here to set up your environment and get the hands-on lab + materials. +

+
+
+
+
+ βš™οΈ + Install LF +

+ Set up the Lingua Franca toolchain, VS Code extension, + and CLI (this tutorial uses LF v0.13.0). +

+ + Installation Instructions + +
+
+
+
+
+
+ πŸ’» + Hands-on Labs +

+ Create your own copy of the tutorial template repository + with eight short labs in C and Python. +

+ + Open GitHub Labs + +
+
+
+
+
+
+
+
+ + {/* Abstract Section */} +
+
+
+
+ Abstract +

+ This hands-on, interactive tutorial introduces{" "} + Lingua Franca (LF), a polyglot + coordination language for building deterministic, time-sensitive + systems. You write ordinary C or Python code inside{" "} + reactors, and LF coordinates when that code runs, + locally or across multiple processes, with a well-defined model + of time. It is held during the{" "} + + FDL 2026 Summer School + {" "} + in Rome, Italy, part of the Forum on Specification & Design + Languages (FDL) 2026. +

+

+ The tutorial is built around eight short labs, each centered on + a small program that you compile, run, and extend. Every lab + exists in both C and Python, teaching the same LF concepts with + the same exercisesβ€”pick the language you are more comfortable + with and stay on that path. The tutorial is intended for + researchers, engineers, and graduate students with programming + experience interested in the design of time-sensitive systems + with deterministic concurrency. +

+ +
+ 🎯 Target Audience +

+ FDL 2026 Summer School participants including Ph.D. students, + academic researchers, and industry engineers. No prior + experience with LF is requiredβ€”basic proficiency in C and/or + Python is recommended. +

+
+
+
+
+
+ + {/* Motivation Section */} +
+
+
+
+ + πŸ’‘ Motivation & Relevance + +

+ Time-sensitive systems, such as cyber-physical systems and + embedded control software, often involve multiple concurrent + components interacting under real-time constraints. Ensuring + deterministic behavior and coordinated timing across these + components is a notorious challenge with conventional + programming approaches (threads, pub/sub, actor frameworks, + etc.). +

+

+ Lingua Franca is a polyglot coordination language designed to + address this challenge by offering a framework for building + concurrent, time-sensitive systems that behave deterministically + and predictably. An LF program defines interactions between + reactive components called reactors and emphasizes + deterministic coordination with explicit handling of timing. +

+
+
+ Key Benefits +
    +
  • + Deterministic Concurrency: Race-free + execution on multiple cores or devices without special + synchronization code +
  • +
  • + Explicit Timing Semantics: Specify and + maintain precise temporal behavior without ad-hoc timing + code +
  • +
  • + Polyglot Support: Reactor logic can be + written in C, Python, C++, Rust, or TypeScript +
  • +
  • + Distributed Execution: Built-in support + for federated execution across networked devices +
  • +
+
+
+
+
+
+
+ + {/* Schedule Section */} +
+
+
+
+ + πŸ“‹ Tutorial Schedule + +

+ Schedule: September 8, 2026, 2:00 PM – 4:00 PM (2 hours) +

+ + {scheduleItems.map((item, idx) => ( +
+
+
+
+ + {item.session} + + + {item.time} + +
+ + {item.duration} + +
+
+ {(item.description || item.leads) && ( +
+ {item.description && ( +

+ {item.description} +

+ )} + {item.leads && ( +

+ Led by: {item.leads} +

+ )} +
+ )} +
+ ))} +
+
+
+
+ + {/* The Eight Labs Section */} +
+
+
+
+ + πŸ§ͺ The Eight Labs + +

+ Each lab is built around a small program you compile, run, and + extend. The links in the{" "} + + tutorial repository + {" "} + point at both the C and Python versions of every lab. Total + guided time is about 80-100 minutes, leaving room in a two-hour + session for setup and questions. +

+
+ + + + + + + + + + {labs.map((lab) => ( + + + + + + ))} + +
LabThemeMain concepts
{lab.number}{lab.theme}{lab.concepts}
+
+
+
+
+
+ + {/* What You'll Learn Section */} +
+
+
+
+ + πŸŽ“ What You'll Learn + +
+
+
+
+ Concepts +
+
+
    +
  • Reactor-oriented programming model
  • +
  • Reactors, ports, connections, and state
  • +
  • Tags, logical time, and physical time
  • +
  • Deterministic reaction ordering and causality
  • +
  • Modal reactors, deadlines, and federations
  • +
+
+
+
+
+
+
+ Hands-on Skills +
+
+
    +
  • Writing, compiling, and running LF programs with C or Python
  • +
  • Bringing external events into a program with physical actions
  • +
  • Enforcing timing requirements with deadlines
  • +
  • Turning a multi-reactor program into a federation
  • +
  • Using VS Code with the LF extension and diagrams
  • +
+
+
+
+
+
+
+
+
+ + {/* Technical Requirements Section */} +
+
+
+
+ + πŸ’» Technical Requirements & Setup + +
+
+

+ Participants should bring a laptop for the hands-on + sessions. Lingua Franca's toolchain supports{" "} + Linux, macOS, and{" "} + Windows (via WSL). This tutorial uses{" "} + Lingua Franca v0.13.0. +

+ +
+ Installation guide +

+ Step-by-step setup for the toolchain, VS Code extension, + and CLI is in the{" "} + + Lingua Franca installation documentation + {" "} + and in the{" "} + + tutorial repository's setup section + + . +

+

+ Highlights: +

+
    +
  • + Java 17 or higher is required for the + compiler and tooling. +
  • +
  • + Windows: use WSL with + Ubuntu and install all LF components inside Linux (not + MSYS/Git Bash). +
  • +
  • + VS Code: install the Lingua Franca + extension from the Marketplace ( + lf-lang.vscode-lingua-franca). +
  • +
  • + CLI: one-line install with{" "} + + curl -Ls https://install.lf-lang.org | bash -s cli + + . +
  • +
+
+ + Setup Options +
    +
  • + Native Installation (recommended):{" "} + One-line install script or VS Code extension installation, + following the installation guide above. +
  • +
  • + Instructor-provided VM: An Ubuntu VM + image with LF v0.13.0, VS Code, the LF extension, and both + target toolchains preinstalled (ask the instructor for the + download link). Open it with UTM on macOS or VirtualBox on + Windows. +
  • +
+ + Dependencies +
    +
  • Java 17+ JDK
  • +
  • + C path: a C compiler (clang or{" "} + gcc) and CMake +
  • +
  • + Python path: Python 3.10 or newer, plus a C compiler and + CMake +
  • +
  • VS Code with the Lingua Franca extension
  • +
+
+
+
+
+
+
+ + {/* Hands-on Programming Materials */} +
+
+
+
+ + Hands-on Programming Materials + +
+
+

+ The hands-on session follows the eight labs in the{" "} + + lf-tutorial-fdl26 + {" "} + template repository on GitHub. Before the tutorial, create + your own private copy from the template ( + Use this template >{" "} + Create a new repository), clone it, and + open the folder in VS Code. The same labs exist in both C + and Python. +

+
+ + View on GitHub + +
+
+
+
+
+
+
+ + {/* Instructors Section */} +
+
+
+
+ + πŸ‘₯ Instructor + + {instructors.map((instructor, idx) => ( +
+
+
+
+ {instructor.name} +
+
+ + {instructor.name} + +

+ {instructor.affiliation} +

+

+ {instructor.bio} +

+

+ πŸ“§{" "} + + {instructor.email} + +

+
+
+
+
+ ))} +
+
+
+
+ + {/* Teaching Assistants Section */} +
+
+
+
+ + πŸ§‘β€πŸ« Teaching Assistant + + {teachingAssistants.map((ta, idx) => ( +
+
+
+
+ {ta.name} +
+
+ + {ta.name} + +

+ {ta.role} +

+

+ {ta.affiliation} +

+

+ πŸ“§{" "} + {ta.email} +

+
+
+
+
+ ))} +
+
+
+
+ + {/* Materials Section */} +
+
+
+
+ + πŸ“š Materials & Resources + +
+
+

+ This webpage serves as the central hub for all tutorial + materials. Participants can expect to find: +

+
    +
  • Setup instructions and prerequisites
  • +
  • + + Hands-on lab instructions and starter code + +
  • +
  • Links to the LF documentation and example projects
  • +
+

+ Materials will be updated as we approach the tutorial date. + Check back regularly for the latest resources. +

+ + Community Support +

+ Join the Lingua Franca{" "} + + Zulip community + {" "} + for Q&A before and after the tutorial. This connects you + with an active open-source community spanning multiple + institutions for continued learning and support. +

+
+
+
+
+
+
+ + {/* CTA Section */} +
+
+ Related Resources +

+ Get started with Lingua Franca and learn more about the summer + school. +

+
+ + FDL 2026 Summer School + + + Lingua Franca Docs + + + Installation Guide + + + Tutorial Labs on GitHub + +
+
+
+
+ ); +} diff --git a/static/img/events/fdl-2026-tutorial/byeonggil-jun.jpg b/static/img/events/fdl-2026-tutorial/byeonggil-jun.jpg new file mode 100644 index 000000000..9045147d5 Binary files /dev/null and b/static/img/events/fdl-2026-tutorial/byeonggil-jun.jpg differ diff --git a/static/img/events/fdl-2026-tutorial/hokeun-kim.jpg b/static/img/events/fdl-2026-tutorial/hokeun-kim.jpg new file mode 100644 index 000000000..65fa0daa3 Binary files /dev/null and b/static/img/events/fdl-2026-tutorial/hokeun-kim.jpg differ