Welcome to the website for Compilers and Interpreters (Fall 2021) 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
- Campuswire (ask questions here!): https://campuswire.com
- Gradescope (assignment submission): https://www.gradescope.com/
Please email daveho@cs.jhu.edu if you need to get access to Campuswire and/or Gradescope.
News
- Nov 30 — Review materials for Exam 3 are available on the Resources page.
- Nov 28 — The Schedule has been updated.
- Nov 17 — The unoptimized and optimized code examples for
Assignment 5 have been updated. Also, the revised
highlevel.handhighlevel.cppfiles have been added (they were missing previously.) - Nov 16 — The example low-level (x86-64 assembly) generated code examples
in Assignment 4 have been fixed to remove some
unnecessary
movqinstructions. - Nov 10 — Assignment 5 is due Monday, Dec 6th, although you may submit it as late as Friday, Dec 10th for full credit.
- Nov 9 — The Schedule has been updated.
- Nov 1 — The assignment description for Assignment 4 has been updated so that the example program translations use the strategy suggested in class of using virtual registers as storage for local variables.
- Nov 1 — The files
highlevel.handhighlevel.cppprovided in Assignment 4 have been uploaded to have aHINS_MOVinstruction, which is useful if (as suggested) you use virtual registers as storage for local variables. See the assignment description for links to the updated code. - Nov 1 — Exam 2 will take place in class on Monday, Nov 8th. Review materials are available on the Resources page. As with Exam 1, you may bring two sheets of handwritten notes to use during the exam.
- Oct 26 — Assignment 4 has been posted, and is due Friday, Nov 12th by 11pm.
- Oct 24 — The due date for Assignment 3 has been extended to Wednesday, Oct 27th (by 11pm.)
- Oct 19 — The Schedule has been updated.
- Oct 5 — The Schedule has been updated. Also, Assignment 3 is available, and is due Monday, Oct 25th by 11pm.
- Sep 29 — Solutions to practice exams 1 and 2 are available on the Resources page.
- Sep 27 — For Exam 1, you may bring two sheets of handwritten notes to use during the exam.
- Sep 22 — Exam 1 will take place in class on Monday, Oct 4th. Review materials are available on the Resources page. Also, the slides for Lectures 6–9 linked from the Schedule are now in the correct order.
- Sep 16 — Assignment 2 is due Friday, Oct 8th.
- Sep 7 — The assignment description for Assignment1 has been updated to clarify that the functional requirements for the assignment are the same for students in 601.428 and 601.628.
- Aug 30 — Welcome! Assignment 1 has been posted, and is due Wednesday, Sept 15th by 11pm.