diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 0cb933f5f..041194f55 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -86,6 +86,7 @@ const config: Config = { }, {to: '/blog', label: 'Blog', position: 'left'}, {to: '/research', label: 'Research', position: 'left'}, + {to: '/education', label: 'Education', position: 'left'}, {to: '/community', label: 'Community', position: 'left'}, {to: '/events', label: 'Events', position: 'left'}, { diff --git a/src/pages/education.tsx b/src/pages/education.tsx new file mode 100644 index 000000000..3b6074f54 --- /dev/null +++ b/src/pages/education.tsx @@ -0,0 +1,210 @@ +import clsx from "clsx"; +import type { ReactNode } from "react"; +import Layout from "@theme/Layout"; +import Heading from "@theme/Heading"; +import Link from "@docusaurus/Link"; + +interface EducationItem { + title: string; + href: string; + external?: boolean; + /** Decorative emoji shown before the card title */ + icon: string; + description: ReactNode; +} + +const labMaterials: EducationItem[] = [ + { + icon: "π¬", + title: "Embedded Systems Labs", + href: "https://www.lf-lang.org/embedded-lab/index.html", + external: true, + description: ( + <> +
+ A full sequence of hands-on labs for introductory{" "} + embedded systems and{" "} + cyber-physical systems. Exercises use{" "} + Lingua Franca for timing, concurrency, and modal + models, with reactor logic in C on the{" "} + Raspberry Pi RP2040 (Pololu 3pi+ 2040 robot). +
++ Accompanied by the textbook{" "} + + + + Introduction to Embedded Systems: A Cyber-Physical Systems + Approach + + + {" "} + by Edward A. Lee and Sanjit A. Seshia{" "} + (2nd ed., MIT Press, 2017)βthe standard CPS/embedded systems textbook. +
+ > + ), + }, +]; + +const upcomingTutorials: EducationItem[] = [ + { + icon: "π ", + title: "Lingua Franca Tutorial at CPS-IoT Week 2026", + href: "/events/cpsweek-2026-tutorial/", + description: ( ++ Half-day, in-person tutorial on{" "} + Lingua Franca for deterministic integration of + cyber-physical systems: technical overview,{" "} + CPS-focused demos, and hands-on programming in{" "} + C and Python. Offered during{" "} + + CPS-IoT Week 2026 + {" "} + (May 11, 2026, Saint Malo, France). +
+ ), + }, +]; + +const pastTutorials: EducationItem[] = [ + { + icon: "π¬", + title: "Lingua Franca Tutorial at ESWEEK 2021", + href: "/events/esweek-2021-tutorial/", + description: ( ++ Recorded tutorial from EMSOFT as part + of{" "} + + Embedded Systems Week (ESWEEK) + {" "} + 2021 (online), covering motivation, language basics, + and hands-on use of Lingua Franca with supporting videos + and materials on the event page. +
+ ), + }, + { + icon: "βΆοΈ", + title: "Tutorial videos (playlist)", + href: "/docs/videos/", + description: ( ++ Curated video walkthroughs from past tutorials, + including sessions from the 2021{" "} + + ESWeek + {" "} + tutorial, for self-paced learning alongside the{" "} + handbook. +
+ ), + }, +]; + +function EducationCard({ item }: { item: EducationItem }) { + return ( ++ Courseware, lab sequences, and{" "} + tutorials for teaching and learning{" "} + Lingua Franca,{" "} + deterministic concurrency, and{" "} + cyber-physical systems. For conference + workshops and meetups, see also the{" "} + + Events + {" "} + page. +
+ +This tutorial emphasizes how LF enables deterministic diff --git a/src/pages/events/esweek-2021-tutorial.tsx b/src/pages/events/esweek-2021-tutorial.tsx index 80c441d7c..c42fb8620 100644 --- a/src/pages/events/esweek-2021-tutorial.tsx +++ b/src/pages/events/esweek-2021-tutorial.tsx @@ -259,7 +259,15 @@ export default function ESWEEKTutorial() { concurrent and possibly time-sensitive applications ranging from low-level embedded code to distributed cloud and edge applications. This tutorial was offered on October 8, 2021, as - part of the EMSOFT conference at ESWEEK (Embedded Systems Week). + part of the EMSOFT conference at{" "} + + ESWEEK (Embedded Systems Week) + + .
The complete tutorial is available as a{" "}