DeathKing/Learning-SICP
MIT视频公开课《计算机程序的构造和解释》中文化项目及课程学习资料搜集。
Stale and unlicensed — last commit 3y ago
worst of 4 axesno license — legally unclear; last commit was 3y ago…
no license — can't legally use code; no tests detected…
Documented and popular — useful reference codebase to read through.
no license — can't legally use code; last commit was 3y ago…
- ✓11 active contributors
- ⚠Stale — last commit 3y ago
- ⚠Concentrated ownership — top contributor handles 72% of recent commits
Show 3 more →Show less
- ⚠No license — legally unclear to depend on
- ⚠No CI workflows detected
- ⚠No test directory detected
What would change the summary?
- →Use as dependency Concerns → Mixed if: publish a permissive license (MIT, Apache-2.0, etc.)
- →Fork & modify Concerns → Mixed if: add a LICENSE file
- →Deploy as-is Concerns → Mixed if: add a LICENSE file
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Great to learn from" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/deathking/learning-sicp)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/deathking/learning-sicp on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: DeathKing/Learning-SICP
Generated by RepoPilot · 2026-05-10 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/DeathKing/Learning-SICP shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
AVOID — Stale and unlicensed — last commit 3y ago
- 11 active contributors
- ⚠ Stale — last commit 3y ago
- ⚠ Concentrated ownership — top contributor handles 72% of recent commits
- ⚠ No license — legally unclear to depend on
- ⚠ No CI workflows detected
- ⚠ No test directory detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live DeathKing/Learning-SICP
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/DeathKing/Learning-SICP.
What it runs against: a local clone of DeathKing/Learning-SICP — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in DeathKing/Learning-SICP | Confirms the artifact applies here, not a fork |
| 2 | Default branch master exists | Catches branch renames |
| 3 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 4 | Last commit ≤ 986 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of DeathKing/Learning-SICP. If you don't
# have one yet, run these first:
#
# git clone https://github.com/DeathKing/Learning-SICP.git
# cd Learning-SICP
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of DeathKing/Learning-SICP and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "DeathKing/Learning-SICP(\\.git)?\\b" \\
&& ok "origin remote is DeathKing/Learning-SICP" \\
|| miss "origin remote is not DeathKing/Learning-SICP (artifact may be from a fork)"
# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
&& ok "default branch master exists" \\
|| miss "default branch master no longer exists"
# 4. Critical files exist
test -f "README.md" \\
&& ok "README.md" \\
|| miss "missing critical file: README.md"
test -f "Preface/pre1.txt" \\
&& ok "Preface/pre1.txt" \\
|| miss "missing critical file: Preface/pre1.txt"
test -f "SrtCN/lec1a.srt" \\
&& ok "SrtCN/lec1a.srt" \\
|| miss "missing critical file: SrtCN/lec1a.srt"
test -f "SrtEN/lec1a_512kb.mp4.srt" \\
&& ok "SrtEN/lec1a_512kb.mp4.srt" \\
|| miss "missing critical file: SrtEN/lec1a_512kb.mp4.srt"
test -f "Ass/lec1a.chn+eng.ass" \\
&& ok "Ass/lec1a.chn+eng.ass" \\
|| miss "missing critical file: Ass/lec1a.chn+eng.ass"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 986 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~956d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/DeathKing/Learning-SICP"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
A Chinese localization and learning resource project for MIT's Structure and Interpretation of Computer Programs (SICP) video course. It provides translated subtitle files (.ass format) for all 10 lectures (with both part A and B), converting the original English subtitles into Chinese and bilingual versions, plus curated supplementary materials (textbooks, tutorials, problem sets) to help Chinese-speaking learners master Scheme/Lisp programming and functional programming concepts taught by Abelson and Sussman. Flat, document-centric structure: /Ass directory contains 60 subtitle files organized by lecture (lec1a–lec10b), each in three variants (.chn.ass for Chinese-only, .eng.ass for English-only, .chn+eng.ass for bilingual). /Preface holds 5 metadata/introduction text files. The project uses Ruby (7434 LOC), Shell (1952 LOC), and Perl (399 LOC) utilities likely for subtitle batch processing and validation, but these are not visible in the top-level file list.
👥Who it's for
Chinese-speaking computer science students and self-taught programmers who want to learn SICP through the original 1986 MIT video lectures but find English subtitles a barrier. Contributors are typically volunteers maintaining subtitle translations and aggregating educational resources around the course.
🌱Maturity & risk
Moderately mature but dormant: the core subtitle translation work (Ass/ directory with 60 .ass files across lectures 1–10) appears complete, but the project shows no recent commit activity visible in the repository data. The README documents stable video sources (Youku, YouTube, Bilibili, AcFun) and cross-linked learning materials, suggesting the project achieved its primary goal but is no longer actively developed.
Low technical risk but maintenance risk: this is a translation and curation project rather than code-heavy software, so no dependency vulnerabilities or build fragility exists. However, video platform links (Youku, Bilibili, AcFun) may rot over time, and the referenced Google Drive/ Baidu pan shares could disappear if not maintained. Single-maintainer risk is moderate—no visible CI/CD or automated tests exist for subtitle quality or link validity.
Active areas of work
No active development is visible from the repository data. The project appears to be in maintenance mode: all major lecture subtitle files are present and the README links to multiple video hosting platforms and resource mirrors, suggesting the translation work was completed and the focus shifted to long-term curation. No open PRs, recent commits, or pending milestones are evident.
🚀Get running
Clone the repository and browse the subtitles:
git clone https://github.com/DeathKing/Learning-SICP.git
cd Learning-SICP
ls Ass/ # View all .ass subtitle files
cat README.md # Review learning resources and video links
No build step or installation is required—subtitles are ready to use with any compatible video player (VLC, ffmpeg, etc.).
Daily commands: This is not a runnable application. To use the subtitles:
- Download a lecture video from Youku, YouTube, Bilibili, or AcFun (links in README).
- Place the corresponding .ass file from
Ass/in the same folder. - Open the video in VLC, MPC-HC, or similar player—subtitles will auto-load.
🗺️Map of the codebase
README.md— Project overview and primary entry point explaining the SICP translation initiative, learning resources, and repository structure.Preface/pre1.txt— First preface document establishing the project's scope, goals, and context for the MIT SICP course translation.SrtCN/lec1a.srt— First Chinese subtitle file serving as the foundational translated content and model for subsequent translation work.SrtEN/lec1a_512kb.mp4.srt— First English subtitle file providing the source material for all translation efforts in the project.Ass/lec1a.chn+eng.ass— First bilingual Advanced SubStation Alpha file demonstrating the dual-subtitle format and video integration approach.
🧩Components & responsibilities
- English Source Subtitles (SrtEN/) (SRT format, timing synchronization) — Authoritative English subtitle files extracted from MIT OCW; serve as source material for all translations
- Failure mode: Missing or misaligned English subtitles would break entire translation pipeline and disable English-language learners
- Chinese Translations (SrtCN/) (SRT format, translation management) — Translated Chinese subtitles maintaining accurate timing and semantic equivalence to English originals
- Failure mode: Poor translation quality or timing errors would impair learning experience for Chinese speakers
- Bilingual ASS Subtitles (Ass/) (ASS format, styling and layout) — Dual-language formatted subtitles enabling simultaneous display of English and Chinese in compatible players
- Failure mode: Formatting issues or encoding errors would prevent dual-subtitle rendering in video players
- Plain Text Transcripts (Sub/) (Plain text format, content extraction) — Human-readable transcripts extracted from subtitles for accessibility, searching, and offline reference
- Failure mode: Missing or outdated transcripts would reduce accessibility for users preferring text-based study
- Project Documentation (README.md, Preface/) (Markdown, plain text) — Course overview, translation rationale, learning resources, and navigation guides for learners
- Failure mode: Unclear documentation would confuse learners about course structure, resources, and how to use translated materials
🔀Data flow
MIT OCW→SrtEN/— Original English subtitles extracted from SI
🛠️How to make changes
Add Translation for a New Lecture
- Obtain the original English SRT file from MIT OCW and place it in SrtEN/ directory (e.g., SrtEN/lec11a_512kb.mp4.srt) (
SrtEN/lec11a_512kb.mp4.srt) - Translate the English subtitles to Chinese and create corresponding SRT file in SrtCN/ directory (e.g., SrtCN/lec11a.srt) (
SrtCN/lec11a.srt) - Generate bilingual ASS format files using existing ASS templates as reference, creating both combined (chn+eng) and single-language variants (
Ass/lec11a.chn+eng.ass) - Create plain text transcript in Sub/ directory for accessibility and search indexing (
Sub/lec11a.txt)
Create Bilingual Subtitle Variants
- Start with an existing bilingual ASS file (e.g., Ass/lec1a.chn+eng.ass) as a template (
Ass/lec1a.chn+eng.ass) - Create a Chinese-only variant by removing English subtitle tracks (
Ass/lec1a.chn.ass) - Create an English-only variant by removing Chinese subtitle tracks (follows pattern of lec10a.eng.ass) (
Ass/lec1a.eng.ass)
Update Project Documentation
- Edit the main README.md to add links and descriptions for newly translated lectures (
README.md) - Add supplementary preface notes or translation notes in Preface/ directory if needed (
Preface/pre5.txt)
🔧Why these technologies
- SRT (SubRip) Format — Universal subtitle format supported by most video players; simple text-based structure enables easy translation and version control
- ASS (Advanced SubStation Alpha) Format — Supports advanced formatting, styling, and dual-language subtitle rendering; enables bilingual display on a single subtitle track
- Plain Text Transcripts — Provides accessibility, search indexing, and offline reference for learners without requiring video playback
- Git Version Control — Enables collaborative translation workflow, tracks translation history, and manages multiple language variants efficiently
⚖️Trade-offs already made
-
Maintain parallel English and Chinese subtitle files rather than single bilingual SRT
- Why: SRT format has limited support for dual-language display; separate files provide compatibility with single-language subtitle modes
- Consequence: Increases maintenance burden but maximizes player compatibility and enables flexible subtitle selection
-
Use both SRT and ASS formats for the same content
- Why: SRT is universal but limited in styling; ASS enables rich formatting and dual subtitles
- Consequence: Requires maintaining multiple file format versions but serves diverse player capabilities and user preferences
-
Focus exclusively on MIT SICP 1986 lectures rather than newer course iterations
- Why: Original lectures represent the definitive presentation by Abelson and Sussman; highest historical and pedagogical value
- Consequence: Provides comprehensive translation of one canonical source but does not cover newer interpretations or updated course content
🚫Non-goals (don't propose these)
- Does not provide video files or host media directly
- Does not include Scheme code examples or problem solutions
- Does not offer interactive learning platform or assessment tools
- Does not translate the SICP textbook itself (separate resource)
- Does not support real-time collaborative translation workflow
- Does not provide automated quality assurance or subtitle synchronization validation
🪤Traps & gotchas
No build or runtime environment required, but be aware: (1) ASS subtitle format is text-based but includes timing codes (format: hours:minutes:seconds.centiseconds) and styling tags—manual edits must preserve syntax or subtitles will fail to display; (2) video hosting links (Youku, Bilibili, AcFun, Baidu pan) are geographically restricted or may be removed; use a VPN or Google Drive as fallback; (3) the project relies on external SICP resources (MIT press, GitHub sicp-pdf, HIT IBMTC mirrors) which are not version-controlled—broken links are a frequent issue.
🏗️Architecture
💡Concepts to learn
- Substitution model of evaluation — SICP's foundational mental model for understanding how Scheme expressions are evaluated; essential for debugging and reasoning about program correctness throughout the course.
- Higher-order functions (closures and currying) — Central to functional programming paradigm taught in SICP; enables elegant abstraction and code reuse patterns that distinguish Scheme from imperative languages.
- Tail call optimization (TCO) — Critical for writing efficient recursive algorithms in Scheme without stack overflow; lecture 5 covers this as a key optimization for iterative processes.
- Metacircular evaluator — Lectures 7–8 build a Scheme interpreter in Scheme itself; this concept reveals how programming languages work and enables deep understanding of evaluation semantics.
- Lazy evaluation and streams — Lecture 6 introduces delayed evaluation and infinite sequences; enables elegant handling of large or infinite data structures impossible in eager-evaluation languages.
- ASS (Advanced SubStation Alpha) subtitle format — The encoding format for all 60 subtitle files in this project; understanding its syntax (timing codes, styling tags, layer structure) is necessary to contribute translations or corrections.
- Register machine abstraction — Lectures 9–10 model computation as a register machine; bridges high-level Scheme and low-level hardware, revealing how interpreters and compilers work.
🔗Related repos
sarabander/sicp-pdf— Provides the complete SICP textbook in PDF form—complementary to this project's video subtitles, used by learners who prefer reading alongside video.DeathKing/yast-cn— A Chinese Scheme language tutorial by the same author; directly referenced in this repo's learning resources table as an introductory companion to SICP.norvig/paip— Paradigms of Artificial Intelligence Programming (PAIP) in Lisp; another canonical Lisp text that SICP learners often move to after completing this course for advanced metaprogramming.HIT-IBMTC/sicp-js— MIT's SICP adapted for JavaScript (associated with HIT partner mentioned in README); modern variant for learners who prefer JavaScript over Scheme, sharing the same pedagogical goals.syntacticlosure/syntacticlosure.github.io— Racket FAQ and Scheme documentation mirror; referenced in the README's environment setup section, directly supports local Scheme setup alongside video learning.
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Complete missing subtitle files for Lectures 2 and 9 in SrtCN directory
The SrtCN directory has incomplete coverage - lec2a.srt, lec2b.srt, lec9a.chn.srt, and lec9b.chn.srt are missing, while other lectures have both Chinese and English subtitle pairs. This blocks complete subtitle availability for 4 lecture sessions that learners expect to find.
- [ ] Extract/generate lec2a.srt and lec2b.srt Chinese subtitles (currently only in Ass/ format)
- [ ] Extract/generate lec9a.chn.srt and lec9b.chn.srt Chinese subtitles from Ass/lec9a.chn.ass and Ass/lec9b.chn.ass
- [ ] Verify subtitle timing and formatting matches existing .srt files in the directory
- [ ] Update README.md if it documents subtitle coverage status
Create .ass subtitle files for missing lectures 2, 9b English variant, and 10b English variant
The Ass/ directory shows gaps in coverage - lec2a.ass, lec2b.ass, lec9b.eng.ass, and lec10b.eng.ass files don't exist. This creates inconsistent dual-subtitle support across lectures, making it harder for video players to offer bilingual viewing for these specific sessions.
- [ ] Convert lec2a.srt and lec2b.srt from SrtCN/ into .ass format (lec2a.chn.ass, lec2a.eng.ass, lec2b.chn.ass, lec2b.eng.ass)
- [ ] Extract lec9b.eng.ass from lec9b.eng.srt if it exists in SrtCN/, or generate from lec9b.chn+eng.ass
- [ ] Extract lec10b.eng.ass to match the lec10b.chn+eng.ass and lec10b.chn.ass pattern
- [ ] Ensure all .chn+eng.ass files have corresponding individual .chn.ass and .eng.ass files
Add a subtitle inventory/validation script and update README with completion status
With 10 lectures × 2 parts × 3 formats (Chinese, English, bilingual) across 2 directories (Ass/, SrtCN/), tracking coverage is error-prone. A validation script + completion matrix in README would help contributors identify exactly which files are missing and coordinate efforts.
- [ ] Create scripts/validate_subtitles.sh to inventory all subtitle files and report missing pairs
- [ ] Add a completion matrix table to README.md showing coverage by lecture, part, and format (e.g., 'Lec 1a: Ass ✓ | SrtCN ✓ | Lec 1b: Ass ✓ | SrtCN ✓')
- [ ] Document in CONTRIBUTING.md (or create it) the expected file naming convention and directory structure
- [ ] Run the validation script and document current gaps clearly
🌿Good first issues
- Add a subtitle quality verification script: create a Ruby or Shell script in the repo root that parses all
.assfiles in/Ass, checks for malformed timing codes, missing translations in bilingual files, and reports on line-count consistency across.chn,.eng, and.chn+engvariants. This would prevent silent subtitle sync errors. - Expand
/Prefacewith lecture summaries: write concise Chinese summaries (100–200 words each) for lec1a–lec10b in/Preface/documenting key topics (e.g., 'lec1a covers function evaluation and substitution model'). These would serve as study guides and quick-reference for learners. - Build a subtitle search and indexing utility: create a Ruby or Perl script that indexes all subtitles by keyword (e.g., 'closure', 'recursion', '尾递归'), allowing learners to jump to specific lecture segments. Output a simple JSON or CSV file searchable by topic, enabling cross-reference of related concepts across lectures.
⭐Top contributors
Click to expand
Top contributors
- @DeathKing — 72 commits
- @Windfarer — 15 commits
- @batkiz — 3 commits
- [@Siyuan Wang](https://github.com/Siyuan Wang) — 2 commits
- @cliffwoo — 2 commits
📝Recent commits
Click to expand
Recent commits
211bbe6— Update README.md (DeathKing)08dae4c— Merge pull request #110 from opseter/master (DeathKing)b6863b7— fix lec2b.srt "MAKE-VERCTOR" -> "MAKE-VECTOR" (ijihio)e4a590b— Merge pull request #101 from Thrimbda/master (DeathKing)4477ed6— Translation fix: "catch" issue in ass files (Siyuan Wang)adac77e— Translation fix: "catch" means a defect instead of a magical trick (Siyuan Wang)12bd062— Merge pull request #99 from networm/patch-1 (DeathKing)be26161— Fix bilibili video links (networm)9f19c1b— Merge pull request #95 from batkiz/master (DeathKing)03f65b5— little improvements: (batkiz)
🔒Security observations
This repository is a translation project for MIT's SICP lectures (Structure and Interpretation of Computer Programs). It contains only educational content: subtitle files (.srt, .ass formats), text files, and documentation. No executable code, dependencies, or infrastructure components were identified. The project poses minimal security risk as it is purely a documentation/media resource repository with no dynamic functionality, database connections, or external dependencies that could introduce vulnerabilities.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.