meta: add interactive draft URL
This commit is contained in:
+159
-36
@@ -43,7 +43,8 @@
|
||||
"show_repository_qr": false,
|
||||
"height_cm": 2.6,
|
||||
"repeat_on_every_page": true,
|
||||
"replace_front_matter": true
|
||||
"replace_front_matter": true,
|
||||
"url": "https://dce7fb9d-7b2f-5d49-96a2-3a30d3070b84.mpabi.pl/c456b505-dc5c-4894-b832-bb4c5afd0feb"
|
||||
},
|
||||
"front_page_scope": {
|
||||
"title": "Cel karty",
|
||||
@@ -53,8 +54,20 @@
|
||||
},
|
||||
"side_margin_tree_layout": {
|
||||
"columns": [
|
||||
{"id": "zawodowe", "label": "TECH", "side": "left", "tree": "WE -> EK -> KW", "description": "Dowód z heap_4, ELF i Hazard3."},
|
||||
{"id": "ogolne", "label": "OG", "side": "right", "tree": "WE -> EN -> KW", "description": "Dobór polityki i interpretacja metryk."}
|
||||
{
|
||||
"id": "zawodowe",
|
||||
"label": "TECH",
|
||||
"side": "left",
|
||||
"tree": "WE -> EK -> KW",
|
||||
"description": "Dowód z heap_4, ELF i Hazard3."
|
||||
},
|
||||
{
|
||||
"id": "ogolne",
|
||||
"label": "OG",
|
||||
"side": "right",
|
||||
"tree": "WE -> EN -> KW",
|
||||
"description": "Dobór polityki i interpretacja metryk."
|
||||
}
|
||||
]
|
||||
},
|
||||
"learning_effects": {
|
||||
@@ -62,26 +75,36 @@
|
||||
"bloom_level": "Analiza",
|
||||
"label": "Polityka i metryki",
|
||||
"text": "Uczeń dobiera heap_1--heap_5 oraz odróżnia current free, largest free block i minimum-ever.",
|
||||
"assessment_criteria": ["K05.KW01"]
|
||||
"assessment_criteria": [
|
||||
"K05.KW01"
|
||||
]
|
||||
},
|
||||
"K05.EK01": {
|
||||
"bloom_level": "Zastosowanie",
|
||||
"label": "Fragmentacja i most ABI",
|
||||
"text": "Uczeń wykazuje komplet new/delete i odtwarza failure, koalescencję, retry oraz historyczny watermark.",
|
||||
"assessment_criteria": ["K05.KW01"]
|
||||
"assessment_criteria": [
|
||||
"K05.KW01"
|
||||
]
|
||||
}
|
||||
},
|
||||
"assessment_criteria": {
|
||||
"K05.KW01": {
|
||||
"text": "Program kończy się PASS; largest < request < total; pierwsza próba zawodzi bez zwiększenia success count; po koalescencji identyczna próba działa; current wraca do baseline, a minimum-ever zachowuje historię.",
|
||||
"learning_effects": ["K05.EN01", "K05.EK01"]
|
||||
"learning_effects": [
|
||||
"K05.EN01",
|
||||
"K05.EK01"
|
||||
]
|
||||
}
|
||||
},
|
||||
"educational_requirements": {
|
||||
"K05.WE01": {
|
||||
"text": "Dobranie i zbadanie polityki dynamicznej pamięci FreeRTOS dla C++.",
|
||||
"label": "Modele heapu i dowód fragmentacji",
|
||||
"learning_effects": ["K05.EN01", "K05.EK01"],
|
||||
"learning_effects": [
|
||||
"K05.EN01",
|
||||
"K05.EK01"
|
||||
],
|
||||
"learning_tree": {
|
||||
"schema": "we-learning-tree.v1",
|
||||
"policy": "Każdy wniosek o pojemności wskazuje total, largest i stan bloków; każdy operator ma symbol ABI.",
|
||||
@@ -96,7 +119,15 @@
|
||||
"tree_id": "K05.WE01.OG.LOCAL.MEM.POLICY.01",
|
||||
"text": "Dobiera model i interpretuje current, largest oraz minimum-ever.",
|
||||
"kw": [
|
||||
{"criterion_ref": "K05.KW01", "display": "KW LOCAL MEM.POLICY.01", "source": "LOCAL", "kind": "KW", "official": "MEM.POLICY", "local": "01", "text": "Uzasadnia heap_1, heap_4 i heap_5 dla trzech scenariuszy oraz nie myli total z largest."}
|
||||
{
|
||||
"criterion_ref": "K05.KW01",
|
||||
"display": "KW LOCAL MEM.POLICY.01",
|
||||
"source": "LOCAL",
|
||||
"kind": "KW",
|
||||
"official": "MEM.POLICY",
|
||||
"local": "01",
|
||||
"text": "Uzasadnia heap_1, heap_4 i heap_5 dla trzech scenariuszy oraz nie myli total z largest."
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -111,7 +142,15 @@
|
||||
"tree_id": "K05.WE01.TECH.LOCAL.DBG.HEAP.01",
|
||||
"text": "Koreluje adresy, statystyki, nagłówki bloków i symbole new/delete.",
|
||||
"kw": [
|
||||
{"criterion_ref": "K05.KW01", "display": "KW LOCAL DBG.HEAP.01", "source": "LOCAL", "kind": "KW", "official": "DBG.HEAP", "local": "01", "text": "Pokazuje failure, koalescencję, retry, 3/3/0 i historyczne minimum-ever."}
|
||||
{
|
||||
"criterion_ref": "K05.KW01",
|
||||
"display": "KW LOCAL DBG.HEAP.01",
|
||||
"source": "LOCAL",
|
||||
"kind": "KW",
|
||||
"official": "DBG.HEAP",
|
||||
"local": "01",
|
||||
"text": "Pokazuje failure, koalescencję, retry, 3/3/0 i historyczne minimum-ever."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -123,51 +162,125 @@
|
||||
"title": "Wybór heap_1--heap_5",
|
||||
"content_kind": "prose",
|
||||
"content_tex": "Porównaj możliwość free, koalescencję oraz źródło/regiony pamięci. Wybierz heap dla startup-only, jednej areny z delete i dwóch rozłącznych banków RAM.",
|
||||
"educational_requirement_refs": ["K05.WE01"],
|
||||
"learning_effect_refs": ["K05.EN01"],
|
||||
"assessment_criterion_refs": ["K05.KW01"],
|
||||
"area_tree_refs": ["K05.WE01.OG.LOCAL.MEM.POLICY.01"],
|
||||
"educational_requirement_refs": [
|
||||
"K05.WE01"
|
||||
],
|
||||
"learning_effect_refs": [
|
||||
"K05.EN01"
|
||||
],
|
||||
"assessment_criterion_refs": [
|
||||
"K05.KW01"
|
||||
],
|
||||
"area_tree_refs": [
|
||||
"K05.WE01.OG.LOCAL.MEM.POLICY.01"
|
||||
],
|
||||
"steps": [
|
||||
{"id": "S01", "title": "Uzasadnij heap_1, heap_4 i heap_5 dla trzech wdrożeń.", "tree_refs": ["K05.WE01.OG.LOCAL.MEM.POLICY.01"]},
|
||||
{"id": "S02", "title": "Wyjaśnij zależność heap_3 od libc i linkera.", "tree_refs": ["K05.WE01.OG.LOCAL.MEM.POLICY.01"]}
|
||||
{
|
||||
"id": "S01",
|
||||
"title": "Uzasadnij heap_1, heap_4 i heap_5 dla trzech wdrożeń.",
|
||||
"tree_refs": [
|
||||
"K05.WE01.OG.LOCAL.MEM.POLICY.01"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "S02",
|
||||
"title": "Wyjaśnij zależność heap_3 od libc i linkera.",
|
||||
"tree_refs": [
|
||||
"K05.WE01.OG.LOCAL.MEM.POLICY.01"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Kompletny most C++",
|
||||
"content_kind": "prose",
|
||||
"content_tex": "Odszukaj scalar/array new oraz sized/unsized scalar/array delete. Zwykłe new jest fail-fast; raw pvPortMalloc pozostaje fallible.",
|
||||
"educational_requirement_refs": ["K05.WE01"],
|
||||
"learning_effect_refs": ["K05.EK01"],
|
||||
"assessment_criterion_refs": ["K05.KW01"],
|
||||
"area_tree_refs": ["K05.WE01.TECH.LOCAL.DBG.HEAP.01"],
|
||||
"educational_requirement_refs": [
|
||||
"K05.WE01"
|
||||
],
|
||||
"learning_effect_refs": [
|
||||
"K05.EK01"
|
||||
],
|
||||
"assessment_criterion_refs": [
|
||||
"K05.KW01"
|
||||
],
|
||||
"area_tree_refs": [
|
||||
"K05.WE01.TECH.LOCAL.DBG.HEAP.01"
|
||||
],
|
||||
"steps": [
|
||||
{"id": "S03", "title": "Potwierdź sześć symboli alokacji/dealokacji w ELF.", "tree_refs": ["K05.WE01.TECH.LOCAL.DBG.HEAP.01"]},
|
||||
{"id": "S04", "title": "Rozdziel fail-fast new od kontrolowanego raw probe.", "tree_refs": ["K05.WE01.TECH.LOCAL.DBG.HEAP.01"]}
|
||||
{
|
||||
"id": "S03",
|
||||
"title": "Potwierdź sześć symboli alokacji/dealokacji w ELF.",
|
||||
"tree_refs": [
|
||||
"K05.WE01.TECH.LOCAL.DBG.HEAP.01"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "S04",
|
||||
"title": "Rozdziel fail-fast new od kontrolowanego raw probe.",
|
||||
"tree_refs": [
|
||||
"K05.WE01.TECH.LOCAL.DBG.HEAP.01"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Fragmentacja, koalescencja i retry",
|
||||
"content_kind": "prose",
|
||||
"content_tex": "Zwolnij A i C wokół żywego B. Udowodnij largest < request < total oraz failure. Zwolnij B i ponów identyczne żądanie po koalescencji.",
|
||||
"educational_requirement_refs": ["K05.WE01"],
|
||||
"learning_effect_refs": ["K05.EK01"],
|
||||
"assessment_criterion_refs": ["K05.KW01"],
|
||||
"area_tree_refs": ["K05.WE01.TECH.LOCAL.DBG.HEAP.01"],
|
||||
"educational_requirement_refs": [
|
||||
"K05.WE01"
|
||||
],
|
||||
"learning_effect_refs": [
|
||||
"K05.EK01"
|
||||
],
|
||||
"assessment_criterion_refs": [
|
||||
"K05.KW01"
|
||||
],
|
||||
"area_tree_refs": [
|
||||
"K05.WE01.TECH.LOCAL.DBG.HEAP.01"
|
||||
],
|
||||
"steps": [
|
||||
{"id": "S05", "title": "Zapisz dwa free blocks oraz relację request między largest i total.", "tree_refs": ["K05.WE01.TECH.LOCAL.DBG.HEAP.01"]},
|
||||
{"id": "S06", "title": "Pokaż jeden blok po free B i udany retry.", "tree_refs": ["K05.WE01.TECH.LOCAL.DBG.HEAP.01"]}
|
||||
{
|
||||
"id": "S05",
|
||||
"title": "Zapisz dwa free blocks oraz relację request między largest i total.",
|
||||
"tree_refs": [
|
||||
"K05.WE01.TECH.LOCAL.DBG.HEAP.01"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "S06",
|
||||
"title": "Pokaż jeden blok po free B i udany retry.",
|
||||
"tree_refs": [
|
||||
"K05.WE01.TECH.LOCAL.DBG.HEAP.01"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Watermark zachowuje historię",
|
||||
"content_kind": "prose",
|
||||
"content_tex": "Po finalnym free current wraca do baseline, ale minimum-ever pozostaje historycznym minimum. Wylicz peak = baseline - minimum-ever.",
|
||||
"educational_requirement_refs": ["K05.WE01"],
|
||||
"learning_effect_refs": ["K05.EN01"],
|
||||
"assessment_criterion_refs": ["K05.KW01"],
|
||||
"area_tree_refs": ["K05.WE01.OG.LOCAL.MEM.POLICY.01"],
|
||||
"educational_requirement_refs": [
|
||||
"K05.WE01"
|
||||
],
|
||||
"learning_effect_refs": [
|
||||
"K05.EN01"
|
||||
],
|
||||
"assessment_criterion_refs": [
|
||||
"K05.KW01"
|
||||
],
|
||||
"area_tree_refs": [
|
||||
"K05.WE01.OG.LOCAL.MEM.POLICY.01"
|
||||
],
|
||||
"steps": [
|
||||
{"id": "S07", "title": "Porównaj final current z minimum-ever i wylicz peak.", "tree_refs": ["K05.WE01.OG.LOCAL.MEM.POLICY.01"]}
|
||||
{
|
||||
"id": "S07",
|
||||
"title": "Porównaj final current z minimum-ever i wylicz peak.",
|
||||
"tree_refs": [
|
||||
"K05.WE01.OG.LOCAL.MEM.POLICY.01"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -177,11 +290,21 @@
|
||||
"uuid": "c456b505-dc5c-4894-b832-bb4c5afd0feb",
|
||||
"prompt_tex": "Wybierz model heapu, sprawdź most ABI, a następnie odtwórz siedem checkpointów i udowodnij failure mimo wystarczającej sumy free, udany retry po koalescencji oraz zachowanie minimum-ever.",
|
||||
"criterion": "Sześć symboli; largest < request < total; failure bez success increment; jeden blok po free B; retry działa; 3/3/0; current=baseline; minimum-ever<current; pass=1.",
|
||||
"educational_requirement_refs": ["K05.WE01"],
|
||||
"learning_effect_refs": ["K05.EN01", "K05.EK01"],
|
||||
"educational_requirement_refs": [
|
||||
"K05.WE01"
|
||||
],
|
||||
"learning_effect_refs": [
|
||||
"K05.EN01",
|
||||
"K05.EK01"
|
||||
],
|
||||
"assessment_criterion_ref": "K05.KW01",
|
||||
"links": {"equations": [], "figures": []}
|
||||
"links": {
|
||||
"equations": [],
|
||||
"figures": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"tasks_order": ["task01"]
|
||||
"tasks_order": [
|
||||
"task01"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user