Compilers and Interpreters, Fall 2022
Welcome to the website for Compilers and Interpreters (Fall 2022) at Johns Hopkins University!
Course description: Introduction to compiler design, including lexical analysis, parsing, syntax-directed translation, symbol tables, runtime environments, and code generation and optimization. Students are required to write a compiler as a course project.
All public information about the course (readings, assignments, etc.) will be posted on this website.
Use the links above to navigate the site. The Syllabus describes course policies. The Schedule is the schedule of topics and exams. The Assignments page has links to the programming assignments and indicates when they are due. The Resources page has links to useful resources.
Important links
- Courselore (ask questions here!): https://courselore.org/
- Gradescope (assignment submission): https://www.gradescope.com/
Please email daveho@cs.jhu.edu if you need to get access to Courselore and/or Gradescope.
News
- Dec 3 — Assignment 5 has been updated with entirely optional information about implementing peephole optimizations to improve the quality of generated low-level code.
- Dec 1 — Assignment 5 has been updated with examples of optimized generated code, more information about testing your optimizations, and the expectations for the experiments and report.
- Nov 18 — Assignment 5 is available, and is due by 11pm on Friday, Dec 9th.
- Nov 16 — Exam 3 will take place at 2pm on Friday, Dec 16th in Hodson 311 (our usual classroom.) Review materials are on the Resources page.
- Nov 4 — Assignment 4 now has reasonably complete information about Milestone 2. Also, the public test repository can now be used for automated testing, and has a variety of test programs available.
- Nov 2 — Assignment 4 has been updated with instructions on how to get started on Milestone 2.
- Oct 30 — Assignment 4 has been updated with
a required
Makefilefix, a required member function in theSemanticAnalysisclass, functions you will need to override inHighLevelCodegento support pointers and struct types, and some new example high-level translations. - Oct 26 — Assignment 4 has two milestones, due (respectively) on Friday, Nov 4th and Friday, Nov 18th.
- Oct 19 — Assignment 3 has been updated to list the subset of operators which should be supported.
- Oct 18 — Assignment 3 has been updated to describe a fix to the starter code which works around an issue in handling recursive struct types (such as linked list node types.)
- Oct 11 — The Struct types section of Assignment 3 has been updated to describe the required approach for handling struct type definitions more accurately.
- Oct 11 — Because Fall break takes place October 20th and 21st, the due date for Assignment 3 has been changed to Monday, Oct 24th.
- Oct 10 — Assignment 3 is due Friday, Oct 21st by 11:59 pm.
- Oct 3 — A mistake in the answer to Question 3 in the solution to the Fall 2021 Exam 1 has been corrected.
- Sep 30 — Assignment 2 has been updated to correct
a mistake in the specification of how arrays are converted to strings
(when printed by
printorprintln.) - Sep 30 — The due date for Milestone 2 of Assignment 2 has been moved to Thursday, Oct 6th.
- Sep 28 — The Schedule has been updated with a date for Exam 2, and a tentative schedule of future topics, readings, and assignment due dates.
- Sep 25 — Exam 1 will take place in class on Wednesday, Oct 5th. Review materials are available on the Resources page.
- Sep 20 — Assignment 2 has been updated to more precisely describe the expectations for Milestone 1.
- Sep 19 — The Schedule has been updated with lecture slides and readings through Oct 3rd.
- Sep 18 — Assignment 2 has been updated with
new versions of
function.cpp,valrep.h, andvalrep.cppwhich correct bugs in the original versions of these files. - Sep 17 — The full specification of Assignment 2 is available. There are two milestones, due Sep 26th and Oct 3, respectively.
- Sep 15 — A preliminary specification of Assignment 2 is available. It specifies the required lexer and parser changes needed to support functions, but does not yet have a description of their semantics (although the Lecture 5 slides have a fairly detailed presentation of the important concepts.)
- Aug 31 — Assignment 1 is due Friday, Sep 16 by 11pm.
- Aug 29 — Welcome!