Course Info


Course Description

Introduction to compiler organization and implementation, including formal specifications and algorithms for lexical and syntactic analysis, internal representation of the source program, semantic analysis, run-time environment issues and code generation. Students will write a compiler for a reasonably large subset of a contemporary language, targeted to a virtual machine.

Prerequisites: CS310 and CS420 or CS622; or permission of the instructor.

Students who successfully complete this course will be able to: write parsers and produce an abstract syntax tree (AST); analyze and generate code for a programming construct represented by an AST; and allocate physical registers (a limited resource) to a program expressed in terms of virtual registers (an unlimited resource).

Course Staff

Name Role Email Office Hours
Swami Iyer Instructor siyer@cs.umb.edu M-3-201-14 In-person: Tue Thu 10:00 AM - 12:00 PM
Remote: Wed 10:00 AM - 12:00 PM (Zoom link)
Ramsey Harrison Teaching Assistant ramsey.harrison001@umb.edu M-3-201-10 Tue Thu 1:00 PM - 2:00 PM

Note: In case you want to email us, please start the subject line with [CS451/651].

Lectures

We will have two lectures per week, during which I will present the material from the slides. I strongly recommend skimming through the material before each lecture, and reading it again thoroughly soon after.

Section When Where
1 Tue Thu 4:00 PM - 5:15 PM Y-2-2110

Text

Introduction to Compiler Construction in a Java World by Bill Campbell, Swami Iyer, and Bahar Akbal-Delibaş

The text enables a deep understanding of the Java programming language and its implementation. It covers all of the standard compiler topics, including lexical analysis, parsing, abstract syntax trees, semantic analysis, code generation, and register allocation. It also demonstrates how JVM code can be translated to a register machine, specifically the MIPS architecture. In addition, the text covers recent strategies, such as just-in-time compiling and hotspot compiling.

Grading

Assessments

Item % of Final Grade
Projects (1, 2, 3, 5, and best of 4 and 6) 35
Exams (1 and 2) 60
Attendance 5

Scale

% Score Grade
[93, 100] A
[90, 93) A-
[87, 90) B+
[83, 87) B
[80, 83) B-
[77, 80) C+
[73, 77) C
[70, 73) C-
[67, 70) D+
[63, 67) D
[60, 63) D-
[0, 60) F

Note

Click here calculate your current course grade.

iClicker

Starting from the second week, I will use iClicker to record your attendance in class. You will be able to mark yourself present, using your laptop or smart device, during the first 15 minutes of a class. In addition, I will take paper-based attendance on some undisclosed days. If I find any discrepancy in your attendance record on those days (ie, you were marked present on iClicker but absent on paper), you will receive a 0 for your overall attendance score.

Piazza

I will use Piazza as the online discussion forum for the course. If you have any general questions about the projects, lectures, textbook, or other course material, the most effective way to get them resolved is by posting them on Piazza. You can expect your questions to be answered by the course staff or one of your classmates. Remember that you can post anonymously, but you are anonymous only to your classmates and not to the course staff.

Gradescope

I will use Gradescope to grade your projects and exams.

Programming Environment

To write and execute Java programs in this course, you will need a laptop (Linux, Mac, or Windows) properly configured with the necessary software. Click here for setup instructions.

CS Account

In order to use the computing resources of the department, and in particular, those in the UNIX/PC Lab (M-3-0731), you need to setup a CS account. With your CS account credentials, you can connect to our designated server (users.cs.umb.edu) remotely using SSH. With the same credentials, you can also sign into the Linux systems in the CS Lab. In addition, you can sign into the Windows systems in the lab with the same username and an initial password abcd_1234, which you must change the first time you sign in.

Visit CS Labs Portal to register for a portal/CS account and confirm via email. If you already have a CS account, use the same username. The next step is to sign into the portal and select your courses for the term. You will be notified via your UMB email once the course directories and your account are created.

Policies

Classroom

Piazza

Excused Absence and Makeup Exam

You must provide appropriate documentation if:

The documentation must be a letter from the Dean of Students if the type of your absence is among those listed on their website. For other types of absences, the supporting documentation must be shared with me directly.

Collaboration

Click here for the collaboration policy and the penalties for infractions of the policy.

Late Days

Regrade Request

Accommodations for Students with Disabilities

Section 504 of the Americans with Disabilities Act of 1990 offers guidelines for curriculum modifications and adaptations for students with documented disabilities. If applicable, students may obtain adaptation recommendations from the Ross Center for Disability Services. The student must present these recommendations and discuss them with the instructor within a reasonable period, preferably by the end of Add/Drop period.