-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproject.html
More file actions
197 lines (185 loc) · 10.6 KB
/
project.html
File metadata and controls
197 lines (185 loc) · 10.6 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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Final Project - Machine Programming | Johns Hopkins University</title>
<!-- SEO Meta Tags -->
<meta name="description" content="Final project guidelines for EN.601.727 Machine Programming course at Johns Hopkins University. Research-oriented project in program synthesis and LLM-driven programming.">
<meta name="keywords" content="machine programming final project, program synthesis research, LLM programming project, Johns Hopkins University, computer science project">
<meta name="author" content="Ziyang Li">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://machine-programming.github.io/project.html">
<!-- Open Graph Meta Tags -->
<meta property="og:title" content="Final Project - Machine Programming | Johns Hopkins University">
<meta property="og:description" content="Final project guidelines for EN.601.727 Machine Programming course covering research in program synthesis and LLM-driven programming.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://machine-programming.github.io/project.html">
<meta property="og:site_name" content="Machine Programming Course">
<meta property="og:image" content="https://machine-programming.github.io/img/machine-programming-accent.png">
<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">
</head>
<body>
<header>
<h1>EN.601.727 Machine Programming</h1>
<p>Johns Hopkins University — Fall 2025</p>
<p><strong>Instructor:</strong> Ziyang Li | <strong>Email:</strong> <a
href="mailto:ziyang@cs.jhu.edu">ziyang@cs.jhu.edu</a></p>
</header>
<nav>
<a href="index.html">Home</a>
<a href="assignments.html">Assignments</a>
<a href="readings.html">Readings</a>
<a href="project.html" class="active">Final Project</a>
<a href="presentation.html">Presentations</a>
<a href="index.html#calendar">Calendar</a>
</nav>
<main>
<section>
<h2>Final Project</h2>
<p>
The final project is a significant component of this course, worth 35% of your grade.
It provides an opportunity to explore advanced topics in machine programming and apply the concepts
learned throughout the semester.
</p>
</section>
<section>
<h3>Project Overview</h3>
<p>
Students will pick a research problem in program synthesis, analysis, or related areas.
We provide a list of project ideas below, but you are encouraged to propose your own ideas based on your
interests and background.
The project can be theoretical, experimental, or a combination of both.
</p>
</section>
<section>
<h3>Working in a team</h3>
<p>
The project should be completed with at most 3 students.
In the proposal, you should describe the project idea, the team members, and the division of labor.
</p>
</section>
<section>
<h3>Project Requirements</h3>
<ul>
<li><strong>Proposal (5%):</strong> A 2 page document outlining your project idea, methodology, and
expected outcomes</li>
<li><strong>Implementation (20%):</strong> Working code and/or theoretical development</li>
<li><strong>Report (5%):</strong> A comprehensive written report describing your work</li>
<li><strong>Presentation (5%):</strong> A 10-minute presentation to the class</li>
</ul>
</section>
<section>
<h3>Project Timeline</h3>
<ul>
<li><strong>Week 13 (Nov 18):</strong> Project proposal due</li>
<li><strong>Friday, December 12:</strong> Final project presentations (9:00 AM – 12:00 PM, Maryland Hall 217)</li>
<li><strong>Tuesday, December 16:</strong> Final report due (via Grade-scope)</li>
</ul>
</section>
<section>
<h3>Presentation Details</h3>
<p>
The final project presentations will take place on <strong>Friday, December 12</strong> from <strong>9:00 AM – 12:00 PM</strong> in <strong>Maryland Hall 217</strong>.
Each group will have <strong>10 minutes for presentation</strong> followed by <strong>5 minutes for Q&A</strong>.
Please make sure your slides are well-prepared and that you stay within time so everyone gets a fair slot.
</p>
</section>
<section>
<h3>Final Write-Up Requirements</h3>
<p>
The final project report/write-up is due on <strong>Tuesday, December 16</strong> and should be submitted via <strong>Grade-scope</strong>.
</p>
<h4>Formatting Requirements</h4>
<p>
Please typeset your write-up professionally using <strong>LaTeX</strong> or <strong>Typst</strong>.
For this class, we will use the <strong>NeurIPS template</strong>:
</p>
<ul>
<li><a href="https://media.neurips.cc/Conferences/NeurIPS2025/Styles.zip" target="_blank">LaTeX package</a></li>
<li><a href="https://typst.app/universe/package/bloated-neurips/0.7.0/" target="_blank">Typst Universe Template</a></li>
<li><a href="https://www.overleaf.com/latex/templates/neurips-2024/tpsbbrdqcmsh" target="_blank">Overleaf NeurIPS 2024 template</a> (if using Overleaf)</li>
</ul>
<p>
<em>Note: If you do not know <a href="https://typst.app" target="_blank">Typst</a> yet, please look it up as it may be a good replacement of LaTeX.</em>
</p>
<h4>Content Requirements</h4>
<p>
Your write-up must be at least <strong>4 pages in length</strong> (not counting the references) and must include the following sections:
</p>
<ul>
<li><strong>Abstract</strong></li>
<li><strong>Introduction</strong></li>
<li><strong>Related Works</strong></li>
<li><strong>Conclusion & Future Works</strong></li>
</ul>
<p>
The sections in between may include things like "Methodology", "Evaluation", "Benchmark", "Framework", "Case Study", or anything that is key to your project.
Please cite the related works professionally.
</p>
</section>
<section>
<h3>Project Ideas</h3>
<p>Here are some example project areas to consider:</p>
<ol>
<li>
Construct (either manually, by crawling, or by existing models) a mid-to-large-scale dataset
studying a specific programming language or domain
</li>
<li>
Pick a relatively low-resource language
(<a href="https://en.wikipedia.org/wiki/Haskell_(programming_language)" target="_blank">Haskell</a>,
<a href="https://en.wikipedia.org/wiki/Prolog" target="_blank">Prolog</a>,
<a href="https://en.wikipedia.org/wiki/Datalog" target="_blank">Datalog</a>,
<a href="https://scallop.github.io/" target="_blank">Scallop</a>,
<a href="https://en.wikipedia.org/wiki/CodeQL" target="_blank">CodeQL</a>,
<a href="https://en.wikipedia.org/wiki/LEAN_(proof_assistant)" target="_blank">LEAN</a>,
<a href="https://en.wikipedia.org/wiki/Coq" target="_blank">Coq</a>,
<a href="https://en.wikipedia.org/wiki/Z3_(satisfiability_modulo_theories_solver)"
target="_blank">Z3</a>,
<a href="https://en.wikipedia.org/wiki/Racket_(programming_language)" target="_blank">Racket</a>,
<a href="https://en.wikipedia.org/wiki/Clojure" target="_blank">Clojure</a>,
<a href="https://en.wikipedia.org/wiki/LaTeX" target="_blank">LaTeX</a>,
<a href="https://en.wikipedia.org/wiki/TikZ" target="_blank">TikZ</a>,
<a href="https://en.wikipedia.org/wiki/Processing_(programming_language)"
target="_blank">Processing</a>,
<a href="https://en.wikipedia.org/wiki/PDDL" target="_blank">PDDL</a>)
and construct a small-scale dataset and evaluate LLMs' performance on synthesizing programs within
the language
</li>
<li>
Pick a high-resource language but a specific domain (Kernel driver within C, CUDA drivers, Unreal
Engine Programming within C++, Neural Network Modules within Python/PyTorch/JAX) and evaluate LLMs'
performance on the domain
</li>
<li>
Design a small domain-specific language (for robot control, games, theorem proving, databases,
maths, logic, visualization, animation, and etc.) and demonstrate LLMs' capability generating
programs within the language
</li>
<li>
Implementing a conversational coding agent that can help users make edits or feature requests to a
codebase
</li>
<li>
Implementing a downstream application that involves synthesizing of programs
</li>
<li>
Using LLMs to synthesize formal specifications for existing programs, and properly evaluate the
generated specifications
</li>
<li>
Identifying security vulnerabilities within LLM generated programs
</li>
<li>
Implementing the technique in existing papers (refer to <a href="readings.html"
target="_blank">Readings</a>)
</li>
</ol>
<p><em>Note: These are suggestions only. You are encouraged to propose your own ideas based on your
interests and background.</em></p>
</section>
</main>
</body>
</html>