15-150: Functional Programming, Summer 2020

Academic Integrity

All students are expected to read, be familiar with, and comply with, the CMU Policy on Academic Integrity.

In addition you must read, be familiar with, and comply with the following 15-150 policy rules:

Any work submitted as a homework assignment, quiz, or examination must be entirely your own, developed this semester, and must not be derived in part or whole from work of others. For homework assignments, you may discuss problems with other students who are currently in the course, but only as outlined in the section about cooperative learning below. You may consult a current teaching assistant for this course or a tutor provided by Academic Development, but you should not ask these individuals for detailed help in writing homework solutions.

You must not search the internet (or library or other external source) for homework or exam solutions, and you must not use solutions developed in prior semesters of this course or in related courses. If you took this course in a prior semester you are not allowed simply to hand in verbatim copies of any solutions from before, including your own work. You may consult your own prior work in developing new solutions, but you should write all your work for this semester from scratch.

You must not look at or alter any part of anyone else's homework solution or exam paper. In particular, you must not copy, use as a guide, or cut-and-paste, any homework solutions or exam solutions of another student, or provide such solutions to another student.

You should take appropriate care to prevent other students from cheating, by safeguarding your own work with proper protection to ensure privacy, and by not allowing other students to have access to your files or computer. In particular, you should compose and store all your work in a private location (your local computer, the private directory of your AFS space, password-protected online TeX-editing services).

If you have any question about what is appropriate, please ask the course staff.

Cooperative Learning

To facilitate overall learning, it is permissible for you to discuss lecture notes and conceptual topics with others. It is also permissible for you to discuss a homework assignment with other students who are currently in the course, provided that you adhere to the following policy:

Citing sources: For each assignment, you should submit a file called collab.txt in which you describe any discussions you had with other students and cite any other sources. (For instance, if you took this course in a previous semester and are referring to any material from that course, including your own work, you should also report that in this file.) Here are two examples of entries that we might expect to see in two different collab.txt files for two students who discussed a problem on an assignment:

Notice that both students should describe the discussion, even if information flows in one direction. Of course, this is an extreme case, and in general we would hope to see examples of entries suggesting a two-way discussion.

We may run automatic code comparison software (such as MOSS) on homework submissions to compare solutions from this semester and solutions from earlier semesters. This software is very good at detecting similarities that suggest collaboration or other cheating during code design, even after an attempt to obfuscate. The signal-to-noise ratio in MOSS reports is usually very distinctive, so we can tell if any part of a student's handed in work is derived from some other source. If MOSS detects a collaboration not reported in collab.txt, that will raise a red flag and may be considered cheating or plagiarism.

Violations of the policy outlined above will be investigated, and may result in zero scores on any assignments brought under suspicion and a report to the university authorities. This may also lead to a disciplinary hearing followed by suspension or expulsion from the university. In short: don't cheat! It isn't worth the risk.

Homework Assignments


The summer semester moves especially quickly and it is important that you don't fall behind. As a result, there are no "late days" or "grace days" this semester, and in general there will be no extensions on assignments. If you think you really really need an extension on a particular assignment (e.g., due to severe illness or major personal/family emergencies), contact the instructor as soon as possible before the deadline. Please be aware that extensions are entirely discretionary and may not be granted. The instructor will most likely require confirmation from University Health Services or your academic advisor, as appropriate.

Late work without an extension will not be accepted.


Any source code that you submit must compile cleanly with an unmodified version of the starter code for that assignment. If you submit source code that does not compile cleanly, you will lose a significant amount of credit for that assignment. In particular, the TAs will not grade any of your code.


Each homework assignment will come with a check script. We will not grade assignments that do not pass all of the checks. You should not consider your assignment submitted until you have run the check script and passed all the tests.

The script verifies some very basic properties about your submission: that none of the files have zero size; that all the files are named correctly; that your code compiles with clean copies of any starter code; that any PDFs seem to be valid; etc. In particular, it is not a grading script. Passing the check script means that your assignment will be graded; it does not mean anything about the score you will receive on it.

You should submit written answers as typeset PDFs on Gradescope. Please be sure to select the correct pages for each question on Gradescope. The PDFs that you submit containing your written answers must be valid and complete. Invalid PDFs will not receive credit for anything that might have been in them. Be careful to submit your solution PDF for an assignment, not the assignment writeup or some other PDF; those are invalid submissions.

After submitting an assignment, verify that you submitted everything properly, by examining the submission on Gradescope. It is your responsibility to ensure that the assignment was submitted properly. Leave plenty of time for this visual verification; last minute submissions are very very risky.

We do not release solutions to the homework assignments.


You can find the official style guide on the tools page. Violating the mandatory style guidelines on a homework will result in losing style points for that assignment. These style deductions are permanent.


There will be five weekly quizzes and one final exam. All will be conducted on Gradescope (details and instructions to be announced). The weekly quizzes (usually conducted on Monday, except for the week of May 25th, when it will be on Tuesday) will test your mastery of the past week's material. The final will be cumulative. Reasonable accommodations will be made to account for time zone differences.

The quizzes and exam will be open-notes, open-book, and open-REPL. This means that you are allowed to refer to any course material (including lecture content, lab solutions, and your homework submissions). We will not proctor the exam: if anything in the problem statement is unclear, you should make a reasonable assumption (and document your assumption). We reserve the right to not award points if your assumptions trivialize the problem or indicate a lack of pertinent understanding.

Together, the quizzes and exams will constitute half of your semester grade (see below). It is very important that you complete every quiz. If you miss a significant number of quizzes or do not take the final, that will resilt in a failing grade in the course. We will only allow you to make up a quiz for dire family or medical emergencies, and you must alert the instructors immediately.


Lab attendance is mandatory and is worth 10% of your grade. If for an official reason (i.e., interview, conference, special academic event, etc.) you cannot attend lab, you can still receive credit by (1) filling out the appropriate form (the form link will be made available to you) to indicate you'll be absent and (2) completing the associated attendance assignment within two. You must do this prior to the lab you will miss, or else you cannot earn credit for attending lab.

The process for earning lab attendance credit will be explained in the first lab


All lectures will be conducted over Zoom (see Canvas for link). You are required to attend lecture, and a small portion of your grade will depend on this. The grading policy will be relatively relaxed, as the goal is merely to incentivize you to attend lecture, not punish you if you cannot make every lecture. See the section on "Asynchronous Attendance" for details if it is prohibitive to attend lecture live in your time zone.

By far the best way to learn the material is to ask and answer lots of questions, and participate in the lecture chat. We will utilize online poll/quiz technologies to progressively gauge your comprehension of the lecture content (your answers to these will not be graded).

You are highly encouraged to take your own lecture notes (either typed or handwritten), and to collaborate with your classmates in compiling notes. We will release notes (modified from a previous semester of the course) which present the material slightly differently. We will also release associated code and lecture slides, as applicable.

Asynchronous Attendance

We will make lecture recordings available on Canvas soon after the exam takes place. These are for your reference, but are not a replacement for attending lecture. You should be attending lectures live if your circumstances permit.

However, we understand this might not be feasible for everyone. If you anticipate being unable to attend lecture live (more than once or twice), you need to coordinate that with the instructors. The process for doing that will be detailed in the first lecture. There will be a small amount of work you must do in order to earn asynchronous attendance credit (the procedure will also be detailed in the first lecture).

If you frequently miss live lecture and have not arranged to do so with the instructor, you will lose lecture attendance points even if you complete the work mentioned in the previous paragraph.

Grading Policy

last modified 19:22, 17 May 2020