Introduction to Compiler Construction

(CIS 400 (a Special Topics course) at Syracuse U)

Note: parts of this syllabus are subject to change with adequate notice to students.

An introduction to the design and engineering of compilers for modern (particularly functional) programming languages. The course will consist of a semester-long (through five automatically-graded and one final) project wherein students build a compiler from (a significant subset of) Scheme to LLVM assembly code. Course delivery will be lecture-based, with occasionaly-assigned videos (from the companion course CIS352) but classtime will also focus significantly on helping students develop their engineering and debugging skills along with giving directed help (i.e., hints) about how to achieve the project.

Grading

Grade cutoffs

I anticipate this will be course that will require a serious (but not overwhelming) amount of work from you, but I think there are many paths to getting a good grade. Below are projected rough grade cutoffs. However, I am making no guarantees about these at all for now (although I will likely not make grading any harder than this). I will announce final grade cutoffs roughly two weeks before the end of the term on Slack (and then update them here).

Autograder

Projects in this course will be graded by an automatic grader. I may adjust projects so that portions of the projects include style-based grading, though I will not employ subjective grading. More pointedly: I will not award partial credit for solutions that have the right ideas but do not pass our tests.

Late Projects and Extensions

I used to extend project deadlines, but I have found that it severely limits course pacing in a seriously detrimental way. Therefore, project extensions will be rare–and only in the event of things such as university closures. Project extensions for students will not be granted except for religious observances and extenuating circumstances (family illness, etc..). However, there is a late policy, written as follows:

You should be able to earn at least a 70% on all of the projects with enough work.

Collaboration and the Honor Code

Again: You should never share code with another student. This includes both sending a file to another student and “over the shoulder” copying (even when, e.g., variable names are changed, etc..). In the eyes of the instructor, these are both equally bad. You should never be sitting and helping another along by writing their code. By doing so you are both violating the honor policy and disadvanting the student you are helping (as they may not then properly learn the material).

Student Support

Syracuse University values diversity and inclusion; we are committed to a climate of mutual respect and full participation. There may be aspects of the instruction or design of this course that result in barriers to your inclusion and full participation in this course. I invite any student to meet with me to discuss strategies and/or accommodations (academic adjustments) that may be essential to your success and to collaborate with the Office of Disability Services (ODS) in this process.

If you would like to discuss disability-accommodations or register with ODS, please visit their website at http://disabilityservices.syr.edu. Please call (315) 443-4498 or email disabilityservices@syr.edu for more detailed information.

ODS is responsible for coordinating disability-related academic accommodations and will work with the student to develop an access plan. Since academic accommodations may require early planning and generally are not provided retroactively, please contact ODS as soon as possible to begin this process.

Accreditation

As part of the regular ABET accreditation process for the undergraduate program in computer science, I may be collecting samples of students’ work in each of our undergraduate classes. As a result, some of your labs/homeworks/exams may be photocopied/scanned (or electronically copied) to be presented for accreditation at some later point.

Student Mental Health

Mental health and overall well-being are significant predictors of academic success. As such it is essential that during your college experience you develop the skills and resources effectively to navigate stress, anxiety, depression and other mental health concerns. Please familiarize yourself with the range of resources the Barnes Center provides (https://ese.syr.edu/bewell) and seek out support for mental health concerns as needed. Counseling services are available 24/7, 365 days a year, at 315.443.8000.

Discrimination and Harassment

The University does not discriminate and prohibits harassment or discrimination related to any protected category including creed, ethnicity, citizenship, sexual orientation, national origin, sex, gender, pregnancy, disability, marital status, age, race, color, veteran status, military status, religion, sexual orientation, domestic violence status, genetic information, gender identity, gender expression or perceived gender.

Any complaint of discrimination or harassment related to any of these protected bases should be reported to Sheila Johnson-Willis, the Universitys Chief Equal Opportunity & Title IX Officer. She is responsible for coordinating compliance efforts under various laws including Titles VI, VII, IX and Section 504 of the Rehabilitation Act. She can be contacted at Equal Opportunity, Inclusion, and Resolution Services, 005 Steele Hall, Syracuse University, Syracuse, NY 13244-1120; by email: titleix@syr.edu; or by telephone: 315-443-0211.

If you notice any incidents of harassment or discrimination, however minor, please email me. You may wish to use an anonymous email service such as https://anonymousemail.me/. Please feel free to tell me as much as you feel comfortable. I am a mandatory Title IX reporter and must report incidents such as sexual harassment, relationship violence, stalking, etc…

Slack

Slack is an instant messaging app for teams. We’ll be using it for most course management. This is the best place to get in touch with me for one-off questions, ask for an appointment for office hours, etc.. Email me if you have not been invited to the course Slack.