feat: add organization-per-series EDU catalog
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"id": "boost-asio",
|
||||
"title": "Boost.Asio",
|
||||
"catalog_only": true,
|
||||
"status": "scope-reserved",
|
||||
"cards": []
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"id": "c",
|
||||
"title": "C · Freestanding RV32I and K&R",
|
||||
"catalog_only": true,
|
||||
"cards": [
|
||||
{"id": "C01", "repo": "lab-rv32i-strlen-asm-c-gcc", "number": "01", "title": "ASM, C and GCC", "status": "existing"},
|
||||
{"id": "C02", "repo": "lab-rv32i-strlen-bss-data-stack", "number": "02", "title": ".bss, .data and static storage", "status": "existing"},
|
||||
{"id": "C03", "repo": "lab-rv32i-strlen-abi-stack", "number": "03", "title": "ABI and Stack Frame", "status": "existing"},
|
||||
{"id": "C04", "repo": "lab-rv32i-c-types-operators-expressions", "number": "04", "title": "Types, Operators and Expressions", "status": "existing"},
|
||||
{"id": "C05", "repo": "lab-rv32i-c-control-flow", "number": "05", "title": "Control Flow", "status": "existing"},
|
||||
{"id": "C06", "repo": "lab-rv32i-c-functions-program-structure", "number": "06", "title": "Functions and Program Structure", "status": "existing"},
|
||||
{"id": "C07", "repo": "lab-rv32i-c-pointers-arrays", "number": "07", "title": "Pointers, Arrays and Linear Allocator", "status": "existing"},
|
||||
{"id": "C08", "repo": "lab-rv32i-c-structures", "number": "08", "title": "Structures and Linked State", "status": "existing"},
|
||||
{"id": "C09", "repo": "lab-rv32i-c-smalloc-sbrk-libc", "number": "09", "title": "smalloc, sbrk and minimal libc", "status": "planned"},
|
||||
{"id": "C10", "repo": "lab-rv32i-c-interrupts", "number": "10", "title": "RV32I Traps and Interrupt Control", "status": "planned"},
|
||||
{"id": "C11", "repo": "lab-rv32i-c-timer", "number": "11", "title": "Machine Timer and Periodic Work", "status": "planned"},
|
||||
{"id": "C12", "repo": "lab-rv32i-c-uart", "number": "12", "title": "UART — polling and interrupts", "status": "planned"},
|
||||
{"id": "C13", "repo": "lab-rv32i-c-gpio", "number": "13", "title": "GPIO, Edges and Debounce", "status": "planned"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "console-bash",
|
||||
"title": "Bash · Console Tools",
|
||||
"catalog_only": true,
|
||||
"cards": [
|
||||
{"id": "L01", "repo": "lab-console-busybox", "number": "01", "title": "BusyBox — the Swiss Army Knife", "status": "planned"},
|
||||
{"id": "L02", "repo": "lab-console-tmux", "number": "02", "title": "Tmux — sessions, windows and panes", "status": "planned"},
|
||||
{"id": "L03", "repo": "lab-console-neovim", "number": "03", "title": "Neovim — navigation and editing", "status": "planned"},
|
||||
{"id": "L04", "repo": "lab-console-git-basics-1", "number": "04", "title": "Git Basics I — status, add and commit", "status": "planned"},
|
||||
{"id": "L05", "repo": "lab-console-git-basics-2", "number": "05", "title": "Git Basics II — log, diff and restore", "status": "planned"},
|
||||
{"id": "L06", "repo": "lab-console-git-branching-1", "number": "06", "title": "Git Branching I — branch, switch and merge", "status": "planned"},
|
||||
{"id": "L07", "repo": "lab-console-git-branching-2", "number": "07", "title": "Git Branching II — rebase and conflicts", "status": "planned"},
|
||||
{"id": "L08", "repo": "lab-console-docker", "number": "08", "title": "Docker Fundamentals", "status": "planned"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": "cpp",
|
||||
"title": "C++",
|
||||
"catalog_only": true,
|
||||
"cards": [
|
||||
{"id": "CPP01", "repo": "lab-cpp-build-namespaces", "number": "01", "title": "Translation Units, Linkage and Namespaces", "status": "planned"},
|
||||
{"id": "CPP02", "repo": "lab-cpp-classes-invariants", "number": "02", "title": "Classes, Encapsulation and Invariants", "status": "planned"},
|
||||
{"id": "CPP03", "repo": "lab-cpp-lifetime-raii", "number": "03", "title": "Construction, Destruction and RAII", "status": "planned"},
|
||||
{"id": "CPP04", "repo": "lab-cpp-references-const", "number": "04", "title": "References, const and Value Categories", "status": "planned"},
|
||||
{"id": "CPP05", "repo": "lab-cpp-copy-move", "number": "05", "title": "Copy, Move and the Rule of Zero/Five", "status": "planned"},
|
||||
{"id": "CPP06", "repo": "lab-cpp-ownership", "number": "06", "title": "Ownership and Resource Types", "status": "planned"},
|
||||
{"id": "CPP07", "repo": "lab-cpp-templates", "number": "07", "title": "Function and Class Templates", "status": "planned"},
|
||||
{"id": "CPP08", "repo": "lab-cpp-static-polymorphism", "number": "08", "title": "Static Polymorphism and CRTP", "status": "planned"},
|
||||
{"id": "CPP09", "repo": "lab-cpp-dynamic-polymorphism", "number": "09", "title": "Inheritance, Interfaces and Dynamic Dispatch", "status": "planned"},
|
||||
{"id": "CPP10", "repo": "lab-cpp-strong-types", "number": "10", "title": "Operator Overloading and Strong Types", "status": "planned"},
|
||||
{"id": "CPP11", "repo": "lab-cpp-containers-iterators", "number": "11", "title": "Containers, Iterators and Algorithms", "status": "planned"},
|
||||
{"id": "CPP12", "repo": "lab-cpp-lambdas-callables", "number": "12", "title": "Lambdas, Function Objects and Callables", "status": "planned"},
|
||||
{"id": "CPP13", "repo": "lab-cpp-error-models", "number": "13", "title": "Error Models with and without Exceptions", "status": "planned"},
|
||||
{"id": "CPP14", "repo": "lab-cpp-abi-evidence", "number": "14", "title": "Object Layout, ABI and Binary Evidence", "status": "planned"},
|
||||
{"id": "CPP15", "repo": "lab-cpp-resource-integration", "number": "15", "title": "Resource-type Integration Project", "status": "planned"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": "freertos-c",
|
||||
"title": "FreeRTOS C",
|
||||
"catalog_only": true,
|
||||
"cards": [
|
||||
{"id": "FC01", "repo": "lab-rv32i-freertos-heap4", "number": "01", "title": "heap_1–heap_5 and heap_4 mechanics", "status": "existing"},
|
||||
{"id": "FC02", "repo": "lab-rv32i-freertos-c-first-task", "number": "02", "title": "First Task, TCB and Task Stack", "status": "existing"},
|
||||
{"id": "FC03", "repo": "lab-rv32i-freertos-c-scheduler", "number": "03", "title": "Tick, Scheduler, Priorities and Time Slicing", "status": "existing"},
|
||||
{"id": "FC04", "repo": "lab-rv32i-freertos-c-delay-state", "number": "04", "title": "Delay, Blocking and Task States", "status": "existing"},
|
||||
{"id": "FC05", "repo": "lab-rv32i-freertos-c-queue", "number": "05", "title": "Queues and Byte-copy Semantics", "status": "existing"},
|
||||
{"id": "FC06", "repo": "lab-rv32i-freertos-c-software-timers", "number": "06", "title": "Software Timers and the Daemon Task", "status": "existing"},
|
||||
{"id": "FC07", "repo": "lab-rv32i-freertos-c-isr-semaphore", "number": "07", "title": "Interrupt-safe API and Semaphore Handoff", "status": "existing"},
|
||||
{"id": "FC08", "repo": "lab-rv32i-freertos-c-resource-management", "number": "08", "title": "Critical Sections, Mutexes and Priority Inheritance", "status": "existing"},
|
||||
{"id": "FC09", "repo": "lab-rv32i-freertos-c-event-groups", "number": "09", "title": "Event Groups and Multi-event Synchronization", "status": "existing"},
|
||||
{"id": "FC10", "repo": "lab-rv32i-freertos-c-notifications", "number": "10", "title": "Direct-to-task Notifications", "status": "existing"},
|
||||
{"id": "FC11", "repo": "lab-rv32i-freertos-c-static-allocation", "number": "11", "title": "Static Allocation and Bounded Storage", "status": "existing"},
|
||||
{"id": "FC12", "repo": "lab-rv32i-freertos-c-diagnostics", "number": "12", "title": "Assertions, Hooks, Stack Checks and Runtime Diagnostics", "status": "planned"},
|
||||
{"id": "FC13", "repo": "lab-rv32i-freertos-c-uart", "number": "13", "title": "UART Interrupt-to-task Pipeline", "status": "planned"},
|
||||
{"id": "FC14", "repo": "lab-rv32i-freertos-c-gpio-timer", "number": "14", "title": "GPIO, Hardware Timer and Deferred Work", "status": "planned"},
|
||||
{"id": "FC15", "repo": "lab-rv32i-freertos-c-integration", "number": "15", "title": "Integrated Deterministic FreeRTOS C Application", "status": "planned"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": "freertos-cpp",
|
||||
"title": "FreeRTOS C++",
|
||||
"catalog_only": true,
|
||||
"cards": [
|
||||
{"id": "K02", "repo": "lab-rv32i-freertos-task-stack-vector", "number": "02", "title": "First Task, Stack, Tick, Scheduler and Vector V0", "status": "existing"},
|
||||
{"id": "K03", "repo": "lab-rv32i-freertos-vector-raii", "number": "03", "title": "Vector V1 — Destructor, Move, Ownership and RAII", "status": "planned"},
|
||||
{"id": "K04", "repo": "lab-rv32i-freertos-scheduler-states", "number": "04", "title": "Scheduler States, Priorities and Typed Ticks", "status": "planned"},
|
||||
{"id": "K05", "repo": "lab-rv32i-freertos-heap-models", "number": "05", "title": "C++ Heap Bridge, Heap Models and HeapStats", "status": "planned"},
|
||||
{"id": "K06", "repo": "lab-rv32i-freertos-allocator-resource", "number": "06", "title": "MemoryResource and FreeRtosAllocator<T>", "status": "planned"},
|
||||
{"id": "K07", "repo": "lab-rv32i-freertos-task-wrapper", "number": "07", "title": "TaskHandle_t, Explicit Start and Static Trampoline", "status": "planned"},
|
||||
{"id": "K08", "repo": "lab-rv32i-freertos-static-task", "number": "08", "title": "DynamicTask, StaticTask, Deletion and Lifetime", "status": "planned"},
|
||||
{"id": "K09", "repo": "lab-rv32i-freertos-kernel-facade", "number": "09", "title": "Scheduler Facade and Scoped Kernel Guards", "status": "planned"},
|
||||
{"id": "K10", "repo": "lab-rv32i-freertos-queue", "number": "10", "title": "Queue<T> and StaticQueue<T, N>", "status": "planned"},
|
||||
{"id": "K11", "repo": "lab-rv32i-freertos-mutex", "number": "11", "title": "Mutex, LockGuard and Priority Inheritance", "status": "planned"},
|
||||
{"id": "K12", "repo": "lab-rv32i-freertos-semaphore-notify", "number": "12", "title": "Semaphores and Task Notifications", "status": "planned"},
|
||||
{"id": "K13", "repo": "lab-rv32i-freertos-event-group", "number": "13", "title": "EventGroup and Coordinated State", "status": "planned"},
|
||||
{"id": "K14", "repo": "lab-rv32i-freertos-sw-timer", "number": "14", "title": "Software Timer and the Timer Daemon Task", "status": "planned"},
|
||||
{"id": "K15", "repo": "lab-rv32i-freertos-isr-drivers", "number": "15", "title": "Explicit FromISR, UART and GPIO Wrappers", "status": "planned"},
|
||||
{"id": "K16", "repo": "lab-rv32i-freertos-integration", "number": "16", "title": "Integrated Real-time Application and Evidence", "status": "planned"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"id": "modern-cpp-stl",
|
||||
"title": "Modern C++ / STL",
|
||||
"catalog_only": true,
|
||||
"status": "scope-reserved",
|
||||
"cards": []
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"id": "oop",
|
||||
"title": "OOP and Design Patterns",
|
||||
"catalog_only": true,
|
||||
"role": "reference",
|
||||
"cards": [
|
||||
{"id": "OOP01", "repo": "lab-cpp-oop-strategy", "number": "01", "title": "Strategy — Replaceable Behaviour", "status": "design"},
|
||||
{"id": "OOP02", "repo": "lab-cpp-oop-adapter", "number": "02", "title": "Adapter — Stable Boundary", "status": "planned"},
|
||||
{"id": "OOP03", "repo": "lab-cpp-oop-template-method", "number": "03", "title": "Template Method — Fixed Skeleton", "status": "planned"},
|
||||
{"id": "OOP04", "repo": "lab-cpp-oop-dispatch", "number": "04", "title": "Static vs Dynamic Dispatch", "status": "planned"},
|
||||
{"id": "OOP05", "repo": "lab-cpp-oop-raii", "number": "05", "title": "RAII and Ownership", "status": "planned"},
|
||||
{"id": "OOP06", "repo": "lab-cpp-oop-state", "number": "06", "title": "State — Explicit Behaviour", "status": "planned"},
|
||||
{"id": "OOP07", "repo": "lab-cpp-oop-facade", "number": "07", "title": "Facade — Subsystem Boundary", "status": "planned"},
|
||||
{"id": "OOP08", "repo": "lab-cpp-oop-command", "number": "08", "title": "Command — Request as Object", "status": "planned"},
|
||||
{"id": "OOP09", "repo": "lab-cpp-oop-observer", "number": "09", "title": "Observer — Subscription and Telemetry", "status": "planned"},
|
||||
{"id": "OOP10", "repo": "lab-cpp-oop-factory-method", "number": "10", "title": "Factory Method — Resource Policy", "status": "planned"},
|
||||
{"id": "OOP11", "repo": "lab-cpp-oop-builder", "number": "11", "title": "Builder — Valid Configuration", "status": "planned"},
|
||||
{"id": "OOP12", "repo": "lab-cpp-oop-decorator", "number": "12", "title": "Decorator — Measurement and Diagnostics", "status": "planned"},
|
||||
{"id": "OOP13", "repo": "lab-cpp-oop-composite", "number": "13", "title": "Composite — Component Tree", "status": "planned"},
|
||||
{"id": "OOP14", "repo": "lab-cpp-oop-chain", "number": "14", "title": "Chain of Responsibility", "status": "planned"},
|
||||
{"id": "OOP15", "repo": "lab-cpp-oop-integration", "number": "15", "title": "Pattern-language Integration", "status": "planned"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": "posix-threads",
|
||||
"title": "POSIX Threads",
|
||||
"catalog_only": true,
|
||||
"cards": [
|
||||
{"id": "PT01", "repo": "lab-posix-process-thread", "number": "01", "title": "Process and Thread Execution Context", "status": "planned"},
|
||||
{"id": "PT02", "repo": "lab-posix-pthread-create-join", "number": "02", "title": "pthread_create, pthread_join and Lifecycle", "status": "planned"},
|
||||
{"id": "PT03", "repo": "lab-posix-thread-arguments", "number": "03", "title": "Arguments, Return Values and Ownership", "status": "planned"},
|
||||
{"id": "PT04", "repo": "lab-posix-data-races", "number": "04", "title": "Data Races and the Happens-before Question", "status": "planned"},
|
||||
{"id": "PT05", "repo": "lab-posix-mutex", "number": "05", "title": "Mutex, Critical Section and Deadlock", "status": "planned"},
|
||||
{"id": "PT06", "repo": "lab-posix-condition-variable", "number": "06", "title": "Condition Variables and Predicates", "status": "planned"},
|
||||
{"id": "PT07", "repo": "lab-posix-producer-consumer", "number": "07", "title": "Bounded Producer–Consumer Queue", "status": "planned"},
|
||||
{"id": "PT08", "repo": "lab-posix-semaphore", "number": "08", "title": "POSIX Semaphores", "status": "planned"},
|
||||
{"id": "PT09", "repo": "lab-posix-rwlock", "number": "09", "title": "Reader–Writer Lock", "status": "planned"},
|
||||
{"id": "PT10", "repo": "lab-posix-atomics", "number": "10", "title": "C Atomics and Memory Ordering", "status": "planned"},
|
||||
{"id": "PT11", "repo": "lab-posix-cancellation-cleanup", "number": "11", "title": "Cancellation, Cleanup and Safe Shutdown", "status": "planned"},
|
||||
{"id": "PT12", "repo": "lab-posix-thread-local", "number": "12", "title": "Thread-local Storage", "status": "planned"},
|
||||
{"id": "PT13", "repo": "lab-posix-scheduling", "number": "13", "title": "Scheduling Policy, Priority and Affinity", "status": "planned"},
|
||||
{"id": "PT14", "repo": "lab-posix-thread-debugging", "number": "14", "title": "GDB, Sanitizers and Race Evidence", "status": "planned"},
|
||||
{"id": "PT15", "repo": "lab-posix-freertos-comparison", "number": "15", "title": "POSIX Threads vs FreeRTOS Integration", "status": "planned"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"id": "rv32i-asm",
|
||||
"title": "ASM · RV32I From Blinker to RISC-V",
|
||||
"catalog_only": true,
|
||||
"cards": [
|
||||
{"id": "L01", "repo": "lab-rv32i-asm-number-systems", "number": "01", "title": "Number Systems and Storage", "status": "planned"},
|
||||
{"id": "L02", "repo": "lab-rv32i-asm-fpga-bringup", "number": "02", "title": "FPGA Bring-up and Programming", "status": "planned"},
|
||||
{"id": "L03", "repo": "lab-rv32i-asm-blinker", "number": "03", "title": "Blinker and Synchronous Logic", "status": "planned"},
|
||||
{"id": "L04", "repo": "lab-rv32i-asm-decoder", "number": "04", "title": "The RISC-V ISA and Instruction Decoder", "status": "planned"},
|
||||
{"id": "L05", "repo": "lab-rv32i-asm-alu", "number": "05", "title": "ALU and the Verilog Assembler", "status": "planned"},
|
||||
{"id": "L06", "repo": "lab-rv32i-asm-control-flow", "number": "06", "title": "Control Flow — Jumps and Branches", "status": "planned"},
|
||||
{"id": "L07", "repo": "lab-rv32i-asm-addresses-memory", "number": "07", "title": "Addresses and Memory", "status": "planned"},
|
||||
{"id": "L08", "repo": "lab-rv32i-asm-subroutines-abi", "number": "08", "title": "Subroutines and the RISC-V ABI", "status": "planned"},
|
||||
{"id": "L09", "repo": "lab-rv32i-asm-load-store", "number": "09", "title": "Load and Store", "status": "planned"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"id": "std-threads",
|
||||
"title": "std::thread / std::jthread",
|
||||
"catalog_only": true,
|
||||
"status": "scope-reserved",
|
||||
"cards": []
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"id": "transformers-gpu",
|
||||
"title": "Transformers on GPU",
|
||||
"catalog_only": true,
|
||||
"status": "scope-reserved",
|
||||
"cards": []
|
||||
}
|
||||
Reference in New Issue
Block a user