{"adoption": {"forks": 155, "observed_at": "2026-08-28T04:05:07.045374+00:00", "stars": 1581}, "canonical_url": "https://ross.abutalabs.com/products/bottomupcs", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Bottom Up Computer Science", "domain": ["education", "operating-systems"], "enriched": true, "function": ["documentation"], "health_score": 46, "homepage": "www.bottomupcs.com", "language": "CSS", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["ianw/bottomupcs"], "name": "ianw/bottomupcs", "platform": ["cross-platform"], "pushed_at": "2025-09-26T07:10:24+00:00", "repo": "ianw/bottomupcs", "stars": 1581, "tags": ["computer-science", "textbook", "course-materials", "systems-programming", "self-learning"], "topics": [], "urls": [], "use_cases": ["learn computer science fundamentals from first principles", "understand how computers work from hardware to software", "self-study systems programming and low-level concepts", "build the book as html pdf or epub for offline reading", "find a free alternative to introductory CS textbooks"], "what_it_is": "An open-source book/course, 'Computer Science from the Bottom Up', by Ian Wienand, teaching computer science fundamentals from hardware up through software layers. The repository contains the source materials buildable to HTML, PDF, or EPUB formats.", "when_to_avoid": ["you need structured exercises, graded assignments, or instructor support", "you are looking for an interactive course or video lectures", "you need up-to-date coverage of modern high-level frameworks or specialized CS fields"], "when_to_choose": ["you want a free, self-contained introduction to computer science from low-level principles", "you prefer reading materials in html, pdf, or epub formats", "you are self-learning systems-level concepts like hardware, binaries, and operating systems"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bottomupcs", "repo": "ianw/bottomupcs", "role": "main", "score": 52}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.045374+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:56:33.656783+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c20a07e8fe59a2c095ede65ebd9971f406e39bfc2172253ce5ae50b3f63a693", "fetched_at": "2026-08-28T04:05:07.045374+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ianw/bottomupcs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 44, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5495, "days_push": 341, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 52, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}