Instructor: Prof. Seth Fogarty
Email: sfogarty@trinity.edu
Office Hours: Posted on webpage
Office: CSI 270M
Meets: CSI 257 TuTh 2:10-3:25
Textbook: Engineering a Compiler, 2nd Edition by Keith D. Cooper & Linda Torczon (optional)
TA: Wen Lee - ylee5@trinity.edu
This is a systems course for computer science majors, designed for to introduce students to the practical issues that arise in compiling. Topics include parsing, syntactic analysis, intermediate representations, and the basics of code optimization.
Reasonable Solutions: Compilers frequently encounters NP-hard optimization problems that must be solved in low-order polynomial time. Algorithms must be correct in all cases and produce effective solutions.
Low-Level Programming: A great deal of computer science is about abstracting away the details of a system. By contrast, in this course students will solve difficult problems using a non-garbage collected language, in order to expose the underlying complexity of the solution. Similarly, by focusing on assembly code as an object language, students will confront the reality of performing computation.
Applications of Theory: Compilers demonstrate the application of theory to practical problems: automata, greedy algorithms, and graph theory all play a role.
This course meets two times a week, and will comprise both lectures and in-class activities. Assessment is broken down into the following categories.
There are four extensive projects for this course. Projects 1 and 3 are relatively simple, and thus worth less of the grade. Project 4 may be simplified, depending on time constraints. These projects are deep investigations into a specific component of a compiler, and should not be underestimated. A lab write-up is required for some projects.
There is a single out-of-class midterm, to be scheduled, that will be worth 40% of the exam grade. The final exam will be from 8:30-11:30 AM on Friday, December 8th, and will be worth 60% of the exam grade. The final will be cumulative, but focus on material from the second half of the course.
Class participation accounts for 10% of the course grade. This includes attendance, participation, and completion of in-class activities.
The following grade cutoffs apply for this course. Grading will be stringent to reflect these cutoffs.
Students are expected to abide by the Trinity University Honor code. Collaboration on the projects is allowed, and assignments may be pair-programmed and submitted together. As a matter of honor, all code for an assignment must written by the student(s) submitting that assignment. The following guidelines are a non-exhaustive list of the intent of this policy.
Two students may pair-program an assignment together. In this case, one student should submit the solution, and both should document the group work at the top of their README.md files. The expectation is that the large majority of the code should be written collaboratively by both students at the same time, either in person or remotely.
You may always discuss the algorithmic components of the homework, material covered in class, how to use tools or debugging environments, or techniques, constructs, or libraries useful for the project.
You may always receive (provide) assistance from (to) other students when debugging: for instance in interpreting error messages, running valgrind or debugging tools.
You may receive (provide) assistance in writing code for your program, but the student(s) submitting should always physically type the code. This means you may not copy-paste code, but may transcribe it manually.
In this class the use of large-language models is considered analagous to pair programming. Thus, you are allowed to use these tools, but must fully cite the tool. This requires a mention in the README.md file, and that all code written with the assistance of the LLM tool have a corresponding comment in the source code.
Students are expected to attend class regularly. Students who will miss class should contact me before their absence, and complete all homework assignments ahead of time.
In line with the Trinity University policy on equal access and equal opportunity, this course will be made accessible to all students. Any student who feels they may need accommodations based on the impact of a disability or long illness should contact me and the office of Student Accessibility Services to discuss your specific needs.
As a faculty member, I am designated as a Responsible Employee. As such, I am required to report any instances of sexual misconduct or sexual harassment to the Title IX Coordinator. If you share information with me that implicates sexual misconduct or harassment, I am required to report this to the Title IX Coordinator. The purpose of this report is to ensure you have information about support resources and complaint resolution options. My report will not initiate the complaint process, and you are in control over how you choose to engage with our Title IX Coordinator
Please be aware that all classroom instruction, including student participation in classroom activities, is subject to recording and dissemination on secure systems. The recordings will be made available only to students enrolled in the course, or to other CSCI faculty for course review.
This course is heavily influenced by Dr. Cooper's course at Rice University.