Course Staff
Instructor: Prof. Thomas LaToza (tlatoza@gmu.edu)
Office hours by appointment.Teaching Assistant: Umama Dewan (udewan@gmu.edu)
Office hours by appointment.Course Overview
LLM-powered developer tools offer the potential to completely reinvision programming, transforming programming from interacting with code to interacting with a programming agent. This course will offer an in-depth introduction to LLM-powered developer tools, primarily through hands on work using LLM-powered tooling on programming tasks. This course will explore new types of programming tools and interactions, including agentic programming, vibe coding, and spec-driven development. Students will gain practical experience in IDE tooling, such as Cursor, Claude Code, GitHub CoPilot, OpenHands, and Replit, on a variety of programming tasks, such as implementing features, testing, debugging, refactoring, onboarding, code review, and writing documentation. Students will critically examine new tools to identify limitations and drawbacks, explore emerging best practices, and examine the productivity impact of LLM-tooling.
We'll explore LLM-powered programming tools by focusing on different types of activities they may support. Throughout the course, we'll examine the literature on the challenges developers face across each of these activities and then dive into how new techniques powered by LLMs may help to address these challenges. Depending on time, we may also explore cross-cutting issues such as trust, security, and benchmarking.
Lectures each week will include a mix of lecture, presentations by students on tools, hands on activities using tools, and discussion about experiences and best practices with tools. There will be no exams in the course. Grades will come from written responses to readings, class activities and tech talks, and HW assignments.
Throughout the course, you will be using LLM-powered tools. Many of these tools have free tiers, with support for limited usage. However, we expect that you may need to buy a subscription for 2-3 LLM-powered tools over the course of the semester to complete the coursework.
In-Class Activities
During class, you will have opportunities to use various LLM-powered programming tools. To help you to examine these tools critically and reflect on your experiences, you'll be asked to answer some questions about your experiences.
Readings
Each lecture will have assigned weekly readings or videos to complete before lecture. You will post your reactions to each reading on Piazza by answering questions about the readings or videos.
Tech Talk & Posts
In groups of 2 or 3, you will explore a LLM-powered programming tool. Over the course of the semester, your group will become an expert in the tool, trying it out and learning from posts & podcasts about the best practices about how developers are using it in industry. You'll present what you learn in a talk to the class as well as in blog posts which you can share back with industry practioners.
Tentative Schedule
1. Vibe Coding (1) (8/28)
2. Vibe Coding (2) (9/4)
Required video: Deep Dive into LLMs like ChatGPT3. APIs and Agents (1) (9/11)
Required reading: Challenges and Paths Towards AI for Software Engineering4. APIs and Agents (2) (9/18)
Required readings: OPENHANDS: AN OPEN PLATFORM FOR AI SOFTWARE DEVELOPERS AS GENERALIST AGENTSSWE-smith: Scaling Data for Software Engineering Agents
5. Debugging (1) (9/25)
Required readings: Navigating Complexity: How Context Shapes Debugging Strategy Choices Among Expert DevelopersLet’s Fix this Together: Conversational Debugging with GitHub Copilot
6. Debugging (2) (10/2)
Required readings: Modern debugging: the art of finding a needle in a haystackChatDBG: Augmenting Debugging with Large Language Models
NO CLASS (10/9)
7. Understanding a codebase (1) (10/16)
Required readings: Hard to answer questions about codeAnswering Developer Questions with Annotated Agent-Discovered Program Traces
8. Spec-Driven Development (10/23)
Required videos: What is AI Native DevelopmentTransforming Dev Practices with Kiro’s Spec-Driven Tools
9. Understanding a Codebase (2) (10/30)
10. Code Review (11/6)
Required readings: Modern Code Review: A Case Study at GoogleCan static analysis tools find more defects? A qualitative study of design rule violations found by code review
Project checkpoint due.
11. Testing (1) (11/13)
Required readings: Automated Unit Test Improvement using Large Language Models at MetaMutation-Guided LLM-based Test Generation at Meta
12. Testing (2) (11/20)
THANKSGIVING RECESS - NO CLASS (11/27)
13. Project Presentations (12/4)
Course Policies
Resources
This course will use Piazza for posting assignments and announcements. Additionally, we will use Piazza for a discussion board. Assignments will be submitted through Canvas. Grades will be available through Canvas.
Makeups
As each of the assignments build on prior assignments, it is important to submit each assignment in a timely fashion. 10% will be deducted for late assignments and late assignments will only be accepted for 24 hours after the due date. Assignments submitted more than 24 hours late will receive a zero. If you’re worried about being busy around the time of a submission, please plan ahead and get started early.
Grading
In-Class Activities & HW Assignments: 60%Tool Reports: 20%
Responses to Readings & Videos: 20%
Letter Grades
Course letter grades will be assigned based on the following cutoffs (the minimum required percentage to achieve a specific letter grade):- A+: 98%
- A: 93%
- A-: 90%
- B+: 87%
- B: 83%
- B-: 80%
- C: 70%
- F: <70%