Johns Hopkins University — Fall 2026
Instructor: Ziyang Li | Email: ziyang@cs.jhu.edu
Six lectures in the second half of the semester are dedicated to student-led presentations — see the course calendar for the dates. Each presentation topic includes three related research papers, with two students assigned to each paper — so each session has six presenters.
Each paper is led by two students, who split the discussion between them:
The sign-up form is now open! Please complete it to indicate your topic preferences, your preferred role (Defender/Attacker), and your availability. Topic and role assignments will consider your preferences; in case of conflicts, earlier submissions will receive priority, so sign up early. We will announce the assignments after collecting everyone’s responses.
Sign-up Form: EN.601.727 Oral Presentation Sign-Up
Deadline: Tuesday, October 20, at 11:59 PM
This oral presentation is graded on a completion basis, contributing 10% of your final course grade:
Important: If you do not submit the form by the deadline, you’ll be automatically assigned to a topic and presentation slot at the instructor’s discretion. Failure to present in your assigned slot without prior approval will result in a zero for the presentation component.
Attendance during the student-led sessions will be recorded strictly. If you must miss a session due to external circumstances, please notify the instructor or the TA in advance.
The following eight topics explore different aspects of Machine Programming, with a focus on how AI can assist, automate, and advance programming and software development. These descriptions provide examples of research directions within each topic rather than an exhaustive list. The specific presentation papers will be assigned by the course staff.
How can we train and adapt AI models to better understand and generate code? This topic explores pre-training and fine-tuning on code-related data, reinforcement learning with coding feedback, and techniques such as LoRA, quantization, and knowledge distillation to improve the efficiency and effectiveness of models for programming tasks.
How can multiple AI agents collaborate to accomplish complex programming tasks? This topic explores how coding agents divide responsibilities (e.g., planning, implementation, testing, and reviewing), how different organizational structures and communication topologies affect their performance, and how agents coordinate through communication protocols to develop software collaboratively.
Can AI systems improve their own programming capabilities? This topic explores how AI agents can iteratively improve their coding workflows and harnesses, automatically search for better model or agent architectures, and conduct machine learning research by generating, executing, and evaluating code with limited human intervention.
How can AI automate different stages of the software development lifecycle? This topic covers AI-powered coding and computer-use agents, program understanding and transformation (e.g., decompilation, transpilation, and reverse engineering), and automated software testing, static and dynamic analysis, debugging, and program repair.
How can AI assist with programming tasks in cybersecurity? This topic explores AI-driven vulnerability detection and code analysis, automated generation and testing of exploits, and security agents that write and execute scripts for penetration testing, red teaming, and vulnerability remediation.
How can AI help develop programs that control and interact with physical systems? This topic explores AI-assisted generation, adaptation, and testing of software for autonomous vehicles, robots, and humanoid systems, including generating robot control code, planning executable actions, and validating programs through simulation and real-world feedback.
How can AI assist with programming for mathematical reasoning and scientific discovery? This topic explores AI-assisted formalization and theorem proving, generation of programs for scientific modeling and simulation (e.g., Navier–Stokes equations), and automated optimization of numerical algorithms and high-performance computing code.
How can AI make programming more accessible and interactive for human users? This topic explores natural-language, visual, and graphical programming, AI-assisted development interfaces, human-AI collaborative coding, educational systems for STEM students, and systems that help users create, understand, and modify programs with minimal programming expertise.