CSE 304/504: Compiler Design, Spring 2016

Schedule Lectures Homeworks Exams Resources

Quick Lnks

Syllabus

Classroom: CS 2120
Time: Mon., Fri. 1:00pm to 2:20pm
Instructor: C. R. Ramakrishnan
Office: NCS 233
Office Hours: Mon., Fri. 10 am - 12 noon, or by appointment.
Email: cram AT cs.stonybrook.edu
Teaching Assistant:

Yuxuan Shui
Office hours: Tue/Thu 3:00~4:00pm, or by appointment
Office: TA Room, (Old) CS 2203
Email: shui.yuxuan@stonybrook.edu

Course Objectives and Outline:

At the end of the course, students are expected to have: Compilers and interpreters are very widely used. Every programmer uses these tools to execute programs written in high-level languages. It is hence essential for a computer scientist to understand the process by which programs written in high-level languages are translated and executed. The main objective of this course is to gain an in-depth understanding of the above process.

Most complex software systems are not monolithic; they are programmable using special-purpose languages. An understanding of the language translation process thus plays an important role in the design of real-life systems.

In the class, we will discuss the principles of designing a compiler. In the homework assignments, you will then apply these principles to develop a series of complete compilers a sequence of increasingly complex high-level language.

Text Book:

Text Book Keith D. Cooper and Linda Torczon, Engineering a Compiler (2nd Edition), 2011. Publisher: Morgan Kaufman/Elsevier. ISBN: 978-0120884780.

Programming Languages and Course Software:

The compiler will be written in Python. This course requires significant Python programming, although I do not expect students to be well-versed or even familiar with Python at the beginning of the course. The students will be expected to quickly pick up Python programming, getting better at it as the semester progresses.

Grading:

Homework Assignments: 30%
Homework Presentation: 5%
Two Mid-Term Exams: 40%
Final Exam: 25%

Homework Assignments:

There will be 6 homework assignments in all. Although assignments may they carry equal weight in terms of grade.

Students may work in pairs.

A note on homework presentations: During the semester, each student will make a presentation of portions of his/her homework to determined by the instructor; the student is expected to come prepared on all aspects of his/her code. The presentation will be used to guage the level of overall understanding of the student. This presentation will be made individually to the instructor or TA without other students present.

If working as a pair, both members will be expected to know all aspects of the homeworks, regardless of the authorship.

You must turn the homeworks in on the day they are due (i.e. by 11:59pm on the deadline date). Since the homeworks involve considerable conceptual design as well as low-level programming, students are urged to start early. The date the assignments are due will be clearly specified in the homework handout, on the web; any changes in deadlines will be posted on the course homepages and the discussion board (on Piazza).

Late submission policy:

Assignments may be submitted up to 3 days late, but will incur a late submission penalty. All assignments, submitted up to 3 days late, will be first graded normally. Late penalty will then be applied as described below. For each late day, the maximum score on the assignment will be reduced by 25\%. That is, the maximum score will be 75%,50% and 25% for 1, 2, and 3 late days. For instance, X scores 60% on an assignment that was submitted 1 day late; and Y scores 70% on the same assignment but submitted it 2 days late. X's score will be recorded as 60% (less than the 75% max) and Y's score will be recorded as 50% (since it exceeds the max).

The "Stuff Happens" Excuse: For one assignment, you can claim penalty-free late days (up to 3 days, all for the same assignment). You should send me mail ahead of the submission deadline if you want to use this penalty-free late days for any assignment.

Course Materials:

Most of the course materials, such as homework handouts and lecture notes, will be linked from this page. We will use Piazza for discussions. You can access the Piazza page for this course at: http://piazza.com/stonybrook/spring2016/cse504/home

Students with Special Needs:

If you have a physical, psychological, medical or learning disability that may impact on your ability to carry out assigned course work, I would urge that you contact the staff in the Disablility Support Services office (DSS), ECC Building (behind SAC), 632-6748/TDD. DSS will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.

Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and Disability Support Services. For procedures and information go to http://www.stonybrook.edu/ehs and search Fire Safety and Evacuation and Disabilities.

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.

The Importance of Being Earnest:

Because a primary goal of the course is to teach professionalism, any academic dishonesty will be viewed as evidence that this goal has not been achieved. Any act of cheating will be treated with utmost seriousness.

You may discuss the homework problems in this course with other students, as long as you are willing to post the material on the class discussion board. However each student's submission, including written material and coding, must be their own work, and only their own work. Remember that there are many different ways to solve the same problem; even solutions with the same central idea can be formulated in many different ways. Therefore, suspiciously similar homework solutions will be considered as evidence of disallowed collaboration or copying. Any evidence that written homework submissions or source code have been copied, shared, or transmitted in any way between students (this includes using source code downloaded from the Internet or written by others in previous semesters!) will be regarded as evidence of academic dishonesty.

Copying an assignment from another student in this class or obtaining a solution from some other source will lead to an automatic F for this course and to a disciplinary action. Allowing another student to copy one's work will be treated as an act of academic dishonesty, leading to the same penalty as copying.

You should learn how to protect your data. Failure to do so is also unprofessional and it may expose you to the danger that someone will copy your homework and will submit it as his or her own (see above).

IMPORTANT:

Be advised that any evidence of academic dishonesty will be treated with utmost seriousness. Those involved will be prosecuted to the fullest extent permitted by the University and College laws.


C.R. Ramakrishnan
Last modified: Sun Mar 6 21:22:53 EST 2016