Compilers

Policies

Academic Integrity

Academic honesty is required in all your work. Under no circumstances may you hand in work done with or by someone else under your own name. Discussing ideas and approaches to problems with others on a general level is encouraged, but you should never share your solutions with anyone else nor allow others to share solutions with you. You may not examine solutions belonging to someone else, nor may you let anyone else look at or make a copy of your solutions. This includes, but is not limited to, obtaining solutions from students who previously took the course or solutions that can be found online. You may not share information about your solution in such a manner that a student could reconstruct your solution in a meaningful way (such as by dictation, providing a detailed outline, or discussing specific aspects of the solution). You may not share your solutions even after the due date of the assignment.

You are permitted to include in your solutions material which was distributed in class, material which is found in the course textbook, and material developed by or with an assigned partner. In these cases, you should always include detailed comments indicating on which parts of the assignment you received help and what your sources were.

When working on tests, exams, or similar assessments, you are not permitted to communicate with anyone about the exam during the entire examination period (even if you have already submitted your work). You are not permitted to use any resources to complete the exam other than those explicitly permitted by course policy. (For instance, you may not look at the course website during the exam unless explicitly permitted by the instructor when the exam is distributed.)

Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook:

Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion.

This policy applies to all course work, including but not limited to code, written solutions (e.g. proofs, analyses, reports, etc.), exams, and so on. This is not meant to be an enumeration of all possible violations; students are responsible for seeking clarification if there is any doubt about the level of permissible communication.

The general ethos of this policy is that actions which shortcut the learning process are forbidden while actions which promote learning are encouraged. Studying lecture materials together, for example, provides an additional avenue for learning and is encouraged. Using a classmate’s solution, however, is prohibited because it avoids the learning process entirely. If you have any questions about what is or is not permissible, please contact your instructor.

Grades

Your grade for this course will be determined by your completion of the following activities:

Tests 30%
Lab Assignments 65%
Participation 5%

Tests in this course will be conducted asynchronously. Each test will be distributed in a GitHub repository (similar to lab assignments) containing a series of Markdown files. You will answer the questions in the provided Markdown files and git push your responses. Your repository contents on the Swarthmore GitHub Enterprise at the time the test is due will determine your grade. After the test is released and before it is due, you are not to discuss the test materials with anyone other than your instructor; see the Academic Integrity Policy above for more information.

There are two types of lab assignments in this course: functional programming assignments and compiler assignments. You will work individually on the functional programming assignments to learn OCaml, the language in which we will develop our compiler. For your compiler assignments, you may select a lab partner to work with throughout the semester or you may work alone. Be advised that the compiler assignments are cumulative; you should not expect to change partner assignments without discussing the matter with your instructor.

Lab assignments and tests are due as noted by the schedule. See the late policy for further discussion.

Your participation grade is determined by your attendance and active engagement in course activities. You are required to attend lecture and lab. Lecture may involve anonymous polls or break-out rooms; you are expected to participate in both. There is no graded requirement that you speak up during class, but you are encouraged to do so.

If you are unable to attend lecture or lab or participate in the class activities for any reason at all, please contact your instructor. During the Spring 2021 semester, case-by-case exemptions for participation requirements will be provided generously.

Late Policy

This course is extremely linear in nature and much of your assessed work consists of a semester-long compiler-building project. For this reason, CS75 has a different late policy than most CS courses. There are no late days in this course. Instead, the late policy varies based upon the type of assignment.

Functional Programming Assignments

The lab assignments at the beginning of the course will be functional programming assignments designed to prepare you to work on your compiler project. Functional programming labs will be due on Wednesday nights at 11:59pm. These assignments must be completed on time or as soon as possible. The latest push in your repository as of the due date will be taken as your submission and graded accordingly. You may complete functional programming assignments up to two days late, but your score is reduced by 20% for each late day. To receive credit for a late assignment, you must contact your instructor.

Compiler Assignments

After completing the functional programming assignments, your remaining lab assignments will involve developing a compiler over the course of the semester. The compiler assignments are sequential: each relies upon having completed the last as you progressively develop code in a single repository. Do not fall behind in your compiler assignments, as it would have unfortunate ramifications throughout the entire semester.

Compiler assignments are always due on nights at 11:59pm (with the exception of those due at the end of the semester). To mitigate the aforementioned ramifications, however, these due dates are advisory. There is no direct penalty for missing a compiler due date. However, compiler assignments will only receive credit if submitted on or before the last day of classes. If you fall behind on your compiler assignments, you may find it impossible to catch up before the end of the semester and this will have a significant impact on your final grade.

Because the due date is so flexible, you will need to take additional action to submit your compiler assignments. Pushing your code is not enough. Submitting your code requires just a couple additional terminal commands that are described at the end of the compiler lab assignment write-ups.

Tests

Tests are conducted asynchronously and will be released and due according to the course schedule. Submissions after the due date will not be acccepted except in exceptional cases as outlined below.

Exceptional Cases

If a medical condition or other unforeseen emergency has interfered with your ability to complete your coursework, please contact your Dean’s office and your instructor. Faculty will work with your class Dean in order to determine appropriate accommodations for your situation. If only your work in this course has been impacted, you may instead contact only your instructor to determine an appropriate course of action.

Academic Accommodations

If you believe you need accommodations for a disability or a chronic medical condition, please contact Student Disability Services via email at studentdisabilityservices@swarthmore.edu to arrange an appointment to discuss your needs. As appropriate, the office will issue students with documented disabilities or medical conditions a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact Student Disability Services as soon as possible.

For details about the accommodations process, visit the Student Disability Services website. You are also welcome to contact your instructor privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services.