Compilers and Interpreters
Fall, 2025 (3 credits, E)
Instructor
David Hovemeyer <daveho@cs.jhu.edu>
Office: Malone 240A
Office hours: T 12-2pm, Th 1-3 pm, or by arrangement, via Zoom (see Courselore for URL)
Course Assistants
Head course assistant:
- Michael Berman mberma24@jhu.edu
Meeting
MW 12:00–1:15 pm
Class meetings are in Krieger 180
Textbook
Recommended: Cooper and Torczon, Engineering a Compiler (2nd Ed.), ISBN 9780120884780
Recommended: Levine, Flex and Bison, ISBN 9780596155971
Online Resources
Lecture notes, assignments, and public information about the course will be posted on the course website, https://jhucompilers.github.io/fall2025. You should check the course website frequently.
Courselore (announcements, discussion): https://courselore.org (You should receive an invite link, email me if you haven’t received it)
Gradescope (assignment/exam submission and grading): https://www.gradescope.com (You should be able to use “School Credentials” to log in using JHU SSO, email me if you are having issues)
Lecture recording videos will be posted on Canvas: click the “Panopto Video” link on the left hand side of the page.
Course Information
- 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.
- Prerequisites
Intermediate Programming (EN.601.220)
Data Structures (EN.601.226)
Computer Systems Fundamentals (EN.601.229) - Elective
Course Goals
By the end of the course, you will
- Describe lexical structure using regular expressions and finite automata
- Implement lexical analyzers using ad-hoc techniques and lexical analyzer generators
- Describe syntactic structure using context-free grammars
- Design grammars to achieve desired semantic properties
- Design grammars suitable for top-down and bottom-up parsing techniques
- Implement parsers using ad-hoc techniques and parser generators
- Implement intermediate representations such as abstract syntax trees and control-flow graphs
- Use intermediate representations for interpretation
- Use intermediate representations for semantic analysis
- Use intermediate representations for code generation
- Optimize generated code for code size and run-time efficiency
This course will address the following Criterion 3 Student Outcomes:
Graduates of the program will have an ability to:
2) Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the programs discipline.
Course Topics
- Lexical analysis
- Parsing
- Intermediate representations
- Interpretation
- Semantic analysis and type checking
- Runtime environments
- Code generation
- Code optimization
Course Expectations & Grading
Class meetings will consist of lecture and discussion, interspersed with in-class activities.
Your course grade will be determined as follows:
- Programming assignments: 50%
- Exams: 50%
You have a total of 120 late hours to use as needed for homework assignments throughout the course. If you are planning on using more than 48 late hours on an assignment, please send a private message to the instructors on Courselore to let us know. Assignment submissions which exceed the maximum number of late hours will (generally) not be considered for credit. Having said that, we understand that exceptional circumstances can arise. If you are in a situation where you think you may need additional late hours, please notify your instructor.
Key Dates
The Schedule lists exam dates.
The Assignments page lists assignments and their due dates.
Assignments & Readings
The Schedule lists the topics and readings for each day.
The course’s Canvas page (under Panopto Video) hosts the lecture videos.
Ethics
The strength of the university depends on academic and personal integrity. In this course, you must be honest and truthful, abiding by the Computer Science Academic Integrity Code:
Cheating is wrong. Cheating hurts our community by undermining academic integrity, creating mistrust, and fostering unfair competition. The university will punish cheaters with failure on an assignment, failure in a course, permanent transcript notation, suspension, and/or expulsion. Offenses may be reported to medical, law or other professional or graduate schools when a cheater applies.
Violations can include cheating on exams, plagiarism, reuse of assignments without permission, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition. Ignorance of these rules is not an excuse.
Academic honesty is required in all work you submit to be graded. Except where the instructor specifies group work, you must solve all homework and programming assignments without the help of others. For example, you must not look at anyone else’s solutions (including program code) to your homework problems. However, you may discuss assignment specifications (not solutions) with others to be sure you understand what is required by the assignment.
If your instructor permits using fragments of source code from outside sources, such as your textbook or on-line resources, you must properly cite the source. Not citing it constitutes plagiarism. Similarly, your group projects must list everyone who participated.
Falsifying program output or results is prohibited.
Your instructor is free to override parts of this policy for particular assignments. To protect yourself: (1) Ask the instructor if you are not sure what is permissible. (2) Seek help from the instructor, TA or CAs, as you are always encouraged to do, rather than from other students. (3) Cite any questionable sources of help you may have received.
On every exam, you will sign the following pledge: “I agree to complete this exam without unauthorized assistance from any person, materials or device. [Signed and dated]”. Your course instructors will let you know where to find copies of old exams, if they are available.
Please note that submitting code, writing, or other products generated by AI (including but not limited to ChatGPT and Github Copilot) is considered to be a violation of academic ethics.
Policies
Mental Health Statement
Many students struggle at times with stress and mental health concerns. Johns Hopkins University Mental Health Services has a range of services to support students with their mental health. Beyond clinical services, JHU also has many resources available to support overall student well-being.
For 24/7 behavioral health support, The Johns Hopkins University Behavioral Health Crisis Support Team (BHCST) pairs experienced, compassionate crisis clinicians with specially trained public safety officers on every shift on and around the Homewood campus, seven days a week. The BHCST will provide immediate assistance to those who need it and link individuals in crisis to ongoing support services in the days and weeks that follow. BHCST can be reached directly at 410-516-9355 or by calling Public Safety, 410-516-4600 or 7777, and asking to be connected to a BHCST clinician.
If you have concerns about a yourself or another student, please contact:
- For emergencies (threat to self or others): Public Safety 410-516-7777 or 911
- For 24/7 mental health support (mobile, access line and virtual): BHCST at 410-516-9355
- For undergraduate students who may benefit from Case Management services (1:1 support, coordination and connection to relevant campus resources): Student Outreach & Support at 410-516-7857 or studentoutreach@jhu.edu
- For KSAS Graduate Students: Renee Eastwood, Assistant Dean for Graduate and Postdoctoral Academic and Student Affairs
- For WSE Graduate Students: Megan Barrett, Assistant Dean for Engineering Student Affairs
Academic Integrity
The strength of the university depends on academic and personal integrity. In this course, you must be honest and truthful. Ethical violations include cheating on exams, plagiarism, reuse of assignments, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition.
Report any violations you witness to the instructor. You can also contact:
- For undergraduates: the associate dean of student conduct (or designee) by calling the Office of the Dean of Student Life at 410-516-8208 or via email at studentconduct@jhu.edu
- For KSAS Graduate Students: rseitz5@jh.edu
- For WSE Graduate Students: christinekavanagh@jhu.edu
Disability Services
Johns Hopkins University is committed to providing welcoming, equitable, and accessible educational experiences for all students. If disability accommodations are needed for this course, students should request accommodations through Student Disability Services (SDS) as early as possible to provide time for effective communication and arrangements.
For further information about this process, please refer to the SDS Website or email SDS Homewood: studentdisabilityservices@jhu.edu.
Inclusivity
The following statement was provided by the Homewood Council on Inclusive Excellence and is incorporated into all WSE course syllabi.
Johns Hopkins University is committed to creating a classroom environment that values the diversity of experiences and perspectives that each student brings. Everyone deserves to be treated with dignity and respect. Fostering an inclusive climate is important because research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. We invite you to help create a welcoming, vibrant and intellectually engaging classroom climate. Note that you should expect to be challenged intellectually by the instructor, the TAs, and your peers, and at times this may feel uncomfortable. Indeed, growth often requires being pushed beyond your comfort zone. However, at no time in this learning process should someone be singled out or treated unequally based on any aspect of their identity (visible or invisible).
If you ever have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to your instructor or the TAs, who will take your communication seriously and seek mutually acceptable resolutions and accommodations. Reporting will never impact your course grade. You may also share concerns with the department chair, the Director of Undergraduate Studies [link to heads/DUS document], the WSE Associate Dean of Outreach and Belonging (Darlene Saporu, dsaporu@jhu.edu), the KSAS Assistant Dean for Diversity and Inclusion (Araceli Frias, afrias3@jhu.edu) or the Office of Institutional Equity (oie@jhu.edu).
In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g., sexual harassment).