- Cornell CS의 박사 수준 과목 CS 6120을 온라인에서 따라갈 수 있도록 강의 영상, 노트, 논문 읽기, 구현 과제를 묶은 자기주도 커리큘럼임
- 중간 표현, 데이터 흐름, 고전적 최적화 같은 컴파일러 핵심 주제부터 병렬화, JIT 컴파일, 가비지 컬렉션까지 다룸
- 실습은 LLVM과 교육용 IR Bril을 사용하며, 추상 개념을 직접 구현해 보는 오픈소스 해킹 과제로 이어짐
- 자기주도 버전은 마감 기한을 무시할 수 있지만, 실제 수업의 Zulip 토론과 학기말 프로젝트에는 참여할 수 없음
- 자료는 GitHub에 오픈소스로 공개되어 있어 문제를 제보할 수 있고, 수료 후에는 피드백 폼을 작성할 수 있음
수강 방식과 다루는 범위
- CS 6120은 Cornell CS의 Adrian Sampson이 만든 프로그래밍 언어 구현 과목임
- 강좌 범위는 컴파일러 구현의 공통 기반과 연구 지향 주제를 함께 포함함
- 중간 표현
- 데이터 흐름
- “고전적” 최적화
- 병렬화
- JIT 컴파일
- 가비지 컬렉션
- 학습은 논문 읽기와 오픈소스 해킹 과제로 진행됨
- 자기주도 커리큘럼은 “상상 속 대학”에서 4학점짜리 미채점 과목을 듣는 형식으로 정리되어 있음
- 강의는 선형 순서로 배열됨
- 각 레슨에는 영상과 글 노트가 있음
- 일부 레슨에는 구현 과제가 포함됨
- 영상 시청과 논문 읽기를 섞어 진행하도록 권장 순서가 잡혀 있음
실제 수업과 다른 점
- 자기주도 수강자는 과제 마감 기한을 무시할 수 있음
- 실제 수업의 Zulip 토론에는 참여할 수 없음
- 실제 CS 6120에는 학기말 프로젝트가 있음
- 자기주도 버전의 학기말 과제는 “컴파일러의 마법으로 세상을 바꾸는 것”임
- 강의 제작 품질은 특히 초기 레슨에서 낮을 수 있음
- CS 6120 자료는 GitHub에 오픈소스로 공개되어 있으며, 문제를 발견하면 버그를 제보할 수 있음
- 수료 후에는 피드백 폼을 작성할 수 있음
레슨과 읽기 자료
- Lesson 1: Welcome & Overview
- Lesson 2: Representing Programs
- Lesson 3: Local Analysis & Optimization
- Lesson 4: Data Flow
- Lesson 5: Global Analysis
- Lesson 6: Static Single Assignment
- Lesson 7: LLVM
- Lesson 8: Loop Optimization
- Lesson 9: Interprocedural Analysis
- Lesson 10: Alias Analysis
- video
- A Unified Theory of Garbage Collection, OOPSLA 2004
- Fast Conservative Garbage Collection, OOPSLA 2014
- Lesson 11: Memory Management
- Lesson 12: Dynamic Compilers
- Lesson 13: Program Synthesis
- Lesson 14: Concurrency & Parallelism