-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
244 lines (237 loc) · 18.8 KB
/
index.html
File metadata and controls
244 lines (237 loc) · 18.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Machine Programming - Fall 2025 | Johns Hopkins University</title>
<!-- SEO Meta Tags -->
<meta name="description" content="EN.601.727 Machine Programming course at Johns Hopkins University. Learn program synthesis, LLM-driven programming, and automated software development. Fall 2025 semester.">
<meta name="keywords" content="machine programming, program synthesis, LLM, large language models, automated programming, Johns Hopkins University, computer science, programming languages, code generation, software development">
<meta name="author" content="Ziyang Li">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://machine-programming.github.io/">
<!-- Open Graph Meta Tags -->
<meta property="og:title" content="Machine Programming - Fall 2025 | Johns Hopkins University">
<meta property="og:description" content="EN.601.727 Machine Programming course covering program synthesis, LLM-driven programming, and automated software development at Johns Hopkins University.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://machine-programming.github.io/">
<meta property="og:site_name" content="Machine Programming Course">
<meta property="og:image" content="https://machine-programming.github.io/img/machine-programming-accent.png">
<meta property="og:image:alt" content="Machine Programming Course Logo">
<!-- Twitter Card Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Machine Programming - Fall 2025 | Johns Hopkins University">
<meta name="twitter:description" content="EN.601.727 Machine Programming course covering program synthesis, LLM-driven programming, and automated software development.">
<meta name="twitter:image" content="https://machine-programming.github.io/img/machine-programming-accent.png">
<meta name="twitter:image:alt" content="Machine Programming Course Logo">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="css/styles.css">
<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Machine Programming",
"courseCode": "EN.601.727",
"description": "This course explores both the foundations and frontiers of program synthesis, covering traditional symbolic techniques alongside LLM-driven approaches. Students will study a variety of synthesis paradigms, including example-based, type- and specification-guided, and interactive methods.",
"provider": {
"@type": "Organization",
"name": "Johns Hopkins University",
"url": "https://www.jhu.edu"
},
"instructor": {
"@type": "Person",
"name": "Ziyang Li",
"email": "ziyang@cs.jhu.edu",
"url": "https://liby99.github.io"
},
"educationalLevel": "Graduate",
"courseMode": "In-person",
"timeRequired": "P1H15M",
"schedule": "Tuesday and Thursday 12:00pm - 1:15pm",
"location": "Maryland 310",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"keywords": ["machine programming", "program synthesis", "LLM", "large language models", "automated programming", "computer science", "programming languages", "code generation"],
"teaches": ["Program synthesis", "Large language models", "Automated programming", "Code generation", "Software development", "Machine learning", "Programming languages"],
"about": ["Computer Science", "Programming Languages", "Machine Learning", "Software Engineering"]
}
</script>
</head>
<body>
<header>
<img src="img/machine-programming-white.png" alt="Machine Programming" class="logo" width="400">
<!-- <h1>EN.601.727 Machine Programming</h1> -->
<p style="line-height: 20px;">
<img src="img/jhu-white.png" alt="Johns Hopkins University" class="logo" width="15" />
Johns Hopkins University — Fall 2025
</p>
</header>
<nav>
<a href="index.html" class="active">Home</a>
<a href="assignments.html">Assignments</a>
<a href="readings.html">Readings</a>
<a href="project.html">Final Project</a>
<a href="presentation.html">Presentations</a>
<a href="#calendar">Calendar</a>
</nav>
<main>
<section>
<h2>Course Information</h2>
<ul class="info-list">
<li><strong>Course Number:</strong> EN.601.727</li>
<li><strong>Credits:</strong> 3</li>
<li><strong>Instructor:</strong> <a href="https://liby99.github.io">Ziyang Li</a></li>
<li><strong>Email:</strong> <a href="mailto:ziyang@cs.jhu.edu">ziyang@cs.jhu.edu</a></li>
<li><strong>Time:</strong> Tuesday and Thursday 12:00pm - 1:15pm</li>
<li><strong>Location:</strong> Maryland 310</li>
<li><strong>Office Hours:</strong> Wednesday 2:00pm - 3:00pm, <a href="https://wse.zoom.us/my/ziyang">Zoom</a>; also available by appointment through email</li>
<li><strong> </strong></li>
<li><strong>TA:</strong> <a href="https://wangf3014.github.io/home/">Feng Wang</a> (Email: <a href="mailto:fwang60@jh.edu">fwang60@jh.edu</a>)</li>
<li><strong>TA Office Hours:</strong> Tuesday 3:30pm - 5:30pm, Malone 216</li>
</ul>
</section>
<section>
<h2>Course Description</h2>
<p>
Programs are the fundamental medium through which humans interact with computers.
With the advent of large language models (LLMs), the automated synthesis of programs is rapidly transforming how we build software.
Instead of manual code writing, we specify intent through examples, specifications, and natural language.
</p>
<p>
This course explores both the foundations and frontiers of program synthesis, covering traditional symbolic techniques alongside LLM-driven approaches.
Students will study a variety of synthesis paradigms, including example-based, type- and specification-guided, and interactive methods.
We will examine how LLMs are applied to general-purpose programming tasks as well as to specialized domains such as theorem proving, program repair, planning, and verification.
</p>
<p>
Throughout the course, students will gain exposure to a wide range of programming languages, from widely-used ones like Python and C, to emerging and domain-specific languages such as Rust, Lean, CodeQL, and PDDL.
The course offers a research-oriented perspective combined with hands-on assignments and projects, providing students with both conceptual understanding and practical experience at the intersection of programming languages and machine learning.
</p>
</section>
<section>
<h2>Course Logistics</h2>
<ul>
<li>We are going to use <a href="https://www.gradescope.com/courses/1093351" target="_blank">GradeScope</a> for grading your programming assignments and final projects.</li>
<li>Course discussion (questions, notes, announcements) are going to be made on <a href="https://courselore.org/courses/7102439729" target="_blank">Courselore</a>.</li>
</ul>
</section>
<section>
<h2>Grading Rubrics</h2>
<p>
Students will be evaluated based on participation, assignments, a presentation, and a final project.
Active engagement throughout the course is strongly encouraged, both in class discussions and in peer feedback.
Exceptional oral presentation or final project may be rewarded with extra credit.
</p>
<ol>
<li>(10%) Class participation and active discussion</li>
<li>(10%) <a href="presentation.html">Oral presentation</a></li>
<li>(15%) <a href="https://github.com/machine-programming/assignment-1" target="_blank">Assignment 1: Inductive Synthesis</a></li>
<li>(15%) <a href="https://github.com/machine-programming/assignment-2" target="_blank">Assignment 2: Evaluating Coding LLMs</a></li>
<li>(15%) <a href="https://github.com/machine-programming/assignment-3" target="_blank">Assignment 3: Coding Agents</a></li>
<li>(35%) <a href="project.html">Final Project</a></li>
</ol>
</section>
<section id="calendar">
<h2>Course Calendar</h2>
<div class="mb-3">
<p>
Add the course schedule to your calendar:
</p>
<a href="https://calendar.google.com/calendar/render?action=TEMPLATE&text=EN.601.727%20Machine%20Programming&dates=20250826T160000Z/20250826T171500Z&recur=RRULE:FREQ=WEEKLY;BYDAY=TU,TH;UNTIL=20251204T171500Z&location=TBD&details=Instructor:%20Ziyang%20Li%0AEmail:%20ziyang@cs.jhu.edu%0ACourse%20Number:%20EN.601.727%0ACredits:%203" class="btn btn-outline-primary btn-sm me-2" target="_blank">Google Calendar</a>
<a href="https://outlook.live.com/calendar/0/deeplink/compose?subject=EN.601.727%20Machine%20Programming&startdt=2025-08-26T12:00:00&enddt=2025-08-26T13:15:00&recurrence=FREQ=WEEKLY;BYDAY=TU,TH;UNTIL=2025-12-04T13:15:00&location=TBD&body=Instructor:%20Ziyang%20Li%0AEmail:%20ziyang@cs.jhu.edu%0ACourse%20Number:%20EN.601.727%0ACredits:%203" class="btn btn-outline-primary btn-sm me-2" target="_blank">Outlook</a>
<a href="data:text/calendar;charset=utf8,BEGIN:VCALENDAR%0AVERSION:2.0%0ABEGIN:VEVENT%0ADTSTART:20250826T160000Z%0ADTEND:20250826T171500Z%0ASUMMARY:EN.601.727 Machine Programming%0ALOCATION:TBD%0ADESCRIPTION:Instructor: Ziyang Li\nEmail: ziyang@cs.jhu.edu\nCourse Number: EN.601.727\nCredits: 3%0ARRULE:FREQ=WEEKLY;BYDAY=TU,TH;UNTIL=20251204T171500Z%0AEND:VEVENT%0AEND:VCALENDAR" download="machine_programming_schedule.ics" class="btn btn-outline-primary btn-sm">Download .ics</a>
</div>
<table class="calendar">
<tr>
<th>Week</th>
<th>Date</th>
<th>Topic / Event</th>
</tr>
<tr><td colspan="3"><strong>Module 1: Programming Languages and Synthesis</strong></td></tr>
<tr><td rowspan="2">1</td>
<td>Aug 26 (Tue)</td><td><a target="_blank" href="lectures/lecture-1.pdf">Overview & Introduction to Machine Programming</a></td></tr>
<tr><td>Aug 28 (Thu)</td><td><a target="_blank" href="lectures/lecture-2.pdf">Syntax, Semantics, and Bottom-up Inductive Synthesis</a></td></tr>
<tr><td rowspan="2">2</td>
<td>Sep 2 (Tue)</td><td><a target="_blank" href="lectures/lecture-3.pdf">Type Systems and Top-down Enumerative Synthesis</a></td></tr>
<tr><td>Sep 4 (Thu)</td><td><a target="_blank" href="lectures/lecture-4.pdf">Functional Specifications and Synthesis</a></td></tr>
<tr><td colspan="3"><strong>Module 2: Coding Large Language Models</strong></td></tr>
<tr><td rowspan="2">3</td>
<td>Sep 9 (Tue)</td><td><a target="_blank" href="lectures/lecture-5.pdf">Language Modeling for Synthesis</a></td></tr>
<tr><td>Sep 11 (Thu)</td><td><a target="_blank" href="lectures/lecture-6.pdf">Decoding and Prompting for Synthesis</a></td></tr>
<tr><td rowspan="2">4</td>
<td>Sep 16 (Tue)</td><td><a target="_blank" href="lectures/lecture-7.pdf">Iterative Refinement with Feedback</a> | <a target="_blank" href="https://github.com/machine-programming/assignment-1">[Assignment 1 Due]</a></td></tr>
<tr><td>Sep 18 (Thu)</td><td><a target="_blank" href="lectures/lecture-8.pdf">Controlled Decoding for Synthesis</a></td></tr>
<tr><td rowspan="2">5</td>
<td>Sep 23 (Tue)</td><td><a target="_blank" href="lectures/lecture-9.pdf">Agentic Frameworks for Programming (1)</a></td></tr>
<tr><td>Sep 25 (Thu)</td><td>(Skipped)</td></tr>
<tr><td rowspan="2">6</td>
<td>Sep 30 (Tue)</td><td><a target="_blank" href="lectures/lecture-10.pdf">Agentic Frameworks for Programming (2)</a></td></tr>
<tr><td>Oct 2 (Thu)</td><td><a target="_blank" href="lectures/lecture-11.pdf">Agentic Frameworks for Programming (3)</a> | <a target="_blank" href="https://github.com/machine-programming/assignment-2">[Assignment 2 Due] (Oct 5)</a></td></tr>
<tr><td rowspan="2">7</td>
<td>Oct 7 (Tue)</td><td><a target="_blank" href="lectures/lecture-12.pdf">Pre-training of Coding LLMs (1): Architecture and Dataset</a></td></tr>
<tr><td>Oct 9 (Thu)</td><td><a target="_blank" href="lectures/lecture-13.pdf">Pre-training of Coding LLMs (2): Learning and Evaluation</a></td></tr>
<tr><td rowspan="2">8</td>
<td>Oct 14 (Tue)</td><td><a target="_blank" href="lectures/lecture-14.pdf">Post-training of Coding LLMs: Fine-tuning and Reinforcement Learning</a></td></tr>
<tr><td>Oct 16 (Thu)</td><td>(Holiday, no class)</td></tr>
<tr><td colspan="3"><strong>Module 3: Applications of Machine Programming</strong></td></tr>
<tr><td rowspan="2">9</td>
<td>Oct 21 (Tue)</td><td><a target="_blank" href="lectures/lecture-15.pdf">LLM for Software Analysis: Dynamic Analysis</a></td></tr>
<tr><td>Oct 23 (Thu)</td><td><a target="_blank" href="lectures/lecture-16.pdf">LLM for Software Analysis: Static Analysis</a> | <a target="_blank" href="https://github.com/machine-programming/assignment-3">[Assignment 3 Due]</a></td></tr>
<tr><td rowspan="2">10</td>
<td>Oct 28 (Tue)</td><td><a target="_blank" href="lectures/lecture-17.pdf">LLM for Software Security</a></td></tr>
<tr><td>Oct 30 (Thu)</td><td><a target="_blank" href="lectures/lecture-18.pdf">Programming Languages for Software Security</a></td></tr>
<tr><td rowspan="2">11</td>
<td>Nov 4 (Tue)</td><td>
Oral Presentations: LLM Adaptation
[<a target="_blank" href="https://drive.google.com/file/d/1fKwnBU_40K0_8hZtdpHIMpKVsBbzS5l_/view?usp=share_link">1</a>,
<a target="_blank" href="https://drive.google.com/file/d/17dNw8RjqhvJpNNyN5wCDU2xki9YIIAzb/view?usp=share_link">2</a>,
<a target="_blank" href="https://drive.google.com/file/d/1w4zaRfTv31_ADKTkedfCD0A5iBrQoRE7/view?usp=share_link">3</a>,
<a target="_blank" href="https://drive.google.com/file/d/1qOA4wJHSI3STy2flGupuo26Z1UHCRSqj/view?usp=share_link">4</a>]
</td></tr>
<tr><td>Nov 6 (Thu)</td><td>
Oral Presentations: Agentic and Multi-Agent Systems
[<a target="_blank" href="https://drive.google.com/file/d/1jQI_IP1DS5_1qaQA5c1pK-0JeVE_kg7v/view?usp=share_link">1</a>,
<a target="_blank" href="https://drive.google.com/file/d/1RFCSkxyv3mEd9wQz1nTOKME2MOc1sef0/view?usp=share_link">2</a>,
<a target="_blank" href="https://drive.google.com/file/d/1tA34FPyu8NkVoTptQfc0XzHvIEAGczFZ/view?usp=share_link">3</a>,
<a target="_blank" href="https://drive.google.com/file/d/1ijOgHq2uqkhSURCvwHOtUxq4g7HSfAV3/view?usp=share_link">4</a>]
</td></tr>
<tr><td rowspan="2">12</td>
<td>Nov 11 (Tue)</td><td>
Oral Presentations: LLM for Planning and Cyber-Physical Systems
[<a target="_blank" href="https://drive.google.com/file/d/1ZE-m-K5urWnaY51W7Yl4lTZGQsOzdcKn/view?usp=share_link">1</a>,
<a target="_blank" href="https://drive.google.com/file/d/1TI2LXEP0QRZqddfoRvXCiA69FE-NzciE/view?usp=share_link">2</a>,
<a target="_blank" href="https://drive.google.com/file/d/18L7E2oORytwVDpY7HM70Fa7J9Jt4753f/view?usp=share_link">3</a>,
<a target="_blank" href="https://drive.google.com/file/d/1-xXSNty6zQuOWGga-LGlepJyy_q8-h1w/view?usp=share_link">4</a>]
</td></tr>
<tr><td>Nov 13 (Thu)</td><td>
Oral Presentations: Long-Horizon and Evolutionary Program Synthesis
[<a target="_blank" href="https://drive.google.com/file/d/1Sy6LZRvAjmi-s3drmc2wImOlPeR1aeOf/view?usp=share_link">1</a>,
<a target="_blank" href="https://docs.google.com/presentation/d/1T7fQ4OVUPNP764SdseLgf4zj26prvn1s/edit?usp=share_link&ouid=109852786320198269178&rtpof=true&sd=true">2</a>]
</td></tr>
<tr><td rowspan="2">13</td>
<td>Nov 18 (Tue)</td><td>
Oral Presentations: LLM for Software Engineering
[<a target="_blank" href="https://drive.google.com/file/d/1WMIUpbAOQy6ienqYozAqnJ8g1qAYuSEY/view?usp=share_link">1</a>,
<a target="_blank" href="https://drive.google.com/file/d/18YYZOMgeWULi5Et_9KNuZ14WN8C69NXx/view?usp=share_link">2</a>,
<a target="_blank" href="https://drive.google.com/file/d/18yOzUyl9D1IBtfCM7eibSyHSooDnU7GN/view?usp=share_link">3</a>]
</td></tr>
<tr><td>Nov 20 (Thu)</td><td>Oral Presentations: LLM for Formal Logic, Math, and Theorem Proving</td></tr>
<tr><td rowspan="2">14</td>
<td>Nov 25 (Tue)</td><td>Thanksgiving (no class)</td></tr>
<tr><td>Nov 27 (Thu)</td><td>Thanksgiving (no class)</td></tr>
<tr><td rowspan="2">15</td>
<td>Dec 2 (Tue)</td><td><a target="_blank" href="lectures/lecture-19.pdf">Special Topic: Neurosymbolic Programming</a></td></tr>
<tr><td>Dec 4 (Thu)</td><td><a target="_blank" href="lectures/lecture-20.pdf">Special Topic: Synthesizing Diverse DSLs</a></td></tr>
<tr><td colspan="3"><strong>Final Presentation Session</strong></td></tr>
<tr><td></td><td>Dec 12 (Friday)</td><td>Final Presentation Session</td></tr>
</table>
<p>
<a target="_blank" href="https://drive.google.com/drive/folders/14jCHT1JjTpnOkfx85EeFonTCJTVd0J10?usp=sharing">All Lectures (PPTX)</a>
</p>
</section>
</main>
</body>
</html>