Course Syllabus¶
This course will be an in-depth study of important concepts and techniques found in compilers. More specifically, this course is designed to provide (1) deeper understanding of the syntactic rules and the functionality of modern programming languages, as well as the use of the compiler for enhancing program quality and (2) opportunity to practice the implementation of certain key components in the compiler front-end and back-end.
Furthermore, although compilers are the primary topic of this course, it is also the intent to provide students with the extremely valuable experience of working with an existing large-scale code base (specifically LLVM). This includes the requirement to utilize some test‐driven development practices.
Prerequisite¶
All of the programming assignments will be written in C++, and thus extensive prior experience with the language is expected. LLVM employs many complex C++ constructs.
Basic knowledge on Unix commands is expected.
Meetings¶
When: Monday 6:05 - 9:00 PM (Eastern Time)
Where: Frey Hall 205
All classes will be recorded by Blackboard/Zoom in the cloud.
Instructor¶
Email: dongyoon [AT] cs [DOT] stonybrook [DOT] edu
Office Hours: Monday and Thursday 2:00 - 3:00 PM (ET)
Office: Zoom (the meeting link can be found at Blackboard/Zoom)
Teaching Assistant¶
TBD
Communication¶
Course website: Syllabus and schedule.
Blackboard: Lecture slides and grades. Submit your programming assignments here.
Piazza: Announcements and Q&A (annonymous options available). Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza.
Text Book¶
There is no required textbook, but the following books are recommended for reference.
Compilers: Principles, Techniques, and Tools (2nd Edition). Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman. ISBN-10: 0321486811
Engineering a Compiler (2nd Edition). Keith D. Cooper and Linda Torczon. ISBN-10: 9780120884780
Learn LLVM 12: A beginner’s guide to learning LLVM compiler tools and core libraries with C++. Kai Nacke. ISBN-10: 1839213507
Grades (tentative)¶
Programming assignments (50%): PA1 (10%), PA2 (10%), PA3 (10%), PA4 (10%), PA5 (10%)
Midterm exam (25%): Oct 18, 2021 (tentative)
Final exam (25%): TBD
Policies¶
All programming projects are individual assignments. You may discuss the assignment details, designs, or debugging techniques with anyone you like in general terms, but you may not provide, receive, or take code to or from anyone. The code you submit must be your own work and only your own work. Any evidence that source code has been copied, shared, or transmitted in any way will be regarded as evidence of academic dishonesty. The minimum penalty will be an F-grade with no exceptions.
No late project work will be assigned a grade except for a documented emergency; any request for an extension must be made, preferably by email, at least 24 hours prior to the due date.
Submission errors (e.g., a missing file, a wrong patch) are subject to at least 25% penalty. Students should provide an evidence (e.g., last modified time stamp) that the original source codes have not been modified after the due date.
To make up for a missed exam, the student must provide a satisfactory reason (as determined by the instructor) along with proper documentation. Make-up exams are only allowed under extraordinary and emergency circumstances.
Attendance¶
Students are expected to attend every class, report for examinations and submit major graded coursework as scheduled. If a student is unable to attend lecture(s), report for any exams or complete major graded coursework as scheduled due to extenuating circumstances, the student must contact the instructor as soon as possible. Students may be requested to provide documentation to support their absence and/or may be referred to the Student Support Team for assistance. Students will be provided reasonable accommodations for missed exams, assignments or projects due to significant illness, tragedy or other personal emergencies. In the instance of missed lectures or labs, the student is responsible for insert course specific information here (examples include: review posted slides, review recorded lectures, seek notes from a classmate or identified class note taker, write lab report based on sample data). Please note, all students must follow Stony Brook, local, state and Centers for Disease Control and Prevention (CDC) guidelines to reduce the risk of transmission of COVID. For questions or more information click here.
Academic Integrity¶
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person’s work as your own is always wrong. Faculty are required to report any suspected instances of academic dishonesty to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the Academic Integrity website.
Student Accessibility Support Center¶
If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Student Accessibility Support Center, ECC (Educational Communications Center) Building, room 128, (631) 632-6748. They will determine with you what accommodations, if any, are necessary and appropriate. All information and documentation is confidential.
Critical Incident Management¶
Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Judicial Affairs any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students’ ability to learn.