Engineering LLM-Integrated Systems

CS4973 Section 2 Fall 2024

Time and Location

Tuesdays and Fridays: 1:35pm – 3:15pm

Location: Ryder Hall 159

Course Description

Generative AI has raised our expectations of what is possible with software. The previous generation of AI assistants had a narrow set of skills and limited fluency in natural language. However, recent advances in large language models (LLMs) have shown that it is possible to build software systems with a far more natural and fluid interface. These LLM-integrated systems turn natural language instructions into actions and are starting to appear in everything from office apps to robots.

In this course, we will study the software engineering foundations for LLM-integrated systems. Students will learn how to build these systems, integrate them with existing software, rigorously test their behavior, and understand their failure modes and limitations.

Prerequisites: This is a programming intensive course, and students will be expected to be proficient at programming and testing software that does not use LLMs.  We will primarily work in Python, but prior Python experience is not required.

Formal prerequisites: CS 3000, CS 3500, or DS 3500

Further Information

Our goal is to try to prepare you for the major changes in software and software engineering that are happening, as a result of deep integration of LLMs. We hope that with what you learn, you’ll be able to actively participate in this ongoing software revolution. LLM-integrated systems are still in their infancy. We don’t yet know the “right way” to engineering them. There are several competing approaches, and new ideas are constantly being developed. It is quite likely that before the semester is over, new methods will emerge that will make something that we teach earlier in the semester seem quaint. Despite this relentless pace, there are principles that have emerged over the last few years that we believe will remain relevant for several years to come. So, this course will focus on teaching (1) the emerging foundations of LLM-integrated systems, and (2) the skills you need to keep up with new developments in the field. Everything in this field is presently an experiment, and that includes this course. So, be prepared for rough edges.