Programming Languages and Compilers. A study of programming languages with an emphasis on their implementation. Topics include lexical analysis, language syntax, control structures, the binding of names, procedures, and their implementation in compilers.
Lecture topics will include:This course is designed with the assumption that students have a bachelors degree in Computer Science and are able to program in C, Java, or a similar high-level programming language. In addition, the discussions of compiler implementation in lecture and in the textbook will assume a basic knowledge of discrete mathematics and algorithmic complexity, such as that learned in:
| Lecture: | Mon. and Wed., 5:30 - 6:45pm; | SB 3.02.02 |
| Office Hours: | Tues. 3:30-4:30pm, Wed. 10:30-11:30am, and by appointment; | SB 4.01.34 |
| Midterm Exam: | 5:30-6:45pm, Monday, October 15, 2007; | regular classroom |
| Final Exam: | 5:00-7:30pm, Monday, Dec 10, 2007; | regular classroom |
| Instructor: | Jeffery von Ronne |
| Office Location: | SB 4.01.34 |
| Email: | vonronne@cs.utsa.edu |
| Phone: | (210) 458-5667 |
| Course Web Page: | http://www.cs.utsa.edu/~vonronne/classes/cs5363-f07/ |
Each student will be required to write a compiler for a toy language derived from Pascal; this will be worth 70% of the overall course grade. At four fixed dates, each student will need to turn in their compiler in its current state on that date. At each submission, students will be given one grade for their progress as of that date and a tentative score for each of the parts completed at that point. At later submissions, students may request a regrade of any part that has not already been regraded.
There will be a midterm exam worth 15% of the final grade, and a non-comprehensive final exam worth 15% of the final grade.
The final grade will be based on a nominal total of 200 points (with a possiblity of 30 points of extra credit):
| Compiler Project | ||
| progress by first deadline | (7) | |
| progress by second deadline | (7) | |
| progress by third deadline | (7) | |
| progress by fourth deadline | (7) | |
| Part 1: Scanning and Parsing | (28) | |
| Part 2: AST construction and Type Checking | (28) | |
| Part 3: Syntax-Direct Translation into three address code IR | (28) | |
| Part 4: Generation of MIPS assembly code | (28) | |
| Extra Credit Part 1: Translation into and out of SSA | (10) | |
| Extra Credit Part 2: Machine Independent Optimizations | (10) | |
| Extra Credit Part 3: Register Allocation | (10) | |
| Midterm Exam | (30) | |
| Final Exam | (30) |
Students who successfully complete parts 1-4 on the compiler project, and earn passing grades on the midterm, and final exams will earn at least a 'B' in the course.
As a matter of policy, late assignments will not be accepted, but partial credit will be given for partially complete/working assignments. Exceptions may be made on a case by case basis.
Attendance is expected, but points will not be deducted for absenteeism.
You are expected to work independently on all assignments. It is OK to discuss the assignment, strategies, algorithms, and compiler error messages with your classmates in general terms, but you should not be discussing the details of, looking at or copying each others code. Your code should be your own and not look like anyone else's. It is, however, permitted to re-implement known/published algorithms (from textbooks or research papers) in the context of your own compiler, but you should cite the source for any such algorithms not found in your text book. In any case, you must understand everything, and you are expected to be able to explain the purpose of every line of code that you turn in.
According to UTSA's Student Code of Conduct:
"Scholastic dishonesty" includes, but is not limited to, cheating, plagiarism, collusion, falsifying academic records and any act designed to give unfair advantage to he student, or the attempt to commit such an act.
"Cheating" includes, but is not limited to: ... 6. collaborating with or seeking aid from another student during a test or other assignment without authority; ...
"Plagiarism" includes, but is not limited to, the appropriation, buying, receiving as a gift or obtaining by any means another's work and the submission of it as one's own academic work offered for credit.
"Collusion" includes, but is not limited to, the unauthorized collaboration with another person in preparing academic assignments offered for credit or collaboration with another person to commit a violation of any section of the rules on scholastic dishonesty.Penalties for scholastic dishonesty can include failing the course and even expulsion from the university.