15-411/611 Compiler Design 15-411/611 - COURSE PROFILECourse Level:Undergraduate/GraduateUnits: 15Special Permission Required: No(if yes, please see Notes below)Frequency Offered: Generally offered every fall - confirm course offerings for upcoming semesters by accessing the university Schedule of ClassesCourse Relevance (who should take this course?): This course covers the design and implementation of compiler and run-time systems for high-level languages, and examines the interaction between language design, compiler design, and run-time organization.Key Topics:Background Knowledge:Assessment Structure:structure of a compiler compilerstatic and dynamic semanticscompiler correctnessparsing and lexingsemantic analysiscode generationstatic single assignment formdataflow analysiscompiler optimizationsassembly coderegister allocationintermediate representationsautomatic memory managementMost Recent Syllabus Available: http://www.cs.cmu.edu/~janh/courses/411/17/Students are expected to have significant esperiance in a high-level programming languageset of homework assignments: 30%labs: 70%Sample Exam: not providedSample Assignment:http://www.cs.cmu.edu/~janh/courses/411/16/hw/lab1.pdfSample class notes: not providedSample Lecture Recording: not applicableCourse Website: http://www.cs.cmu.edu/~janh/courses/411/17/Course ObjectivesDistinguish the main phases of a state-of-the-art compilerUnderstand static and dynamic semantics of an imperative languageDevelop parsers and lexers using parser generators and combinatorsPerform semantic analysisTranslate abstract syntax trees to intermediate representations and static single assignment formAnalyze the dataflow in an imperative languagePerform standard compiler optimizationsGenerate efficient assembly code for a modern architectureAllocate registers using a graph-coloring algorithmUnderstand opportunities and limitations of compiler optimizationsAppreciate design tradeoffs how representation affects optimizationsAutomatically manage memory using garbage collectionDevelop complex software following high-level specificationsLearning Resources:Pre-reqs, Cross list, Related Notes: GithubPiazzaOptional textPrerequisites Required: 15-213Minimum Grades in Prereqs:Corequisites: NonePrerequisite for: Anti-requisites:Cross-Listed: Substitutes: Related Courses: NoneReservations: Some reservations are for Students in CS; Some reservations are for Students in ECEThis course is cross-listed with graduate level number 15-611. Graduate students MUST enroll in the graduate level version of the course. Graduate students will NOT be enrolled into the undergraduate level course and will be removed from the waitlist without notification. updated August 2017 Back to Course Profile List