Syllabus
In this course we’ll discuss the interface of programming languages, logic, and AI, and questions about how programming might evolve with powerful automation for code generation. We will reflect on evergreen topics in computing— complexity, logic, specification, reasoning, debugging— and consider what role they might play in the future of programming. A few questions:
- If AI writes most code, how do we trust it?
- If AI writes most code, what should programming languages of the future look like?
- How might automatic code generation be achieved more efficiently?
We will also speculate on some interesting topics within AI which are hard to be rigorous about (we’ll try anyway) and for which logic could be a useful tool.
- How can we or AI models reason about whether progress is being made on a task?
- How can we or AI models reason about evolving systems, such as AI models or people?
- In what sense are AI models creative, and how does it differ from attributions of creativity to people?
- What makes a problem interesting?
- <Your own questions here, open to suggestions>
Over the first few weeks we’ll cover background from logic and how it can inform the study of these questions. Each background topic will have a short assignment. The remainder will involve student-led presentations on research papers and a semester-long project.
Objectives
Students will learn the fundamentals of logic and techniques for using it to model and reason about computer systems, along with connections between logic, complexity, and learning. Students will also practice reading, presenting, and implementing research ideas at the interface of AI, logic, and programming languages.
Excercises
We will have some pencil-and-paper exercises for each of the topics we cover on logic. This will mostly take place within the first third of the semester.
Paper presentations
Each student presents a paper approved by the instructor and leads a discussion with the class. Each student is expected to read the assigned papers and participate in the discussion. Some options are here.
Project
Implement a non-trivial program inspired by the readings, exercises, or discussion. Give a presentation on the ongoing project later in the semester. Projects must be approved by the instructor.
Grading
This course is an opportunity to brainstorm with your peers and the instructor on open-ended questions about logic and the future of programming. The idea is to have a lively discussion throughout the semester, and students are expected to participate. Grades will therefore be mostly determined by the paper and project presentations and participation in the discussions.
- 5% exercises
- 45% paper presentation
- 50% project
AI use
Exercises should be done without the help of AI tools. Writing your project proposal and report should also be done without them. Using AI for other purposes is allowed.