Instructor: | Rich Maclin |
Email: | rmaclin |
Office: | 315 Heller Hall |
Phone: | 726-8256 |
Lectures: | 11:00-12:15 Tu,Th, 306 HH |
Lab: | 19:00-19:50 Tu, 177 MWAH |
Office Hours: | 15:00-16:00 Tuesday, 13:30-14:30 Wednesday and by appointment |
Teaching Assistant: | Bharat Siginam |
Text: | Aho, Lam, Sethi, and Ullman, Compilers: Principles, Techniques, and Tools, 2nd Ed., Addison-Wesley, ISBN 0-321-48681-1 |
A selection from the following topics: finite-state grammars, lexical analysis, and implementation of symbol tables. Context-free languages and parsing techniques. Syntax-directed translation. Run-time storage allocation. Intermediate languages. Code generation methods. Local and global optimization techniques.
This course presents a comprehensive introduction to the process of creating a compiler for a high-level programming language. One of the goals of this course is to give students the theoretical background and hands-on implementation experience necessary to understand and employ tools used in compiler design such as lex and yacc. Students are expected to understand and be able to implement both scanner and parser tools so as to better understand how to effectively use tools that automatically generate scanners and parsers. A second goal is to give students significant understanding of and experience with semantic analysis techniques such as abstract syntax tree generation, type checking, etc., in order to produce intermediate code. A third goal is to give students the requisite understanding of and some experience with code optimization and code generation. A fourth goal is to give students significant understanding of a variety of programming language capabilities to increase their proficiency with these programming languages and to allow them to better exploit the capabilities of these languages. A fifth goal is for students to increase their overall programming proficiency and their ability to work in teams as a result of the implementation of their team compiler project. The overall goal of the course is to give students significant knowledge and experience with compilers and programming languages, both in terms of being able to develop them and in terms of being better able to employ them as part of developing a software system.
Item | Points | Date and Time |
---|---|---|
Midterm Exam 1 | 175 points | October 15 (Thursday), 11:00-1215 |
Midterm Exam 2 | 175 points | November 24 (Tuesday), 11:00-1215 |
Final Exam | 350 points | December 19 (Saturday), 8:00-9:55 |
Programming Assignments (3-5) | 200 points | TBA |
Homework Assignments (5) | 100 points | TBA |
Total | 1000 points | Grade based on total points |
Grades are assigned on a percentage basis, and then an adjustment is applied based on a minimum effort requirement (see below). The grade percentage cutoffs are as follows:
These percentages may be lowered but will not be raised.
Minimum Effort Requirement: Students must turn in a minimal credible effort for EVERY assignment or their grade will be reduced one full letter grade (an A would become a B, an A- a B-, a B+ a C+, etc.). A turned-in assignment achieving at least 40% of the possible points (before late assignment penalties) will be considered a minimal credible effort (though this percentage may be revised downwards by the instructor as warranted). For example, if a program has a maximum possible 30 points, then a turned-in assignment achieving at least 12 points before late penalties would be considered a minimal credible effort.
You are responsible for what goes on in class, including lecture material, handouts, and turning in assignments. If you are unable to attend class it is your responsibility to obtain copies of class notes and any materials distributed in class. You may turn in copies of assignments early or have other members of the class turn in an assignment for you.
No exam will be given early. Exams can be made up only in the case of emergencies such as severe illness or death in the immediate family. You must contact me 24 hours in advance in order to arrange a makeup.
All assignments will be collected at the beginning of class on the due date. Late assignments will be penalized 20% of the grade for each working day the assignment is late.
Programming assignments must be your own work. You may discuss general ideas with other students, but should not discuss actual code with others. If you are having problems with an assignment, please come and see me or send me email.
As instructor I shall make every attempt to treat all students equally, without regard to race, religion, color, sex, handicap, age, veteran status, or sexual orientation. I encourage you to talk to me about your concerns of equal opportunity in the classroom. To inquire further about the University's policy on equal opportunity, contact the Office of Equal Opportunity (6827) or (6849), 269-273 DAdB.
If you have any disability (either permanent or temporary) that might affect your ability to perform in this class, please inform me at the start of the semester. I may adapt methods, materials, or testing so that you can participate equitably. To learn about the services that UMD provides to students with disabilities, contact the Access Center (6130), 258 Kirby Student Center, or the Office of Equal Opportunity (6827) or (6849), 269-273 DAdB.