- 교수: 허기홍 🏠 📧
- 조교 📧
- 강의 시간: 월/수 Mon/Wed 09:00 - 10:15
- 면담 시간(사전 약속 필요):
- 교수: Mon 10:15 - 11:00
- 조교: Mon 10:15 - 11:00
- 강의실: N1 102
내가 원하는 프로그램을 자동으로 만들 수 있는가? 그리고 그 프로그램이 내가 원하는 것임을 자동으로 증명할 수 있는가?
본 강의의 핵심 주제는 안전하고 믿을 만한 소프트웨어를 만들기 위한 "명세와 구현 사이의 관계"이다. 크게 아래와 같은 두 가지 세부 주제를 다룬다:
- 프로그램 검증(program verification): 주어진 구현이 해당 명세를 만족하는지 어떻게 자동으로 증명할 것인가?
- 프로그램 합성(program synthesis): 주어진 명세를 만족하는 구현을 어떻게 자동으로 만들어낼 것인가?
학생들은 강의와 숙제를 통해 프로그램 검증과 합성의 이론과 실제를 배울 것이다. 그리고 나아가 논리와 직관을 모두 갖춘 진정한 종합 인공지능이 실현되는 미래를 함께 그리게 될 것이다.
본 강의에서는 쉬운전문용어를 사용하여 소박하게 지식을 전달한다.
- 숙제: 30%
- 기말고사: 50%
- 참여: 20%
- 적극적인 참여로 본인이 배운 바를 스스로 다채롭게 내뿜는 학생들을 위한 보상입니다.
- 매 수업 시간에 항상 여러분을 만날 수 있기를 기대합니다. 출석은 정량평가하지 않습니다. 정량화할 만큼 가치가 낮지 않기 때문입니다.
- 절대 평가: A >= 70, B >= 50, C >= 30, D >= 20, F < 20
이 강의는 P/NR 성적을 허용하지 않습니다. 신입생은 반드시 교수에게 이메일을 통해 사전 승인을 받은 후 수강신청하길 바랍니다.
- 강의자료가 제공됩니다.
- Program Synthesis (PS)
- Introduction to Program Synthesis (IPS)
- The Calculus of Computation (COC)
모두가 몰입하는 강의를 위해 모든 전자기기(노트북, 태블릿, 핸드폰)는 책상 위에 올려놓지 않기로 합시다. 수업 중 전자기기를 사용하는 것이 끼치는 악영향은 이미 널리 알려져 있습니다(1,2). 본인의 주의를 산만하게 할 뿐만 아니라 주변 사람들이 수업에 집중하는 데도 큰 방해가 됩니다. 모두가 각자 따로 모니터를 보기 보다는 함께 같은 곳을 보며 왁자지껄 난상토론하는 수업이 되길 바랍니다. 필요한 자료는 이 저장소에 있으니 원한다면 미리 인쇄해서 오세요.
자세한 이야기는 기사를 참고하세요.
이 강의에서 학생들은 다양한 프로그래밍 숙제를 통해 프로그램 검증기와 합성기를 설계하고 구현하는 법을 배웁니다. 특히 여기에 있는 몇 가지 도구를 사용할 예정입니다.
프로그램 검증기 채점을 위한 프로그램은 BugSynth를 이용하여 자동으로 생성됩니다. BugSynth는 LLM과 프로그램 검증 기술을 활용하여 자연스럽고 믿을 만한 채점용 오류 프로그램을 생성하는 도구입니다.
모든 숙제 제출은 Github와 Gradescope를 통해서 이루어집니다. 매 숙제마다 제출을 위한 GitHub Classroom 초대 URL이 게시판에 공지됩니다. 초대를 수락하면, 여러분의 숙제를 위한 비공개 개인 저장소가 만들어질 것입니다. 여러분은 제출 기한 이전에 원하는 만큼 해당 저장소에 제출할 수 있고, 이 저장소를 Gradescope에 제출하여 채점 결과를 확인할 수 있습니다.
기한을 넘겨서 제출할 시 아래와 같은 규정에 따라 채점합니다:
- 하루 늦을 시 점수의 80%
- 이틀 늦을 시 점수의 50%
- 사흘 이상 늦을 시 0%
학문 윤리를 어긴 수강생은 F를 받습니다. 자세한 사항은 KAIST 전산학부 명예규정을 참고하십시오.
세상에 널린 자료(예: 구글 검색, ChatGPT)를 자신의 창작물인 것처럼 제출하는 것은 학문 윤리에 어긋납니다. 본 과목의 모든 과제는 본인의 능력으로 하는 것이 원칙입니다. 제출한 과제는 기존 저작물(다른 수강생, 과거 수강생, AI 생성물 등)과 자동으로 비교하여 비슷한 경우 표절로 판단합니다. 이는 학계의 오래된 원칙이며 인터넷 검색이나 AI 도구가 등장했다고 해서 달라진 것은 없습니다.
AI 도구는 여러분의 수고를 덜어주지만, 깊은 사고력을 길러주지는 못합니다. 여러 실험에서(1, 2 3) 에서 반복해서 이야기하고 있지요. AI 모델 종류와 상관없이 비슷한 질문에는 비슷하게 평범한 답을 내는 경우가 많기도 하고요. 여러분의 소중한 학습 기회를 쉽게 버리지 마시길 바랍니다.
| 주 | 주제 | 읽기 | 숙제 |
|---|---|---|---|
| 0 | Functional Programming in OCaml | ||
| 1 | Introduction | ||
| 2 | Operational Semantics | ||
| 3 | Concepts in Program Verification | ||
| 4 | Propositional Logic | COC Ch1, |
|
| 5 | First-order Logic | COC Ch2 | |
| 6 | First-order Theory | COC Ch3 | |
| 7 | Hoare Logic | COC Ch5, CACM'21 | |
| 8 | Automated Program Verification | ||
| 9 | Overview of Program Synthesis | PS Ch1-2, IPS Lec1, Wired, IEEE Spectrum, CACM | |
| 10 | Inductive Synthesis and Enumerative Search | PS Ch4.1, IPS Lec2-4 | |
| 11 | Search Space Pruning | ||
| 12 | Search Space Prioritization | CACM'18 | |
| 13 | Representation-based Search | ||
| 14 | Constraint-based Search | ||
| 15 | Functional Synthesis | ||
| 16 | Neuro-Symbolic AI | Trustworthy AI | |
| - | Final Exam |
지난 학기 수강생들이 남긴 멋진 작품을 여기서 감상해 보세요 (에세이, 그림 등).
- CS402: 전산논리학 개론, KAIST
- CS524: 프로그램 분석, KAIST
이 강의의 자료는 아래 강의의 자료를 참고하여 작성하였습니다.
- CS389: Automated Logical Reasoning, Univ. of Texas at Austin
- AAA528: Computational Logic, Korea Univ.
- CSE291: Program Synthesis, UCSD
- CSE9116: Program Synthesis, Hanyang Univ.
- Formal Software Verification Measures Up, CACM 2021
- Automated Reasoning @ Amazon
- Machine-assisted Proof
- Translation Validation
- Infer
- CodeQL
- Lessons from Building Static Analysis Tools at Google, CACM 2018
- Scaling Static Analysis at Facebook, CACM 2019
- Detect Bugs Early with the Static Analyzer, Apple WWDC 2021
- Search-based Program Synthesis, CACM 2018
- AI Can Write Code Like Humans—Bugs and All. Wired 2021
- Coding Made AI—Now, How Will AI Unmake Coding?, IEEE Spectrum 2022
- Autocorrect Errors in Excel, Nature 2021
- Asleep at the Keyboard? Assessing the Security of GitHub Copilot’s Code Contributions, CACM 2025
- Neurosymbolic AI, CACM 2022
- Trustworthy AI, KAIST Melting Pot Seminar, 2022
- Thinking Fast and Slow, 생각에 관한 생각 (번역본)
- Safeguarding Mobile AI Agent