CMSC 398Z - Effective use of AI coding assistants and agents

Fall 2025, Fridays, 2-4pm, IRB 2207, organized by Bill Pugh and Derek Willis.

PREREQUISITE: Minimum grade of C- in CMSC320 or CMSC330; and permission of CMNS-Computer Science department.

Weekly Notes and downloads

All of the weekly notes and project downloads are now hosted on github. Weekly notes include references and links for each class, as well as links to readings and learning logs to be completed by the following week.

Course description

Covers how to effectively use AI coding tools to develop software. The course will look at the tools and techniques used by engineers at companies like Google and Microsoft to develop production-quality code, as well as techniques to vibe code and quickly generate interactive visualizations and proof-of-concepts. The course will cover using chatbots, AI-powered IDEs such as VSCode with Copilot and command line tools such as Claude code. Many of these tools can automatically invoke build systems, run test cases, and fix errors. Most programming in the course will be done in Python, which is the language best supported by AI coding assistants. We will also cover Simon Willison's LLM tool, which allows writing simple Python programs that query LLMs and interact with databases, structured data extraction, and semantic search.

As the class and format are new, we are unsure of the speed it will take us to work through the material, so no dates are given as to when we will get to a particular topic. This entire field is changing very fast. Best practices and available tools change month by month. At the start of the semester, the agenda for the end of the semester is tentative and may change significantly by November.

The first class will be the only class that is primarily lecture. Expectations are that students will read/watch material and do exercises and surveys for each class before the scheduled time. Most weeks, much of the 2-hour window for class will be more like a discussion section or hackathon, with students discussing projects and readings around each table and doing pair coding.

There will be assigned readings for each week and a survey and learning log for students to complete. It is expected that most or all of the required work on programming tasks can be completed during class.

Topics

Details of course topics and planned readings provided here. High level list of topics:

Student expectations

A guiding principle for this course is that the best way to learn these skills is to spend productive time using them, discussing your experiences with others and hearing what experiences others had with them. For that time to be productive, students need to have a way to get unstuck when they encounter glitches. Rather than depend solely upon office hours for that, we will expect that other students will generally be able to help students get unstuck.

All instructor provided course material will be open to anyone. In order to get the most out of the course, the following are the expectations for class:

Creating a supportive environment

Students share a responsibility for the course’s learning environment. Creating a cohesive online learning community requires learners to support and assist each other. To craft an open and interactive online learning environment, communication has to be conducted in a professional and courteous manner at all times, guided by common sense, collegiality and basic rules of etiquette.

This course involves more interaction with other students than you may have had in any other CMSC course. Sharing and receiving feedback from others is a skill you can continue to develop and improve over your entire lifetime. Even at companies like Apple and Google it is a skill that employees are provided mentorship on. If you find challenges in general, or working with a particular person challenging, please reach out to the instructors. Don't wait until it becomes such a significant problem. If you find an individual unhelpful or challenging to work with, we will take that information confidentially and see if we can find ways to provide mentoring and feedback that doesn't require escalation outside of the course. Of course, if a more significant problem arises, we will handle that through standard campus reporting mechanisms.

But also, if you feel that a particular student has been exceptionally helpful in allowing you to master the material in this course, please let us know. We will be looking to identify some heroes who have been particularly helpful to others in the course and find a way to recognize them.

Grading

It is expected that students will be able to complete their learning log writing assignment and preparation for the next class in two hours of work between classes. Participation in class activities is a significant portion of the course grade, and cannot be accomplished without attendance at each class. Details of grading

Disclosures

Companies and individuals working in this space are eager to attract individuals, particularly students, to use their tools and resources, and many provide some level of free access to students, or perhaps everyone. We have made selections of tools and resources for this class, but other than working well at this point in time to serve the goals of this class, our use should not be considered as a recommendation of which tools and resources are better. Nothing said in this course should be considered investment advice.

Bill Pugh: I own stock in a number of tech companies including Google, Apple and Microsoft. I've worked at Google and Apple, my brother works on Copilot at Microsoft, and I have friends everywhere.

Derek Willis: Several former colleagues from my time in journalism now work at tech companies, including Anthropic, and Simon Willison, whose software and materials are referenced in this course, is a longtime friend who provides me with access to a cloud service he runs for a side project of mine. I’m also part of a team working on AI-assisted journalism tools through a grant from the Scripps Howard Foundation.

Policies