Programming Languages and Compilers. A study of modern programming languages with emphasis on their implementation. Topics include scanning, parsing, syntax-directed translation, code generation, and optimization.
The lectures will treat most of the topics in the textbook in the order they appear in the textbook, "Engineering a Compiler." If there is time at the end of the semester, additional material on programming languages will be covered.
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: | Tues., Thur. 8:30-9:45pm; | HSS 3.02.26 |
| Office Hours: | Tues. 4-5pm, Wed. 2-3pm, and by appointment; | HSS 4.02.58 |
| Final Exam: | 8:00pm-10:45 pm, Monday, Dec 12, 2005; | HSS 3.02.26 |
| Instructor: | Jeffery von Ronne |
| Office Location: | HSS 4.02.58 |
| Email: | vonronne@cs.utsa.edu |
| Phone: | (210) 458-5667 |
| Course Web Page: | http://www.cs.utsa.edu/~vonronne/classes/cs5363-f05/ |
This will be a project class, and each student will be required to write a compiler for a toy language derived from Pascal. This project will be assigned in several parts, each will be graded independently.
In addition, each student will be expected to read, write a summary and critic about, and make a 3-5 minute presentation (during the time scheduled for the classes final exam) on a published research paper on a topic in programming languages or compilers. The instructor will assist in the selection of a topic.
The final grade is expected to be weighted:
In addition, extra credit worth 25% can be earned by implementing selected optimizations and a graph-coloring register allocator.
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 error messages with your classmates in general terms, but you should not be looking at or copying each others code. It is, however, permitted to 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.
Penalties for scholastic dishonesty can include failing the course and even expulsion from the university.