Classroom Glossary Public page

CSA-201 Continuation Note

706 words

For the next build round.

This build round shipped: CSA-201-OUTLINE.md, SETUP.md, CAPSTONE.md, INSTRUCTOR-GUIDE.md (skeleton), weeks 1-6 (full content), and labs 1-6 (full specifications). The course is at v0.1 pilot-ready for the first six modules.


Weeks remaining

The following content files do not exist yet and are the primary deliverable for the next build round:

File Module Topic Key reference
week-7-sv32-mmu.md 7 Sv32 paged virtual memory + MMU P&H Ch 5 (memory hierarchy); CSAPP Ch 9 (virtual memory); vca-csa-201/hdl/core/mmu.v + tlb.v + ptw.v (F7 dispatch)
week-8-pmp-wx.md 8 PMP + W^X enforcement RISC-V Privileged ISA Vol II §3.7 (PMP); vca-csa-201/hdl/core/pmp.v + pmp_checker.v (F5 dispatch)
week-9-stack-canaries-cfi.md 9 Stack canaries + CFI CSAPP Ch 3.10 (buffer overflow); Petzold Ch 22; x86_64 CET vs RISC-V Zicfilp/Zicfiss
week-10-tracing-gc.md 10 Tracing garbage collection CSAPP Ch 9.9 (garbage collection); Appel Modern Compiler Ch 16; mark-and-sweep algorithm
week-11-preemption-scheduler.md 11 Preemption + scheduler P&H Ch 5 + timer interrupts; DE10-Nano Cyclone V timer registers; round-robin algorithm
week-12-driver-writing.md 12 Driver-writing track (SSD1306 + SD + ENC28J60) SSD1306 datasheet (I2C/SPI command protocol); SD card SPI mode spec; ENC28J60 datasheet
week-13-external-dram-filesystem.md 13 External DRAM + FAT16 filesystem DE10-Nano HPS reference manual; FAT16 spec (Microsoft); SD card physical layer
week-14-capstone-delivery.md 14 Capstone delivery + bridge CAPSTONE.md (already written)

Also remaining:

  • labs/lab-7-sv32-mmu.md through labs/lab-14-capstone.md (8 lab files)
  • INSTRUCTOR-GUIDE.md expansion for Modules 7-14 (currently placeholders)
  • labs/fixtures/ directory: benchmark source files for labs 3-5 (benchmark-allocator.jack, benchmark-peephole.jack, benchmark-inlining.jack) -- these need to be authored as actual Jack-equivalent source files

Reference implementation status

As of 2026-05-29, the vca-csa-201 support repo at ../virtus-academy-support/vca-csa-201/ has:

  • F1-F13 all sim-certified (verified in the support repo STATUS.md)
  • F10 (RV32F FPU): 342/342 PASS across phases A-E
  • F11 (RV32A atomics): complete
  • F12 (CSR completion): complete
  • F13 (multi-hart Linux-MP): complete
  • Silicon-cert on DE10-Nano: pending (Vivado dev-rig dispatch not yet run as of this build round)

The next build round author should check the support repo STATUS.md for updated silicon-cert status before authoring Modules 7-14 content. If the DE10-Nano silicon cert has run, reference the exact LUT/DSP utilization numbers in the week-7 and later content.


Content guidance for the continuation round

Module 7 (Sv32 MMU) is the most complex. The two-level page walk, TLB implementation, and page-fault handler together require the most hardware code of any module. Budget the continuation round to spend proportionally more time on week-7. The INSTRUCTOR-GUIDE skeleton for Module 7 (in INSTRUCTOR-GUIDE.md) has the key complexity callouts.

Modules 9-11 (canaries, GC, scheduler) are primarily OS software. The hardware is in place after Module 8. These modules are closer in character to Modules 3-6 (implementing software systems) than Modules 7-8 (hardware HDL). The continuation round author should lean on CSAPP and Appel references for these.

Module 12 (drivers) needs datasheet anchors. The SSD1306, SD card, and ENC28J60 datasheets are the primary references. Confirm that the support repo at vca-csa-201/firmware/drivers/ has reference implementations before authoring the week-12 content; the lab should reference the instructor-side driver code for students who get stuck.

Petzold weaves for weeks 7-14. The OUTLINE table lists the Petzold anchor chapters for each week. The continuation round should write the weaves with the same depth as Modules 1-6: a specific Petzold passage, a connection to the student's hardware, and an integration into the lecture narrative.


lab fixtures needed

The continuation round must also author labs/fixtures/ files:

  • benchmark-allocator.jack: a Jack-equivalent source file with a function that has 12+ local variables, a loop, and calls to Math utility functions. Should produce 3-5x improvement when the register allocator is active.
  • benchmark-peephole.jack: source that exercises all five Lab 11.4 categories. Include push/pop round-trips, constant initializations, power-of-two multiplications, and algebraic identities.
  • benchmark-inlining.jack: source with multiple calls to Math.abs, Math.max, Math.min with constant arguments. The constant-folding path should fire on at least 5 call sites.

These fixtures are small files (50-100 lines each) but need to be syntactically valid for the compiler to process.


Deploy state

After this build round, the portal renders and deploys the following pages for CSA-201:

  • /csa-201/ (landing page)
  • /csa-201/CSA-201-OUTLINE.html
  • /csa-201/SETUP.html
  • /csa-201/CAPSTONE.html
  • /csa-201/INSTRUCTOR-GUIDE.html
  • /csa-201/week-1-full-rv32i-m-extension.html through /csa-201/week-6-ssa-ir-compiler-explorer.html
  • /csa-201/labs/lab-1-m-extension-speedup.html through /csa-201/labs/lab-6-compiler-explorer.html

The continuation round should NOT re-deploy the above; those pages are live. The continuation round adds week-7 through week-14 and labs 7-14 to the same portal path. Run the render.py pipeline with --course csa-201 and rsync (without --delete) to the portal docroot.