The course will teach modern compiler techniques applied to general-purpose programming language. The goal of the course is to give students a working knowledge of the foundations, tools, and engineering approaches used in developing formal language translators. The emphasis is on the construction of compilers to position students to build translators for little languages in their careers.
Compilers and interpreters, including description of languages, finite state scanners, parsing, symbol tables, syntax directed semantics, code generation, and static analysis.
This course is based on a course that was originally designed by Laurie J. Hendren and Michael I. Schwartzbach which has been taught at a number of universities over the past decade. The course received a significant update by Robby and Matthew B. Dwyer in 2005 with respect to the projects and the tools that are used for compiler implementation; this update achieves a modernization of compiler construction technologies. This is primarily an introductory compiling course that has been designed to recognize that most people will not build a large application like a compiler from scratch and that people learn by doing. Towards this end, the project for the course involves the enhancement of an existing compiler code base. Students will be given a working compiler and will be required to extend it in significant ways. This will give them insights into how a compiler is designed and written that they can leverage for their enhancements. While serving this purpose, the course does present significantly more content on static analysis than is typically found in an introductory compiling course; thus it can serve as an effective introduction on advanced topics for graduate students.
The course Schedule page gives the due dates for all of the homework. This is to facilitate your planning and time-management. Given this, we expect assignments to be turned in on the due date unless prior arrangements have been made; late assignments receive a reduction of 1% of the total possible points for each hour after the due date/time.
Course grades are absolute, that is, there is no curve, and will be calculated based on your overall percentage on assignments as follows:
There is one additional constraint on your final grade. To receive a letter grade of A, you must achieve at least a B on the exam. Similarly, to receive a B you must achieve a C, C you must achieve a D on the exam.
This course involves a lot of programming, and it makes significant use of software tools. Many of these can be accessed by you (for free) and installed on your own machine. If you prefer, we have everything you need on our CIS department machines so you can get an account on our machines. See the Notes page for information on how to get an account and use our machines.
In general, there will be NO make-up quizzes or exams! Special consideration will be given in only exceptional circumstances. Exceptional circumstances are generally limited to:
If you believe you qualify for exceptional treatment, you must notify the instructor prior to the date of the quiz or exam to be missed.
Kansas State University has an Honor System based on personal integrity, which is presumed to be sufficient assurance in academic matters one’s work is performed honestly and without unauthorized assistance. Undergraduate and graduate students, by registration, acknowledge the jurisdiction of the Honor System. The policies and procedures of the Honor System apply to all full and part-time students enrolled in undergraduate and graduate courses on-campus, off-campus, and via distance learning. The honor system website can be reach via the following URL: http://www.ksu.edu/honor.
A component vital to the Honor System is the inclusion of the Honor Pledge which applies to all assignments, examinations, or other course work undertaken by students. The Honor Pledge is implied, whether or not it is stated: “On my honor, as a student, I have neither given nor received unauthorized aid on this academic work.” A grade of XF can result from a breach of academic honesty. The F indicates failure in the course; the X indicates the reason is an Honor Pledge violation.
For a more complete discussion of these issues see the course policies for the College of Engineering at Kansas State University: http://www.cis.ksu.edu/resources/intradept/syllabuspolicies.