===============
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
------------
- `Dongyoon Lee `_
- 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.
---------------
Acknowledgments
---------------
This course reuses some of the material from
Purdue CS 502 by `Dr. Jung `__ and
Stony Brook CSE 504 by `Dr. Sekar
`__.