Curriculum¶
The sdlc-curriculum repository
holds the authoritative specification for every project. This page indexes it; the linked
documents are the source of truth.
| Current release | Spec version | Pin language repositories to |
|---|---|---|
| v1.7.0 | 1.0.0 (printed by every tool's --version) |
the release tag, never a branch |
Release tags and the spec version are separate: a release can add templates or tooling without changing specified behavior. See the curriculum's versioning policy.
The links below point to main. For the exact text of a release, browse the repository at
its tag.
Recent releases¶
None of these releases changes the specification version (spec_version stays 1.0.0).
| Release | Changes |
|---|---|
| v1.7.0 | Repository tooling and formatting: pre-commit hooks (formatting, linting, spell and prose checks, secret scanning) and reformatted specifications, manuals, and reference models, with no change in wording or behavior. No specification, test, or fixture changes. |
| v1.6.0 | The applications-programming track: Projects 11–52, adapted from Johnsonbaugh and Kalin, Applications Programming in ANSI C, adding 53 dp- tools and bringing the suites to 1060 tests. New CLI-CONVENTIONS §10 (CONV-32 … CONV-38) for data, numbers, prompts, and random numbers. Projects 00–10 are unchanged. Language repositories need a workspace for every new project when they pin this release. |
| v1.5.0 | Tooling and CI hardening; no specification, test, or fixture changes. The CI template's CI result job checks every job of its run attempt through the Actions API, and CI runs weekly. The language skeleton's TEMPLATE: marker check searches only git-tracked files. |
Projects¶
The curriculum has two tracks. Projects 11–52 arrived in v1.6.0.
System-level tooling (00–10)¶
| # | Project | Tool(s) | User manual | SRS |
|---|---|---|---|---|
| 00 | Standard Terminal Hello World | dp-hello |
manual | SRS |
| 01 | Stream Echo & Formatting | dp-echo |
manual | SRS |
| 02 | Concatenate & Number Files | dp-cat |
manual | SRS |
| 03 | Stream Slicing Utility | dp-head, dp-tail |
manual | SRS |
| 04 | Word, Line, and Byte Counter | dp-wc |
manual | SRS |
| 05 | Pattern Matching Search Engine | dp-grep |
manual | SRS |
| 06 | Recursive File Discovery Suite | dp-find |
manual | SRS |
| 07 | Line-by-Line File Comparison | dp-diff |
manual | SRS |
| 08 | Environment Execution Wrapper | dp-env |
manual | SRS |
| 09 | Local Key-Value Storage Engine (CLI + API) | dp-kv |
manual | SRS |
| 10 | System Resource Telemetry Daemonic CLI | dp-sysmon |
manual | SRS |
Applications programming (11–52)¶
Each project adapts one section of Johnsonbaugh and Kalin, Applications Programming in ANSI C (3rd ed., 1996), as a tool under the same conventions.
| # | Project | Tool(s) | User manual | SRS |
|---|---|---|---|---|
| 11 | Console Output & Environment Verification | dp-kinder |
manual | SRS |
| 12 | Interactive Length Unit Conversion | dp-convert |
manual | SRS |
| 13 | Stream-Based Progressive Income Tax Calculator | dp-taxes |
manual | SRS |
| 14 | Batch File-Based Progressive Income Tax Calculator | dp-taxes-file |
manual | SRS |
| 15 | Single-Pass Streaming Statistical Summary | dp-stats |
manual | SRS |
| 16 | ASCII Comic Book Bar Graph Generator | dp-bargraph |
manual | SRS |
| 17 | Stream Filtering & Monotonicity Validation | dp-average, dp-chk-sort |
manual | SRS |
| 18 | Prime Number Generation via Trial Division | dp-primes |
manual | SRS |
| 19 | Formatted Annual Calendar Generator | dp-calendar |
manual | SRS |
| 20 | Modular Procedural Decomposition & Evaluation | dp-bargraph2, dp-grade |
manual | SRS |
| 21 | Resistor 3-Band Color Code Decoder | dp-resistor |
manual | SRS |
| 22 | Roll Them Bones Dice Simulation Game | dp-dice |
manual | SRS |
| 23 | Recursion vs. Iteration Comparative Suite | dp-fact, dp-tower, dp-walk-r, dp-walk-nr |
manual | SRS |
| 24 | Divide-and-Conquer Tromino Deficiency Tiling | dp-tromino |
manual | SRS |
| 25 | Variadic Functions & Dynamic Arity Processing | dp-max |
manual | SRS |
| 26 | Car Dealership Daily Sales & Inventory Tracker | dp-cars1 |
manual | SRS |
| 27 | Greedy Word-Wrapping Text Formatter | dp-wrap |
manual | SRS |
| 28 | Modular Car Sales Architecture & Reporting | dp-cars2 |
manual | SRS |
| 29 | String Length from First Principles | dp-strlen |
manual | SRS |
| 30 | Matrix Multiplication Engine | dp-matmult |
manual | SRS |
| 31 | Student Directory Lookup via Selection Sort & Binary Search | dp-phone |
manual | SRS |
| 32 | Monte Carlo Forest Fire Percolation Simulation | dp-perc |
manual | SRS |
| 33 | Two-Pointer In-Place Sequence Reversal | dp-reverse |
manual | SRS |
| 34 | Distributed Parallel Sorting & Stream Merging | dp-sort-host, dp-sort-child |
manual | SRS |
| 35 | Empirical Algorithm Runtime Benchmarking | dp-sort-bench |
manual | SRS |
| 36 | Stream Text Pagination Utility | dp-page |
manual | SRS |
| 37 | Interactive Accumulator Calculator | dp-calc |
manual | SRS |
| 38 | Greedy Interval Activity Scheduling | dp-sched |
manual | SRS |
| 39 | Binary File Byte Size Inspector | dp-size |
manual | SRS |
| 40 | Direct-Access Hashed Relative File Storage Engine | dp-relfile |
manual | SRS |
| 41 | 1-Nearest Neighbor Film Success Classifier | dp-films |
manual | SRS |
| 42 | Enterprise Sales Reporting & Relational Data Integration | dp-sales |
manual | SRS |
| 43 | Singly Linked List Foundations | dp-elephnt1, dp-elephnt2 |
manual | SRS |
| 44 | Modal Line-Oriented Text Editor | dp-line-ed |
manual | SRS |
| 45 | Comparative Queue & Stack ADT Implementations | dp-queue1, dp-queue2, dp-stack1, dp-stack2 |
manual | SRS |
| 46 | Shunting-Yard Infix to Postfix Conversion | dp-infix |
manual | SRS |
| 47 | Graph Breadth-First Search: Adjacency Matrix vs. Adjacency List | dp-bfs-adj, dp-bfs-link |
manual | SRS |
| 48 | A* Heuristic Graph Search for European Cities | dp-astar |
manual | SRS |
| 49 | Formal Program Verification via Assertions & Loop Invariants | dp-assert-sort |
manual | SRS |
| 50 | Structured Exception Handling & Fault Recovery | dp-divide |
manual | SRS |
| 51 | Recursive Fractal Geometry: The Koch Snowflake | dp-koch |
manual | SRS |
| 52 | Object-Oriented Spacecraft Domain Modeling | dp-ship |
manual | SRS |
Implementation status¶
Which projects each language repository implements, that is, lists
in IMPLEMENTED in its root Makefile (✓ links to the project's directory). Every
implementation passes the project's public and hidden black-box suites in its toolchain
container and natively on Linux, macOS, and Windows.
| # | Project | c |
cs |
cpp |
go |
hs |
java |
js |
jl |
objc |
pl |
php |
py |
rb |
rs |
ts |
vb |
Implemented in |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 00 | hello-world | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 16 of 16 |
| 01 | echo | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 02 | cat | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 03 | head-tail | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 04 | wc | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 05 | grep-lite | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 06 | find-lite | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 07 | diff-lite | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 08 | env-run | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 09 | kv-store | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 10 | sys-monitor | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 11 | kinder | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 12 | convert | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 13 | taxes | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 14 | taxes-file | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 15 | stats | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 16 | bargraph | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 17 | stream-filters | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 18 | primes | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 19 | calendar | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 20 | bargraph-grade | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 21 | resistor | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 22 | dice | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 23 | recursion | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 24 | tromino | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 25 | max | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 26 | cars | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 27 | line-wrap | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 28 | cars-modular | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 29 | strlen | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 30 | matmult | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 31 | phone | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 32 | percolation | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 33 | reverse | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 34 | parallel-sort | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 35 | sort-bench | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 36 | page | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 37 | calc | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 38 | sched | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 39 | size | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 40 | relative-file | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 41 | films | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 42 | sales-report | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 43 | linked-list | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 44 | line-editor | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 45 | queue-stack | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 46 | infix | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 47 | bfs | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 48 | astar | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 49 | assert-sort | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 50 | fault-recovery | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 51 | koch | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
| 52 | spacecraft | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | 0 of 16 |
Shared specifications¶
| Document | Describes |
|---|---|
| CLI conventions | Option syntax, diagnostics, exit statuses, and output rules shared by every tool, plus the data, number-formatting, prompt, and random-number rules of Projects 11–52 (CONV-01 … CONV-38) |
| BASE-MAKEFILE | The universal build contract: standard targets, DP_* hooks, and install locations (PREFIX, BINDIR, LIBDIR) |
| run-tests.py | Black-box test format and harness conditions; starts #! script tools on Windows through their interpreter |
| Document templates | HLD, LLD, RTM, Master Test Plan, Documentation Plan |