Skip to content

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