Programming Languages

Policies

Academic Integrity

In Brief

The spirit 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. But using a solution you did not develop yourself is prohibited because it avoids the learning process entirely. It is your responsibility to know what is permissible and what is not. If you have any questions or doubts, please contact your instructor.

In Detail

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, solutions that can be found online, or solutions provided by generative AI (e.g. ChatGPT or Copilot).

In your solutions, you are permitted to include 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.

Please contact your instructor if you have any questions about what is acceptable in this course. It doesn’t hurt to ask and clarity is important!

Coursework and Grades

This course uses a standards-based grading model rather than a more traditional weighted-average grading model. You are probably familiar with weighted-average grading, in which you earn some number of points on each assessment (lab assignment, test, etc.) and your point totals on those assessments are weighted and averaged in some way that produces your final grade (e.g. scoring at least 93% of the total points earns an A grade). The purpose of standards-based grading is to move our focus from fine-grained points to the learning goals of the course. The work you do in this course will be largely the same as in any other Computer Science course — completing lab assignments and taking written tests — but you will be given opportunities to correct your mistakes and, consequentially, your work will be evaluated rigorously.

Grades

Each assignment or test question you submit in this course will correspond to one of the standards described in the sections below. There are 25 standards in this course divided into two categories: 13 examination standards and 12 assignment standards. Each time you submit work in this course, it will yield one of the following results:

Your mark for a given standard is the highest mark you have earned for any piece of work you have submitted for that standard. For instance: if your first submission for a standard partially qualifies (PQ) and your second submission for that same standard does not qualify (NQ) at all, then your mark in that standard is still PQ. If you submit a third time and fully qualify, then your mark for that standard is QQ and you no longer need to submit work for it.

Your final grade in this course is determined by the number of standards in which you fully qualified together with the number of pairs of standards in which you partially qualified. (That is: partially qualified standards count as half of a fully qualified standard.) The letter grade you earn in the course is determined by the following table.

Qualifications Letter Grade
25 A+
24 A
23 A-
22 B+
21 B
20 B-
19 C+
18 C
17 C-
16 D+
15 D
14 D-
13 or less F

For example, a student who fully qualifies in 19 standards and partially qualfies in 7 standards would earn an A- (since 19+7×½ is at least 22 but less than 23). A student who fully qualifies in 15 standards and partially qualifies in 8 standards would earn an C+.

Standards

Each standard corresponds to a topic covered by this course. Standards are also associated with one of two formats: homework assignments and written examinations. Each standard is identified by a three character abbreviation for reference. The following table illustrates the standards on which you will be evaluated.

Examination Standards Assignment Standards Topic
TSQ   Course Syllabus and Policies
TC1, TC2 AC1, AC2 OCaml
TPS APS Proof Systems
TOF AOF Operational Semantics of Functional Programs
TER AER Encoding and Recursion
TOR AOR Operational Semantics of Structure
TOE AOE Operational Semantics of Side Effects
TTF ATF Type Systems for Functional Programs
TTS ATS Type Systems for Structure and Side Effects
TTB   Subtyping
  AI1, AI2 Type Inference
TOQ   Operational Equivalence
TMT AMT Metatheory

Coursework

Coursework in this course consists of two general categories: lab assignments and written examinations. Both types of coursework have multiple opportunities for qualification.

Written Examinations

Students will complete a written examination each week during their lab session to demonstrate their understanding of the theory and principles covered by this course. Most of these examinations are twenty minute tests which cover one of the examination standards described above as listed on the course schedule. On those weeks, students will have the remainder of the lab session to receive support on their homework assignments.

The remaining examinations are comprehensive and are scheduled for the full lab session. Comprehensive exams provide additional opportunities for students to quality for examination standards: students who did not qualify on a previous standard may complete a corresponding problem on the comprehensive exam. Students who have already qualified on previous standards will not receive questions corresponding to those standards.

Lab Assignments

The first two lab assignments in this course are designed to assist you in learning the OCaml programming language. These lab assignments are completed individually by each student. On the remaining assignments, students may work individually or in pairs. Teams for these assignments will be formed using Teammaker. Students may change partners throughout the semester according to their preferences. Lab assignments are due at 11:59pm on the day listed in the lab write-up (typically ).

Late Policy

Most course content is covered first in homework assignments and then later on exams. Students who complete their homework assignments on time are guaranteed to receive graded feedback before the corresponding exam and so will be much better prepared. Students who submit work late will not have this advantage. Because the benefit of completing each assignment before its exam is so significant, there is no additional penalty for submitting homework after the due date. However, lab assignments will only receive credit if submitted on or before the last day of classes. A student who falls behind on their assignments may find it impossible to catch up before the end of the semester, so it’s important to keep pace.

Submission

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

Once your submitted lab assignments are evaluated, you will receive feedback in the form of a grade (NQ, PQ, or QQ) and written comments. If your submission did not fully qualify for the related standard, you may correct your work and submit it again. There is no limit to the number of times you may submit your work, but grading will be prioritized in a way that ensures equity of attention toward all students in the course.

Exceptional Situations

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 visit the Student Disability Services website for details about the accommodations process. Since accommodations require early planning and are not retroactive, contact Student Disability Services as soon as possible. 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.