CS712/CS812
Compiler Design
Fall 2017
Tue/Thur 3:40pm-5:00pm, Parsons NB22


Instructor
Catalog Description
Learning Objectives
Disability Services
Emotional or Mental Health Distress
Grading
Computer Accounts
Suggested Readings
Course Site on Piazza

Programming Project: Phase 1
Programming Project: Phase 2
Programming Project: Phase 3
Programming Project: Phase 4

Instructor

P. Hatcher
Office: Kingsbury N215B
Phone: 862-2678
E-mail: pjh@cs.unh.edu
Office Hours: Tue/Thu 9:00-9:30am, 11:05-11:30am, 3:00-3:30pm, or by appointment (send e-mail to request an appointment).

Catalog Description

Formal languages and formal techniques for syntax analysis and parsing; organization of the compiler and its data structures; code generation. LL and LR parsing; automatic generation of scanners and parsers from high-level descriptions. Implementation of features from imperative and object-oriented languages. Students required to design and implement a compiler for a simple language.

This is an implementation-intensive course. (Note: this course no longer counts as a theory course.)

The prerequisites for this course are CS520 and CS659

Learning Objectives

Disability Services

According to the Americans with Disabilities Act (as amended, 2008), each student with a disability has the right to request services from UNH to accommodate his/her disability. If you are a student with a documented disability or believe you may have a disability that requires accommodations, please contact Student Accessibility Services (SAS) at 201 Smith Hall. Accommodation letters are created by SAS with the student. Please follow-up with me as soon as possible to ensure timely implementation of the identified accommodations in the letter. I have an obligation to respond once I receive official notice of accommodations from SAS, but am under no obligation to provide retroactive accommodations.

For more information refer to www.unh.edu/studentaccessibility or contact SAS at 603.862.2607, 711 (Relay NH) or sas.office@unh.edu.

Emotional or Mental Health Distress

Your academic success in this course is very important to me. If, during the semester, you find emotional or mental health issues are affecting that success, please contact Psychological and Counseling Services, which provides counseling appointments and other mental health services.

Grading

The major portion (72%) of your course grade will be based upon a large project. You will implement a compiler for a significant subset of the Go programming language. The translator will be written in Java. You will use the ANTLR parser generator and the LLVM tools to generate Intel 64 assembly language.

The project will consist of 4 phases:

Each project assignment will be worth 18% of the course grade and consist of 100 points. Assignments are due at midnight on the day they are due, but there is an eight-hour grace period until 8am the next day. Project assignments may be handed in late at a penalty of 10 points for one day late and 30 points for two days late. No program may be turned in more than 2 days late. The eight-hour grace period is in effect for the late submissions too.

The project is cumulative. You must live with your code for the whole semester. Solutions for phases will not be given out. Regression testing is critical.

There will be two homeworks, one covering LL parsing and one covering LR parsing. Each homework will be worth 2% of the course grade.

The rest (24%) of your course grade will be based upon a final examination. This examination will be comprehensive and will be closed book. The final exam will be Thursday December 14 1-3pm, Parsons N114. Last year's final exam is available here.

WARNING: All students are expected to do their own work on the programming assignments (and homework and exams for that matter). No collaboration is allowed. A general rule to follow is that you may discuss the programs with other students at the concept level but never at the coding level. If you are at all unclear about this general rule, don't discuss the programs with other students at all.

WARNING: To get full credit on a programming assignment, your code must be adequately documented and structured. If I can't easily read and understand your code, you may lose points!

In summary, your course grade will be determined in the following way:

Final course grades will be assigned in the following way:

Please note that I do not round percentages up. So, 84.95% is a B+ and not an A-.

Computer Accounts

The UNH CS server agate.cs.unh.edu is the primary computing resource for this course. You should automatically be given an account on this machine. During the semester you may use any other machines that you have access to, but for grading purposes your programs must execute on agate.cs.unh.edu.


Last modified on November 2, 2017.

Comments and questions should be directed to pjh@cs.unh.edu.