Skip to content
View original post on X: meng shaoX· 30/100AI score30/100

Johns Hopkins launches Machine Programming course covering synthesis, code LLMs, agents

AISummary

Johns Hopkins assistant professor Ziyang Li teaches EN.601.727 "Machine Programming" in fall 2026, according to the post.

The course is organized in three modules, covering classic program synthesis, coding LLMs and agents, and applications such as formal verification and neurosymbolic programming.

Assignments move from an enumerative synthesizer to evaluating coding LLMs and building a coding agent, and the final project is a NeurIPS-format mini-paper.

Post on XView on X
meng shaoVerified on X
@shao__meng

https://x.com/i/article/2110267213236113408

约翰霍普金斯「Machine Programming」最新课程:程序综合、代码大模型与智能体,“让机器编程”的前沿研究

约翰霍普金斯大学「Machine Programming」课程

约翰霍普金斯大学 2026 年秋季的研究生课程 EN.601.727「Machine Programming」,由计算机系助理教授 Ziyang Li(个人主页 liby99.github.io) 主讲,TA 为 Qi Sun,CA 为 Yuming Feng。

https://machine-programming.github.io/

课程的核心命题是程序综合(Program Synthesis),让机器自动生成程序。课程副标题式的立场非常鲜明:自动化程序生成正在深刻改变软件的构建方式,而“程序员的意图”如今可以通过三种载体传达给机器:示例(examples)、形式规约(specifications)、自然语言(natural language)。这三种意图表达方式,恰好对应了课程覆盖的两大技术脉络:

•经典符号方法:自底向上的归纳式综合、类型引导/规约引导的枚举综合、交互式综合;这是 MIT Armando Solar-Lezama、UCSD Nadia Polikarpova 等人建立的传统;

•LLM 方法:以大语言模型为核心的代码生成、迭代精化、智能体(agent)、以及 LLM 在定理证明、程序修复、形式验证中的应用。

“Machine Programming”这个术语本身值得注意:它由 Intel 实验室的 Justin Gottschlich 等人提出,指“让机器自己编程”的整个研究领域,意图统一程序综合、代码大模型、自动修复、形式验证等分散的子领域。这门课正是在这个统一视角下设计的,课程没有把“程序综合”和“代码大模型”当成两个割裂的世界,是把它们组织成一条连贯的技术演化叙事:从确定性搜索到神经生成。

课程结构:三模块的技术演化叙事

课程内容分为三个模块、15 周完成,结构本身就是一个精心设计的认知路径。

模块一:程序语言与综合(第 1–2 周) 基础部分

从语法、语义讲起,再到自底向上的归纳式综合(bottom-up inductive synthesis)、类型系统与自顶向下枚举综合、函数式规约与综合。这一部分的技术根基是 FlashFill 一脉的经典工作(微软 Excel 的公式自动填充就是这套技术的产业化成果):给定输入输出示例,在程序空间中搜索满足约束的程序。涉及的语言/工具是 Python、C、Rust 和约束求解。这部分看似“过时”,实则是理解后续一切的基础:搜索空间、正确性规约、验证条件这些概念,在 LLM 时代不仅没有失效,反而以 reward、test、verifier 的形式全面回归。

模块二:编码大语言模型(第 3–7 周)课程的重心

这是篇幅最大的模块,覆盖面相当完整:

1.推理侧(第 3–4 周):语言建模用于综合、解码策略与提示工程、迭代精化(iterative refinement)与智能体框架;

2.协议与工具(第 4–5 周):MCP(Model Context Protocol)单独占了约一周半,这是 2024 年底 Anthropic 发布、如今已成为事实标准的 LLM-工具连接协议,把它纳入正式课程内容,说明课程内容更新到了工业界最前沿;

3.训练侧(第 6–7 周):编码 LLM 的预训练(两讲)与后训练(SFT 与 RL,一讲)加专题。

从阅读材料看,这一模块的文献覆盖极为系统:模型侧有 Code Llama、StarCoder、DeepSeek Coder、CodeGen、SantaCoder、CodeT5+,基础设施侧有 The Stack 数据集、Fill-in-the-Middle、BPE、RoPE、Multi-Query Attention,训练技术侧还包括 SimCSE、DOBF 这类去噪自监督目标。甚至连 CodeFusion(扩散模型生成代码)和 DALL-E 2 都在列——后者的出现是为了讲授扩散模型原理再迁移到代码域。

模块三:机器编程的应用(第 8–15 周)纵向展开

后半学期不再按方法组织,是按应用领域组织,每个领域一讲:

•形式验证与定理证明(Lean、Coq)LLM 辅助形式化(autoformalization)

•可微编程与机器学习、安全与隐私(CodeQL 漏洞查询)

•硬件与高性能计算、设计/交互式/可视化编程

•神经符号编程(Neurosymbolic Programming,收尾两讲)

涉及语言清单非常能说明课程取向:Python、C、Rust、Lean、CodeQL、PDDL,通用语言、定理证明器、安全查询语言、规划领域语言各占其位。PDDL(规划)的出现尤其体现了"program = plan"的统一世界观。

第 11–14 周被学生口头报告占据,最后以神经符号编程专题收束,这是一个有意味的选择:神经与符号的融合正是整个领域公认的前沿方向,也是这门课两大脉络的自然汇合点。

教学设计:这是一门“研究者的训练课”,不是技能培训课

从评分结构(参与 10% + 口头报告 10% + 三次作业各 15% + 期末项目 35%)和各环节设计看,这门课的定位非常清晰:培养能做研究的人,而非使用工具的人。

三次作业构成一条能力递进线

1.作业一:实现一个枚举程序综合器(9 月 22 日截止)亲手写传统综合器,理解搜索、剪枝、验证的完整闭环;

2.作业二:评估编码 LLM(10 月 9 日截止)学校提供 $200 Amazon Bedrock 额度和 API key,学生系统性地评测真实的大模型;

3.作业三:构建编码智能体 实现基于 LLM 的 agent。

从“综合器 → 评测 → 智能体”,恰好复演了领域本身十五年的演化史。特别值得注意的是作业二的定位:评估(evaluation)被视为与生成同等重要的核心能力,这呼应了阅读清单里庞大的评测文献(HumanEval、MBPP、SWE-bench、LiveCodeBench、BigCodeBench、AlphaCode/CodeContest 等),也是当前学界“基准污染、榜单失真”大讨论下的务实选择。

口头报告:Defender–Attacker 制 迷你学术评审演练

每个学生认领一篇论文,选择两个角色之一:Defender(辩护者)负责讲清论文内容,Attacker(攻击者)以审稿人视角批判论文。每篇论文 20 分钟,六个 session、每场六人。这个设计非常精妙:它强制学生同时练习理解与批判两种学术核心技能,本质上是对真实 peer review 流程的课堂化模拟。课程明确允许选择“网上已有讲稿/视频的论文”以降低准备成本,同时也从七个候选主题中投票选出六个。

期末项目:一篇 NeurIPS 格式的迷你论文

占 35%,三人以内组队,产出包括 2 页 proposal(5%)、实现(20%)、至少 4 页、NeurIPS 2026 模板排版(LaTeX 或 Typst)的报告(5%)、10+5 分钟汇报(5%)。评分权重的分配(实现占 20%)说明课程最看重真做出来的东西。

九个建议选题方向透露了授课者对领域机会的判断,特别有洞察力的几条:

•低资源语言基准:给 Haskell、Prolog、Datalog、Lean、Coq、Z3、Racket、PDDL 这类语言建数据集,测 LLM 的能力边界,这是目前公认的高性价比研究切口;

•高资源语言的窄域:Linux 内核驱动、CUDA、Unreal Engine C++,真实工程场景中 LLM 的短板所在;

•设计 DSL 并测试 LLM 在其中的生成能力 把“综合”问题重新形式化;

•用 LLM 给现有程序综合出形式规约 规约自动生成是形式验证的最大瓶颈;

•LLM 生成代码的漏洞检测 安全方向。

课程明确鼓励把项目做成论文,并给出了去年(Fall 2025)三个成功案例:逻辑学的规模化自动形式化、Elements 证明的忠实形式化、OS 内核规约推断系统 BODHI,三个都是投稿中的论文。这门课的期末项目是一条真实的研究 pipeline 入口,不是课程作业的终点。

一条耐人寻味的 AI 使用政策

课程明确规定:鼓励使用 LLM,但不得让 LLM 代做全部作业;必须理解并能解释自己的代码;需在 acknowledgements.md 中记录与 LLM 的对话过程并随提交附上。在一门教“机器编程”的课上要求记录“人机协作过程”,这既是对诚实学术的底线要求,本身也构成了一种元层面的教学姿态,学生使用 LLM 完成作业的方式,就是课程内容的现场实践。

学术谱系与内容来源

阅读清单末尾列出的四门参考课程,勾勒出这门课的学术血统:

•Armando Solar-Lezama(MIT)的《Introduction to Program Synthesis》,符号综合的源头;

•Baishakhi Ray(Columbia)的《Generative Models for Code》,代码大模型方向;

•Nadia Polikarpova(UCSD)和 Ras Bodik / Emina Torlak(UW)的程序综合课,Bodik 的 CS294 是 SKETCH 与“synthesis for everyone”传统的发源地。

这门 JHU 课程可以视为对以上传统的一次融合与更新:保留了符号综合的严格基础,把重心移到 LLM,再以应用领域和神经符号专题收尾。从 Fall 2025 已有第二个版本迭代、且有“past versions”页面来看,课程本身也在快速演化。

如何评价这门课

第一,叙事结构出色。它没有做成“经典综合 + 大模型”的简单拼盘,是围绕“意图如何传达给机器”这条主线,把 15 年的技术演化组织成可理解的连续体。学生在第 1 周学到的“示例即规约”,与第 12 周接触的“Lean 中的形式化”,共享同一个概念骨架。

第二,内容时效性极强。MCP 协议、SWE-bench、LiveCodeBench、DeepSeek Coder、RL 后训练、Coding Agent(AutoCodeRover、MASAI)全部进入正式教学和作业,课程内容与工业前沿的时间差大约只有一年,这在大学课程里相当罕见,显然得益于授课者本人活跃的研究工作(李子阳的研究方向正是程序综合与代码大模型,典型工作包括 SimpLLM、CoCoMIC、RepoFusion 等仓库级代码模型研究,这些也在阅读清单中)。

第三,研究训练环节设计成熟。Defender–Attacker 报告制、NeurIPS 模板期末论文、$200 云额度支持的真实评测作业、“项目→论文”的成功先例展示,构成了一条完整的研究者养成路径。

给潜在学习者的建议

如果你无法正式修读(课程欢迎旁听,需邮件联系授课者),想沿这条路径自学,这门课的公开材料本身就是一份优秀的学习地图:

1.先攻符号综合基础:读 Solar-Lezama 的课程讲义,理解枚举综合、CEGIS(反例引导的归纳综合);

2.再系统过代码 LLM:以《A Survey on Language Models for Code》为骨架,按“模型(Code Llama/StarCoder/DeepSeek Coder)→ 数据(The Stack、FIM)→ 评测(HumanEval→SWE-bench→LiveCodeBench 的演化)→ 改进(检索增强、仓库级上下文)”的顺序读论文;

3.动手做三个作业的等价物:写一个迷你综合器、跑一次严肃的模型评测、搭一个编码 agent,这三件事做完,对领域的理解会远超读论文;

4.选一个窄域做期末项目式的练手,低资源语言基准是性价比最高的切口。

一句话总结:这门课把“让机器编程”这个正在重写软件工程的研究领域,组织成了一条从经典程序综合到代码大模型、再到神经符号融合的完整认知路径;它用 Defender–Attacker 报告和 NeurIPS 格式期末项目把自己设计成研究者的孵化器,而不是工具使用者的培训班。对于想进入程序综合 / 代码智能研究方向的人来说,这可能是目前结构最完整、内容最新的公开课程蓝图之一。

Source: meng shao · x.comPublished · added here