@thanh01.pmt/curriculum-kit 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -4261,9 +4261,9 @@ _Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Format: Mermaid Diagrams + Printabl
4261
4261
  var SLIDE_LAYOUT_PRESETS = [
4262
4262
  {
4263
4263
  id: "title-hero",
4264
- name: "B\xECa & Gi\u1EDBi thi\u1EC7u (Title Cover)",
4264
+ name: "Title & Speaker Cover",
4265
4265
  category: "cover",
4266
- description: "Slide b\xECa m\u1EDF \u0111\u1EA7u \u1EA5n t\u01B0\u1EE3ng v\u1EDBi ti\xEAu \u0111\u1EC1 l\u1EDBn, ph\u1EE5 \u0111\u1EC1 v\xE0 th\xF4ng tin gi\u1EA3ng vi\xEAn.",
4266
+ description: "High-impact opening slide with large title, subtitle, and speaker credentials.",
4267
4267
  layout: {
4268
4268
  boxes: [
4269
4269
  {
@@ -4308,22 +4308,22 @@ var SLIDE_LAYOUT_PRESETS = [
4308
4308
  textAlign: center
4309
4309
  -->
4310
4310
 
4311
- # \u{1F680} Ti\xEAu \u0110\u1EC1 B\xE0i Gi\u1EA3ng Ch\xEDnh
4312
- ### Ph\u1EE5 \u0111\u1EC1 ng\u1EAFn g\u1ECDn, truy\u1EC1n c\u1EA3m h\u1EE9ng v\xE0 \u0111\u1ECBnh v\u1ECB m\u1EE5c ti\xEAu
4311
+ # \u{1F680} Engineering Scalable Cloud Systems
4312
+ ### Principles, Bottlenecks, and Real-World Architecture Patterns
4313
4313
 
4314
- **Gi\u1EA3ng vi\xEAn:** Th\u1EA7y Nguy\u1EC5n V\u0103n A | **Th\u1EDDi l\u01B0\u1EE3ng:** 45 ph\xFAt | **C\u1EA5p \u0111\u1ED9:** Trung c\u1EA5p
4314
+ **Presenter:** Senior Systems Architect | **Duration:** 45 mins | **Level:** Intermediate
4315
4315
 
4316
4316
  <!--
4317
4317
  Presenter Notes:
4318
- - Ch\xE0o m\u1EEBng h\u1ECDc vi\xEAn, gi\u1EDBi thi\u1EC7u m\u1EE5c ti\xEAu b\xE0i h\u1ECDc h\xF4m nay.
4319
- - Kh\u01A1i g\u1EE3i s\u1EF1 t\xF2 m\xF2 b\u1EB1ng c\xE2u h\u1ECFi m\u1EDF \u0111\u1EA7u v\u1EC1 b\xE0i to\xE1n th\u1EF1c t\u1EBF.
4318
+ - Welcome the audience and outline today's primary engineering goals.
4319
+ - Spark curiosity with an opening hook about scaling under high concurrency.
4320
4320
  -->`
4321
4321
  },
4322
4322
  {
4323
4323
  id: "two-column-split",
4324
- name: "So S\xE1nh 2 C\u1ED9t (2-Column Comparison)",
4324
+ name: "Two-Column Comparison",
4325
4325
  category: "split",
4326
- description: "B\u1ED1 c\u1EE5c chia \u0111\xF4i m\xE0n h\xECnh \u0111\u1EC3 so s\xE1nh ph\u01B0\u01A1ng ph\xE1p c\u0169 vs m\u1EDBi, l\xFD thuy\u1EBFt vs th\u1EF1c t\u1EBF.",
4326
+ description: "Balanced side-by-side comparison for legacy vs modern patterns or pros vs cons.",
4327
4327
  layout: {
4328
4328
  boxes: [
4329
4329
  {
@@ -4358,38 +4358,38 @@ Presenter Notes:
4358
4358
  pos: [670, 150, 530, 510]
4359
4359
  -->
4360
4360
 
4361
- ## \u2696\uFE0F So S\xE1nh Kh\xE1i Ni\u1EC7m & Gi\u1EA3i Ph\xE1p
4361
+ ## \u2696\uFE0F Monolithic Polling vs Event-Driven Architecture
4362
4362
 
4363
4363
  <div class="columns-2">
4364
4364
  <div>
4365
4365
 
4366
- ### \u{1F534} C\xE1ch Ti\u1EBFp C\u1EADn C\u0169
4367
- - X\u1EED l\xFD th\u1EE7 c\xF4ng, t\u1ED1n nhi\u1EC1u nh\xE2n l\u1EF1c
4368
- - D\u1EC5 ph\xE1t sinh sai s\u1ED1 do thao t\xE1c l\u1EB7p l\u1EA1i
4369
- - Kh\xF3 m\u1EDF r\u1ED9ng khi t\u1EA3i t\u0103ng \u0111\u1ED9t bi\u1EBFn
4366
+ ### \u{1F534} Legacy Polling
4367
+ - Heavy database CPU overhead on idle cycles
4368
+ - High network latency between updates
4369
+ - Prone to cascading timeouts during spikes
4370
4370
 
4371
4371
  </div>
4372
4372
  <div>
4373
4373
 
4374
- ### \u{1F7E2} Gi\u1EA3i Ph\xE1p T\u1ED1i \u01AFu M\u1EDBi
4375
- - T\u1EF1 \u0111\u1ED9ng h\xF3a ho\xE0n to\xE0n lu\u1ED3ng x\u1EED l\xFD
4376
- - Gi\xE1m s\xE1t tr\u1EA1ng th\xE1i th\u1EDDi gian th\u1EF1c
4377
- - Kh\u1EA3 n\u0103ng co gi\xE3n linh ho\u1EA1t theo nhu c\u1EA7u
4374
+ ### \u{1F7E2} Event-Driven Streams
4375
+ - Real-time event propagation via webhooks
4376
+ - Zero idle compute waste with serverless consumers
4377
+ - Automatic backpressure and queue isolation
4378
4378
 
4379
4379
  </div>
4380
4380
  </div>
4381
4381
 
4382
4382
  <!--
4383
4383
  Presenter Notes:
4384
- - Nh\u1EA5n m\u1EA1nh \u0111i\u1EC3m ngh\u1EBDn l\u1EDBn nh\u1EA5t \u1EDF c\u1ED9t b\xEAn tr\xE1i.
4385
- - D\u1EABn ch\u1EE9ng s\u1ED1 li\u1EC7u th\u1EF1c t\u1EBF ch\u1EE9ng minh t\xEDnh hi\u1EC7u qu\u1EA3 c\u1EE7a c\u1ED9t ph\u1EA3i.
4384
+ - Emphasize the core failure mode of periodic polling under sudden load spikes.
4385
+ - Ask the room if anyone has experienced database lockups caused by polling loops.
4386
4386
  -->`
4387
4387
  },
4388
4388
  {
4389
4389
  id: "code-explainer",
4390
- name: "Gi\u1EA3i Th\xEDch Code (Code Walkthrough)",
4390
+ name: "Code Walkthrough & Analysis",
4391
4391
  category: "code",
4392
- description: "C\u1ED9t tr\xE1i hi\u1EC3n th\u1ECB code snippet c\xF3 \u0111\xE1nh s\u1ED1, c\u1ED9t ph\u1EA3i gi\u1EA3i th\xEDch t\u1EEBng b\u01B0\u1EDBc ho\u1EA1t \u0111\u1ED9ng.",
4392
+ description: "Syntax-highlighted code block on the left with step-by-step key annotations on the right.",
4393
4393
  layout: {
4394
4394
  boxes: [
4395
4395
  {
@@ -4424,16 +4424,16 @@ Presenter Notes:
4424
4424
  pos: [740, 135, 460, 535]
4425
4425
  -->
4426
4426
 
4427
- ## \u{1F4BB} Ph\xE2n T\xEDch C\u1EA5u Tr\xFAc M\xE3 Ngu\u1ED3n
4427
+ ## \u{1F4BB} Robust Async Transaction Pipeline
4428
4428
 
4429
4429
  <div class="columns-2">
4430
4430
  <div>
4431
4431
 
4432
4432
  \`\`\`ts
4433
- // Kh\u1EDFi t\u1EA1o quy tr\xECnh ki\u1EC3m tra d\u1EEF li\u1EC7u
4433
+ // Process payment with idempotency guarantee
4434
4434
  export async function processPayment(order: Order) {
4435
4435
  const isValid = await validateOrder(order);
4436
- if (!isValid) throw new Error("Invalid");
4436
+ if (!isValid) throw new Error("ValidationFailed");
4437
4437
 
4438
4438
  const receipt = await chargeCard(order);
4439
4439
  return sendConfirmation(receipt);
@@ -4443,25 +4443,26 @@ export async function processPayment(order: Order) {
4443
4443
  </div>
4444
4444
  <div>
4445
4445
 
4446
- ### \u{1F50D} 3 \u0110i\u1EC3m C\u1EA7n Ch\xFA \xDD:
4447
- 1. **Ki\u1EC3m tra s\u1EDBm (Guard Clause):** Ki\u1EC3m tra t\xEDnh h\u1EE3p l\u1EC7 ngay d\xF2ng 3 \u0111\u1EC3 tr\xE1nh g\u1ECDi h\xE0m t\u1ED1n chi ph\xED.
4448
- 2. **B\u1EA5t \u0111\u1ED3ng b\u1ED9 (Async/Await):** \u0110\u1EA3m b\u1EA3o th\u1EE9 t\u1EF1 g\u1ECDi API t\xE0i ch\xEDnh chu\u1EA9n x\xE1c.
4449
- 3. **Ph\u1EA3n h\u1ED3i ng\u01B0\u1EDDi d\xF9ng:** Tr\u1EA3 v\u1EC1 bi\xEAn lai ho\xE0n ch\u1EC9nh sau khi giao d\u1ECBch th\xE0nh c\xF4ng.
4446
+ ### \u{1F50D} Key Engineering Invariants:
4447
+ 1. **Early Guard Clause:** Validates payload immediately at line 3 before triggering external calls.
4448
+ 2. **Deterministic Sequence:** Enforces strict order of operations using native \`await\`.
4449
+ 3. **Audit Trail:** Returns immutable payment receipt upon successful execution.
4450
4450
 
4451
4451
  </div>
4452
4452
  </div>
4453
4453
 
4454
4454
  <!--
4455
4455
  Presenter Notes:
4456
- - Y\xEAu c\u1EA7u h\u1ECDc vi\xEAn x\xE1c \u0111\u1ECBnh d\xF2ng code n\xE0o l\xE0 r\u1EE7i ro nh\u1EA5t n\u1EBFu k\u1EBFt n\u1ED1i m\u1EA1ng b\u1ECB r\u1EDBt.
4457
- - Nh\u1EAFc l\u1EA1i nguy\xEAn t\u1EAFc Fail-Fast trong l\u1EADp tr\xECnh ph\xF2ng th\u1EE7.
4456
+ - Walk through lines 1 to 7 sequentially.
4457
+ - Cold-call check: "What happens if line 6 throws a network timeout?"
4458
+ - Cognitive scaffolding: Highlight the importance of idempotency keys in payment APIs.
4458
4459
  -->`
4459
4460
  },
4460
4461
  {
4461
4462
  id: "metrics-3-card",
4462
- name: "L\u01B0\u1EDBi 3 Ch\u1EC9 S\u1ED1 (3-Metric Dashboard)",
4463
+ name: "3-Metric Key Results Grid",
4463
4464
  category: "metrics",
4464
- description: "Hi\u1EC3n th\u1ECB 3 ch\u1EC9 s\u1ED1 quan tr\u1ECDng (KPIs, Benchmarks, Impact) d\u1EA1ng card n\u1ED5i b\u1EADt.",
4465
+ description: "Three high-visibility KPI stat cards for benchmarks, impact, and success criteria.",
4465
4466
  layout: {
4466
4467
  boxes: [
4467
4468
  {
@@ -4506,43 +4507,43 @@ Presenter Notes:
4506
4507
  pos: [860, 165, 340, 485]
4507
4508
  -->
4508
4509
 
4509
- ## \u{1F4CA} 3 Ch\u1EC9 S\u1ED1 Th\xE0nh C\xF4ng C\u1EE7a D\u1EF1 \xC1n
4510
+ ## \u{1F4CA} Performance & Reliability Benchmarks
4510
4511
 
4511
4512
  <div class="columns-3">
4512
4513
  <div>
4513
4514
 
4514
- # \u26A1 99.9%
4515
- ### \u0110\u1ED9 S\u1EB5n S\xE0ng (Uptime)
4516
- H\u1EC7 th\u1ED1ng v\u1EADn h\xE0nh li\xEAn t\u1EE5c 24/7 v\u1EDBi kh\u1EA3 n\u0103ng t\u1EF1 ph\u1EE5c h\u1ED3i l\u1ED7i t\u1EE9c th\xEC.
4515
+ # \u26A1 99.99%
4516
+ ### SLA Availability
4517
+ High-availability multi-region cluster with automated failover routing.
4517
4518
 
4518
4519
  </div>
4519
4520
  <div>
4520
4521
 
4521
- # \u{1F680} 10x
4522
- ### T\u1ED1c \u0110\u1ED9 X\u1EED L\xFD
4523
- R\xFAt ng\u1EAFn th\u1EDDi gian bi\xEAn d\u1ECBch v\xE0 ph\u1EA3n h\u1ED3i ng\u01B0\u1EDDi d\xF9ng t\u1EEB gi\xE2y xu\u1ED1ng mili-gi\xE2y.
4522
+ # \u{1F680} 15ms
4523
+ ### P99 Latency
4524
+ Sub-20ms roundtrip response time via distributed edge caching.
4524
4525
 
4525
4526
  </div>
4526
4527
  <div>
4527
4528
 
4528
- # \u{1F6E1}\uFE0F 0
4529
- ### L\u1ED7 H\u1ED5ng B\u1EA3o M\u1EADt
4530
- \u0110\u1EA1t chu\u1EA9n \u0111\xE1nh gi\xE1 an to\xE0n OWASP v\xE0 m\xE3 h\xF3a d\u1EEF li\u1EC7u \u0111\u1EA7u cu\u1ED1i.
4529
+ # \u{1F6E1}\uFE0F Zero
4530
+ ### Unhandled Breaches
4531
+ Full SOC2 Type II compliance and end-to-end payload encryption.
4531
4532
 
4532
4533
  </div>
4533
4534
  </div>
4534
4535
 
4535
4536
  <!--
4536
4537
  Presenter Notes:
4537
- - Tr\xECnh b\xE0y l\u1EA7n l\u01B0\u1EE3t 3 m\u1EE5c ti\xEAu \u0111o l\u01B0\u1EDDng \u0111\u01B0\u1EE3c c\u1EE7a h\u1EC7 th\u1ED1ng.
4538
- - Nh\u1EA5n m\u1EA1nh ch\u1EC9 s\u1ED1 th\u1EE9 2 l\xE0 tr\u1ECDng t\xE2m k\u1EF9 thu\u1EADt c\u1EE7a b\xE0i h\u1ECDc h\xF4m nay.
4538
+ - Highlight the 15ms P99 latency target as the primary technical milestone.
4539
+ - Connect these metrics directly to the architecture decisions discussed next.
4539
4540
  -->`
4540
4541
  },
4541
4542
  {
4542
4543
  id: "process-flow",
4543
- name: "S\u01A1 \u0110\u1ED3 Quy Tr\xECnh (Process / Flowchart)",
4544
+ name: "Architecture & Process Flow",
4544
4545
  category: "diagram",
4545
- description: "Quy tr\xECnh nhi\u1EC1u b\u01B0\u1EDBc v\u1EDBi s\u01A1 \u0111\u1ED3 Mermaid tr\u1EF1c quan k\xE8m ghi ch\xFA t\xF3m t\u1EAFt.",
4546
+ description: "Multi-stage workflow with responsive Mermaid diagram and phase summaries.",
4546
4547
  layout: {
4547
4548
  boxes: [
4548
4549
  {
@@ -4577,33 +4578,33 @@ Presenter Notes:
4577
4578
  pos: [80, 465, 1120, 205]
4578
4579
  -->
4579
4580
 
4580
- ## \u{1F504} Ki\u1EBFn Tr\xFAc Lu\u1ED3ng D\u1EEF Li\u1EC7u 4 B\u01B0\u1EDBc
4581
+ ## \u{1F504} End-to-End Data Ingestion Pipeline
4581
4582
 
4582
4583
  \`\`\`mermaid
4583
4584
  graph LR
4584
- A[1. Client Request] --> B[2. API Gateway]
4585
- B --> C[3. Auth Service]
4586
- C --> D[4. Database Cluster]
4585
+ A[1. Client Ingress] --> B[2. API Gateway]
4586
+ B --> C[3. Auth Verifier]
4587
+ C --> D[4. Distributed DB]
4587
4588
  style A fill:#0284c7,stroke:#38bdf8,stroke-width:2px,color:#fff
4588
4589
  style B fill:#1e293b,stroke:#64748b,stroke-width:2px,color:#fff
4589
4590
  style C fill:#059669,stroke:#34d399,stroke-width:2px,color:#fff
4590
4591
  style D fill:#7c3aed,stroke:#a78bfa,stroke-width:2px,color:#fff
4591
4592
  \`\`\`
4592
4593
 
4593
- - **Giai \u0111o\u1EA1n 1 & 2:** Ti\u1EBFp nh\u1EADn y\xEAu c\u1EA7u t\u1EEB client, \u0111i\u1EC1u h\u01B0\u1EDBng t\u1EA3i v\xE0 gi\u1EDBi h\u1EA1n t\u1EA7n su\u1EA5t (Rate Limiting).
4594
- - **Giai \u0111o\u1EA1n 3 & 4:** X\xE1c th\u1EF1c token JWT ph\xE2n quy\u1EC1n tr\u01B0\u1EDBc khi truy v\u1EA5n d\u1EEF li\u1EC7u t\u1EEB DB Cluster.
4594
+ - **Ingress & Gateway:** Rate-limits traffic and applies reverse-proxy load balancing.
4595
+ - **Verification & Storage:** Decodes cryptographic JWT tokens before transactional write commit.
4595
4596
 
4596
4597
  <!--
4597
4598
  Presenter Notes:
4598
- - Tr\u1ECF tr\u1EF1c ti\u1EBFp v\xE0o t\u1EEBng node c\u1EE7a s\u01A1 \u0111\u1ED3 Mermaid khi thuy\u1EBFt tr\xECnh.
4599
- - \u0110\u1EB7t c\xE2u h\u1ECFi: "N\u1EBFu b\u01B0\u1EDBc 3 th\u1EA5t b\u1EA1i th\xEC b\u01B0\u1EDBc 4 c\xF3 \u0111\u01B0\u1EE3c g\u1ECDi kh\xF4ng?"
4599
+ - Trace each hop across the diagram from left to right.
4600
+ - Ask: "Where should rate limiting be applied to prevent DDoS attacks?"
4600
4601
  -->`
4601
4602
  },
4602
4603
  {
4603
4604
  id: "quote-highlight",
4604
- name: "Th\xF4ng \u0110i\u1EC7p Then Ch\u1ED1t (Quote / Highlight)",
4605
+ name: "Core Principle & Quote Highlight",
4605
4606
  category: "quote",
4606
- description: "Tr\xEDch d\u1EABn danh ng\xF4n ho\u1EB7c nguy\xEAn t\u1EAFc v\xE0ng c\u1EA7n ghi nh\u1EDB s\xE2u s\u1EAFc.",
4607
+ description: "Prominent quote callout for fundamental engineering rules or memorable mantras.",
4607
4608
  layout: {
4608
4609
  boxes: [
4609
4610
  {
@@ -4634,23 +4635,23 @@ Presenter Notes:
4634
4635
  fontSize: 1.4rem
4635
4636
  -->
4636
4637
 
4637
- ## \u{1F4A1} Nguy\xEAn T\u1EAFc Thi\u1EBFt K\u1EBF C\u1ED1t L\xF5i
4638
+ ## \u{1F4A1} Foundational Architecture Principle
4638
4639
 
4639
- > "S\u1EF1 \u0111\u01A1n gi\u1EA3n l\xE0 \u0111i\u1EC1u ki\u1EC7n ti\xEAn quy\u1EBFt cho \u0111\u1ED9 tin c\u1EADy. M\u1ED9t ki\u1EBFn tr\xFAc t\u1ED1t l\xE0 khi b\u1EA5t k\u1EF3 l\u1EADp tr\xECnh vi\xEAn m\u1EDBi n\xE0o c\u0169ng c\xF3 th\u1EC3 \u0111\u1ECDc hi\u1EC3u lu\u1ED3ng ho\u1EA1t \u0111\u1ED9ng ch\u1EC9 sau 15 ph\xFAt."
4640
+ > "Simplicity is prerequisite for reliability. A well-engineered distributed system is one where a new engineer can understand the request flow within their first hour."
4640
4641
  >
4641
4642
  > \u2014 **Edsger W. Dijkstra**
4642
4643
 
4643
4644
  <!--
4644
4645
  Presenter Notes:
4645
- - D\u1EEBng l\u1EA1i 5 gi\xE2y im l\u1EB7ng \u0111\u1EC3 c\u1EA3 l\u1EDBp c\xF9ng suy ng\u1EABm v\u1EC1 th\xF4ng \u0111i\u1EC7p.
4646
- - Y\xEAu c\u1EA7u m\u1ED9t h\u1ECDc vi\xEAn chia s\u1EBB suy ngh\u0129 v\u1EC1 c\xE1ch \xE1p d\u1EE5ng nguy\xEAn t\u1EAFc n\xE0y v\xE0o b\xE0i t\u1EADp l\u1EDBn.
4646
+ - Pause for 5 seconds of silence to let the quote sink in.
4647
+ - Ask: "How do our current architectural choices reflect this principle?"
4647
4648
  -->`
4648
4649
  },
4649
4650
  {
4650
4651
  id: "quiz-checkpoint",
4651
- name: "Tr\u1EAFc Nghi\u1EC7m T\u01B0\u01A1ng T\xE1c (Quiz Checkpoint)",
4652
+ name: "Interactive Formative Checkpoint",
4652
4653
  category: "assessment",
4653
- description: "C\xE2u h\u1ECFi t\u01B0\u01A1ng t\xE1c Formative Checkpoint k\xE8m c\xE1c l\u1EF1a ch\u1ECDn A/B/C/D \u0111\u1EC3 l\u1EDBp b\xECnh ch\u1ECDn.",
4654
+ description: "Interactive multiple-choice diagnostic checkpoint with A/B/C/D voting options.",
4654
4655
  layout: {
4655
4656
  boxes: [
4656
4657
  {
@@ -4689,27 +4690,27 @@ Presenter Notes:
4689
4690
  fontSize: 1.15rem
4690
4691
  -->
4691
4692
 
4692
- ## \u{1F3AF} Ki\u1EC3m Tra Nhanh: B\u1EA1n \u0110\xE3 Hi\u1EC3u \u0110\xFAng?
4693
+ ## \u{1F3AF} Formative Checkpoint: Verify Your Understanding
4693
4694
 
4694
- > **C\xE2u h\u1ECFi:** Trong ki\u1EBFn tr\xFAc Microservices, c\u01A1 ch\u1EBF n\xE0o gi\xFAp \u0111\u1EA3m b\u1EA3o tin nh\u1EAFn kh\xF4ng b\u1ECB th\u1EA5t l\u1EA1c khi d\u1ECBch v\u1EE5 nh\u1EADn g\u1EB7p s\u1EF1 c\u1ED1 t\u1EA1m th\u1EDDi?
4695
+ > **Question:** In an event-driven architecture, which pattern guarantees that messages are never permanently lost if a downstream consumer crashes?
4695
4696
 
4696
- - **A.** G\u1ECDi API HTTP tr\u1EF1c ti\u1EBFp v\u1EDBi timeout ng\u1EAFn
4697
- - **B.** S\u1EED d\u1EE5ng Message Queue (H\xE0ng \u0111\u1EE3i tin nh\u1EAFn) c\xF3 c\u01A1 ch\u1EBF Retry & DLQ
4698
- - **C.** L\u01B0u t\u1EA1m v\xE0o b\u1ED9 nh\u1EDB RAM c\u1EE7a m\xE1y kh\xE1ch (Client In-Memory Storage)
4699
- - **D.** B\u1ECF qua tin nh\u1EAFn b\u1ECB l\u1ED7i v\xE0 th\xF4ng b\xE1o ng\u01B0\u1EDDi d\xF9ng g\u1EEDi l\u1EA1i t\u1EEB \u0111\u1EA7u
4697
+ - **A.** Direct synchronous HTTP request with short 2-second timeout
4698
+ - **B.** Persistent Message Broker with Dead-Letter Queue (DLQ) & retry policy
4699
+ - **C.** In-memory client RAM cache without persistence
4700
+ - **D.** Discarding failed packets and prompting the user to re-submit
4700
4701
 
4701
4702
  <!--
4702
4703
  Presenter Notes:
4703
- - D\xE0nh 30 gi\xE2y cho h\u1ECDc vi\xEAn gi\u01A1 tay ho\u1EB7c b\xECnh ch\u1ECDn \u0111\xE1p \xE1n.
4704
- - \u0110\xE1p \xE1n ch\xEDnh x\xE1c: B.
4705
- - Gi\u1EA3i th\xEDch v\xEC sao \u0111\xE1p \xE1n A v\xE0 C ti\u1EC1m \u1EA9n nguy c\u01A1 m\u1EA5t m\xE1t d\u1EEF li\u1EC7u nghi\xEAm tr\u1ECDng.
4704
+ - Give students 30 seconds to vote on option A, B, C, or D.
4705
+ - Correct answer: B.
4706
+ - Explain why options A and C introduce catastrophic data loss in production.
4706
4707
  -->`
4707
4708
  },
4708
4709
  {
4709
4710
  id: "tiered-practice-3cards",
4710
- name: "Th\u1EF1c H\xE0nh Ph\xE2n H\xF3a (Tiered Practice)",
4711
+ name: "Tiered Differentiation (Bronze / Silver / Gold)",
4711
4712
  category: "content",
4712
- description: "3 c\u1EA5p b\u1EADc nhi\u1EC7m v\u1EE5 \u0110\u1ED3ng - B\u1EA1c - V\xE0ng \u0111\u1EC3 h\u1ECDc sinh t\u1EF1 ch\u1ECDn m\u1EE9c th\u1EED th\xE1ch ph\xF9 h\u1EE3p.",
4713
+ description: "Three progressive competency tiers allowing self-paced learning acceleration.",
4713
4714
  layout: {
4714
4715
  boxes: [
4715
4716
  {
@@ -4752,46 +4753,46 @@ Presenter Notes:
4752
4753
  pos: [850, 140, 350, 520]
4753
4754
  -->
4754
4755
 
4755
- ## \u{1F6E0}\uFE0F Th\u1EED Th\xE1ch Ph\xE2n H\xF3a 3 C\u1EA5p \u0110\u1ED9 (Tiered Lab)
4756
+ ## \u{1F6E0}\uFE0F Hands-On Challenge: 3-Tier Differentiation
4756
4757
 
4757
4758
  <div class="columns-3">
4758
4759
  <div>
4759
4760
 
4760
- ### \u{1F949} H\u1EA1ng \u0110\u1ED3ng (Bronze)
4761
- - Vi\u1EBFt h\xE0m x\u1EED l\xFD c\u01A1 b\u1EA3n
4762
- - V\u01B0\u1EE3t qua 3 test case m\u1EABu
4763
- - *M\u1EE5c ti\xEAu: \u0110\u1EA1t chu\u1EA9n ki\u1EBFn th\u1EE9c c\u01A1 b\u1EA3n*
4761
+ ### \u{1F949} Bronze Tier
4762
+ - Implement baseline function
4763
+ - Pass 3 baseline unit tests
4764
+ - *Goal: Foundational mastery*
4764
4765
 
4765
4766
  </div>
4766
4767
  <div>
4767
4768
 
4768
- ### \u{1F948} H\u1EA1ng B\u1EA1c (Silver)
4769
- - Th\xEAm ki\u1EC3m tra \u0111i\u1EC1u ki\u1EC7n bi\xEAn
4770
- - T\u1ED1i \u01B0u \u0111\u1ED9 ph\u1EE9c t\u1EA1p thu\u1EADt to\xE1n O(N)
4771
- - *M\u1EE5c ti\xEAu: V\u1EEFng v\xE0ng k\u1EF9 n\u0103ng th\u1EF1c chi\u1EBFn*
4769
+ ### \u{1F948} Silver Tier
4770
+ - Add boundary error handling
4771
+ - Enforce O(N) memory complexity
4772
+ - *Goal: Production-ready code*
4772
4773
 
4773
4774
  </div>
4774
4775
  <div>
4775
4776
 
4776
- ### \u{1F947} H\u1EA1ng V\xE0ng (Gold)
4777
- - Thi\u1EBFt k\u1EBF t\xEDnh n\u0103ng m\u1EDF r\u1ED9ng
4778
- - Vi\u1EBFt Unit Test t\u1EF1 \u0111\u1ED9ng bao ph\u1EE7 90%
4779
- - *M\u1EE5c ti\xEAu: S\xE1ng t\u1EA1o & b\u1EE9t ph\xE1*
4777
+ ### \u{1F947} Gold Tier
4778
+ - Design distributed retry queue
4779
+ - Add 95% automated test coverage
4780
+ - *Goal: Architectural leadership*
4780
4781
 
4781
4782
  </div>
4782
4783
  </div>
4783
4784
 
4784
4785
  <!--
4785
4786
  Presenter Notes:
4786
- - To\xE0n b\u1ED9 l\u1EDBp \u0111\u1EC1u b\u1EAFt \u0111\u1EA7u t\u1EEB H\u1EA1ng \u0110\u1ED3ng \u0111\u1EC3 \u0111\u1EA3m b\u1EA3o hi\u1EC3u b\xE0i.
4787
- - Khuy\u1EBFn kh\xEDch h\u1ECDc vi\xEAn \u0111\xE3 xong Bronze ch\u1EE7 \u0111\u1ED9ng th\u1EED s\u1EE9c v\u1EDBi Silver v\xE0 Gold.
4787
+ - All learners begin at Bronze to establish baseline competency.
4788
+ - Accelerate self-directed learners to Silver and Gold as they complete each tier.
4788
4789
  -->`
4789
4790
  },
4790
4791
  {
4791
4792
  id: "agenda-timeline",
4792
- name: "L\u1ED9 Tr\xECnh Bu\u1ED5i H\u1ECDc (Agenda Table)",
4793
+ name: "Session Agenda & Milestones",
4793
4794
  category: "content",
4794
- description: "B\u1EA3ng l\u1ED9 tr\xECnh th\u1EDDi gian chi ti\u1EBFt theo t\u1EEBng giai \u0111o\u1EA1n v\xE0 s\u1EA3n ph\u1EA9m \u0111\u1EA7u ra.",
4795
+ description: "Structured time-budgeted agenda mapping stages to measurable deliverables.",
4795
4796
  layout: {
4796
4797
  boxes: [
4797
4798
  {
@@ -4818,25 +4819,25 @@ Presenter Notes:
4818
4819
  pos: [80, 140, 1120, 520]
4819
4820
  -->
4820
4821
 
4821
- ## \u{1F5FA}\uFE0F L\u1ED9 Tr\xECnh Ho\u1EA1t \u0110\u1ED9ng & M\u1EE5c Ti\xEAu
4822
+ ## \u{1F5FA}\uFE0F Milestone Roadmap & Time Budget
4822
4823
 
4823
- | Th\u1EDDi l\u01B0\u1EE3ng | Giai \u0111o\u1EA1n | Tr\u1ECDng t\xE2m ho\u1EA1t \u0111\u1ED9ng | K\u1EBFt qu\u1EA3 \u0111\u1EA1t \u0111\u01B0\u1EE3c |
4824
+ | Allocated Time | Session Stage | Core Learning Focus | Deliverable Milestone |
4824
4825
  |:---:|---|---|---|
4825
- | **05'** | Kh\u1EDFi \u0111\u1ED9ng | T\xECnh hu\u1ED1ng th\u1EF1c t\u1EBF & Th\u1EED th\xE1ch | Nh\u1EADn di\u1EC7n b\xE0i to\xE1n c\u1EA7n gi\u1EA3i |
4826
- | **15'** | Kh\xE1m ph\xE1 | Ph\xE2n t\xEDch 2 kh\xE1i ni\u1EC7m c\u1ED1t l\xF5i | Hi\u1EC3u b\u1EA3n ch\u1EA5t thu\u1EADt to\xE1n |
4827
- | **20'** | Th\u1EF1c h\xE0nh | Code Lab t\u1EA1i m\xE1y theo 3 b\u1EADc | Ho\xE0n th\xE0nh t\u1ED1i thi\u1EC3u H\u1EA1ng \u0110\u1ED3ng |
4828
- | **05'** | T\u1ED5ng k\u1EBFt | Tr\u1EAFc nghi\u1EC7m ph\u1EA3n x\u1EA1 & \u0110\xE1nh gi\xE1 | H\u1EC7 th\u1ED1ng h\xF3a to\xE0n b\u1ED9 ki\u1EBFn th\u1EE9c |
4826
+ | **05 mins** | Warm-Up | Real-World Scenario & Context | Identify system bottleneck |
4827
+ | **15 mins** | Concept Discovery | Core Architectural Patterns | Deconstruct message queue models |
4828
+ | **20 mins** | Hands-On Lab | Tiered Code Implementation | Complete Bronze + Silver tasks |
4829
+ | **05 mins** | Wrap-Up | Formative Checkpoint & Debrief | Consolidate key principles |
4829
4830
 
4830
4831
  <!--
4831
4832
  Presenter Notes:
4832
- - Gi\u1EDBi thi\u1EC7u t\u1ED5ng quan \u0111\u1EC3 h\u1ECDc vi\xEAn bi\u1EBFt r\xF5 c\u1EA5u tr\xFAc bu\u1ED5i h\u1ECDc v\xE0 ch\u1EE7 \u0111\u1ED9ng ph\xE2n b\u1ED5 th\u1EDDi gian.
4833
+ - Walk through the time budget so students understand expectations and pacing.
4833
4834
  -->`
4834
4835
  },
4835
4836
  {
4836
4837
  id: "takeaways-summary",
4837
- name: "T\u1ED5ng K\u1EBFt C\u1ED1t L\xF5i (Key Takeaways)",
4838
+ name: "Key Takeaways & Wrap-up",
4838
4839
  category: "content",
4839
- description: "Slide k\u1EBFt lu\u1EADn v\u1EDBi 3 b\xE0i h\u1ECDc \u0111\u1EAFt gi\xE1 nh\u1EA5t v\xE0 h\xE0nh \u0111\u1ED9ng ti\u1EBFp theo.",
4840
+ description: "Three memorable synthesis takeaways with actionable next steps.",
4840
4841
  layout: {
4841
4842
  boxes: [
4842
4843
  {
@@ -4875,18 +4876,18 @@ Presenter Notes:
4875
4876
  fontSize: 1.1rem
4876
4877
  -->
4877
4878
 
4878
- ## \u{1F3C1} 3 \u0110i\u1EC1u C\u1EA7n Nh\u1EDB Sau Bu\u1ED5i H\u1ECDc
4879
+ ## \u{1F3C1} Key Takeaways & Action Items
4879
4880
 
4880
- 1. **Hi\u1EC3u b\u1EA3n ch\u1EA5t tr\u01B0\u1EDBc khi vi\u1EBFt m\xE3:** Thu\u1EADt to\xE1n \u0111\xFAng lu\xF4n quan tr\u1ECDng h\u01A1n c\xFA ph\xE1p b\xF3ng b\u1EA9y.
4881
- 2. **Ki\u1EC3m so\xE1t \u0111i\u1EC1u ki\u1EC7n bi\xEAn:** 80% l\u1ED7i h\u1EC7 th\u1ED1ng ph\xE1t sinh t\u1EEB c\xE1c d\u1EEF li\u1EC7u \u0111\u1EA7u v\xE0o kh\xF4ng l\u01B0\u1EDDng tr\u01B0\u1EDBc.
4882
- 3. **Thi\u1EBFt k\u1EBF h\u01B0\u1EDBng m\xF4-\u0111un:** Chia nh\u1ECF v\u1EA5n \u0111\u1EC1 l\u1EDBn th\xE0nh c\xE1c h\xE0m \u0111\u1ED9c l\u1EADp d\u1EC5 ki\u1EC3m th\u1EED.
4881
+ 1. **Decouple Before Scaling:** Separate producer rate from consumer processing capacity.
4882
+ 2. **Design for Failure:** Always configure retries, backoff intervals, and dead-letter queues.
4883
+ 3. **Measure End-to-End:** Track P99 latency and error rates across all distributed boundaries.
4883
4884
 
4884
- > \u{1F4DD} **Nhi\u1EC7m v\u1EE5 v\u1EC1 nh\xE0:** Ho\xE0n thi\u1EC7n b\xE0i th\u1EF1c h\xE0nh H\u1EA1ng B\u1EA1c v\xE0 chu\u1EA9n b\u1ECB c\xE2u h\u1ECFi cho bu\u1ED5i Review tu\u1EA7n t\u1EDBi.
4885
+ > \u{1F4DD} **Next Action Item:** Complete the Silver Tier refactoring challenge before our next peer-review session.
4885
4886
 
4886
4887
  <!--
4887
4888
  Presenter Notes:
4888
- - T\xF3m t\u1EAFt s\xFAc t\xEDch trong 2 ph\xFAt cu\u1ED1i bu\u1ED5i.
4889
- - Tuy\xEAn d\u01B0\u01A1ng c\xE1c b\u1EA1n c\xF3 gi\u1EA3i ph\xE1p xu\u1EA5t s\u1EAFc trong ph\u1EA7n th\u1EF1c h\xE0nh.
4889
+ - Deliver a crisp 2-minute wrap-up reinforcing the 3 core takeaways.
4890
+ - Acknowledge strong peer collaboration during the hands-on lab.
4890
4891
  -->`
4891
4892
  }
4892
4893
  ];