From 584273a309a6005ca22313921f267b3bd08565ff Mon Sep 17 00:00:00 2001 From: Hokeun Kim Date: Wed, 1 Apr 2026 17:27:23 -0700 Subject: [PATCH 1/4] Initial version of the education tab. --- docusaurus.config.ts | 1 + src/pages/education.tsx | 115 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 src/pages/education.tsx 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..15515602c --- /dev/null +++ b/src/pages/education.tsx @@ -0,0 +1,115 @@ +import clsx from "clsx"; +import Layout from "@theme/Layout"; +import Heading from "@theme/Heading"; +import Link from "@docusaurus/Link"; + +interface EducationItem { + title: string; + href: string; + external?: boolean; + description: string; +} + +const labMaterials: EducationItem[] = [ + { + 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). Designed as companion material for Lee and Seshia, Introduction to Embedded Systems: A Cyber-Physical Systems Approach.", + }, +]; + +const upcomingTutorials: EducationItem[] = [ + { + 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: overview, CPS-focused demos, and hands-on programming in C and Python (May 2026, Saint Malo, France).", + }, +]; + +const pastTutorials: EducationItem[] = [ + { + title: "Lingua Franca Tutorial at ESWEEK 2021", + href: "/events/esweek-2021-tutorial/", + description: + "Recorded tutorial from EMSOFT / Embedded Systems Week 2021 (online), covering motivation, language basics, and hands-on use of Lingua Franca with supporting videos and materials on the event page.", + }, + { + title: "Tutorial videos (playlist)", + href: "/docs/videos/", + description: + "Curated video walkthroughs from past tutorials, including the 2021 ESWEEK sessions, for self-paced learning alongside the handbook.", + }, +]; + +function EducationCard({ item }: { item: EducationItem }) { + return ( +
+
+ + {item.external ? ( + + {item.title} + + ) : ( + {item.title} + )} + +
+
+

{item.description}

+
+
+ ); +} + +export default function Education(): JSX.Element { + return ( + +
+
+
+
+ + Education + +

+ 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. +

+ + + Labs & courseware + + {labMaterials.map((item) => ( + + ))} + + + Upcoming tutorials + + {upcomingTutorials.map((item) => ( + + ))} + + + Past tutorials + + {pastTutorials.map((item) => ( + + ))} +
+
+
+
+
+ ); +} From 024080140a0f8fdfa7c94936788bee537140ed04 Mon Sep 17 00:00:00 2001 From: Hokeun Kim Date: Wed, 1 Apr 2026 17:34:06 -0700 Subject: [PATCH 2/4] Update the education tab. --- src/pages/education.tsx | 83 ++++++++++++++++++---- src/pages/events/cpsweek-2026-tutorial.tsx | 11 ++- src/pages/events/esweek-2021-tutorial.tsx | 20 +++++- 3 files changed, 99 insertions(+), 15 deletions(-) diff --git a/src/pages/education.tsx b/src/pages/education.tsx index 15515602c..006caa858 100644 --- a/src/pages/education.tsx +++ b/src/pages/education.tsx @@ -1,4 +1,5 @@ import clsx from "clsx"; +import type { ReactNode } from "react"; import Layout from "@theme/Layout"; import Heading from "@theme/Heading"; import Link from "@docusaurus/Link"; @@ -7,7 +8,7 @@ interface EducationItem { title: string; href: string; external?: boolean; - description: string; + description: ReactNode; } const labMaterials: EducationItem[] = [ @@ -15,8 +16,31 @@ const labMaterials: EducationItem[] = [ 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). Designed as companion material for Lee and Seshia, Introduction to Embedded Systems: A Cyber-Physical Systems Approach.", + 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 text these labs are designed to accompany. +

+ + ), }, ]; @@ -24,8 +48,21 @@ const upcomingTutorials: EducationItem[] = [ { 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: overview, CPS-focused demos, and hands-on programming in C and Python (May 2026, Saint Malo, France).", + description: ( +

+ Half-day, in-person tutorial on Lingua Franca for deterministic + integration of cyber-physical systems: overview, CPS-focused demos, and + hands-on programming in C and Python. Offered during{" "} + + CPS-IoT Week 2026 + {" "} + (May 11–14, 2026, Saint Malo, France). +

+ ), }, ]; @@ -33,14 +70,38 @@ const pastTutorials: EducationItem[] = [ { title: "Lingua Franca Tutorial at ESWEEK 2021", href: "/events/esweek-2021-tutorial/", - description: - "Recorded tutorial from EMSOFT / Embedded Systems Week 2021 (online), covering motivation, language basics, and hands-on use of Lingua Franca with supporting videos and materials on the event page.", + 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. +

+ ), }, { title: "Tutorial videos (playlist)", href: "/docs/videos/", - description: - "Curated video walkthroughs from past tutorials, including the 2021 ESWEEK sessions, for self-paced learning alongside the handbook.", + description: ( +

+ Curated video walkthroughs from past tutorials, including sessions from + the 2021{" "} + + ESWeek + {" "} + tutorial, for self-paced learning alongside the handbook. +

+ ), }, ]; @@ -58,9 +119,7 @@ function EducationCard({ item }: { item: EducationItem }) { )} -
-

{item.description}

-
+
{item.description}
); } diff --git a/src/pages/events/cpsweek-2026-tutorial.tsx b/src/pages/events/cpsweek-2026-tutorial.tsx index 823bdf611..0ecd97890 100644 --- a/src/pages/events/cpsweek-2026-tutorial.tsx +++ b/src/pages/events/cpsweek-2026-tutorial.tsx @@ -192,7 +192,16 @@ export default function CPSWeek2026Tutorial() { Participants will explore LF's core concepts through a technical overview, CPS-focused demonstrations, and hands-on programming sessions using C and Python as well as the LF coordination - language. + language. It is held during{" "} + + CPS-IoT Week 2026 + + , the premier CPS and IoT research week (May 11–14, 2026, Saint + Malo, France).

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..cb6c9311c 100644 --- a/src/pages/events/esweek-2021-tutorial.tsx +++ b/src/pages/events/esweek-2021-tutorial.tsx @@ -239,7 +239,15 @@ export default function ESWEEKTutorial() { Lingua Franca Tutorial

- EMSOFT Conference at Embedded Systems Week (ESWEEK) 2021 + EMSOFT Conference at{" "} + + Embedded Systems Week (ESWEEK) + {" "} + 2021

πŸ“… October 8, 2021 @@ -259,7 +267,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{" "} From 90effd297a00812b725c7a9c0cdadb7bdc4a114b Mon Sep 17 00:00:00 2001 From: Hokeun Kim Date: Wed, 1 Apr 2026 17:36:59 -0700 Subject: [PATCH 3/4] Icons and highlighting. --- src/pages/education.tsx | 92 ++++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 28 deletions(-) diff --git a/src/pages/education.tsx b/src/pages/education.tsx index 006caa858..3b6074f54 100644 --- a/src/pages/education.tsx +++ b/src/pages/education.tsx @@ -8,21 +8,26 @@ 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). + 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{" "} @@ -32,12 +37,14 @@ const labMaterials: EducationItem[] = [ rel="noopener noreferrer" > - Introduction to Embedded Systems: A Cyber-Physical Systems - Approach + + 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 text these labs are designed to accompany. + by Edward A. Lee and Sanjit A. Seshia{" "} + (2nd ed., MIT Press, 2017)β€”the standard CPS/embedded systems textbook.

), @@ -46,21 +53,24 @@ const labMaterials: EducationItem[] = [ 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: overview, CPS-focused demos, and - hands-on programming in C and Python. Offered during{" "} + 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 + CPS-IoT Week 2026 {" "} - (May 11–14, 2026, Saint Malo, France). + (May 11, 2026, Saint Malo, France).

), }, @@ -68,38 +78,43 @@ const upcomingTutorials: EducationItem[] = [ const pastTutorials: EducationItem[] = [ { + icon: "🎬", title: "Lingua Franca Tutorial at ESWEEK 2021", href: "/events/esweek-2021-tutorial/", description: (

- Recorded tutorial from EMSOFT as part of{" "} + Recorded tutorial from EMSOFT as part + of{" "} - Embedded Systems Week (ESWEEK) + 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. + 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{" "} + Curated video walkthroughs from past tutorials, + including sessions from the 2021{" "} - ESWeek + ESWeek {" "} - tutorial, for self-paced learning alongside the handbook. + tutorial, for self-paced learning alongside the{" "} + handbook.

), }, @@ -109,7 +124,19 @@ function EducationCard({ item }: { item: EducationItem }) { return (
- + + {item.external ? ( {item.title} @@ -135,24 +162,32 @@ export default function Education(): JSX.Element {
+ Education

- 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. + 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.

- Labs & courseware + + Labs & courseware {labMaterials.map((item) => ( ))} + Upcoming tutorials {upcomingTutorials.map((item) => ( @@ -160,6 +195,7 @@ export default function Education(): JSX.Element { ))} + Past tutorials {pastTutorials.map((item) => ( From da152b4305d972d4a004a4074c567b94be1f7efa Mon Sep 17 00:00:00 2001 From: Hokeun Kim Date: Wed, 1 Apr 2026 17:41:41 -0700 Subject: [PATCH 4/4] Revert link to ESWEEK. --- src/pages/events/esweek-2021-tutorial.tsx | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/pages/events/esweek-2021-tutorial.tsx b/src/pages/events/esweek-2021-tutorial.tsx index cb6c9311c..c42fb8620 100644 --- a/src/pages/events/esweek-2021-tutorial.tsx +++ b/src/pages/events/esweek-2021-tutorial.tsx @@ -239,15 +239,7 @@ export default function ESWEEKTutorial() { Lingua Franca Tutorial

- EMSOFT Conference at{" "} - - Embedded Systems Week (ESWEEK) - {" "} - 2021 + EMSOFT Conference at Embedded Systems Week (ESWEEK) 2021

πŸ“… October 8, 2021