601.428/628 (F20): Compilers and Interpreters, Fall 2020
Welcome to the website for Compilers and Interpreters (Fall 2020) 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
- Piazza (ask questions here!): https://piazza.com/jhu/fall2020/601428
- Gradescope (assignment submission): https://www.gradescope.com/
News
- Dec 8 — Details of the optional Assignment 6 are available.
- Dec 2 — You may submit Assignment 5 as late as Friday, Dec 11th for full credit.
- Dec 2 — Assignment 5 has been updated with example generated code and performance results, and a clarification about where to add the
crbegin()andcrend()member functions needed by the live virtual registers analysis. - Nov 29 — Assignment 5 has been updated with a bugfix to the live virtual registers analysis implementation.
- Nov 20 — Assignment 5 has been updated with some additional resources for implementing optimizations.
- Nov 18 — Assignment 5 has been updated with detailed advice on how to approach implementing code optimization, and also a requirement to support an optimization flag (
-o) as a command line argument. - Nov 15 — Assignment 5 has been posted, due Friday, Dec 4th by 11pm. Also, Assignment 6 will be an optional assignment.
- Nov 9 — Assignment 4 has been updated with more example translations (high-level and x86-64).
- Nov 9 — The Schedule has been updated, and some x86-64 assembly language resources are posted on the Resources page.
- Nov 8 — Assignment 4 has been updated with more specific grading criteria for 428 and 628 students.
- Nov 1 — Assignment 4 has been posted, due Friday, Nov 13th by 11pm. Note that the assignment description will be updated to fill in some additional details in the near future.
- Oct 28 — Assignment 3 has been updated to specify type checking rules for assignments.
- Oct 18 — Assignment 3 has been posted, due Friday, Oct 30th. Also, the Schedule and Assignments pages have been updated to indicate the remaining assignment due dates.
- Oct 6 — Assignment 2 has been updated with an improved version of scan_grammar_symbols.rb, which allows
%tokendirectives to specify arbitrary%unionfields. - Oct 1 — The Schedule has been updated with topics and readings for next week.
- Oct 1 — Assignment 2 has been updated with some clarifications.
- Sep 29 — Assignment 2 has been updated to describe error handling expectations and requirments for students taking 601.628.
- Sep 28 — Exam 1 is out (on the Piazza resources page), and is due on Gradescope by Wednesday, Sept 30 by 3pm.
- Sep 22 — Assignment 2 has been posted, due Friday, October 16th by 11pm.
- Sep 13 — The due date for Assignment 1 has been moved to Friday, September 18th by 11pm.
- Sep 3 — The Schedule has been updated to include suggested readings.
- Sep 2 — Assignment 1 is due Wednesday, September 16th by 11pm.
- Aug 31 — Welcome!